From 0ee7574732a06e8cace4e099a678f4bd5dbff679 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Fri, 13 Oct 2017 16:07:13 -0700 Subject: [PATCH 01/22] Removing instances of exec_ctx being passed around in functions in src/core. exec_ctx is now a thread_local pointer of type ExecCtx instead of grpc_exec_ctx which is initialized whenever ExecCtx is instantiated. ExecCtx also keeps track of the previous exec_ctx so that nesting of exec_ctx is allowed. This means that there is only one exec_ctx being used at any time. Also, grpc_exec_ctx_finish is called in the destructor of the object, and the previous exec_ctx is restored to avoid breaking current functionality. The code still explicitly calls grpc_exec_ctx_finish because removing all such instances causes the code to break. --- CMakeLists.txt | 34 +- Makefile | 40 +- build.yaml | 18 +- err | 37 + grpc.gyp | 34 +- grpc_c.32.ruby | Bin 0 -> 2033926 bytes grpc_c.64.ruby | Bin 0 -> 2190421 bytes include/grpc++/support/channel_arguments.h | 2 +- include/grpc/impl/codegen/grpc_types.h | 2 +- include/grpc/impl/codegen/slice.h | 2 +- include/grpc/slice_buffer.h | 3 +- memory_usage.csv | 1 + remove_exec_ctx.py | 49 + scenario_result.json | 1 + src/core/ext/census/grpc_filter.cc | 33 +- src/core/ext/census/grpc_plugin.cc | 3 +- .../client_channel/channel_connectivity.cc | 52 +- .../filters/client_channel/client_channel.cc | 400 +++--- .../filters/client_channel/client_channel.h | 8 +- .../client_channel/client_channel_factory.cc | 23 +- .../client_channel/client_channel_factory.h | 19 +- .../client_channel/client_channel_plugin.cc | 13 +- .../ext/filters/client_channel/connector.cc | 13 +- .../ext/filters/client_channel/connector.h | 14 +- .../client_channel/http_connect_handshaker.cc | 82 +- .../ext/filters/client_channel/http_proxy.cc | 16 +- .../ext/filters/client_channel/lb_policy.cc | 75 +- .../ext/filters/client_channel/lb_policy.h | 71 +- .../grpclb/client_load_reporting_filter.cc | 27 +- .../client_channel/lb_policy/grpclb/grpclb.cc | 399 +++--- .../lb_policy/grpclb/grpclb_channel.cc | 6 +- .../lb_policy/grpclb/grpclb_channel.h | 4 +- .../lb_policy/grpclb/grpclb_channel_secure.cc | 10 +- .../lb_policy/pick_first/pick_first.cc | 183 ++- .../lb_policy/round_robin/round_robin.cc | 162 ++- .../client_channel/lb_policy_factory.cc | 15 +- .../client_channel/lb_policy_factory.h | 11 +- .../client_channel/lb_policy_registry.cc | 4 +- .../client_channel/lb_policy_registry.h | 2 +- .../filters/client_channel/proxy_mapper.cc | 14 +- .../ext/filters/client_channel/proxy_mapper.h | 14 +- .../client_channel/proxy_mapper_registry.cc | 30 +- .../client_channel/proxy_mapper_registry.h | 6 +- .../ext/filters/client_channel/resolver.cc | 24 +- .../ext/filters/client_channel/resolver.h | 31 +- .../resolver/dns/c_ares/dns_resolver_ares.cc | 94 +- .../resolver/dns/c_ares/grpc_ares_ev_driver.h | 6 +- .../dns/c_ares/grpc_ares_ev_driver_posix.cc | 54 +- .../resolver/dns/c_ares/grpc_ares_wrapper.cc | 69 +- .../resolver/dns/c_ares/grpc_ares_wrapper.h | 12 +- .../dns/c_ares/grpc_ares_wrapper_fallback.cc | 20 +- .../resolver/dns/native/dns_resolver.cc | 90 +- .../resolver/fake/fake_resolver.cc | 52 +- .../resolver/fake/fake_resolver.h | 2 +- .../resolver/sockaddr/sockaddr_resolver.cc | 55 +- .../client_channel/resolver_factory.cc | 5 +- .../filters/client_channel/resolver_factory.h | 6 +- .../client_channel/resolver_registry.cc | 27 +- .../client_channel/resolver_registry.h | 7 +- .../ext/filters/client_channel/subchannel.cc | 245 ++-- .../ext/filters/client_channel/subchannel.h | 75 +- .../client_channel/subchannel_index.cc | 57 +- .../filters/client_channel/subchannel_index.h | 12 +- .../ext/filters/client_channel/uri_parser.cc | 28 +- .../ext/filters/client_channel/uri_parser.h | 3 +- .../ext/filters/deadline/deadline_filter.cc | 112 +- .../ext/filters/deadline/deadline_filter.h | 10 +- .../filters/http/client/http_client_filter.cc | 125 +- .../ext/filters/http/http_filters_plugin.cc | 6 +- .../message_compress_filter.cc | 126 +- .../filters/http/server/http_server_filter.cc | 125 +- .../server_load_reporting_filter.cc | 33 +- .../server_load_reporting_plugin.cc | 2 +- .../ext/filters/max_age/max_age_filter.cc | 105 +- .../message_size/message_size_filter.cc | 41 +- .../workaround_cronet_compression_filter.cc | 23 +- .../chttp2/client/chttp2_connector.cc | 63 +- .../chttp2/client/insecure/channel_create.cc | 32 +- .../client/insecure/channel_create_posix.cc | 14 +- .../client/secure/secure_channel_create.cc | 52 +- .../transport/chttp2/server/chttp2_server.cc | 80 +- .../transport/chttp2/server/chttp2_server.h | 3 +- .../chttp2/server/insecure/server_chttp2.cc | 6 +- .../server/insecure/server_chttp2_posix.cc | 17 +- .../server/secure/server_secure_chttp2.cc | 11 +- .../transport/chttp2/transport/bin_decoder.cc | 14 +- .../transport/chttp2/transport/bin_decoder.h | 5 +- .../transport/chttp2/transport/bin_encoder.h | 2 +- .../chttp2/transport/chttp2_transport.cc | 1098 +++++++---------- .../chttp2/transport/chttp2_transport.h | 6 +- .../chttp2/transport/flow_control.cc | 10 +- .../transport/chttp2/transport/frame_data.cc | 78 +- .../transport/chttp2/transport/frame_data.h | 7 +- .../chttp2/transport/frame_goaway.cc | 5 +- .../transport/chttp2/transport/frame_goaway.h | 3 +- .../transport/chttp2/transport/frame_ping.cc | 11 +- .../transport/chttp2/transport/frame_ping.h | 2 +- .../chttp2/transport/frame_rst_stream.cc | 5 +- .../chttp2/transport/frame_rst_stream.h | 3 +- .../chttp2/transport/frame_settings.cc | 3 +- .../chttp2/transport/frame_settings.h | 3 +- .../chttp2/transport/frame_window_update.cc | 16 +- .../chttp2/transport/frame_window_update.h | 8 +- .../chttp2/transport/hpack_encoder.cc | 123 +- .../chttp2/transport/hpack_encoder.h | 6 +- .../chttp2/transport/hpack_parser.cc | 552 ++++----- .../transport/chttp2/transport/hpack_parser.h | 17 +- .../transport/chttp2/transport/hpack_table.cc | 32 +- .../transport/chttp2/transport/hpack_table.h | 13 +- .../chttp2/transport/incoming_metadata.cc | 21 +- .../chttp2/transport/incoming_metadata.h | 9 +- .../ext/transport/chttp2/transport/internal.h | 106 +- .../ext/transport/chttp2/transport/parsing.cc | 200 ++- .../ext/transport/chttp2/transport/writing.cc | 121 +- .../client/secure/cronet_channel_create.cc | 5 +- .../cronet/transport/cronet_transport.cc | 209 ++-- .../ext/transport/inproc/inproc_transport.cc | 351 +++--- src/core/lib/backoff/backoff.cc | 10 +- src/core/lib/backoff/backoff.h | 4 +- src/core/lib/channel/channel_args.cc | 16 +- src/core/lib/channel/channel_args.h | 9 +- src/core/lib/channel/channel_stack.cc | 47 +- src/core/lib/channel/channel_stack.h | 64 +- src/core/lib/channel/channel_stack_builder.cc | 25 +- src/core/lib/channel/channel_stack_builder.h | 11 +- src/core/lib/channel/connected_channel.cc | 57 +- src/core/lib/channel/connected_channel.h | 3 +- src/core/lib/channel/handshaker.cc | 80 +- src/core/lib/channel/handshaker.h | 36 +- src/core/lib/channel/handshaker_factory.cc | 12 +- src/core/lib/channel/handshaker_factory.h | 12 +- src/core/lib/channel/handshaker_registry.cc | 22 +- src/core/lib/channel/handshaker_registry.h | 5 +- src/core/lib/compression/message_compress.cc | 42 +- src/core/lib/compression/message_compress.h | 6 +- .../compression/stream_compression_gzip.cc | 20 +- src/core/lib/debug/stats.cc | 6 +- src/core/lib/debug/stats.h | 18 +- src/core/lib/debug/stats_data.cc | 201 ++- src/core/lib/debug/stats_data.h | 540 ++++---- src/core/lib/http/httpcli.cc | 126 +- src/core/lib/http/httpcli.h | 27 +- .../lib/http/httpcli_security_connector.cc | 53 +- src/core/lib/iomgr/block_annotate.h | 14 +- src/core/lib/iomgr/call_combiner.cc | 31 +- src/core/lib/iomgr/call_combiner.h | 40 +- src/core/lib/iomgr/closure.cc | 19 +- src/core/lib/iomgr/closure.h | 34 +- src/core/lib/iomgr/combiner.cc | 90 +- src/core/lib/iomgr/combiner.h | 12 +- src/core/lib/iomgr/endpoint.cc | 31 +- src/core/lib/iomgr/endpoint.h | 35 +- src/core/lib/iomgr/endpoint_pair_posix.cc | 8 +- src/core/lib/iomgr/endpoint_pair_windows.cc | 10 +- src/core/lib/iomgr/error.cc | 6 +- src/core/lib/iomgr/ev_epoll1_linux.cc | 187 ++- src/core/lib/iomgr/ev_epollex_linux.cc | 254 ++-- src/core/lib/iomgr/ev_epollsig_linux.cc | 177 ++- src/core/lib/iomgr/ev_poll_posix.cc | 199 ++- src/core/lib/iomgr/ev_posix.cc | 78 +- src/core/lib/iomgr/ev_posix.h | 72 +- src/core/lib/iomgr/exec_ctx.cc | 76 +- src/core/lib/iomgr/exec_ctx.h | 76 +- src/core/lib/iomgr/executor.cc | 55 +- src/core/lib/iomgr/executor.h | 6 +- src/core/lib/iomgr/iocp_windows.cc | 31 +- src/core/lib/iomgr/iocp_windows.h | 3 +- src/core/lib/iomgr/iomgr.cc | 20 +- src/core/lib/iomgr/iomgr.h | 6 +- src/core/lib/iomgr/iomgr_uv.cc | 6 +- src/core/lib/iomgr/lockfree_event.cc | 18 +- src/core/lib/iomgr/lockfree_event.h | 10 +- src/core/lib/iomgr/polling_entity.cc | 16 +- src/core/lib/iomgr/polling_entity.h | 6 +- src/core/lib/iomgr/pollset.h | 9 +- src/core/lib/iomgr/pollset_set.h | 15 +- src/core/lib/iomgr/pollset_set_uv.cc | 15 +- src/core/lib/iomgr/pollset_set_windows.cc | 15 +- src/core/lib/iomgr/pollset_uv.cc | 15 +- src/core/lib/iomgr/pollset_windows.cc | 23 +- src/core/lib/iomgr/resolve_address.h | 3 +- src/core/lib/iomgr/resolve_address_posix.cc | 15 +- src/core/lib/iomgr/resolve_address_uv.cc | 15 +- src/core/lib/iomgr/resolve_address_windows.cc | 12 +- src/core/lib/iomgr/resource_quota.cc | 189 ++- src/core/lib/iomgr/resource_quota.h | 25 +- src/core/lib/iomgr/socket_factory_posix.cc | 2 +- src/core/lib/iomgr/socket_mutator.cc | 2 +- src/core/lib/iomgr/socket_windows.cc | 19 +- src/core/lib/iomgr/socket_windows.h | 9 +- src/core/lib/iomgr/tcp_client.h | 3 +- src/core/lib/iomgr/tcp_client_posix.cc | 63 +- src/core/lib/iomgr/tcp_client_posix.h | 3 +- src/core/lib/iomgr/tcp_client_uv.cc | 38 +- src/core/lib/iomgr/tcp_client_windows.cc | 45 +- src/core/lib/iomgr/tcp_posix.cc | 246 ++-- src/core/lib/iomgr/tcp_posix.h | 7 +- src/core/lib/iomgr/tcp_server.h | 15 +- src/core/lib/iomgr/tcp_server_posix.cc | 65 +- src/core/lib/iomgr/tcp_server_uv.cc | 49 +- src/core/lib/iomgr/tcp_server_windows.cc | 63 +- src/core/lib/iomgr/tcp_uv.cc | 94 +- src/core/lib/iomgr/tcp_windows.cc | 88 +- src/core/lib/iomgr/tcp_windows.h | 2 +- src/core/lib/iomgr/timer.h | 13 +- src/core/lib/iomgr/timer_generic.cc | 47 +- src/core/lib/iomgr/timer_manager.cc | 31 +- src/core/lib/iomgr/timer_uv.cc | 27 +- src/core/lib/iomgr/udp_server.cc | 60 +- src/core/lib/iomgr/udp_server.h | 17 +- .../lib/security/context/security_context.cc | 14 +- .../composite/composite_credentials.cc | 51 +- .../lib/security/credentials/credentials.cc | 76 +- .../lib/security/credentials/credentials.h | 59 +- .../credentials/credentials_metadata.cc | 4 +- .../credentials/fake/fake_credentials.cc | 36 +- .../google_default_credentials.cc | 58 +- .../credentials/iam/iam_credentials.cc | 22 +- .../credentials/jwt/jwt_credentials.cc | 34 +- .../credentials/jwt/jwt_credentials.h | 3 +- .../security/credentials/jwt/jwt_verifier.cc | 123 +- .../security/credentials/jwt/jwt_verifier.h | 14 +- .../credentials/oauth2/oauth2_credentials.cc | 104 +- .../credentials/oauth2/oauth2_credentials.h | 7 +- .../credentials/plugin/plugin_credentials.cc | 49 +- .../credentials/ssl/ssl_credentials.cc | 22 +- .../security/transport/client_auth_filter.cc | 97 +- .../lib/security/transport/lb_targets_info.cc | 4 +- .../lib/security/transport/secure_endpoint.cc | 114 +- .../security/transport/security_connector.cc | 141 +-- .../security/transport/security_connector.h | 55 +- .../security/transport/security_handshaker.cc | 179 ++- .../security/transport/security_handshaker.h | 3 +- .../security/transport/server_auth_filter.cc | 57 +- src/core/lib/slice/b64.cc | 11 +- src/core/lib/slice/b64.h | 7 +- src/core/lib/slice/slice.cc | 18 +- src/core/lib/slice/slice_buffer.cc | 29 +- src/core/lib/slice/slice_hash_table.cc | 12 +- src/core/lib/slice/slice_hash_table.h | 6 +- src/core/lib/slice/slice_intern.cc | 7 +- src/core/lib/slice/slice_internal.h | 8 +- src/core/lib/surface/alarm.cc | 27 +- src/core/lib/surface/byte_buffer.cc | 6 +- src/core/lib/surface/byte_buffer_reader.cc | 16 +- src/core/lib/surface/call.cc | 417 +++---- src/core/lib/surface/call.h | 24 +- src/core/lib/surface/call_details.cc | 8 +- src/core/lib/surface/channel.cc | 114 +- src/core/lib/surface/channel.h | 27 +- src/core/lib/surface/channel_init.cc | 5 +- src/core/lib/surface/channel_init.h | 6 +- src/core/lib/surface/channel_ping.cc | 15 +- src/core/lib/surface/completion_queue.cc | 222 ++-- src/core/lib/surface/completion_queue.h | 21 +- src/core/lib/surface/init.cc | 27 +- src/core/lib/surface/init_secure.cc | 4 +- src/core/lib/surface/lame_client.cc | 53 +- src/core/lib/surface/server.cc | 319 ++--- src/core/lib/surface/server.h | 15 +- src/core/lib/transport/bdp_estimator.cc | 4 +- src/core/lib/transport/bdp_estimator.h | 2 +- src/core/lib/transport/byte_stream.cc | 62 +- src/core/lib/transport/byte_stream.h | 27 +- src/core/lib/transport/connectivity_state.cc | 22 +- src/core/lib/transport/connectivity_state.h | 10 +- src/core/lib/transport/error_utils.cc | 9 +- src/core/lib/transport/error_utils.h | 5 +- src/core/lib/transport/metadata.cc | 40 +- src/core/lib/transport/metadata.h | 20 +- src/core/lib/transport/metadata_batch.cc | 79 +- src/core/lib/transport/metadata_batch.h | 42 +- src/core/lib/transport/service_config.cc | 15 +- src/core/lib/transport/service_config.h | 7 +- src/core/lib/transport/static_metadata.cc | 2 +- src/core/lib/transport/status_conversion.cc | 8 +- src/core/lib/transport/status_conversion.h | 3 +- src/core/lib/transport/transport.cc | 81 +- src/core/lib/transport/transport.h | 33 +- src/core/lib/transport/transport_impl.h | 27 +- src/core/tsi/fake_transport_security.cc | 17 +- src/core/tsi/transport_security.h | 2 +- src/core/tsi/transport_security_grpc.cc | 27 +- src/core/tsi/transport_security_grpc.h | 22 +- src/cpp/common/channel_arguments.cc | 12 +- src/cpp/common/channel_filter.cc | 29 +- src/cpp/common/channel_filter.h | 62 +- src/ruby/ext/grpc/rb_grpc_imports.generated.h | 2 +- test/core/backoff/backoff_test.c | 60 +- test/core/backoff/backoff_test.cc | 147 +++ .../{bad_client.c => bad_client.cc} | 51 +- test/core/bad_client/bad_client.h | 8 + test/core/bad_client/gen_build_yaml.py | 2 +- test/core/bad_client/generate_tests.bzl | 2 +- test/core/channel/channel_args_test.c | 30 +- .../core/channel/channel_stack_builder_test.c | 24 +- test/core/channel/channel_stack_test.c | 45 +- .../channel/minimal_stack_is_minimal_test.c | 17 +- test/core/client_channel/lb_policies_test.c | 16 +- test/core/client_channel/parse_address_test.c | 18 +- .../dns_resolver_connectivity_test.c | 64 +- .../resolvers/dns_resolver_test.c | 24 +- .../resolvers/fake_resolver_test.c | 54 +- .../resolvers/sockaddr_resolver_test.c | 30 +- test/core/client_channel/uri_fuzzer_test.c | 6 +- test/core/client_channel/uri_parser_test.c | 30 +- test/core/compression/algorithm_test.c | 14 +- test/core/compression/message_compress_test.c | 67 +- test/core/debug/stats_test.cc | 16 +- ...nse_test.c => bad_server_response_test.cc} | 35 +- test/core/end2end/connection_refused_test.c | 6 +- test/core/end2end/fixtures/h2_census.c | 12 +- test/core/end2end/fixtures/h2_compress.c | 20 +- test/core/end2end/fixtures/h2_fd.c | 8 +- .../end2end/fixtures/h2_full+workarounds.c | 6 +- .../core/end2end/fixtures/h2_load_reporting.c | 6 +- test/core/end2end/fixtures/h2_oauth2.c | 8 +- .../core/end2end/fixtures/h2_sockpair+trace.c | 40 +- test/core/end2end/fixtures/h2_sockpair.c | 36 +- .../core/end2end/fixtures/h2_sockpair_1byte.c | 36 +- test/core/end2end/fixtures/h2_ssl.c | 6 +- test/core/end2end/fixtures/h2_ssl_proxy.c | 12 +- ..._proxy_fixture.c => http_proxy_fixture.cc} | 183 ++- test/core/end2end/fuzzers/api_fuzzer.c | 86 +- test/core/end2end/fuzzers/client_fuzzer.c | 17 +- test/core/end2end/fuzzers/server_fuzzer.c | 17 +- test/core/end2end/goaway_server_test.c | 28 +- test/core/end2end/h2_ssl_cert_test.cc | 6 +- ..._after_accept.c => cancel_after_accept.cc} | 10 +- ...ound_trip.c => cancel_after_round_trip.cc} | 10 +- ...ressed_payload.c => compressed_payload.cc} | 22 +- ...init_fails.c => filter_call_init_fails.cc} | 19 +- ..._causes_close.c => filter_causes_close.cc} | 24 +- .../{filter_latency.c => filter_latency.cc} | 18 +- test/core/end2end/tests/keepalive_timeout.c | 2 +- ...eporting_hook.c => load_reporting_hook.cc} | 6 +- ...message_length.c => max_message_length.cc} | 102 +- ...est_with_flags.c => request_with_flags.cc} | 0 ... stream_compression_compressed_payload.cc} | 22 +- ...ayload.c => stream_compression_payload.cc} | 8 +- ...stream_compression_ping_pong_streaming.cc} | 8 +- ...ion.c => workaround_cronet_compression.cc} | 22 +- test/core/http/httpcli_test.c | 44 +- test/core/http/httpscli_test.c | 44 +- test/core/iomgr/combiner_test.c | 56 +- test/core/iomgr/endpoint_pair_test.c | 19 +- .../{endpoint_tests.c => endpoint_tests.cc} | 102 +- test/core/iomgr/ev_epollsig_linux_test.c | 94 +- test/core/iomgr/fd_conservation_posix_test.c | 10 +- test/core/iomgr/fd_posix_test.c | 140 +-- test/core/iomgr/pollset_set_test.c | 226 ++-- ...x_test.c => resolve_address_posix_test.cc} | 62 +- test/core/iomgr/resolve_address_test.c | 144 ++- test/core/iomgr/resource_quota_test.c | 372 +++--- test/core/iomgr/tcp_client_posix_test.c | 61 +- test/core/iomgr/tcp_client_uv_test.c | 63 +- test/core/iomgr/tcp_posix_test.c | 141 +-- test/core/iomgr/tcp_server_posix_test.c | 93 +- test/core/iomgr/tcp_server_uv_test.c | 95 +- test/core/iomgr/timer_list_test.c | 60 +- test/core/iomgr/udp_server_test.c | 78 +- test/core/security/credentials_test.c | 329 +++-- test/core/security/json_token_test.c | 14 +- test/core/security/jwt_verifier_test.c | 152 ++- .../{oauth2_utils.c => oauth2_utils.cc} | 30 +- .../print_google_default_creds_token.c | 22 +- test/core/security/secure_endpoint_test.c | 46 +- test/core/security/ssl_server_fuzzer.c | 33 +- .../security/{verify_jwt.c => verify_jwt.cc} | 23 +- test/core/slice/b64_test.c | 46 +- test/core/slice/slice_hash_table_test.c | 40 +- test/core/surface/byte_buffer_reader_test.c | 7 +- test/core/surface/channel_create_test.c | 4 +- test/core/surface/completion_queue_test.c | 25 +- ...t.c => completion_queue_threading_test.cc} | 22 +- .../surface/concurrent_connectivity_test.c | 36 +- test/core/surface/lame_client_test.c | 15 +- .../num_external_connectivity_watchers_test.c | 6 +- .../core/surface/secure_channel_create_test.c | 20 +- .../surface/sequential_connectivity_test.c | 6 +- test/core/transport/bdp_estimator_test.cc | 149 +-- test/core/transport/byte_stream_test.c | 115 +- test/core/transport/chttp2/bin_decoder_test.c | 102 +- .../core/transport/chttp2/bin_decoder_test.cc | 135 ++ .../transport/chttp2/hpack_encoder_test.c | 82 +- .../chttp2/hpack_parser_fuzzer_test.c | 14 +- .../core/transport/chttp2/hpack_parser_test.c | 42 +- test/core/transport/chttp2/hpack_table_test.c | 75 +- test/core/transport/connectivity_state_test.c | 50 +- test/core/transport/metadata_test.c | 138 +-- test/core/transport/status_conversion_test.c | 9 +- test/core/transport/stream_owned_slice_test.c | 2 +- .../{mock_endpoint.c => mock_endpoint.cc} | 33 +- test/core/util/mock_endpoint.h | 3 +- ...ssthru_endpoint.c => passthru_endpoint.cc} | 40 +- test/core/util/passthru_endpoint.h | 8 + test/core/util/{port.c => port.cc} | 0 ..._server_client.c => port_server_client.cc} | 78 +- test/core/util/port_server_client.h | 8 + test/core/util/reconnect_server.c | 6 +- .../{test_tcp_server.c => test_tcp_server.cc} | 41 +- ...trickle_endpoint.c => trickle_endpoint.cc} | 51 +- test/core/util/trickle_endpoint.h | 3 +- test/cpp/common/channel_filter_test.cc | 4 +- test/cpp/end2end/client_lb_end2end_test.cc | 14 +- test/cpp/end2end/filter_end2end_test.cc | 7 +- test/cpp/end2end/grpclb_end2end_test.cc | 12 +- test/cpp/grpclb/grpclb_test.cc | 18 +- test/cpp/microbenchmarks/bm_call_create.cc | 140 +-- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 99 +- .../microbenchmarks/bm_chttp2_transport.cc | 119 +- test/cpp/microbenchmarks/bm_closure.cc | 207 ++-- test/cpp/microbenchmarks/bm_cq.cc | 26 +- .../microbenchmarks/bm_cq_multiple_threads.cc | 22 +- test/cpp/microbenchmarks/bm_error.cc | 24 +- .../microbenchmarks/bm_fullstack_trickle.cc | 8 +- test/cpp/microbenchmarks/bm_metadata.cc | 119 +- test/cpp/microbenchmarks/bm_pollset.cc | 52 +- test/cpp/microbenchmarks/fullstack_fixtures.h | 23 +- test/cpp/naming/resolver_component_test.cc | 52 +- test/cpp/performance/writes_per_rpc_test.cc | 20 +- tools/codegen/core/gen_stats_data.py | 24 +- .../generated/sources_and_headers.json | 20 +- 423 files changed, 9742 insertions(+), 11592 deletions(-) create mode 100644 err create mode 100644 grpc_c.32.ruby create mode 100644 grpc_c.64.ruby create mode 100644 memory_usage.csv create mode 100644 remove_exec_ctx.py create mode 100644 scenario_result.json create mode 100644 test/core/backoff/backoff_test.cc rename test/core/bad_client/{bad_client.c => bad_client.cc} (80%) rename test/core/end2end/{bad_server_response_test.c => bad_server_response_test.cc} (91%) rename test/core/end2end/fixtures/{http_proxy_fixture.c => http_proxy_fixture.cc} (73%) rename test/core/end2end/tests/{cancel_after_accept.c => cancel_after_accept.cc} (97%) rename test/core/end2end/tests/{cancel_after_round_trip.c => cancel_after_round_trip.cc} (98%) rename test/core/end2end/tests/{compressed_payload.c => compressed_payload.cc} (97%) rename test/core/end2end/tests/{filter_call_init_fails.c => filter_call_init_fails.cc} (95%) rename test/core/end2end/tests/{filter_causes_close.c => filter_causes_close.cc} (90%) rename test/core/end2end/tests/{filter_latency.c => filter_latency.cc} (94%) rename test/core/end2end/tests/{load_reporting_hook.c => load_reporting_hook.cc} (98%) rename test/core/end2end/tests/{max_message_length.c => max_message_length.cc} (84%) rename test/core/end2end/tests/{request_with_flags.c => request_with_flags.cc} (100%) rename test/core/end2end/tests/{stream_compression_compressed_payload.c => stream_compression_compressed_payload.cc} (97%) rename test/core/end2end/tests/{stream_compression_payload.c => stream_compression_payload.cc} (98%) rename test/core/end2end/tests/{stream_compression_ping_pong_streaming.c => stream_compression_ping_pong_streaming.cc} (97%) rename test/core/end2end/tests/{workaround_cronet_compression.c => workaround_cronet_compression.cc} (95%) rename test/core/iomgr/{endpoint_tests.c => endpoint_tests.cc} (75%) rename test/core/iomgr/{resolve_address_posix_test.c => resolve_address_posix_test.cc} (70%) rename test/core/security/{oauth2_utils.c => oauth2_utils.cc} (76%) rename test/core/security/{verify_jwt.c => verify_jwt.cc} (81%) rename test/core/surface/{completion_queue_threading_test.c => completion_queue_threading_test.cc} (92%) create mode 100644 test/core/transport/chttp2/bin_decoder_test.cc rename test/core/util/{mock_endpoint.c => mock_endpoint.cc} (76%) rename test/core/util/{passthru_endpoint.c => passthru_endpoint.cc} (80%) rename test/core/util/{port.c => port.cc} (100%) rename test/core/util/{port_server_client.c => port_server_client.cc} (70%) rename test/core/util/{test_tcp_server.c => test_tcp_server.cc} (74%) rename test/core/util/{trickle_endpoint.c => trickle_endpoint.cc} (74%) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8137ea73b3..103e8f858ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1610,22 +1610,22 @@ add_library(grpc_test_util test/core/end2end/data/server1_cert.c test/core/end2end/data/server1_key.c test/core/end2end/data/test_root_cert.c - test/core/security/oauth2_utils.c + test/core/security/oauth2_utils.cc src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc test/core/end2end/cq_verifier.c - test/core/end2end/fixtures/http_proxy_fixture.c + test/core/end2end/fixtures/http_proxy_fixture.cc test/core/end2end/fixtures/proxy.c - test/core/iomgr/endpoint_tests.c + test/core/iomgr/endpoint_tests.cc test/core/util/debugger_macros.cc test/core/util/grpc_profiler.c test/core/util/memory_counters.c - test/core/util/mock_endpoint.c + test/core/util/mock_endpoint.cc test/core/util/parse_hexstring.c - test/core/util/passthru_endpoint.c - test/core/util/port.c - test/core/util/port_server_client.c + test/core/util/passthru_endpoint.cc + test/core/util/port.cc + test/core/util/port_server_client.cc test/core/util/slice_splitter.c - test/core/util/trickle_endpoint.c + test/core/util/trickle_endpoint.cc src/core/lib/backoff/backoff.cc src/core/lib/channel/channel_args.cc src/core/lib/channel/channel_stack.cc @@ -1877,19 +1877,19 @@ if (gRPC_BUILD_TESTS) add_library(grpc_test_util_unsecure src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc test/core/end2end/cq_verifier.c - test/core/end2end/fixtures/http_proxy_fixture.c + test/core/end2end/fixtures/http_proxy_fixture.cc test/core/end2end/fixtures/proxy.c - test/core/iomgr/endpoint_tests.c + test/core/iomgr/endpoint_tests.cc test/core/util/debugger_macros.cc test/core/util/grpc_profiler.c test/core/util/memory_counters.c - test/core/util/mock_endpoint.c + test/core/util/mock_endpoint.cc test/core/util/parse_hexstring.c - test/core/util/passthru_endpoint.c - test/core/util/port.c - test/core/util/port_server_client.c + test/core/util/passthru_endpoint.cc + test/core/util/port.cc + test/core/util/port_server_client.cc test/core/util/slice_splitter.c - test/core/util/trickle_endpoint.c + test/core/util/trickle_endpoint.cc src/core/lib/backoff/backoff.cc src/core/lib/channel/channel_args.cc src/core/lib/channel/channel_stack.cc @@ -2500,7 +2500,7 @@ endif (gRPC_BUILD_TESTS) if (gRPC_BUILD_TESTS) add_library(test_tcp_server - test/core/util/test_tcp_server.c + test/core/util/test_tcp_server.cc ) if(WIN32 AND MSVC) @@ -4775,7 +4775,7 @@ endif (gRPC_BUILD_TESTS) if (gRPC_BUILD_TESTS) add_library(bad_client_test - test/core/bad_client/bad_client.c + test/core/bad_client/bad_client.cc ) if(WIN32 AND MSVC) diff --git a/Makefile b/Makefile index b42d710e2c1..cc0ef409948 100644 --- a/Makefile +++ b/Makefile @@ -3604,22 +3604,22 @@ LIBGRPC_TEST_UTIL_SRC = \ test/core/end2end/data/server1_cert.c \ test/core/end2end/data/server1_key.c \ test/core/end2end/data/test_root_cert.c \ - test/core/security/oauth2_utils.c \ + test/core/security/oauth2_utils.cc \ src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \ test/core/end2end/cq_verifier.c \ - test/core/end2end/fixtures/http_proxy_fixture.c \ + test/core/end2end/fixtures/http_proxy_fixture.cc \ test/core/end2end/fixtures/proxy.c \ - test/core/iomgr/endpoint_tests.c \ + test/core/iomgr/endpoint_tests.cc \ test/core/util/debugger_macros.cc \ test/core/util/grpc_profiler.c \ test/core/util/memory_counters.c \ - test/core/util/mock_endpoint.c \ + test/core/util/mock_endpoint.cc \ test/core/util/parse_hexstring.c \ - test/core/util/passthru_endpoint.c \ - test/core/util/port.c \ - test/core/util/port_server_client.c \ + test/core/util/passthru_endpoint.cc \ + test/core/util/port.cc \ + test/core/util/port_server_client.cc \ test/core/util/slice_splitter.c \ - test/core/util/trickle_endpoint.c \ + test/core/util/trickle_endpoint.cc \ src/core/lib/backoff/backoff.cc \ src/core/lib/channel/channel_args.cc \ src/core/lib/channel/channel_stack.cc \ @@ -3862,19 +3862,19 @@ endif LIBGRPC_TEST_UTIL_UNSECURE_SRC = \ src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \ test/core/end2end/cq_verifier.c \ - test/core/end2end/fixtures/http_proxy_fixture.c \ + test/core/end2end/fixtures/http_proxy_fixture.cc \ test/core/end2end/fixtures/proxy.c \ - test/core/iomgr/endpoint_tests.c \ + test/core/iomgr/endpoint_tests.cc \ test/core/util/debugger_macros.cc \ test/core/util/grpc_profiler.c \ test/core/util/memory_counters.c \ - test/core/util/mock_endpoint.c \ + test/core/util/mock_endpoint.cc \ test/core/util/parse_hexstring.c \ - test/core/util/passthru_endpoint.c \ - test/core/util/port.c \ - test/core/util/port_server_client.c \ + test/core/util/passthru_endpoint.cc \ + test/core/util/port.cc \ + test/core/util/port_server_client.cc \ test/core/util/slice_splitter.c \ - test/core/util/trickle_endpoint.c \ + test/core/util/trickle_endpoint.cc \ src/core/lib/backoff/backoff.cc \ src/core/lib/channel/channel_args.cc \ src/core/lib/channel/channel_stack.cc \ @@ -4445,7 +4445,7 @@ endif LIBTEST_TCP_SERVER_SRC = \ - test/core/util/test_tcp_server.c \ + test/core/util/test_tcp_server.cc \ PUBLIC_HEADERS_C += \ @@ -8445,7 +8445,7 @@ endif LIBBAD_CLIENT_TEST_SRC = \ - test/core/bad_client/bad_client.c \ + test/core/bad_client/bad_client.cc \ PUBLIC_HEADERS_C += \ @@ -20239,7 +20239,7 @@ src/cpp/server/secure_server_credentials.cc: $(OPENSSL_DEP) src/cpp/util/core_stats.cc: $(OPENSSL_DEP) src/cpp/util/error_details.cc: $(OPENSSL_DEP) src/csharp/ext/grpc_csharp_ext.c: $(OPENSSL_DEP) -test/core/bad_client/bad_client.c: $(OPENSSL_DEP) +test/core/bad_client/bad_client.cc: $(OPENSSL_DEP) test/core/bad_ssl/server_common.c: $(OPENSSL_DEP) test/core/end2end/data/client_certs.c: $(OPENSSL_DEP) test/core/end2end/data/server1_cert.c: $(OPENSSL_DEP) @@ -20247,9 +20247,9 @@ test/core/end2end/data/server1_key.c: $(OPENSSL_DEP) test/core/end2end/data/test_root_cert.c: $(OPENSSL_DEP) test/core/end2end/end2end_tests.c: $(OPENSSL_DEP) test/core/end2end/tests/call_creds.c: $(OPENSSL_DEP) -test/core/security/oauth2_utils.c: $(OPENSSL_DEP) +test/core/security/oauth2_utils.cc: $(OPENSSL_DEP) test/core/util/reconnect_server.c: $(OPENSSL_DEP) -test/core/util/test_tcp_server.c: $(OPENSSL_DEP) +test/core/util/test_tcp_server.cc: $(OPENSSL_DEP) test/cpp/end2end/test_service_impl.cc: $(OPENSSL_DEP) test/cpp/interop/client.cc: $(OPENSSL_DEP) test/cpp/interop/client_helper.cc: $(OPENSSL_DEP) diff --git a/build.yaml b/build.yaml index 4cb1b68cf30..d2bfa8dfcde 100644 --- a/build.yaml +++ b/build.yaml @@ -739,19 +739,19 @@ filegroups: src: - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc - test/core/end2end/cq_verifier.c - - test/core/end2end/fixtures/http_proxy_fixture.c + - test/core/end2end/fixtures/http_proxy_fixture.cc - test/core/end2end/fixtures/proxy.c - - test/core/iomgr/endpoint_tests.c + - test/core/iomgr/endpoint_tests.cc - test/core/util/debugger_macros.cc - test/core/util/grpc_profiler.c - test/core/util/memory_counters.c - - test/core/util/mock_endpoint.c + - test/core/util/mock_endpoint.cc - test/core/util/parse_hexstring.c - - test/core/util/passthru_endpoint.c - - test/core/util/port.c - - test/core/util/port_server_client.c + - test/core/util/passthru_endpoint.cc + - test/core/util/port.cc + - test/core/util/port_server_client.cc - test/core/util/slice_splitter.c - - test/core/util/trickle_endpoint.c + - test/core/util/trickle_endpoint.cc deps: - gpr_test_util - gpr @@ -1235,7 +1235,7 @@ libs: - test/core/end2end/data/server1_cert.c - test/core/end2end/data/server1_key.c - test/core/end2end/data/test_root_cert.c - - test/core/security/oauth2_utils.c + - test/core/security/oauth2_utils.cc deps: - gpr_test_util - gpr @@ -1304,7 +1304,7 @@ libs: headers: - test/core/util/test_tcp_server.h src: - - test/core/util/test_tcp_server.c + - test/core/util/test_tcp_server.cc deps: - grpc_test_util - grpc diff --git a/err b/err new file mode 100644 index 00000000000..3c68c4f300e --- /dev/null +++ b/err @@ -0,0 +1,37 @@ +src/core/ext/transport/inproc/inproc_transport.cc: In function ‘void grpc_inproc_transport_init()’: +src/core/ext/transport/inproc/inproc_transport.cc:1092:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +src/core/ext/transport/inproc/inproc_transport.cc: In function ‘grpc_channel* grpc_inproc_channel_create(grpc_server*, grpc_channel_args*, void*)’: +src/core/ext/transport/inproc/inproc_transport.cc:1158:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +src/core/ext/transport/inproc/inproc_transport.cc: In function ‘void grpc_inproc_transport_shutdown()’: +src/core/ext/transport/inproc/inproc_transport.cc:1192:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +cc1plus: all warnings being treated as errors +make: *** [/usr/local/google/home/yashkt/grpc-projects/grpc-c-fork/grpc/objs/opt/src/core/ext/transport/inproc/inproc_transport.o] Error 1 +src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc: In function ‘void grpc_ares_request_unref(grpc_ares_request*)’: +src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:111:21: error: unused variable ‘new_exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx new_exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc: In function ‘void on_srv_query_done_cb(void*, int, int, unsigned char*, int)’: +src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:229:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +cc1plus: all warnings being treated as errors +make: *** [/usr/local/google/home/yashkt/grpc-projects/grpc-c-fork/grpc/objs/opt/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.o] Error 1 +src/cpp/common/channel_arguments.cc: In destructor ‘grpc::ChannelArguments::~ChannelArguments()’: +src/cpp/common/channel_arguments.cc:70:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +src/cpp/common/channel_arguments.cc: In member function ‘void grpc::ChannelArguments::SetSocketMutator(grpc_socket_mutator*)’: +src/cpp/common/channel_arguments.cc:99:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ^ +cc1plus: all warnings being treated as errors +make: *** [/usr/local/google/home/yashkt/grpc-projects/grpc-c-fork/grpc/objs/opt/src/cpp/common/channel_arguments.o] Error 1 +src/proto/grpc/testing/services.proto: warning: Import src/proto/grpc/testing/stats.proto but not used. +src/proto/grpc/testing/services.proto: warning: Import src/proto/grpc/testing/stats.proto but not used. +make: Target `all' not remade because of errors. diff --git a/grpc.gyp b/grpc.gyp index d5a20fa5558..9cc549fafc2 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -509,22 +509,22 @@ 'test/core/end2end/data/server1_cert.c', 'test/core/end2end/data/server1_key.c', 'test/core/end2end/data/test_root_cert.c', - 'test/core/security/oauth2_utils.c', + 'test/core/security/oauth2_utils.cc', 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc', 'test/core/end2end/cq_verifier.c', - 'test/core/end2end/fixtures/http_proxy_fixture.c', + 'test/core/end2end/fixtures/http_proxy_fixture.cc', 'test/core/end2end/fixtures/proxy.c', - 'test/core/iomgr/endpoint_tests.c', + 'test/core/iomgr/endpoint_tests.cc', 'test/core/util/debugger_macros.cc', 'test/core/util/grpc_profiler.c', 'test/core/util/memory_counters.c', - 'test/core/util/mock_endpoint.c', + 'test/core/util/mock_endpoint.cc', 'test/core/util/parse_hexstring.c', - 'test/core/util/passthru_endpoint.c', - 'test/core/util/port.c', - 'test/core/util/port_server_client.c', + 'test/core/util/passthru_endpoint.cc', + 'test/core/util/port.cc', + 'test/core/util/port_server_client.cc', 'test/core/util/slice_splitter.c', - 'test/core/util/trickle_endpoint.c', + 'test/core/util/trickle_endpoint.cc', 'src/core/lib/backoff/backoff.cc', 'src/core/lib/channel/channel_args.cc', 'src/core/lib/channel/channel_stack.cc', @@ -719,19 +719,19 @@ 'sources': [ 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc', 'test/core/end2end/cq_verifier.c', - 'test/core/end2end/fixtures/http_proxy_fixture.c', + 'test/core/end2end/fixtures/http_proxy_fixture.cc', 'test/core/end2end/fixtures/proxy.c', - 'test/core/iomgr/endpoint_tests.c', + 'test/core/iomgr/endpoint_tests.cc', 'test/core/util/debugger_macros.cc', 'test/core/util/grpc_profiler.c', 'test/core/util/memory_counters.c', - 'test/core/util/mock_endpoint.c', + 'test/core/util/mock_endpoint.cc', 'test/core/util/parse_hexstring.c', - 'test/core/util/passthru_endpoint.c', - 'test/core/util/port.c', - 'test/core/util/port_server_client.c', + 'test/core/util/passthru_endpoint.cc', + 'test/core/util/port.cc', + 'test/core/util/port_server_client.cc', 'test/core/util/slice_splitter.c', - 'test/core/util/trickle_endpoint.c', + 'test/core/util/trickle_endpoint.cc', 'src/core/lib/backoff/backoff.cc', 'src/core/lib/channel/channel_args.cc', 'src/core/lib/channel/channel_stack.cc', @@ -1179,7 +1179,7 @@ 'gpr', ], 'sources': [ - 'test/core/util/test_tcp_server.c', + 'test/core/util/test_tcp_server.cc', ], }, { @@ -2355,7 +2355,7 @@ 'gpr', ], 'sources': [ - 'test/core/bad_client/bad_client.c', + 'test/core/bad_client/bad_client.cc', ], }, { diff --git a/grpc_c.32.ruby b/grpc_c.32.ruby new file mode 100644 index 0000000000000000000000000000000000000000..5b14ce6a6ea3e1022fd2e5054a2c46a9b5834961 GIT binary patch literal 2033926 zcmeFaeSB2awLU(R9LR{HXOID-L>=p(Lmf5IsEGs}Nq|(MrX&hN)TohSjY?rgP@@LU zjB-4VO<TP6w%!)5wzb!`(iUS-)P#ftv{qhx38EC=+A|I)*0+Gle4l6Ub7m$J;`QF2 zy?_1Y^GVJ*`|Q2e+H0-7_S$Q|oD1i)Ir1G2hl0OU%Hin1mA{bq|JDCm@%r%No;=*K z=8zYT?{L<<aD4sz>lXPIEWGJ^3$MDtcg<Bd-gr~kclEWtg^?S5*WKu=y134F!%a=s zo_g3}qx=@=+Nlmljq?!s)H~iWZLGtw%Q5nVL!Eg=jt9p$9P7tB9JP4u#h(X%tC8lY zZW8x-l5QtbNWb_s7Kw)^S09IZh49KJ%dr5<<0me@qa0sU0>FatjsRf~_gg*Q;r{(_ zFM(?1ct_zuUe8`M-tjTO5BEDYeC?7jUY7n0^&vs5Yq}D$RHLJ|@zkcP!dKzZdmR3; z?mk>sk_VYz$kEt&>Oz@u!2p14#{2!ab`HrGI`!&Bi&!#n5&msH808K}E8$%$;Rzmr zSB@%F=E=eNLyqFmsn^MTf`{OxV;tZfIGQNZKjiB?wQ^=X6N>q-4f)6$FRocXkuTgV z=<_ihycPMz9VFkvYnyMn#vx?`89Dxd{DnjEO(B^7|2I4b>a^X3eTu&oIm}0XG{&KK z>x$pJ^jl*bu^kT;9(z^OLq+%(KCF*M!lCsPmUPbT#-#%-%Q3gRZPulL;4$j`{@B*Y z!c~sVjZLvm^}exqt(ne}9mbhu;cJ>6VtP`I-|PS`6QEMBXuFjs2}AGStNwAUA4p=I zkvCWQaH9?6snNIb4w<R;=8GUqAk=z1bFa8^z1yLG8eex3UOBY=PVpx4PSYxCXUV6= zY{i&Nq{$<Jue@80x`D^W`zrA2dx7#83+2v|9Trlj8a*C4#S`if{Se?Xua3m4*bX)N zJW~hmWHrM@sCS^R%CAtF^?JVx&pzGjPi@wAyR{Llv=bytUJ1I}N;(r~r&6gj{j11h zvV5BlEbr8N!{@Ie$C=cLB)wZpD&;#Dt42N$euRhA=JK64f2f!G%|P22N8bqM2725P z6z@tp`$mwDyuW({>p7TtPm%A5ksxDU+uec>iErbfEgnA6!P<D*u4w|lT)YTC%x|6p zY>C|mQYl+1<xJSY1e8%^83!(=N6<wI$d^PfvZU*K$t?ZFOY8JreVewsD7IA}+w<4C zO_5tH#R=D$#__0hi{C|{DD7ZHKRaWL102;i#CC*7XrJdtPGt_g!LRV`Ci`u6V$+wY z6pBEn@=EsfjUX0OF{Sks=_XX@^6vPW6A9iN4}9^;R90DSz`6Kd^8_0}_}Q#?W`jfq zNo|OnpndL)tm4~jV&D5hU{2m6_{l5_%=V&8rN~T@{jCfnH8uyd<pOeA^~!<&+Ub%R zImwG8+QfEp+j=L|5~!ZAifl+cg}3o`R@`nsyNmipc)U_s*o@Jj!bcl5{(w>C_n8+W zKX`@~XYmVK?luch9prT<Uv0ZYe-{>HmFLB|Y!DUD4aa7%dhF^&*EFH2#X6rPvhX-^ z=y1G&UZ=)(h?g#XeQay^5ENnQ)K=WA^j0^SiKE9jHret4{L8!BGCydIX)Y>Yd#-w^ zvB})67dXtmE0HiFgl8fHz1?YjLw;0*jnvI|xVm`NK@QUWAjd2}UY3#a`tS2!=F7@Y z^XG4!ym8IkCWjIB7aI-!(#W@0`Ox$yw*pbPMlanE!joRKp$ZqR)A<lzYCZnBS9H&7 zgA#l7u-`)h{ooG?q=w+C+`y~izX-|Z$Eb7i5u|#WWiIy*t=tqcbKjViyBE35(Z(2u zw9lb<*k8yztHEDDY$WGq-do_%KP%~6I|>CqdK9k%qMhG*W173*QqX*Ed4XdUc?;6f zG#=t@xZ38w8~mp>S3#*PHiZ3v<$f%uGW4PB%A5r9w4M;!VYm77RUq}Q8nnb!tDFuq zct;-O>B?hXGSy5zChi@pasM}Y?|vNj+vL5A>3#Bk<)3l?l)N`t_Az<?2-6>u_p5pT zQ+fXd^BD48A<R4F{Vt|2lJ|Rg|2^xTW#`KKex_fHdvnf-BLoNj)QdX&{tDE_JQa6u zBUz|Htn-d<mF#G<+K-{UL2W==$wM#E?JPfr+Hj|7o`L-28`vbYboFG23L^8Mn*%R| zX#Q3JUJRdyU9|bsSLdNkHGgX7xvW7boM-GHT+}GEF^Q|SQRdl2)d4*)RCj_N0q0`o zQTz`>)Mn*s@Zwkqj@mE|yhv<^1-10g(hN2BM}Vd>T56|%CKRu9!SiVM&gQ|2_uado zC8to`oZ<06Bij3eNF;`r{>(-wREUo+KP$Kd=nhl=j?-ZXw#IfW84HH9-B}DzI<?PJ zktB=Eq`VHh9P;Y;y`<XFBCoSg!5eKQwDHsn9FAm^EPpmfo&N+(ph>jN*$WCBi4(yX z_#1U4JLpm6w6(vZ4cRrgHD<LZD*>*?FT2eiq{6Mz`{7e%|6pDMuqnkbR;6!L`OEZt z+*Q9Z*M*0WURj8znm6Wp^va?*Yy<I9Q)t$f{i48uw}pD8PwNTH?UrUA@Cs?>jlA+H zh58h~dLb^|$me63Qw3KGouI<fSK;6JjIh6yRP31MfBhoY_7?xK>JwG|W7oLn!9)~o zZ}u1MsP`A*dMq)PPb*R{npX72G>^W1=cenX`EIzV_xus%aQ!Dxdr-uyPxI~IrQYxD zKkOy&c6;Z}uKo%AxZAmjZ+3PGs8{$2R4?+IKLN+{r}=TK_nCKzhr;p!wWd$&@zIdj z?F$?*JbJC)Vk7Od7ex6Dve0J~8q*YE{3{h!_`<vBbw$*Y&hnj4g1D6W<4$$@dacI` z>r8(Ldh`8D1QQgaESAzM{NY;tWh11NY)u{xd28#PTBm1{*B>s|%AAqC#uDY3*HMeL zCqoP${aXELm;P7v$6fkIWzR>p#cN&qB@V6H<<xqVxxy)<D}o1j)x0a|>`oq*E&jIu z4Sv@a;6MGF!9VL#{gpa6q44p~(aVe}f@>#*p{yyVUa5pHUU-U@%8MLrOmi8Ry7fwz zUgtKZxs6L*^n;<7E;zu@YDh@*ugFKfzl$Cq`(3)f=KJh2lJ_-G*+wW~6O?d%Y^xge z!A3!zjRt*Y^jzV3=IGj`pald_bB8fgac+is`S8{cxAA&Pzhn=@lPu6SILnja%M9fY z5GR$voE8;o@OKTFJj_{+Qjv{lq4XBaS#v<`dP2gxKz@~f0kGypO7P_G3kf%sw^~n) zkfMNse*vcrN{!tD-AX<N0(I2B0Pxrd^(hK+WGZoWA5fEeTtzMBwHeJ&TIA_^SIM8R z#CGV-{-7G&fjq|TO39w&p`tQsbQ4oD6^dx0LT`~PBu7$`w|F&Rf%tHP(E<-I>~AjF z)AbK!;%D#}efkGL<~J@^U`dMge`<YB=STSsexKIsF+YJVN73T)7XJcaf=VHLB$Po| zxK!ws?#KopTj0cq2nl}N2g*Ha^c^^msEy|w=p?T0I(bDuA!=!RE%T9Vdaj2tp1Tab zC8`eq!T5Zq-bH9#Zz}oKlCBrc>nvKpihy2#*QNS&Ny~Ie%XD{w-IOi8f1fS5y+CNf zRvkoDfhd$)V2NXi%-{!og6j}V;&nR8X#d*oAaa)B6*Yl^5#k0c>PacCZd{9XNcFoM zG4up2L!0)m?eZe(gz}<?M>*2U@+4i9A3c2eVw4+Heh59lzl9@!T>P^AR6yLdMnTuE zJQBKm78r7z7)_m3(y6cSdP~WlrReoB2VA`J{>UD<dEp|Gy6b4s>AP5GlBx&&<^@YJ z>a-fhxqyVR9QpvGKp$zbb0WbXsZUej-CwA8mwcKW4MS=11C=ep2wmT6)IaXfdYvfa z?1sYm%pZR)gyJhdTPT=cDp)`&SP%-fxSQzb5;}lrJr$y{<=9JE-y+drwfKu;pN4NY zMwaY=jW0>o(O&P*i;OjD-A2e|HU8901$~0kgiVJ(M*a+3THq)@_GUl3iZ{^k@Xmwi zMi0y2^>(}#C6a$Z`$Qh3Z9p2__+qW6h*TvW$Fm$y$OITaIo>3FAm58NSZxGid%{y> zUozTyFZ+}7_rl+1ck&^-lQx?36Ci<{?&PJpAc(!j+>%aS1it?T{56FC?XL-6+g$<j zs}Q2OvkGz#P;^vIYs`|{NZ2?+c<-~``&k(>%)g(?TG7q2yO4(K5Zmw(8=T@7w&CM> zunp(kF~*T2?=(Hm{~bN7Jn31nFGG)e>%r;yGK-!j((~BuL+FwESA%}4DGm#UY6Vfs zVVt4wHCKNI4WFcMfZ~}Sqp?q_^3RW44GuL!J?GHsBD)BXT4rHBDLV&o3WlT30Sl3r zdE70M!n74F$2*HtDC#kLucbFxqwf_>1X@-Gf|?P&imf9tHRwb)g?Fm$xS^fxfU!$$ z>pVV>J(#{%DwEV#yly5{mi$WT+n_BpfRg#3Dt0e<0s~oqtLQf>Xhw%s2QxT;@I<eX zZ`H7oHLQl=($C1yE9es5(Y9UM#sXw5OFm?^j||PEXxpwsvS_BgmStsqv|XZXf{`B* z6&gmaWf|_7_clSUuil23P^P_VyALkU#!oZyjG_)-PoASD43%f$HaYUQd&O%q6bX5L zdd<H|p7a$DCQptfzm7Z`z=K?QE<xKKUY->F|5l!&Y+9Z#4I|I1Gu$)RT@85_+?tjr z9a)%Pv`x3^`#6<CfQqUcDbP1-J)Z71ymT8L-0GW!|DT<Ify__V44WUrjWWQfio<cz zF;<~>S@^MNxgo@Q+`~2wv;)s4v_WMUdqI({{!-eLAo}kRnqrkvFez{0ZHt>rKBY<c zFHpi%eJ{FE<NJzpLq0qq*Q5&(Hg37(&S}O}MX&J}kqASMcP_t$ejyA%QREbDA0pll z0>r{|w0(JzYYn(^7rM$fhG!Ua-IFeNFC3%Z^&faGS|S_^>D%@MJJ6g`;sO1sG1Vo( zi>~p&65)1k&Gh%^;>*ug@4gg8N;;Ek+faXZI7i!m0VKAacV7j0%>o#!{Q-V?rK@GR z`ojo7SkPR!O|BOG9qPvpI92CL-bJ=aelg}(3~#m+-RxwJ+rnqV>3}CP3J|nzPx*oH ziEtlnu1uF?zm48o3{@`AiXZkASz|LfewOen;9t}Ne!Vf(k#GAwB^SX5=r%@*5lJw7 z4!9gNF2&Fe-fL!jQ<0}v<Qpw{ir$j1;OfHFg{vD^H-?hsU6CDt3c{~6ZdV}Jc(5Sp zNtf69JmnvRtBmOkeGBax1!kcC_&W``q2j&1nNC%|?lLa^Sg%%$iwE>-+<&20yP@Rp z@IFAfU}PP56tq-wP`3?HKp^z@Jm&5HL{o+u_nL2CNE1|Hbt!3jM0}!N#yvSOWB;O^ z<BWU<wa0J~>eR9Tw-x0Z?<j$+ycj`J1zyZifoC&KR^T0hh_2qRF>Ya%Xv-<lo>O8Q zB5%mg07@2~KjoC-lv8#``5&25Qoc3_dwxl@=Xx~027eXn$NrA>D>N=}m2{#P9ff8j zT1ez<(RPO+cT)~xzd&4;CU>S_%kCU<w`P^9_j{IC`A;+7L&!>P$DKfje*%V0uZ(y5 zz+>f@m!xZxK-a`)Ayk-|iEK!Sk<0NoZ3AYm^jcoreaz(0Yh8olDcSEq(O14_7l!fx zhA51?yN*!f%F8N}wOxC)&SH!Tj)g|J;zd8A{TQuvDaOn~ZM~|!wb!}1{Q1ak7{KiD zf-A0UpjU)(x57x3V$}NLRht9COyU{uLvbaR&N66zL$=ojBkGR=gt1Ou*7#fTB+F$e zgXZ~>aRpxKOMHObf)skNOK|0IEsU#T=Kv=^xHr#XJsS54$nn}@3l)gAAjdYLSTJ6J zNlnf#TJQCjArl`^IS?^4oyZbMmSR2tV3*&6T<%|J8(bKW80Qyiohn%8>@&`HS+^jx z{6T>*e1}Z{2H$ZsGytkV(sEV;zBg{Evbe2+y6#X{bmF$Uq;pb(KOi4!4CNR4?TS9t zfp+7fRn!r=sV!m$b2C&00`x)iV^`xIWqpaOcw_5Z`8vU`Mb}%^Lhj(nGA-`DOIu%T zjMRD+BV<=%effux-R1iu%{JLB2!kx~gSkGfr$O{8Hb}-PZCEz105I8w2Tw7S8&~%Q z@|yO9??PqKz#EZlb|TDT9=Z_2RTNl0OaU^=F7QJZc<l%1eA4=7_a~UvK_6UfEb?jH z9914uvPZU`d<0;`Ok{;$>vpATedX^*-m`{*nBS4*gXk}+P@P(1nh!JVRTu+Tq4RL) zvwfUU!<!li9=B{a)wn9=Pws(kA(Ot{a6qe2rZBF|jTgm)R=vH~xedmrS!j`1l~IyP zP5{{eV^*V1=t2;{(Kc|PYbi}Pf;UCs^Np$l#lTVzfg3dkO7+WK`h^M_WQgd6_}vgc zW=_LTAzLAw!$*lc`Fn6tU;<Tzn&l2y^(%sTEJc5q;m?E;IiGBdLH06`B6t)8kKBOf zO3g$c9C^#;Q-<Fk*@h>_|AF}h{E*~-d|E2@DTxY)Fz7DQcLIHNiHO%sYVjAYg-9L7 zIJK(AUjxj>OwO<=TCW>4xb&bOdhSkbB{w2)`lMfzJw8Xwr*$$XoE)_J0&R=GI=;vq z_9IT_0Wi98>1n#%SsHZ83P`OIeL18Ek%OHf1KpCqk=li7f*UTQ79yeB<Vs!b&l%6= zzE_66S2VLY9Zx`h`D{gvVgI4cWgy9PPAh=sc>6-KcMoA<6bwPgtA`48*k(oa0qEZf zQA?juDPmAxP8HD=zYaAzA6=AQS*-OGqD!^gJMkHz4F1IPD3Rr_+VDUG(V9hgtrzOE zfem2hwdKD5qKfaeZm*psx4vi#MxNH`EuW&mUP=2O0tqfCC@ulU%(L)AWs%>wKw*)t zu*YyBnkV{a+21jD_WZY~PpvY^6CR6@F}Nc0rt6!V-)_&%a0m8;8IKOxRV`sv`b1^p zi@eD~X&*uXY8<#`zIg+k<M4^)ABDeVj4%I4zfuVw1*aR%+jfNEtXxltT#?tHH2Q$B zhqPY1E$iiYdGJ6{1CN2f5Xt72OJKc<P~55@ro_<aiuh%*QCo_Jd?>h6s@IkRb~m9; zlhE9`P}u|8P;VpD-ew!BB|pDW89-e;tQc76qrNQNEdqD}-cL=UkEjd?p%3DBnx0^W zo}f)n!!YzbltoXn9`u}*rboyx6dcqZs1<g57W7u3kI5pmjN#u}1-`l?UhOS^F8pmc zZN?}#%%k-4+54HFPJt*f>GVFXsDsc6IV@vpzf9#ysJ6P2PC29IgU(GF6+Y9rOabe> zpxE>wpD_lCjpmlmSU*Gl!ZixOHNsO+ua%2~1fPVy$oZ-;f@)R++HpQe>DG(2Ua!7@ zybgi{)P{aZ09X1YQonw{ep&eHXA1(o^wo3clPrGt3=aoHo!WYD`L^)sHpMpr+5doI z*s~$@o@~+k-w+#46MGK|V7^TdYxkE$=xb$vQV?J4E#DhPW0LV0qfm!>U5YYjK>e6+ zn@&AspCW?OUnU^h>B5wqPD0RSTYXI8TX?qN*TASZp-&E@n~Y!XE$>&Ojd0D-XTe(c zF$VrwTzMKY6#eP!5Fl~-rwrN4`@^b%@f2qM6#arPko7}IpbVH4Qs%}O9**jK-nXJ0 zI@Tq+6aVKMmy|lYVxOv2d(r<CqfD`JVGw<;4}kpw1V-h?g#kcff5j?!kh}o73vo|5 zH{(hbXw(7yTfiiSnib(WNTY|4em9MgM)<ApFpx7qI`AZ&d)zgOZXR#$V@n|QxX+Wh zDi{M~1W-0xBLc3J?+kB3-&u-cO~w^&OsA3HV&g`SUF}N{8nFl{MlKfsrna%~J!=xC zjw8>J-^o}>XGtpYU%;7};>_*u0oR3yIOp}kV_5CP{$+Vt{@9TG^qHo(MsV62+1+f( zym2KKYI%@1$3vX%mW>6k(^*kWW+m5rAlTdtOzaf1?I+qx830s6f>p+xGPvNzcND$Q zm{TfIV)>3SM*(v@#t}pdfx6M>NLhpk^#VZE*TebV8lD{oCKz62B@7+k9bS*63NlUf z&UhzWEav&SG<qAEl}v$_;A%H}szwmcUh_4$yc(lMvcF+g@{eT_?=J=KWW&kvr!XFX z{#T2*(rlM8Us2nqxgK$;vAJO6BOW!z;Cr-FUH&Mpk2oV|Kcc9y$M`N!js28Y<Q31z z`vjkTYLuhvxb`qgBuCk3F-<s5uk{*Z`a(sQzJj{c78+wa|12xTdWI^h$qO>hd}bb` zI5MsYY05U>LYvboq=i#a9Tcg)8gLLoMobK~tU~WWg-wjU8Y_!o$$Y?XK3oBvPa{75 zV2E3@5Kk3|ld(1gY~tEGfM8q@?9&{m(BUjw4=>XgVDh25@ddAk9jp#;EY1Db;w|$} z36iIYC!p^c|5m{75%7!pv|YIQCj~6v_cIyrU*~mL_&-a-FB0%C9t1yLS(Px@!qWWr zCvF?`+?2RJ`&o+uTVghnz*+ZXR2J9taB4PQf~8bK^9P6knd_QtParP*3$gyqp!ZMn zxTpw{G#|K4wnbPmk5TERCK{ErVQgu_Hn(3vo#hHRt3Toz7s{Aw?h``=z*)&Yf)mhi z9TV3~f}e@`JK@iiqWcyILmpcHJ_a4I?A7)oT4XKU_vF;(iLBZ@RD;^Qe+_CgsC|H* z03eIiE|6l`(lXzxP_}9X5g#W!wMu=o4hP{9EK_q<V#Xf<D)7s*au|%9sJHo7LX0iI z$O3)C6rk+w0uC0KK@!91c(6qu=W`I;jGTfF-yA>;9&DJ2d$3T9O+41>F%oY+g5Dra z=^Mi!wni~R(s$1Q;;mOpN<ST@!24O0UdjTiP@oOGqjN5dBbVS{{YY;e7yJ5*DM4eV zzkKuJI}s3hF??3Mvf2(|e&%&L;+0`EXqTN-)#PyWR{CUUO{)w#HMz{E^){a)($o6X z1HkTxJXO9q{De^#h#L%Y7|Jp%{i*SL;xj~VNLXl*#*8XlFywTp?UladpUD13@C8@* zE%KVycMcuF{x-60=>@3NU#=Rg@2F2-U3^NBjs@%<9ZLErMoD1)WMi72)6DSbrv(h< z0Y+|wcMRK=I->jv|Kfk(1q=KPb7i2+oXHR;uJ_<s6YJU;_OjN~qcy-ZbA<+H5zJ}K zTj4j)U4oYNn%;%U#D~ygDeyj1=gWa;XQaRag9|co?k{m6n$RHs8}ea{0WN7)f8j}e z%eEKdy(e|GVl@l<*=0Smy@ElHfKTSivw^sqb(#kz#4EXEAieyo4q-|(Tm~nz`%}C9 zGGx4bC7{GMMf}F{hvnT2c;MpR7=`G@NPQ`D=y`U#{_`+WYeX(vYR^|gYU3KE?rs>S zz*SiVe#QdtUJ2c0GqdSy6BKO?yCs$SJu6YfrZ_xG{}JDlE;t6olbn%JU{ta0u_=9Z z7{ouwLVP?CHv@4tf22Rn0eKh(5u%>~J{om?cn_smntk)d@hPd;=Ez8Wv$Hc&gHc%g z0;fL1ua|Nqu@8Rq+$$1GP{fw!lN^Pkd%;wP(7xbV0vyI>$qlS8lEpTR<P%+Q<tJZh zgKp3UD~U0fpw87t5)~j(?F|JE(Gm-c${@_pQA~6KElfU$;3kd4`iKMm7uztkJc=h{ zMi6b)sK4h6h#7iFve-Pnt0bSb=^dp10w281V5a{htTMn7eFR~kRm_Hx8$TBU+Y#BB zMZ$T=m=jNc{#K)YvyBD>;}8X7_o4MvLroLMBTn814~;YI$~zDs=nGQ2=U*VaG^P*n z(%#Mp)at(MH9=)~rkBQutk*2P9rY(X(u`({s+%j(gqddHUxfuQRy?f&<r+a^Js8e; zrr9tC4JhhEdJ~IR372+0t^p)*To5#mp9|4a9BOPj{1(bbjdAab{-_86SNP+%6`7Cj zfZfpAKsE{n<JULp+JmwV9QB*cXF!OW2!W&K$IcQp$6B1KRl?sv0FB&fI}bh^%x7Fi zjS4Quo*2s?a>q4+jdn&l-3m=RfW6rOQXsC&F2e%YY-oF@0GbGYxXpFQgmOL%BHWNQ zkhs`U0H^tbL!F}hQ7B)si5AZM1y*g49erjLp<7`D562``*7$`}R?-$;o(N%H8q|AS z{RcPxA7o@{MiI<0Uz{t=$iOhI+3EsCZ&Akrzd(V^*oJq~KcYjyL0<!Wq_DpNN_P^M z6opTMvQ|KqsVk-Eq>2&hqFa>OWw!_M*iEVnEvhHUYr4xCFR89Yvia9a5OEZUNXM^i zdj{CRI!<7vM<%gNL0B%B+GSg<;ZXRqP+U(G?Q`sU_Kj%80&Tp<28?L>Zh89dUhB>d z>(09L85Te@^gyS5SUx3s&ExI*8Y9tpLQA+5i$bqJ+b+LCLGOuq1Q*q4PDz1d>47!? ziF8R*lO6xF?WZ4n_F?TeX~N`?0s;vSDMU{=-vS){LtQ3BH$^5GUXdGu3h3@OEX2}f zf-tH!{YI(CL|9s<0yuH+<E%Xzw9A|hw%AZ4Tu>1pq~gJ_GX9)BzrY37&5(Z!G(`D? zR6|_F*gwbV9PcNBXu3yebcXk5<PI7PjmXbor^|~(iN#y3SVz_pa>#$xuIn4vT0N`Y zkvHB|ro1U!wOihBI)aWlE;L`lx5kw%nC8oEK7OH7jL4A?l3@f96Qkm++G~UV*akmf zga6`dg1>YSczW|0@Q!ASdPUxNSGnX(;VQSh`ERNJtcKL9QF=qN2C#|}MWUP@Qbr!% z5WivqW0;d4{|bJcD8aAJsSL%D)87gEWA9IDfPyg`b24_Ng=a0Cr+uCmhQ0K2g@fg# z^^M#ELxMCJ^Sq)P7Rn0?<$(!uw^*i!+{3eSKCg;@4NXtodGPnJ+3mM|Bi|hip>O2t zgA=m-9T<W@7I~5L(B1n;9-P?#Bdn-mX`e$96|e%aGEG9Y(=z^QsZH+3IpkiNAs0&R zHCLXCJyky(JpTKp<PVpjWGkAm%5_D-%>2o!Z$O;`0FHG_ltN_XH_`lF#f}+LtFBlN zVzu>oT>P}=M8Ky%{7u-8h=n0C^P8aeq%3-2Tm^@-#wSn@Ke}2UmoeYD@ItIr4Hv>o zFdNTv!etjjl63zl$;n?OY*(eSN|>%n*D7JTD&ZQ+5lnhMSTZADno{H!mK6DgAw5`r zA@BTE!gwLSuwBS6OxHp3b9|Le|LBF2N&2tOO_TohD7O34|0%ujM-^@XEnGOEqw{fC zf{poDGOc%YP#M&!uI`RqGS#vd9V_iesV^)K$EL7j*IKJEmhh(w&ui=Gl<Bs9%|Zbz zq>10E=v(@x(9v*c|M+6!KCLUzmB_>Huskl$>zkr*)gAVb5I%Znm#_p}{%HfU;+yIB z@U6v?*4+2(-B8|eY%{f8PC1{*=a3>3a_pz<pKELr6&7xJlNx)8gdWIOf5?5|dcVH? z$)&BWty|0qi}9P-rT2H4c@xgSPu}NG7>yt9H+Gqdvuo*_Dt`LL&)({K4=WG5cDW{Q z)}NcWKK5z+)>Qa<tXKOUW(w{zf#hlSh9#R|ZiBp2A4=j@EXT!ACAg?SZ@#xw>vERw z3wz^O@CK)(+zcOL1dwsjd&xJo19{=OAT&HrJHSmKrD4?^sO4Z+%8Nm>?07%Sy)gBq z+hrioHuWz8w{7a@mt((M3Jk`uY|95m)jCWlN*GuVU$p|`8Tn+xy2gS<`q^!4$%0h` zSmyUY5MFqe%8YI!r+^hj6a7pQ;S%#K6p+10ZvSx_wuj$Yk4|JfZWfPbjT!pdB7_Zk z&Cf5!_G#I*u-mu$ij_I_9f^wD^<4s#$=}#Hb8EwO0CvucNZh{zLwXPZ0_e0UiHA-U z@k>0r)yM3_0~3%a1(6k>XSj@`y&xnUBEuYTUokoez&l)`!*#tI)&NQzifvM(e*<~| zt=20!*sQ`n30xM?&sU?P!Ep{~OFjh@(Y659hmwBnJ!c1f;_~M>AGHxl0W2EKN6d=l zS_l(+)#?z+Q;h2|dx^R3lSF(3GF4!ZQm<m$$a}{{w_-p3z~_-$jY<S!)!0se1bT+$ z=|fiGN*|KrH<DF@E2$L2!K-1!aqml45Ec8wWTY`P1hIjpGPuMQI3%E62KvE*YK#kO z!r#|tU}u>-aTD4&K>~#Pl-C9;Y=u-Z2a?Sv81(q>$r6Ko18eEoDCAnCHm<Y-Q$1kg z)T9CZo}qy2v1eFOthmD7DnDoU{KgSr<=v~~h&}`h_&o@#dSahGfNbPPh6l7@T(oQR z0tQe=-Dg%irAwMzrnX~sM&}6dKXC^jX48-@-<S_CQFl+j)o#q3b~7!D2Y)^js(GMh z3@Vqn4tyieCg<?%{H**M@+bP($aC~le_5R0@VvIW1+!ss3|LSTzj3~2?cpen`ykl2 z&d&&gQ|#_7DkIn`f8iX7j&tLpxid6%R43lJc!w)@ZKbf(4Y#uwd{=BeYG}k&>pTu{ z-H?Hpsq8rU2>3rp38=AOqhx%lD}JGZCEa41R`CsUn$T7`HbaEqcL?gh4Z|#wr@Yd$ zZ~@f7KdI8Sr~=zC`nulb3SdrCdIKCx8TA2$136sfL|#?Et!?n=A`am(7o6>Ml;7rB z{5*lA_a#v^1X(}$_7T)FEP7}W0SM7vP!+MQKDixto~tAW+_{3fhV{p?TPo|QQV8mj z88p#hu4n!q^V@Cl+hy^45G#-B6ss`FPwuA^gwH>N{8VE<CoeA{FF~uzXIOmPt9$)q zuGxqHmE?P5u3&*=A=x?E?oa+F{PdmmmHZrCKbW6i#lV&<25veX4D?<gr%kkT9N}BR z#0^l|7xir=pJKz1z89;&Y3`;v3>S=wg6SPxT$t9!1uN#<;10#=)6p)^IaAsx1SQBc zQE_S30(hobV^Ggy{<8|TIb-pEBI0C?oiK?m?y}<(?5|LS^Gjv)Pj6ay3H;MY05*g{ zzheD0=mE^H!~C(-+_TVGS;HRDUjY>u;cm8?uHC1u%woVsL^cR7UWeG3V(vpD1`rOW zV862Qpp3)(Ht;0>&6b~_Pfq6*!%CGgKZj$p7f!`!F)|vsh4TS`a}!r0_F#95xdc6x zMbOzG$f6)V2OEL|aqJ_04dtc%;>umVpPM)w0MlKkxB*WTWAOY0pVRXb7@v@BVCBu& zl$L+<X_N&S)Rx1bGbKG8Y+}DDMg$Qy9?OQ1y%;yC2@77I+XVk0{ao>ec((9g?aquZ z0>Y<;0BP3$zXVkpD@0I*;fpHmBd6NFLzhd9$P3HA{w9V?1Cs=v-<EW;--&V&u-2K! zX%$<uGCYU;#d<(^P-iW@t%61XI;1Q9@L02L!V&bBd>9nXO>8?x_%r79wONVJAdzn~ z<6X;sbuZohAO!GP)X%X1q?|%a3n2KgP9$J$!HsZ7EQB0}+UYAgee3mC)L1KCqpz8t zeO}2D(N3P5h&UeBY8z4i8o*|pXDl+q;A5kU#0P*J+ya!9X?eY$isDyePBb8_AH^!< z4tiNjQ~a+^>%&4mw*M?Ec?9hMd=l7&$;Ra#{SI&Z4*CL95hKIC>}gmB!Ly+fhtTOt zj~9)LT$staUV}3rR_${qd#yTkJ-QiMnZk)1@t+42&_AGYp^rqLsUBC_pxNNP`FCl9 zX3Ho!v(Z0fwnkiOgPNG#yy7BZt8!u0TA6H^^9l1m(T<I2*odk|e*?OWON8t9C3p%A ziQR=HV5h%D>6<TMN&#r9(U;cXTB}bZ_8RQ+MPmcYz(vgDTv{RALb!zL{oTH8Y7CC5 z18q}{eT=5Q^bVm<>Wc2fyLc4+8+{u<aRJwb$v=V~If>dQ1xL8$kb`<x5AG(yg#%Lh z8)N|^lO%%8kSwUemEL7Q2fa-g>jT=!DC~rwaikIT0V^P-Vqt{kLN%lLphMpY<box4 z-UL3Z^RELgWH{8gSKR7*mphFI{i~UZB7Z=Y45@2??nfrR>BWW&r;av^>(U<Ty6^$; zmI{wb!D-|j==)0gZBmreoQ}jKwi8qeEOtM*L;AP2!Jh<R=qk#PY`%K3@Nd5s;73oz zT)S1@AKnOE&!u>UpqRseWnd0<;Z|HxW0G%mf)KRTLi55kc3VZXQ;JWGRii}WyZF}z zeYuhS+!@e`uu#&2Rp$Euoj4V>r8a&B^ME1|55Q&VLGodONDjx3IRud;r9!7;t#~fk zk@yRM3E3pZ06cK}k?u&0LPk7zOxa7gkI&)mNyub#_m*$NpXfPX4pEzB#vuhJW)-Mr zfuC3fem6{krmO--vcT0SFwdGV!cOw|v;%B7cXO2uC<)<Wo>s`U270#|{S_WLs&9;k z*Z|Wm_C)kzcpl_p<Jo;2p`f{BJKAg}H~5Zl^i@{SXGZIo(w9FU0J!mrYjZ?cT)<De zloou2@L2woiK0BaiR3fFKS8jn<4AU|$tU@Y>z{zw(=!Yks8lwiJ+S2F+>mtKtnsjz z5B8ze&>N9s!UlLsVOW9|EWz#!pSpC3uqxtAxC#tU8U8H>$}+YTO{^M8+>Cib881Kr zqup0_lc-|Jts%mEEQ_ey0wAjQJUiZCum7egLT8E&fotfvp0pN3aXR^25JY}P&O^lI zDH0Jr6kB`_<iYNBy`2Z@XjH4XdJQzx;6136E7)Gd=4jjt0xuU7&KQQmA7xRv{UlK6 z2Zij#bJs`0KSJMA>|A_EhX*?v=<~4VODwqW%4>Quu~x$U0?Fo5!u`v+cFi;Ey}ZT( z58NLgjwSS=bIa39IC!Eu{6R!md3KKNPm1?Pq0(Yt#XR>+Whm1=Ungt*G*>ijwN{pL z>m*JPL4JtdZ{9`Iup@j#Z@xV-1Rq26AHp?GevppmTKnH1hY2WI4EYQKG#P+I5wXrw z=qK+o{twEVvyW#pTe}kDSrKFpA7)NP(sdh|f`!0tzdm*aX6VdcdJ7y6aVAng6Wa<< zeic(#)75yLc_aCE$*hu2oB)Ayk7US``r+tX_8`a3_=(u((k>zr;m=jXW1K>WsL~}R zpJJCw!<lGRHh<&peB%(O8#^SF$*t&_BJcBk#{bBEPpFaiG2C6+%iHqF1itt&Yp}ZJ zL=tc*1OleHAzu#^+G}{1p6u0h?_Jn9stq(oKEUf0ONr^^6&f%4io1Bh>&exK(MI01 z4aYj#P_Z8ug75-XAsR{%8jA0_keB%LM+nw+mhHtlOa1fMo;yy^%`F3Qw>GJy#hW}q z$X8##Wq;iLlk$=~j?_29M13&v^RCbHaA2dL8p1F!y&AtvLHu+>avk=U0GZox#~OEH zU;CyzzGZl0KHMS|8xGq_ww83}M}Hy+Uhgb_F7nU0*gulJ-%z%1FGvl7)BsM|DmL6t zOK9qSV*j4<G$EF3jhDt)Lj<qEaa$hwk}F_G`NqgU*^BN+9^LCls}pWg{N6K({%=9Q zQStOH3^I0Z>OZp;*B#FO5iPtXRBbEaZcTdUwe3)Tq;HFt-cL+ByLKcN9gF&wZ;t$9 z`z8xNR$#49j<WG@-?Srf>*bNTZ}h*>FLK6%qU;@~8AU&e?T7@l4N7usMnANQiC6)z zL_GQ%67c)+ps1FioR+Vg4K?1O`1=owf-uo&F{a&7^-E=ka&~`W`|~^B+P-P$b32q0 zzT3GUt8jO|+5JX;^3Zg91Qk8r?e7a|ZQlg_-BGeNaT!{nHJ-X;*0W>_rzvZ&XTB7N z!xii3L;M(`p<kE|yk-YIe6i?7F`JPNVdBgrFw|9r*JSK>aMfj$W|i+xxQ7y$B?zP- zE5YGeF-usq8AYomi^BD+Qy;s}?DEFlMK*xFSPPR4VDD*Id61&?B2TSqgf&IcAO%Bo zB!>_QZk8m+d@KjRV*ns5(o&&NohTQOXXP48g_hR)8%y@YE0$&CW8C`~5ytjBITb)V z><V8cF<>CU?T2Wu0Oc~z%fWXZ@J)giN7hoGN!j;hIpc1UFUlO6Q|3_8_){t-dZ|E3 z3WuH5JPmhvSp3-9XXAesk(X?SJ$ov)X<!*+WF15~4<OAw=u>QYtioHwPlF1I1hs+E z@Oiv3T1i^sxAf%jm`${JBZ$5<2hpVfmHau7%qNoNSx74I1_%j;k}_N5GoTckyH1hh zYSw%Odx6Y)9fYCbjV|YyZZePN#?ny5p<djj4UACl+b*T<*@3?F4VcQM*t7wHLk9K( z++1<p9AV&$Gil&}+8si6TwRUt3a*PiMsHy?Qamb*r?a0XP!mqq(j?BY4y}dEF|E{P zj#k@ScfA8e?Hsv7iLpG;afDt}4pa->i!Y*OEyt|QqN?j=3bYe9#-q!qG}6FkK+_*v z%NN&8$uhvsjhP(t+DbMhJL2vbb0zzshQsg!%v>u*%H&7UF#Ndl#^LzUYVo7<tqec5 z(nkY7&?DyZV{(QcD)`|*DXsGu@Pp;QCO-i7;QYXgufY%G`YL{aW-c9e3jI)q;YTVp z96v%9KX&cP@MArkLGlBv&gF+U!;d4tk5-hzbOHFm@?Vo50DEwL;KkSA2XcKCKkz!E zAMWA!(eU5#qw#MUe*6im*vXF(L;3OT3_m<<FX*1N&coPVQ2uN317Hu%54`vq{6Ma+ z;>W*0KmHS|{>hJ#L;3Md=m)?aoF91cHTZ#C|Hu6JG4{ieA6PH&uV^m-dvJc>#n<2m za(xv){srx28Mfq+9~koI^5dImF93URe&EH|;0JPj6+iw3?PcLdk{|fiNG?CViS`1p z2j>S~d<}je*H`i5U!WgX<7gl1$EczF_$KrNU=Pj@y!aaYK(7B|e$4z(^5f8d4L<<( z;QYXgufY%G`akB!l)aK4?tcwG0QTVgz>BZJ59Ink=EvzDNPZmlui*#49-JR|@iq8? zT*LE28wjnXiz&R*JoUaExW@=6XY_KK^u{I+8NI+(i_yzU_*Ez-Mlb&NB{vYq$+o6# z9KN_R?${W(V=II^mJfG~0CL>1i_^oGse^_u>G)7)a3bPCYg_T=tNHN+$1lj0?8kTx z^N)R)`hP{odX*y1>?1BW|0s+JMYKRMi+m!^;5fXY$*j#vS7f@I>1A2zyN|<|v4Bv% zm6iGmQZf1*!`!2?(w{*(XHb4k4l4d2-k0n!O@#4n{0|b|bj-qqZxQt~rWeM8Zy>wF zQ2M#dADB9_@;6INGl*$rR(idFQ)pCS1q+JAvR;+TB7(RZveJ)7dij;!#rGmcDdIC6 zAA-tpgk6=Dao|`i1!CkB<3SmZN2G=kJrSw76>m}MB9=OwrL1tvdZZgz>7c(R2D9cu zPPte-`a5O_?0i2%K1@h??C00;%=<nwBq7K{21+@GcYBsxEW;K}_`(ok`C^x2_WBAL zzpDU1E&;A5FScV+8i?yi;0;6!73O=sJBG-4EJwd2@&!y6f#}(shdLc&VB>mkY>yh{ zYCxk7UoF6S+lcI$YV>1DsC4~Wv^&SMmjU!gzmB|vk`16znTKa!;iP5}vHS+nW4tTM z#{7_^N=W6^af7M48}Cromz}>GX?QNODL(<v#D~KsL_Pr@xMmy}$(3oGA1)H_#Cj$% zjm#*$`RGaFd~LfN%eq)Li@OZS)arnh8Y3osYq6w7Dv0=gQwtgC&msAxBIw8$St8EQ z$?#`n$gR@{NXxF%#drp8U*daIHW5!Bs&Au^3F7=IsrbcM0I>9JrYsD7E7@d@z@ipg z*>1_obP6(oinOxbfM=;}+r|sr2UWJuj>uBB%v=HQQcXCQOCBgB_QO;E^uO}N*cN{? zVtoq`aSWr56<~fD>edL^%m-zgM?-&bNHC^>f{35-(2P=K;gTZ1`H#;>I^s(dy-VNF zM^oVFYyAuI^M_?CTpqo&ivYwF0e~(6qGF!s#Utyc@`SopWYwp-a2FMK?)X&hj24^s zkl@fE-O=zVj7mQU3akyQ4NZ&@>W|lZfG)PtLWkML`$I@UrZTMl)}OAygC4795}VNd zwR{FJf1K&0Qf}>Qmbg4it&M`Qd+~}HcldL&MC~jqtt=hL5|1@mkbib8Cahxv*3-Rs z0%oyGDIS|`rM6!Mdh!YW-Z2nptPJVaiKn+A0f&XfDv%UzF=8YbHLZ{*WEe5lSFiAc z?~3^t=KpQ-d5TZ*vg#(|Ow&57!VFCSUGX3b$a7i37C1gP8<H!$pDzxlXv7_Y=GH09 zsa<Gco|VvAwzNm&H9hafZJI#%G?n@gH|E{yPmt4~*8X|@Med+qCWyEC4wtb^&`!et z&V>t_kWJPedI#yP^pGvrVtip}Bpp4CizyG?!jw{(!tk+zF3CLQRHWuxofA1o>wu3s zfMgzPh8mdPKO7R!$YFx{%RZPJjm+iKGkA(?wp1200>38YX!W+IVge<u4KTOe|02cE zsBSEOUpa}Q7TNE=ScZGd2Q&dP>^;nowJ<7sy|nn6SPNG}uYhhF%LKR=X~UnU;r<Eh zeVtZ}|7;C7=PMq~Yk`R&%I6;df(@_<wf0h%?Kr*Kz%%5eC~PZ2J7^@ieugVeW|I-P z(#U$vP1BGEc{9~0n2r=#DV$jU+X1jh&|nA}CgC7R?in<0RpPbI_@ir3-Rn9@nf?>f zh{;md(r!vd4~oEbE7Z_AfYnbSpb4fo+L~?0BcMIQKt7VCJ%GA`R+3$W=8Qy_dHL_q zpNaG6Dv(}=9Lx+iK`dJIqS{<Ef>Sz*&>nzS@IZ*hZ65zy&P>a-tm*k2ln4>S05nwx z`)UrOM9FZZ77;$*zRassXA2!kCkv}^B@4Mki7c$a)oYFmfi8Kj!J+7ZZLFLIfypGq z*DQRmqotr2(~5wE*b1$y66SLnE3uIY#5Ui;)-13+avrb=niIQ#%`)HXP9hx3e}L7l zN4Z)fjJ?<Y(M(x@WnBIPcH=~(_~jma&Jg|*Pm6k*?{ALi16)%Yn~w*Bi@q+y5_(Jk z-rp776z=bfRUzHtkC&K+TY4(GGmrTYB4}u<zZ4(9z?O=Nx%zuN<tB+mxUEYt6LEi6 z^4Ig)a1>>kAz&l(5w!9U%1^<PWUrh*MWc3|1@gO4oh&dt=pf_LD1$|owWWw+Lh-<H z<|nY{CQ=Qg10dI@aJiZ|ngSh|A85xj+e2qEn-_hS*lwMu1f7sypHO+$moM?EWD`y( zm`3bb{W}1ag4M+UTxR@47^SWFq>Co{nWsbtgoBKQnE}3&(P?_bk^<ordOe!#LC}A? zQd?{*A?LHDrAoeF&ySMSfl^ZAvq`-&@dRm=`GvnhI^@wvJoUE|pO6@%3sVVg^u_-y z>=&1d*U8o5b#k$Iog2VGgU2j51WGE8xF2FdMdR|AJ%wyHqQ?tc+j<2CyDMr6kj7$R z?|_s|pqPys<ZmZ*nKq;ekf(#2fZu8Y^eoumf}#ohszQJlEZ`}Fi8Y*!f<AM;=b-ZK zK0}JomaoPFXrG$s*r`L((o=_IO)Lw4584%EZ!HVJHyO>q_o4mZ6IY<Rhwjh9-Yn4Q zN{mJ}>pX;pRS$9<#Do4;)X!KWoEj|DTh6E7i34sSr3rw!00xXMoEr;)<Od@8HBP+5 zs^bRX!^&>VZRC@s7g=@^a;+e155QHVg%iq!=fe>*1kXb7ua*FMco1}HN2^3$SR>@4 zQS;$SqvpqzD-_Ah7G11kSzzu&j9R1v_K*L`9!(NOMrPZehE)$_)z><-_;<3tYs7)O zs8W@&LhQ1@8pC_R2-LU`^zrObS#zv05gfsRIJ(7!(Kf=gJs-r5%X8TA0T!?bc4UJE z=|4s25Y@=A1=Eif8`!nb#t+Yqs300y+(!CrV%q97lhz_|Z8PbH4>L@X<6}teA)yRV zk%!2oti?O<$F1{uoays<e!h1kS>wVo3G0Zy-{Sj{y~-J2zV%_MZ2vubKceMn7r}5_ zdlA8AEY>MR0_FqR2;K4%P9A-V3yulePwx6F*b{yc&I9X)!ww2{aPQwi5k8Rx37*RD z$9UouIph5$A_E$0nZo?n;j#P*_u`k3m(Q2+^+?`bEHWzKr4N;1GoFl;LH*fa{G$9( zvXqVAH3a{_2P6<Ok@ypM<Pi+O@5(~870EnLkuDa@#?sxpaf2pG)}V<hxWp^H;+$T8 zd}>OK9zecHQNJ56RP7VyS|JV^Q`;-@j4?diW+t|ps<DZDRf)-6HF^<lxe7AY&rY?{ zh2uKoI6p4rodlnz2J3>OQ<*sr?bBzB*7q%U)5Q5OnVwh%Y-m=7;YHD<`%)^f-t`M4 zwoYCNhaN|xoR6Z=ZmtzndMw*|JI*fx1f~tKt*4-Vu&uwg8VRy-6hikx`cPJTH@|Z> zdu}y06Zx?^1A97A`&b_QO|@OtxO}s!eT=ti`??^90EsU#aF$}z2bNbI>W!c8M74E| zw1<zxH%$&5)4K04un>h>_l;7cmtd)tmKqiLWuHcEL^8jGtj6}>Zjwk+qrb$xfrahy z(t`5O)abd$hXb&@6^E!%KZ;j?dquc1OY%^=e^lEGD$Y@(<Kg(ywK;(GWKn-7AdyS& zcw`SWD<51+Cl6uN??FvAqoV#E01&*2`Zvm356b^V-g?a=;h<35e}Rxt5XG6>XWq1D zr2TAOgL|;rx3q_PCQP}AS3v?TAPeNB2UB!&E&S#>ghR}NaTrWl{s5K89k2Bu7HBI` z>?wMIN=S^qyS5}SK<Qx2Q?2a6b~{jl6NPm&x4pYT0>|ii2?HgBJpx{j1DwUx-2%<X zrsLaLbd-XQ#C<3w>9>}6f(c&8zb_yE;3`qv{Gn+cV!hG>R$EH^5ruJ{Woi_{iMUO; zp);@_b=YpLMopj+3c$}IWC^_lWBk_JyuSEtW5Z*~ukr(sIuaq=);m+a$OlX~6baz1 z-<aXj_fK5UmW2(X=4y2DY*{dz0o|D#$@2P(@r#|Ux1@aP{p-vBs@~rjT^~u7{}ow$ zKpRk_f8|IMBgW?dB{*?E;DCVveZah$(0Ha9(&Y!+eAtE3T3(GWZL=jppHOx1PpKR& z)od^HnrbGKhp1T-)3e$m)C?)Mn#o(CX7bi+u7(T4hPf8(>w^ksvpjJ>n;^~?OdY1i z{uAzLf;$I6)Mg41M0HrYKUWfEB@ZF$VL}~5)Jp(h5!EkmN!07|)@zOjQHd0A0m%?e zUXg)j{u4nVbMhEO@6ceK1Lb|;!ywt}c->ev8U!@Zx*C^k20oU8EYitCXgxUt9RxC1 zv_?|Jp1DKblGb(d)@$B`k4h$<1f!@l@4#us;x4~>_cBX;s5|CuShfOazW8)!d2cwN zw$F05?)OEGw%Q-Vr@d-)0I1b=58j0LwC+D7Y#KkI9h=x&{))Qn8o-<QivCaYGzlwU z^#(K@FpH6Mj76^a9d51HV;niD&Z9>Eh}9RyNSuTgS2pV^_~XN;Dyg(fluV;a{25GM z1-uURP#hZw=8dh7*Nu~*Trh7Xpp$vEmi8?~e}&3h$wQcT$`Ix~EZIcnJtA+(yx+-N zuX%b2n0Gr=Pv4t39GwBU!|my41o^GEIP0<R0T3xf0?wl2y)UH@W%3X@<_)1^4N@$H z>yWoXi1OBJ{#P;R_yoL=Oc)0y9H~Y>$7>*O%VEL|61kN;1o>$wHCWqMWSH<kh6xYa zOgM$emjJmCA<pD?C3qTlh8IffEqUMtKjB1~5PlXfc77pcB9n)ZGk*v<Y>pN$9+9^~ zCi2#6{sI+9B&f)n!-urqc4Te5t}xsT#I3+j#FtyjaIHjaB@aOi(dO_WDr-z-ST1jg z_+EMIH75}90*M%!Sa@2z?kF|N&wc^<0$hmv`xbH&!a-pxc?fbCkR0S;iH69R$Xg<B zk+)v+5d`@XAHf`h?S~mc1xK{rl3y!o-bQFyHNRdWw~~h-#~3XKIc=83@(1KCkv}MJ zz2?b8ezQbAs`VD-w6w5WktMs@A7bS+N?OT7FgG*%AWIuXiiMdYL);3U%UiGcM>N^Q z7g%K|g?&^>yzXdG<wlF&i!FXHk%+D2A&3#^$U)qc;rILuzng7-ml3fh5kuHVpBk?l zuSQSAYY4j*7uGszA^&`zsI`?m1UY=m9OU&94TU{h-m=yW^44oU6$J8;K(4l*KO$bc zIevZt4RA3`CQ=IUEs0h*j?s+@90hvcd*Kq|+~?>lWQbc)&>E}nyOOlYv>}8o%OPyI zXz9tM=Vq>LRAyqu`4$t-@Rap9VWDf6jF^a#P3&#BT1V<56DLtqHixkcwr;$(|Fk<? z+WwOGjG{Z(NJAFueq^z(6TJ$mZY2+)@SGe9qyDN4>#8%XtFc+viViaIJeD2en`p2O zMZS35F+yRAEyRymh^I@$R`L+UlZPNK%^)tzAg-_x7ZCAGBHkPxi<%#!?Jq`ux4%3- z<5=~+et<*meHIbxEF#vU|3K}n<RL^L=9!~7{tOX;3=u(_h-Kdf5if{EhW^bg3?)6( zQiMw-E-QHmuErs_UP6l1G)cbIG+&pui2oATRlo&Kqrx+e)%Kl+3hyhAFFGz=VNXtl zw|pupY$XpN;`|{*cxBbtQVQiQTS}3<^_o9IpfmBhSVidH#looYZfjh4t;A&|55aZW z5M1vd#j3C=Z;5NSyoLQIt_8q_ZyTV(i;mL{u)+t*<G1<L`!*pPB<uiXB*K>Pu1`dT zt>hs@RHD>igQ#RG?8;QwZC7|@07N9YOc1dgBC^~0Vj_}hL$KVHgJrmoekFn52jJR! z#qoP}4?Ldhw>Fgz#Jv|_m=UiZw^<(@9)&|nF$}$lG_3LOC1{YrW`)@fo&|00{#c|9 zB4aIVmE)sdF)Joo>^hrU5NJ#k0Tj*G-|(V>b`4kTDQUE;XTx3b)o^dif_n?$_HgxJ z*uQ{q0%!#`oSLtO^MfonC4|$$h+?G+ALYTA$B~HO5g>;+{*0AavNZQ0&|+2<!0{L5 zAU&+cNQ1!>w$4g0o)O?2!L0;^xTZ(MtFyrU7r}ipQf_DU3{&8VtOB>NK#x`6ehGO9 zhLu?bs#)MCERY`2CeGsOI*cFX_j*HGSzfpaYUd+Aw^$a;@sUtFrVWxe^L!uG&Q|U! zOg^Kc(9*$y?Y~UG7y;iEw&NLCvay%*^!5)MP8224n+}uN=N-sH4$K!A8>_6<*K2Pb z!0}+*s89ch2Oj(rG}+$|sc4=22!lu%WYl8rg2(jE#*|S5q63YQ2C->yui7=n%B99$ z0e7yOp0(*>1p6B<ZNiSnmUOlckWK4WbbMC>dr1*dwO3vw9tT}=K1Uq;88lxy7QB+@ z2^S%A`iRE8QlKtC;+dp{<eg<0ijTnL^6wBvNz6rKw8mqDsbYsns?rq22?pm63wlsl zu$G~h#IG<rCFqGyadOH7Xx#OHkE=jUv^6Y?064@()W{YzPhk`XH;MN-+=f1|;O$mH zYBmeb;Z+tgzd+0-VKVcY6Ok<PUz>xdJ}duUnE!%I{p5U(Ev~S?N{!*HQO8rrk%EYh zP1lt10M73{gewj_QSagqL~S2IIis<kru8b(&aj{KzLbOi<}Ca*z%K&Luw6d118&!j zoMT}LzsurgPVqaliXVpJ7Sg2PuT?T~5>D8%LhKBdhjhfFd~ne;IY*R<=Z8d$_i-pI zvU>#ofzvx?ux#im+bsU~<VZ(yrNv+DtYkUTnJdqmP$o;B=2a+{*aXpl9)9gi6k48B zx%nAHENcc?h=*EP_-y`1&wxOPHIzfCkpW<S@E&Ia#H1LqdR9wZ?q@BWw5Ui|7G@P$ zhazS{UON6K=XYz+U>gyL;+mKF*G<cAnDqYG1mfSVrG6Smf7*@1NU=Ne-2;&+IOq?% z&-bc-JSTFJO?m7Npu^_mg+MKv9XC5e{7d0UC%HtRBDpp#A6pZGP!cafWP)k6Idy(8 zs{)@Vpio#vP+17>a|Q!g2>k>=w>Pe3!+InK)^9Sf7?Cp{1w2sOW0N193dW0=9M<$v z0R1@ttiD4uVbE)S9{>{U&V_#3^W`*zoHK_Z9Bfi*Eq>}B#xJSWHaR6jU7vMB2U3w* z!O<W%Ix12MvW~aNicDu6FFsOev8;22-#iTxwk(i6Z3uP*laFTR&seM)#q4a5mzT44 zteM+8xDmXNVU4-ML?bY`UX(MSoV}70(#@EVUZTjaPVIUHqCf)JT?)D}U#-cNlc`;4 z`Jy0>5rc^2_f)gKgev3veBT$M1LNr9KZjirYyMC4M_7=^xGVAo&_4wADIWQS6XPiH z1y2mxFH`g}`gav}Ox^nE<i~0JI_yIAIIa^*zD51D=W~6KjNd2(iw_fL_2DS+@z@Uh z5o+PnI6Ip-0;TZ%QSh&SEZAP@Nxs4P6VQv8DZacX>F54xen7%4mN*=191V!$`30my zd5G2pgX@Mp`i2YN8PiAUbCl#evj6Az3E91y&X+}B;Oh&yJ*zN-AM$AUDq<}U%)@8W zzQBc_Ndt?s*LTYO-RN-;BOhbTb{pf3{JB~DM=#@=o0x_gWa#Cm*0S<fDkxz42QvS- zbbcXz9!)L}5HA3lV-0+)t<b2JUw9HHg@H?{nF>z*>5shCH(g4zfYOxHa9LB5<R8$x zECE(?VF*~|#%E;kbzJbf*3GZ&rsXHrDtBwU{nu4Xt8^ImkS^^CiDu+<;@c|xHWp5w z3)i<!UQH(?9I%aVeU5_v6%>Kn^O0=+`CZt~-e#<&O53S0R*t=nW~j;2KH6D<zDhSQ z$%icaoZY_Rlfc=@Y2O^Q(q3A`7&l_6;XtHp(sWmNk+w$xX<SL?`4t3=HG$?A41fX% z+7M4As<$1AdUgr4x3f6MNdHF|qvbg@62T6-HL_N0{pR*}phvg?%1GR(oo|HbYlx}S zbAb&XMj5YdXb?#0RpF!#8|e=bh}^49t<OvDwDrMmFZ>{pXfrw*RNoP35NJPu;R8yX z@W%%8CP=pIMTKw#$shPigY6&3_v8=0o7TY&Dqi;m{Eo`m7QZ6rBBG6t_}0~<r5{@U zYPg`UlKu?7xh22vu64T(;t&4n@3uc!g;{^7x6QDQ9ESZ0pt6{StO4^823No^wlK!i zmkp+v!3k2V-&WsO`2}e)rsE@(VXraWjV~F_awq1)bX)p?M}3wnaVb)uSDsxGy?ekS z!|sx;@r2OCi9m0L_aA|A*@=!i9m<Xqz=bA9jyEbBaL7Yd9Mf*#`+3k=D6ILtE$sJk zCK}ockkFPNHg>QrZ^+cs-1ru3`Qs$VFLMnc=kl!FKSOTw-F-($e-`#P0DjRwGCMZ| zeYa+|0u+bR4$^enr<h@{boW&%tH*(aO4q&O!g!l_e?7D@UMUvpco4e+EWE&aPK1a- zJHD9F3@sAta2p>&n*hX32+n1ivgLeToKwG90Ak6}G~X2L;HP!0{pvh8L2E@8!aE8S zf{7zF(X5|=Wa#NGYOt9+8t2kP-oje|xI%m!jLHM51Y;X=5MP^x_$DAuc1gpU-Cv<u zWYFLG38}M>&9?0aqK3w77ai<#z$xQ4TmRMAYd{dg@_?V>+Im|fCgwS8wKU*zaMPk& zjWN>0Y2podZ!F<5AAU-gZ5^6itMjYX{GN<it+G5lub@G^{O+=4HmA7M=&dY{cfFO3 zj%U$^$(^z^l9TaPON~(PrbJWzryC(&LLp~U$IIC0B`9Pbfv9e@Q}0uw)9@&=yk<^@ z$YEWqFSnxqRNL`|6%_43QMJ9(=5i~z4EnI609D5~xtqlTeCa-N$OMIZCyVi){tZ6Y ztF$*I+2GNB03<EC-8rKBGy{RWFjoT#=nTqF(ybBWDG>WCD(aZ44`5t}^AP*RquB)0 zIH)3)yg`|J8Z{nn05~Q5?MeW!b+ZOI%%6UW#x3C+l}$$7d~kqbGXH>>ChV~S*7GoG zAsT^Ce9spjNu7hQ3XTUm^*L^FU{{+h$I1qr?x_CoT^MxZ`X=tlcnR3!bxjbv`5QzI zlcx)R)WES}x3iYDP->TPp^K<-#AoUf`sDhT=E;Xib$bht>{j<2_|K8D7a+y3iM1SU z)sks=Rz#f9>P+YDL_=6X`z2g&tLdDQQ{sdyzLcUw;$h(In<6^c#I39e$$U*RJRc$P zgngiIfrK=~ZjH)<_|_ZX^eLZ!)1u?H<O7fj&H_ruKjgD3?UCTwm2;jZpVQ}QTJNv6 zzxQQ7+vi`}&mLR865iF`%(FP3vnc1;m-Ad`1!SasXg1FLIC2e@ifcc~ZpLbP<s+|x zX}G!&co5<c?-f6FFokci6>0;pA)g>s@5AmSo&;QG6|JzYA?sQtuHux{J5yteZoZ~T z+sz?Hh3KD&gGlEgr3}qge4%QrL*#M`B<;Y7Ts*A!PMDk2*kbY0C0@?QOP<4Sm88#; z8tcs}Jx-SX-_%dXyv?ssL&%^M1YkfY2oYL~=RvFz_)!&ls$*XVZ!xHW+lbb$#!AQ~ z5SFgp7veo@r*BZBZvrgprT;B8R<W3aLBZSqhE$A0ci;*Ff@?=1n>gQ@p)7}4$-$9W zkE{HkP#Cuw^UfQPcZKLorQhjZDqktE1}?J=CLbWlOOf7dUc>_TW*4wv39s9{k_E6n zy3c(182Z}H`d)p%SPI1IZ?qcC+g3BAY7jQ&7HFOZkZk_`H8h%m4{>N63S0_eaCPSv zpu*S%T3DdZD&QEVfHkuuFw9_qf3pg_edNJ0oSlW?XcoBED)7KC1*|z<fg!OS1xl>~ z&BGM1W~4=d4i?C_3iyX9P@F~5-7K(mFI*yiKUW)2)w?-al=8>sAJx#*u^Mc!hh-g4 z;vxBAdi>JS%jY*U&oA(KOXhhSpSv>8{e1po=J_2yugW~{;q#9&&kj(KT$*|Q67Lf? zqAf}@*f9$46IW!O$MN~1%ySW+&rLs5{-+}e*K~h&kz~aTB%3Y$U`5{t>He%^CGj0V zS8U<?HJ?Q^Q<&j{!K=-J7bLvJ8F;g-18ue4vk_$shz7+W0}s0mnD1{zqk?5ZgKK1y zgf`=ro&$q`^KoSayct)IxfPBSy`LwKX49CBZ)LE5vi85e%spvE#!<*!JgE>LsmzPl zIrV+|xaICbh*Gp6kw5O9t3S8pJ#C+7Exi$S$`-i%^suHnbht5lHo%2A7F*4d&&v7( z{tFnhc6WRWxp^3K*dH=*G9$_q>F?qDTA*kNxDCWbIExM@2w%AlU!9hp+MdsfeHgFZ z)w=%*{XO+AtT=IW(499!C}+Rd-_uN2#fZgs!ij<&u7hj@y&Vkpnd8#(#Fkkcj8qi) z4LatK))Uk}#J&kZ9K+U>Q^!1(cn5dMt@s|vjeL5APd(&UN0`sOd|o4-ujX?*pC1;_ z5kCJKpbAiaYP$K>j<K?zYLkan4=Yd}$-X?=tW#gFf1Rce=NznF;^VwbHcPETb# z6#k>d-(LMy%5SzZX|@aT7Drre4ldK@EBX}(14#)o45rN01`b&qc+v;5Iu!ilNxdT} zLdx%y9?0(sMIV`bTFP&W8TW2LE=TfJ=|54msB=^>>-*S=llG+bU)Te;diTdD0y$J4 z4STQ?^-9}=QAo+Q2k+r!wmrz>`z(9#5#MLo1C{Ty>_HKqv+Ti%e9p25#eB}P2jzIq zwg)c(ezra6=X1s$9IU-kC1C$$`+te;Kbfxo!SXN2%3s6$Kh5L^zYbR9)~q5&u}Bk( zK>y@?g$S-KP}?s%vFp7&bo=f5^?v8)YWpoGm4AN6x$%lSm!^17^PT5!N$CUSpD#cE zqz<S{>dpYZS|0#t9Y<8k$sxr&XFY64mp)Q$51ojiP|&%4`FBsWqUiJ5p5;tq2UIVW zd;)}eTEIRMyi{J(Ht~flg6D4o!GC@a1am*Q{z{$Rr|m8_aP(5u=|@(i!i{Qs|8ksz zjMGkynxpYCJw!8)<}O!!dFSY2ToFJ#n!8=y=9d^Ri4%y8BbTEvbS|V<9UZ{63Re!_ zs&OsGwFXyw%0&eKpY*Vf1LljM8~6?dKHy3|1$qPo#V-K}YY6~CnE?O@zjz5HyYXR& zGvI$C#f#1SI8cpMejumHG(^bZu~p#*G{z0IDkLJYwUg`LVf(h}z1r?lQT?M`AZPUQ zs-y9#VOY9lh!mA#<I9tx9qvWVgXVZaGXw5nd>K8t4S{4PuYmi{L_yL>lCv>~oINC` zMufhonWW6ziNHwm=dvZs^F<+HE(pd6?^w*UqU(^2+I|JcpC5t`dWrtYp6_HJc|A__ zM^4xJ$YI*&3butJ)Uu9YLOFW3`VU6Lf-vbJj#SrcDXYk6Ev1CrH1EGf5yTs?!$zE9 z+pV@=>5tzOX#G4DIXZb>>m3S5xR{fV#Zd#b{R#zd!Y8Ti2<yhIjST+={X6H%36ZTL z_x+v8&2~I4zWB)al_$`!$^9{E`$(|ZZ`9u%z{n4mAWa*t#kj&|-7VJSo4*1(@sWq} zk0O6HrVGn=!n2T`>=VQc<`_Iv;XfWm;eQTdZOJc2Ajn+*k0T)OgY&n`wJ~xc#0Rn0 zjB>T^OND1a1G&ZHyGGSL0TgoUc^&N5yKx$?D?f}+USX#Q+B>3t_^z*l)zoVHR;-5t z5H~`^Z^gYcd24v@f4B(39&Jw(d}Mu60;hw%#PSeM8Ni1O94kCj?xbrn;8c;WBT3f@ zYI~Of#YDWmW?4|5fhM`ESf2sTEi1)hcR{1pQ-&i^*U0z)`tlLsLy*LCQnBA~Yj_&y zU3=m9hNdUa#Xq%bOPp)OAqBMg<8(K^&$|s?d_8t&v@>B0ZvFg}5aaoEoI42Wb?)TP zo~%LXWbXG0?eXC6{H@>?K09=(_GMnUT>DZ9kBd)Lp!ES`DrO|YXTkj!ZVRp*5rC3D z44>xMPf(kVYl&rB+TXw$j#`Lajsam^fP`wmxoR92K9Aq~IfjiGd-Y=hyik^+JR=7% zBIe&1Kw;pz-+Tw_OmuXpMK43G)?+0@mA=osm|EBE)IL`uPXJK}K3qk~4uXVPRHOF+ zhfyC38Z`p+LC2@yBTaXGY!h<A?#1|_)>@=+&vAnqeGp0n)$)VqWr%Qyc-InyKX8ae znZB>26Qr6hJVWSZ!nF9!?|>?j`UCVcNcKx|&HqF!MiA>(W0#@*sqIrwK*i_8QE@SA zgV-82Nighk*YTKa?3hJPU{e_ga>EXCZdt@Jqmn~r7eX9R!w_1{Pmp9ffzM*icC!@N zT5tD*3pm)GM{bmL%mq8h*?nO1L3v@GhXqm~%U_X#YWdaZ8kC4n4d_xi(5Z1a3nlZ% zm8JRy>Ay%n^>JGFZuJ>N=)#4>#-mh-%j9||^_hG`p-hZ4TLDo(IOqHcYP1KWwceh# zS7&1c3G|9YA3j}V1P6nH*`@w?aH+npBM1=Y{eYU(pl@nBga>uFBryku9-9-1K?<jX zQD@3$J~GQBDX-ah2II=WxSx}88`;rFo!V}G4jw?@)nJm_vqpRqNu1)2x^pa0Mae$# zHu_?+l*^XBnx(tBa0uWSM>UZf6j<Dp{EI7lkjj2f^r1$P$zI`bBA`aC7dqEZv!6$* zL4cu{q@jB);@(0DJ2)I>JzFKNs<>OgG#Xs+g2DOlsTq6DB5B!Ni~_c72$|p2LLpFq zeN^UEz);@ouf93R@LwHNR^X#lr4T$QF20!{WO#pP;_Ms|h^)7RI`dr~enx7URMKg_ zEO#^tZtm-V9^;)6#`(9M;Cl!q9GIdW2aVgTMl~$k*1e1>hRhe3cdC-O32BBBTMk>D z=tt-jrH1WUeh;;>dzNFKL(ek*O-?>YdrN;pezP4;1;$&DJ{skBjB%~E`cvT&wf%w# zG~+GHtL_OJ<CagEAcD%vV5*h{vD*WEw>Y^!-CwreIw2Lg6Zw`;@h7)o{shu|08SSK zT!>+THRrz?Y6p_j-rjL&2*{CkeQw?ajYP@!(TbA~vT~ov5<~pNi707TE`(C1u}cP9 zwhvQaLRJBl1?HeYMn8l<+-R&3TU-sf<u_h*me!4vrMmH9XW{Ka{noUz&4A{Bh~jZi z)a`%_6$*DiQ&P+4oHS3L!UGQiy;Dwf^iJ`odZ$cCmF(!7;^KRRW#xq{8}MozQjU}< zj7Q_?I9__EoRAXByUctVS!_54M9vMsFe>JGe-XyHR^&jUAs0a_xYB&1lNCosxJiY% zUbdelC0k|A7UW1D-NMY)*)3@IBL9z(AG`gJH<VwZ`x}Eo=4qfo7>a<|1A~WlRK7Fv zH{>pch|)7ww_rX9n2SMe060Rpr;}8LD>p7y<I0W7HER15b^x{DS!nqbI10jp#ZwhL zS#(-(#o;U9T7zpTN(HQi4B|Em;p`m(A)MbvbjsbNUU=;0acH2xFp`ucAHe?_;u0N; zft~hfaMjxW{KW-^az9%Vh~g1S9687iM@|YWqQgP;YY|I9IgS$8ReRa%;OZ_!SzOcF zJet}JCm-<A8vSsu)M)qPh|3p4vR3<}|Doe+MfajDaoxjue4PvK>ml%!6*Y=)r#PZp z)fm_AvppP+nnLUPp>DB!q+zxPj&0qEx=HT!PJD%*2)%D3-dL&{U!>@ueB>G~^Qt@1 zxJ`*;*#rf!M2UOv_XDd@F-EWO#Fx0l_T!0vb#CG2<6ohY6&Zf>G>^1^O@!;<mQ?6w zeDMkKn~q#Q{iL+NgZ|3_mP34Sn8gST9y3Q^HFt9)hVYT_m_6Y00#a795jJFlv;6(Y z28g3VZJ*}XdINwk-Wp|8+$E1c`!j8I`*d`UktA8M4bP-;X%AT^oH6>RfEyyMmp~@V z`PC)hD8%|^WMz60^3wmZW7$d!yt3>E#gA-NxH8JcahwNNj^n&0cb{SX1rV~w#U_%q z02JLCxseqi!WmQ`AbS)QLa7CIGYg{(8{`sP37*Z44XnZ};SyEch?BscgvaABkCoj* zMdCzgi107s!O)gHLcEEI=v|P%k=UkN*d|MCjW#ywFtN?Iur;T#b?=q@N<1&Y&?{BW zwZMFewLvIVYlEq`z~owy3bO@ZNOZ|2NpUkOfsz%8Fu`I!qgc!2GyR-ys)6%N|5Dc2 zZJsAH%QZH#|FOQOW`2xL4EeYaisOq?U05^P305bBYg#ryUu1ra(-HBa2!lZTfSzY5 zTO0qwfHw&D7|eR3z>xJlOLs3vF=K_;F@){p58w$Hia~&|v6G-Y)HmZb;q#CZMfbx0 z=oR?{8!xxm_!!cFgK2{l&7z)MrDl<<)T{<vy+%}=uYg+`<2GOiW-|h6&0XyHp-LcU z!T)3JY~Z6RuKu6Ef>9TD(V(eD*|w{O$5@jZZBl|p5+DV{C=sGWO<PKX(n@6`SW$wz z0dB8rv9+yLTcy_4R%>l*l~QXH0|}^4>$|9+)R%hKP(^JOUrPSp-^{(cn;=i0&;S4D zqq%qI&YU@KbLPyMH|N>P$Gt%j-E1uCVvt+Rdjrn|&qkihc+TXx-20g=*+wOcH_-hH zChz;w#WwG@Hw@$oGPMDr4M+-@%;#Cnvz@0-6kFuYw2);3+l&TS$otZ}a&LwpV^mje z6rbk}AAe~he~J(ExZ*tik#`R6s4ovk#yl&ECIW~2uEVy5sMfm$t>yO+5tNgM>i$27 z;B9;l?>y_eSP{InL32>vWtLZURP#SeA!ZBz@1-#QAOA}!^r0ST#{XUln|1;@LDz;R zJ9mvPSh-P5*J*~qz&lu9VMpX#8p#?D*4j;0iDzi^Mptc5A6|gIqvNK-BVD>2wA5+| z=03$fD0c#!(!GbQqzTr;zmt8lDSmvY3=mrGl()bl=GX-mEcPHkG%xcK%;CP3<W4E$ za^_s?oX2|p7D}(YMMsx7`b!5>Z12`&`JC?7G$(LswGxwftgAN?vlc~7K^8@3Iqdz+ zu253rZX&UPXY-3J+~V-iYOZ9d-a4lF$kzGK(<y8{sfD)}dY*mb#mv%a+efwW>)9=G z`Bpri+5YUM5nVviuFHa~eS3C!{N%`e4e^uj32TP8>RIM$pXb6To+ndNg~@En*my_g zqNlN=>d0*TX|^v9b4lX6_0ht_7;z&D->uhG^FR&_&MsxB^HOp~w9w?R{byyckkW@| zgF-ofSN4+7i91;<t`7FYF{Qcnft+=5mKqz4Kjd8iZpn?M$z6rn`f*=$-bf68ph9T7 z`?+(o`A;A}1K%0$enS>5Qq$IeKW<CZtq26q#0=GFRSnAX_JI6PXIICzKhj4R4BTe= zLyZJWwi&S3nPp-f#EN2CS!A!+@~mox4?r$~it-G75fJqAF_OKKKjHR&`AOsUBZCmf zJ{4w8luxGl4@*!vlj?Q>JR2Zh^loDrIa#AUuZ8e>x$4_lZPX3}?yUZ)6cC@nS$(^G zD|J@i$y>*t{n=*IxBq0D1##=6HdFDfPx|F<-Rc*+bsI1AXx5uC@zdewyP*GSniXth zDo7m6af+sO<>ZMyjEY{!EkJDEPS&Ffao%|pOHp{1@RatK@(g>otM9Fk_tnSHoa{}Y zetee#eRZ+yvSCGM8$h51YtjTCSV}n41RyG?H7r7VUN-W__v?9oyj(wTjitQ8{jO=G z41v|}X;gr;-S3Khr066c^)*HAcg03h<P50S3G*IvlVT}vQE&Hl#f%$_^&(3%okmbO z-$OmS$MY!i#!_vNE$g46?`Ux5_jF@MpCD%$osE3R|2vbCig!|0^}5*sl*Ur(?MMxK z(-p+CE=(KG1`_9ETiW(*TegjAmsOF4nX<Qq86#`4EV!@rKie0wni8@v!FqEpIZs^1 zm7`C<w{j3I7&y_lSHxS2Tn-rXn<6KUA+7=MD;_FR8`t$Yg<cW*LZq~=bJ7m8Dd{+O zNi@+%BbMfc7yB(wVEG+vnM<kV{g{x78PA(a;f6UO&MXAWj)$CQ7!eVSkatu;mc{5$ zRjQka+(dTnp<xT>*p<rT%u3}4wM2JUazr5tS@EY^sl|EQd8;S0f6wco%7^rJP~}6Z z?)AUmOJvF>)Ja`cxqIX*sFT(Q_EA39ey|anA<C;-!e!7EUGH+A7T-amV#qCGqqJJj zEL#27K!uj6B>sYw$Ly4fzCPiho)1PWd~nmOof|73=KzZL-nr=Us&x6-nl~aTZHDyu zmYCvr$Bi;YmRr_6GK_Vvh=rlJSl6?A#KLYt1bMX-GjZe1A{?aJzyIGF-<^JZid#Rw zjv;fW#N4yvYi7nj@A#(sr;o~J5|)pDKGOAbOHvi{6Csm{=8~QgBd@pfuPV(k8e{}@ zMxzeDRy_qK6OZ&DFOt-5(atN%SvV<=yK{MbBCk7nHFmmh%JGGuB(UBEpv7_2w$kUx zk=*P2F%!BlQLmYNSJZ3V4%Kp9PbBpy36MK;Z|=AI+|Np}tAXK%&(}!T!aVu_AWK&v z;vx{2MZxyZ7X8$>R27W;)g!VQ_K-AVA1GQ|`M7(M#AM`H_;jX-x&jiHQ@{|oFG9K$ z?#bzw#n`g)k~33V`bUXekse9C0NhN3?A#;zdkv@5pYEl3Z9eVkDW#(6k0_o&AoE`; zQeP;}Ga1l$s}$TT{VN)R-$K98sO;tZzNoiqq}98GxkoHi_oO+{uqfGW*i^#wlLgr- zU81*HID1HwYcVK{D9o%;&*3ZYUBi_35oq$2*ZbM;iF#ZJerutJDIkVH7<yR;QJ&ck zFn;?V{+*f%GOuB+v-W}hnM>6dF;wg18{M?x*rv^PUd+|dZ<>W-4l7;F+Lq?U4>xK* zU72_A-CEjfES8ii(p3X&6Q67$C^}(DS$at+^KJDpcXk|3sc-VW{@<q6r0$@m&dbXS z5^X`-t#P*6wkwl&)KS*iAeS+DKi6~bb{qA6OdLkO%~WcXx?RZ_BbZmR{#sxC@dkwG zmalWQCQ*ntnK6&)Ii<~N{TfMD@Qm`T;#ur<0@cQ&K{e8KCc;|?rMbHgN6j~aV{^cg zSbu%opj#i)LrDFGXsAzKN4u~q&_vGLj_36=+z435n!wEnG9aJ+!fc%QXqfbG0_exG z;Ktv9<SMDE@oxe+V&h4}*!bIh!I&!;=R)3swd;%-?~dHujY~><k$)05iL~shg2X`t z)vh@bvXdrIjqCZYJ4SYlivizd;&bvkwQQzt3%5EnkJC4gE-)#DTl?zD3zOZZjm>>H zo0{xZXu|6vU(HE^v-APe@&kX?m@+f?4@_Cd&RiRJ#|d5CO4#-ImE&#Iy{t^Gs7Ur1 zxPQW8)|jqo#ozizDYK-rP8EUr6d^qn;pP1~)GV?W1|+!6B{As;D0`z2rH}8Q4FD0* zd5esl;`iQDcaAP7>^77nioAY)rHc!kaRH+&D$>b|Mk&qUI+o(D$#ScBh)YpdxD`$c z^d`ccJ|BG^{w_c?U0ec27McFZG11pQ+34cZZd|ZZZ=o888Pk+{SMYA}ZT(nN^))18 zN$~9h{vB$kR_=ZBjlzN)58*@%CCdgepHKjsy<P)jf}yE-`tc*>6lS937k<v5KL~Bu z3iz(>_1k!`V|&PmmhsjQcy@kS7YLh;+rW(pE>A=9kiDSE?h?5aX8vF$CU0;>;!xZ# zuZT#z^W207YkJqKY~*y!J1ByxK}w8w6R>v{5f!1cTek~gfcN0I?j>4=Tg>tkfSjms z{_`DYV9w3C!pxZ~h+Eb**f9faq6yph!q@tZP*Ee&L(}yP#cwCsd-2x{oc@d5NqPO5 z0g?EV1)KQ&$`5x_eI%8lSbADfO>g4B^tAGt-bmMdN`Y*EhI!4c2$l)c4HtvsUNP%} zb&6=rnO$1>I4b{XR@X6qAL}?ngG4zjB4+dy%_JuMQ-TM_?VupHk}}_9Mz8~~X8rwL z$>aYCLWNwISQdVYF<G^luNmkCjp)vO(ELTv3uqo7TH>ADXC{@xj|^kZnRyu>RK_u6 z^aIy+{7!r`Aed*72<K^ZiyDye;NZB$Mo!VL?pr0gL@4QBnj9W)x|O{|vM{gKnX2^% zo2b?LGt{>$Im(c16hW0sBC1^U2bCLse-u=ltMib3)Tw2U0ZX?2iaI~7I$4j!{k^8g zWmrh-Epc8n-ENs|g?IDq#`zEjL~*BjnF0EGyh<)s=f?vCGzk#A$S`f5J<l``UNi8@ ze0bFc-We8N?Z79q@)c;c6hT`nZ-i$%P}hkCtP*-r35OBC$~BAmhH9<p7@geMOufK} z9<dL)SLM;Y1GDHIw-LJOXoC2RKOT4M7XxsV89!$kPgzX_711n1=DL79Stsfyj*__h z>lcf*#3o^J=033aejXO*3X9u%4=(W49t(9W0S$_WD=1ED2N1uq(@}~k2ckQY!s1BR z4WkPl@h$+$5Nowo@wGDd$YL~Q<%d!JCQgHZ5_5WSw9UuvtM-{y<{2Ur2ZTzN@yT0% z2OYz_kOk23XTy`Ae+0e>Wsx@qc<&}wweeo6_q9Dxb~!OaVR)i~r#vSv2K!MZd>1<X zqlB7$)8Fe<-{vvu-U$(&F`AL=P<x)4k;Lo_k(Y)~%=2SoVBI6XfgvLUY-WMYI@QH? zJAr50tHXBUBTW*fTPT~Fy2u#B4~Eba<^#tEY6#787XD7wc2q;&*j_`bA$y9ljf812 z1Mc1H>2QrdWcGtn;)f#a;@d#3S7?5Zfiv82`nW$pJzlX5-P(8+N8us?Y-^j8KrtAe zA;qet20RLImUW5`-9;VH()Y(ZNlf2krW?Eo^q~}9tU^*n)%SZ%bute?x`qTe!?Mcr zd6w{O=c%yaBAzjx3WICCRf4A$TrJ}%4}Uq&sP~0OjCNYsxRvJs+lya?eb80RlJRQ1 zlRyLyKY$1%<Vg|$BYrxfe6oaLK$aZji|`P#nA0_U_>954E}e?sVu=9>A>Y7L$ZMuV z$ZMt~M(D>(xd{L3>_m)6xXw;ShzdI~MBb>^iF4*=<2_Mc)yqlqdG+HxCA?m3Q%iaE zQQ+;THc?Tc+wH5OM0eWPu$S7TMUBhO&XJy|sbsylTNh%Lp5X<X=fOg}xO-RwyZ|Wh z&osV?*vKqD;PwFfWE9!M-<O@#CvqFM7c8OOFx{Ne!lRXwf|g|uXY?+??a?aAFYpm& z-mN<F)N8)|ZPZH|b1QBq*}83VR*@D_Jv>zDG{JRpLPRksT3f|y39s^McrE4ie)}r9 zblX?SWutwSTsGTR$>kCI8udH|F0MZhq}Js(I0U1yQZrADm4?i^dCizih6Y{B0g~f+ zr0ZI!4pi}$`%R<su3u#N70u+n#rYQGTgJPmBXzx5uQO*fVSghH)6Td5k!<#4E!hAL z<E1`@cQd^dk{iW|uOww91}AHtGUN;y+kt;IbjWlmd?nRVF^8ybD$WvPX`xhWt9_Mf zZL_aoZvu8lqo8rfKabRueiPdGI0f4=Ou@vZK*65FD0xpYBFsF=C@$bZ0z%c4cfJM( zUbEQ^2R_{3x97}pbkFWMX<23W$`91K69+N5K$OY;>UbL>jD8QVesNy)^HlvDO^>d- zpWbWb&ik<lX$&ctAOgdP!Ew8dC&`>f$9^j}Dn~CIj#kC2Lse&=*&gy(3%`YA@57%0 ze=4A@J=XmJ*TX39MAp6}H-<AVb~Ud*$$Ut9-f#Rb?{>0yCo;4j9JdubKqBkX?F)nQ zJPa-q1{?oqyXKD{Pb`-u52j3M<nR6r8*gWirAf;zeYF6Uig-VO95f&mfkBQqk)=Gy zF@+ow-$^|6UFm{kzW3|Pr};voyN(n#5p&H*cj0cqzT;X1&)^K#+yr#swdzEa<=!Af z)bwL(%Ok6`ITaLDUhPf>f(q;fYZRsZhZJ-8h}enSKsPm-zYWe*%~mvOO9_DtXKGlO zyaiO3V{sI`{T1L?R=Ji3I$+ET6A#|1Uzp!*BH>Y(;ehDDKqik?vXlx*ePb9Qy<Vd% zwsp1fRAu@ttD%Jyim+%QMX~q7v#2oJyH!>^0xpQF%WLMTF0X}WlxHi?V(+LIabkKY zUQ13d_Lx*?xtXjw&tJ9B7y7);#?I_gL<BcwaNP9?voSS%J4m?(%aey-S>!besu>{H zdQWaJqU};l2CSlYS<#38XrEa@`#S(dsaNt76zt1?F#db4z7^T}I1Mt7D@ESc7eoaN zsD+Y!Nhb3(Fj%{m9HD;7)8dSO<gf2=IbWjVkmQbkcO0qFO>X>{+_4A1OoNtZ3JFn* zgjakL4*TTLDZECDRyoPu+3O(Tmh~tC^|=Kco#yk?j<;vJOt3Jzo$n@CyD+|U(t3vK z1sz{vLi-eLLg@M)uqq!9HsF@aa1gIKEYkInD)Actu`Q#MWg8^7nPyhb#COWbr2L;t zcpzVvtsrr;=wC#+QhCiZ2@@M@&Lf2UGI60fswWgT#H_i6aMl+w7qErXpCYMFKBB4> z$(Q#i@0FAXo}!Z8%%7T18bxQd_^KQ%z^ji?-ytnlTu@r9zC&89zN6SHc?Nk}+LX_0 z{6mgD63R0VS!D`eorky(S)HrMd*Ws!aMXP$(LKkI9E^vUK27dyg7xjNetz<=g)T>) z8SY2Adda3nTSW7d6jEA1DuTNXCB>Y~q_eJ0VHI4Y3%6Z7s0$dd#$U`e<5rX2p3eYz z&OS52Uks=dVLTgniUEy0#ekVSIscz|X+J|7j14(3ww|zyS=yD{*yKE_>13n7WUI}Q zkeY;)0Mo7#J%0s?j(eg?*lBvMjl(#mH7$Xd*Zr7&n9Df}fsq}*8mg-Us#7cU4S8iY zAp+Thpt4sUk&IZNHP3kz+_L4xZk-&}kVUei4lOT%znmiWT=J#D#G<6x6lD7|vl?iK z5+9m)ks8ag<rCf1*=Y1PVfA<CFrprUD2ixpqtV~ZKVnwzTNb{dN9SuD+OY;W5})Zz z0yb~E7sufusPxC3!{@jE-+vDs(1JtA(Cpg>^IPUW_)Wh<B<Y)>!j2K{h<AE1-S+ng z|2O4vk?69nV<p9<+W%4pj4I|ZD(Hl&-KG%tASBAz{?u`?PD)B>6TjMBHS?C(wX%5` zkNSe~ugS7xuPnEb1y)5Dead<$$J=Mtd{4G|)IhR#&P}wupZ<;x+aC^GH!Sniyv*gw zyp+s>9^MD^Q}YUZcq0X-Qozdd|At<*@BcvWCe`>q(0f)MMhk_}J-^*Iy}m6q%&Ar8 z)nxvk=shD3`hhAihXPh_*1!3{uV2XPpZ<UA<J>vv#bL97G3vII)Vz~8lu(28QJ&44 zzs2*P7iJgP>#S{I&5S<aJ|2)Xx9tcm`<5BUdM>|zRlK_vXWBcH=xqO}1h16hZ82{x z{NF!nk^h$b*m!qPzLN6FVFe$o7m{b1#}Bn1+6d>1sm`=c6DxI^O7hnO(JYGT0HRnW zPUW!|Uw8`Aah@#gV~n$;Oy<>AgP2N$E(Ww%Gl_i3tpBZuv)#&Y{@eb&71+z@;}e7k ztEg)^3)M$BN5Mnj%@jPI@)z`M@Sk=5vszE0<+a{;D0a2Gt7AX*n}gdI`==O}7b+Li zve}r7IdHJ`U-^v*RK^2dbrE(|CVhMVIWr70G8jX;B>5^&a2m~|2mhE+_Ag*r>yD9t zbakXWjdhZYP?nsWBlQc*(de|4q^E>=YjCHOI4#=wROg&mqG<m>BiYr!?BR@f%olDm zT~dtnkZ_=S@~iXHQ=MNKPj!BpH7xed6>4msB%vCT@8&s_*30e|t%({w%tX|UPLskX z>Jb{9$?9Ai_^CyhGdWDof34%pKvEhqgK`~wg=`~EEa(nQdJ@k$NcRXr4y@~+V#x3l zog>8;@A#mI0{s;G)87qo2E?^_AZ`N$yh)!O28>voQ+&=aKc55d+@`2AJ*<=O&Wv)@ zpHmm^uggXyR!Q(@vl%jy8VkZKc+l`@G_SBIB%H-%!4(o^Fr<G<nSN$;jE|ApB#A7s z!EG#dn@XJNtUD}r&Ma~2_^){2x@`Z9{Z!CNeMX!avI=z;7qK{zsmG#;<3w{}dH-aK zSTXx=5KeL<lh?ue9)NRyP|ZV$sqVR9cY4%0C(Mg8BkG*Rf6@`58$(Zvgld{*Hl)1g zGLaOd$e++1ksbT{ycqbd_b>zYfvdBfrt#mj+_jvTVJ8$b%3Q+(e#CjG-!I~8nboq8 zclCGRB<sAT(RZVkAX6@0GT6ew?r$h=QmN#F^pdelcBNSj&SbpCPg+ADs7*$fAp;WZ zU2<V&g2Lt?7^XxbW@&~Eb(1@M#HY<r%?veL1tApQs!s8qCy<>+T4iFx&yrvzh3EYS z`yNNv!~7l`S7Z;FNp4(hmklz0OaVz0d_xrYVLgien!Z8AL3DZMGq85STI!Qtc=udI zLm$mxnjePhxS6gx*sUuiUPt?S*EwY2<AUoT)>X<)R2V1T9gTZ73FE@0o|4B5E<-IT z{D53qD<^q+%kE@cGg@Efm6Fl9`tzN@S=n!}e7@rmH(L2TT&zQ%KD+P<rNSAbts~8W zWZK_`-SX~^8O-X$h3mk;9bHqh^e-$fc}mWuwXevsiH2+Vc|VL)-uBzb%P5y`75p}^ zs%|i_DyXTH3RR=A+dR#A&(aHb9|Mj+Mz=iV%cx1Ui~ys|3}KRo!f1(?kFOE~@lg=^ z28G}J(310UDELzlLZJav_Hy|%%aES<ZTpXMU^gP!2J+W|UL1<(PBd=OK)wV~lme#M z`|nN!*Gmr3oL<6tl7E8+P3f4m7-5kgd#`c6m-r=SM5V%<Kk`F^d<o}^A^QvYCD{Yc zxv12+JVsa7K)FVNq>{R%UGSOdxr1)cv_Ey7W#AH%!qAPJN^Rb6yQw(=m+MQN+BgM6 z-nS`X=9RqPgD2Atu*&<TP&SLEO=o(e`4S^PB||Fa&qVEHNbK|t+!-i>zuwrNpFv3v z^Z}le1;`Z3OnzjI1uu|QR0B|k$c&$UzzVZ&uGi?z+P}GTHt4!IV+LC=l2PZy{r{Sn z_hNeqD;E!fTc8?ZFHK=V<i6(kLHDvs8au$+$SCWsqc4`nUwD7(@sAwSI)Ce!NBPUL z=`hQui+CP{42xENV2Ymcn6~4{o;N<mNx0ZM<6$6goxjd;k!W<*pEdI}*e|b+RI*|P za`;B>-7-5J{+7J_bC$z|uO%-_6!f3AT;MxSaL=mfdVIwg=bS`xW0{$1rl=i2BGIA{ znY<5vA%n|K&UwA0MVFz`Jj2!Ynf2(O!_=TxO(c7(*W!ad{&VZJmhGd!*1Q69RA3zi z%zRzfmMcH!JpA7CoGW;4dCjvc=4t=D*6~9B$_MWRDIq5c&=1p;=2#pphCkm&h5Iv; z6kz!3x2dqg$MCoNC~#n2fqPV7@Mi}PpN}IR#L|~BpxVSs;v|&cuxVdNjLd`CCYW~s zQ+(~-2NI#Y0w<`zHz|;dH)+2st4n*!SQx>k%tE!$>RU~V(aM5=QC`*UlA^gq);E;d z_EAKuEOrlZC%1HUyOUcJ=hCy3xt*KE-=zM!XSF)teMCQRFp1aeJ-M++=NYiAwjgo1 zb8f41qseija+q&cKWR@<Z!T>~73gfzpA9_jJLFnzsfLtaf8qqUvzufmslV=7EzWm0 z>gNsm>0GaO13cRvgZf*X8%@R=m2r6eI{DEju;b>T^_%roos)Jco`#ju7`Q6Z^>=`X zb!q@^eF8=r`}F3|aGbKq%Yx*sB)dt?U-Z`}_{(FN9`NyV?jaM;ZHuIy;ivmuGqJH& zfBpBXOrfMw^snCl(VLsx%HIIMe7pX{{q8mrowfSwzh9+n{Yj<hU%x4)H=P8UC~^-m z{9(Lhb~Vd>Y>aEFHKYBmYEQIw6X+?3+u)>uf{htP2r+0Z>#wF~`-ghAOABgxjb(~V z+3ZZ8pScjh=BKn}4kKlVe9dmaK*%VA^PJa?3x`8q?TaL_pF6!3|FO!Q%-lj^mfI<! z97BqG)_liOeS=B7UX)t#S~Yejw@GW~cWgqpHi_B}UC9;oUe@f)Ap>_f=gxO-G<>^J z5C$F`)<0Bk8H(J)%+veGO>Y6Kg+^_uCQ$`)pLaVYGRFwYJ*&;JGQGhhUN1RX<g)w6 z!RiqsgF~Hj+ngJX2HdFJ15caruEF(l23P7BxXE8%g}PyJS^oUJZZ3ID*Iva~vfN$K zqJv)Fr*yii-@U7wmzp>2Wq|IFP21=$aauQp+#l<cdzWbut(!EvQ0}f$nxli0jj}rr zJ5TkmQV#v=U)8M#|2od-n{sqv<lg5sd+`P#zI6Cz_q2pO*IW4PT+!@IY3e^Mp}eN| z1yi*N^PBGa##?1*YHeqtmGG%8>yJRW{t)3$WQxw5C~;TsAUmbP@nLGWBG)O9vDls5 z&Lirb{4F$aKB~1A(EiXfYhTLy>snNM=2K(<XmqLtx>pyqDhJ$q#le)Gux>AV9>m*O ze1JKaPwi!hsNEj@n5g8vJlR+5K<L}|;lJ>SBpo2GtZhjfRnL6?CqXN4r!ss<Y_9x= zuXgU0W$v6Rb_l1Z71MRa1*v)|_8QOoP8<R}t8|_5UO`s<n>U?kB(6c6%YdEBqa6K0 zMe+-4O-HS(x*^$}D$mxN#i=_rUoT(!!^~{8L)y1le*q;i8uMZxdJkVpRD}lagLitp zj6!M+*f4e{aYIgh2}K9{>r45&qQ5?Be-+zbF+KWNYTH+TG-giru^@3dhR~Z$-{jP{ z>*`Vv*@XKDUL4n~mA;0aT_e9RU!M-Yg@$Q!eLI^=#F$(KBW$jJ-Ygu9T>I-=RSlt+ z`Zm4v*U#6(@6GDlgQAUyT@_r0gPKWzXpVl3Q{aJ|q=`^VqukFHXMMEq`i8u>ZWChd z0&y}-0&L7=%9Qadh~Es{HPn8HzZwS>13%h%xn)ep{?2n8k=3@__}0Z}M>M%Hgw@qv zhN0!HzLl!m0YU}nxD(xrLe2-rG2Z8l=FAa|#f42JV;f7I_G0f!9cD7S$e6hUsA120 z<~RH|Zcqg9piPw4oM)H0xP!pN(Dg&Xc)=bQQ0LZbbldd~{H*M*9CWYi?dBCnrrtd; z9bP%{oR&xmhnHL8du1xpja-rb5K9=$FA|m8DSxOxWfJ(o>Hw3dSF_(D)bUH12Wd)P zPkNign@!I4q}PzlQSRIz<R0ievwwdgTzFc^*fUEzFT=~=7zIYvs9Kr2qI$Dt_jHYD zlRE$|v8_lLvDF15kc;_U^Mv#7$duQeg)N!Si9HX&wtnWg-2(@HEo0HT4`XpyUI%zz z7cFGOk92;O<=-L()tyx8-f4!~XnIxOl(^h7_jEc9Mam<o!)Rje%5JjNu=(Q<IAA3F zeKFEmtG}*&ze;(0`#hzEaZ*KkX;uGf<<P(W)!pU^L;EX4|1uW4`BpsAb)#zGnuSQ$ zCUUt9aowh7x2~z{aj??<v)ag-e)9MQxb+_R)&P^C*qzc27s9clhj#zdDdBhj<cfN~ zPr>JD%~Z4IR#iwfeRXXG{dMg^E#1=6U$;nae6UCNB8|6x1iL|Z0_f)0(v^`jrffd% zEGPY41DToX3Q=JVqWkLGB-ZrhEua|sZv^EXxyIC?fJ>?B<5}WALnjWwStha>+%<F_ zx>P2^*e)1x9(fb*TiqG$?z}~XjZHp1V_TYidgyjTFii6w6)K}Me3+{D#`(0JuAwoB z80ZQP)H{Vk95V0YT4nuH(IR!8-JHI>!kwY5p~l}@Yt_znn-GDZN`bEV)sTPhwHZp) z679*9O5v@)!x1`9xM!EX_bk!E<P$p3uJOI+DcpdbD}u@RJ93TW4cQeg;jtD41?Qp6 zlDqSRZn)((wz!V8%lWqX`v)aD8_fH%7K!Xq7Uj9;wQ6$HXt5avu;@8;o*>(?z*_nH z{`*y%^=@)GQ(DurtNN4rs(<|^Rc{PUK(xa9!w&#{d9%BuNnA?~7DTSTna`1H)+&2_ zlk)nPI5=KmhgefF_KH$(<u2{ou%0?ei8EjUtiZZzX1bJYambJP<{+or&BJuNeTbe! zy=PZ~4*<c>y8_%Y)#zYg?~{89BCEeD!@<`Jgt=jh(c;c4jxLCFRUmGdT~)codEJ|Y zWzizDBS^HL$NHa*A54xT$dUPo8m#})KgIekqm@E`-9N>2b{QQhso%?sFdnN<ux+M# zB;p0t+Cvby<k>&Xa%)<%nC1{%haa9dmj%Otfk;gOvgMS~02^G5gK;B}q%cPJ_Ob}C z<SD3>vVIuXZdDv+TC=(R7eEzGQ;YK*qe9>52A7OZ5W^nM%`T^IB*a&eTTHEA-mJ?p z*tk?+)1>A_J>GQnnzeE7v%PX88-t0J-1_8fyrb#5z2hC3i6n|~ety<F0X)i-r+`1t z|69jAiJz6+7&h^QxpOMJXZs7j>#)yF!iz@RoWs<+{hPQ<p?FLz23c>-*T9-Cx8M8A zcR6~%>}*(%imY(PN2YCcmTIPpyamqrv31=HEYlZcR}<CAy)hFSVQ=gYAe3MWb3Qsh z)0zT26z6)<c~(9s2Gp6zPj);3G0fk_vh!2wkF;UElyF~#o%EURZ2dzq)&F@Nir=#% zG;&JFT^xGnXB`uCYhWE!h1U;j66Q#DKX~)dm2j1lkj^VudM|k^L`mRK+$H~`rAXL4 zL7<#ufALS&-mSj{=H|_>W#fNxKs`XAgzOhvWI5Pt<Ly(6oD&^BufR2g!+4D$7-Rgw zx)1FoAFq6mn#o75bF#S@?ATo0AJ|+E<Z_)D<VvQfHJkC@Hskkl84t*2ygn~u%+I(e zm+@~nCkDIZop~AW_8r!GGWt%*^{^&g-_l>NyI?V8hK0in8+24sqHD0Pz71!3G1<(J z$`2j%*Dt3i#<Noo{`J?l+lT39`;%&ECL!5vU&y<+$?gA`(89+>3lb%2ack*ooa7GR zB{xRxT*BJ4`5mxt2YMqB9D0p}@8|J{`!=3r^s^urf7EZY4J-3FQ@rN<PxZ_pV-7P1 zkv7yH&OaX_PE@VF0%yI(9mxe3s`$Jg+ctw7icqL-w8P6>XXFwBY%JT3$a@<6P3mlk z{CI@*-?W};KKa|wMvXA5(j8U&T%=Zw%6o@u5#R?{(j!68J-x|2ubHESc29W!6HgRg z(e9kyH1_O8zJYblYwq|w9p##9;oF2M?SQHH#Mz6oh^W2F+X11wg(w&21*62MYEg_` zYxiY#ek9)0kJa)^enzo-9`onMLHlS}i#;J179?ZTE5?$7B~{56(ON?1VoZ{-$wwtU zrA3%L{T+2rZS-D?Y^JL8>7l+UZH3vqa<$3$@9)xEHIgUj4~OwDeV$nwLN)EytW|l> zF%Wb+np^?}+%AypHl1Vg@j>UY%E$MAzb7-kaM#!m0_II=a?Wn<nCCpxGdSMaGokMj z&vXr5c0g)NVsz&fiwhE;l%>fCAbaMiq*|<VUe|i#Cs@3!FzA$$zA1}ycw2T?3-{B& zec%D)SxU(&*cyY`S}|7Qb{R$+7ootdGYpPnw*u;Uh8pu2ED!j1mx0BUCim=SaH+Ld zWYW#p@wGp`Oxt1Y*0dR7jy9vmUR^wiwz^!&WV9>fsc)Ce&G*bhU&UHv?Yps;G3{2C z9POBpqsh{tG^$aME*+7)e0f2~v4xwR%a@}|73tJfDL#O4wK7l>hdjr$>R>W5COJCO z61G<~WL}Oy@9AX>a6Y-#kG}^_7GqKZnAQM@S2RMys?K4o`brKG^+&xmKnqyuj!bro z=V}BdL~+NpYL(ejIW&=CI!PCXi0_XMVxj2+V36r&2ENS%wR%w{0;HU$EQlsCLyCzY z>3;H%6nE+&UJX9i|7Y*JLu$p;QQ|a}IgRC!Uq9xwXjP$tFn9;j;_$r83-skf?UB{@ zQtU)6Hlvzas=zWVUgIrP&`^uaMn$k#r@};acwO)nTJ}C8I?G(XUKCa|XP0wSvbWf| zvMBEq`uyoAf4o@^=JHM&YTk*Y)>3!nKNch>9+nu(NZ0X@Hp_4CIYvmKf?~Z86gQWb zS%dxWYqYGk<I%2n|D--C(VxCD<h*59bM&w3BuW3wiFqq~q)<9D?+&w`bOB43Ve`~b z<i7e5HgA*+3!JGVa<x-ebce5Kp<``JV$5N1n4o7UUP`j}H9{%g`ZS8><2x4xh(le4 zw7uqu#L~)cC}XW(l9095EPgZOJk~Ez1^rib>cPLg@H~vf1<r_dhTO?T>pDgD<nX$b zc}6wyH@Vp0Z(wNX$Z3|~AGdKzyJxP!A|4)2Km*wW0`Ba9fcLJ>E)&&xUq9tLs|)Vt z!9fKYkc1rU)@d|z2Fz1lsO*m1cgO-()Fr;i-@_6IuH2|1>{DLA{Y*va*(JI5-&tMI zF@wNK&7&Rv6vAlJ;J7L~!ymb?o4NgaDC!hi5Pp<3&);%qb9{MXQ?>^CqL8Uw|7rP+ zzYfo<RubzjC|G(%`tlIxv32*;j-fQ`bL_=tiD7}61s)t1vp6kqPzqB*N@0a2WoX|A zFRxS$zB05Cp7HK*;bpG9{y*Vo)j+e<AA_HS{-5!4^6=|k0)7V$#V@e;F)V>%ie*Sz zmdLwRMm>QI${O}cb(^vuD|dbbRQDvUghx+wb<yC{ZW%Eob0-$x_?n8Bkghn6VlR>V zMlLX0nO@)<Z-*sLrWS33F-54*g~2j4E|D3hckpSaY~@B(<2&R*``TNFc1z`&<Hxx( z%&GmSsSNP2gGJP8{1L4f0Q93FAw<J0!FZP1^Gmd<#H9%F8AU_FDu%p6SNZ6Cgbyj! z7{e$uEye=(o39H~^O0Xqv@z1w-MJr&VMrJPH#{6YAGMRRsIm6MuR^BSU*0y=RF(NV zGGRQoNHQXj<NX?aSBrcxa}!_8{0k&!eqw%D`)TEMCln&7ZV{T-qA&K#zd)&^SBP8= zU3!#SWqDT&OT!sL(FbmU5q}s(LFY||T!+XItYJ0B%8i0)Ej7Ikq}lNv<3HXtT$8Od zu`Kaw6QgJ54Wwnde%G-0HnA9%z<MK|YqbPM-^t%~fq5^<uSToLl>x&YWl8Ys;QPU$ zOAm<L_c-Un3g36IKlZyeH(2^H$JLmII$r@3qosTupV(VS-ASEtzt+$<-Aq*$lVS~0 zo;||yNsM=byJ!yjgk7T7ngK{ES10V9x!BOa5lRA_!>0^<O!pArG|%94jI~~o)mH&) zc#}7H7&im(Cg8SX7zQJ0Wq~1j=3)(J%n}C+^wM90>^^PShdJcEn<(nNw#v@o@5|_6 zWV3Z$qyqO+z;^TUf1od>Aun>gg64w@qa_^v{8rJ#11>q>(h@@u@=}~(Fps~C{C%Y# z)OE&to&O;D(t?ZVPgn=uyLR~eMese@9pcVli3q+JgOGU){nC1jeEhbPHWWX>*Lk?c z$;Bds20xWQ-U{Fc^=FO)|2%s?4E~RRkDtPN58sVraSz;K^rsZA9R{9RR5s9OYYEDe z9tZpIJ?J&h&@Jlum6!H+J#$z-(z=g}ta2jdOv;IrGigjX&zPg`Hf|T|iJNOpe}tY~ z2Uomr&%;$;79s}Q+uymC6#b)Vz4p<B_gD5Pi*cI(RN;(F*Ea#pb8RbCRNSnt8au%v zMk_AW_lF6$P@oh{Lh0lhU?}xyVm~I8_g_$}$oOKn$k45$L-tFouUIuWxZ&b@dbgdr zU$_nO>&AZOxfME}u|dm^ruGr+yM;ers7x<u;yL|a{F!kwe`fxSKc~OJ$b{#t9{!v$ z*DC?#&dV1uI#ln|SHDO{|9f8|6{NM_EJm`-mAX_ti?POfhUEiLYYF+P`5hWvP_UWb zQGVC)Eb^CXd1g1GRxmc_HvND03Nva5$HbsMl>&lYQVXOe)ewsBM66z!jUIVx&xLg( zVORE|J)M7Wey=bgyD&0FmZuQ(^XkC-ozXylMA;ewz_z6Bqw)PwIHhl4zI9$6D(IN$ z&Mxg^X*=H4K^k}^wWK0*x?;!mb*Susa-YJ_oDlCuU`oB+E;#dxJa>+vGkQ973e%^p z#%4|9SA@Aw=_wasES#&@D)6o!&kV*RnlDtuk3a#4u>|%^AK`h5%ht!hi0NYaqS@KN zb$nUdUmp`I)EzqJ>OjLGZ(PcFFWI~u<n<bzgZ=e|c78HjA1gJp^$o00eGRt0y8QYo zZG8<NSKn>Pq4kYYeOuQA_30Y4M(C?UpBvm+C3qcOKLAepa)pV#rK)pkG5S*%$QXSw zd)sCLxPPkYPbD_imWVrC@x44=$8bd*aOQf72mMR`RJmOREDEyypB3g~s^uGG%L()4 z2f&!r=V`CB<t(rRTdX+S_aRO>OMy5qUI>*NIs@CU9^mY`8``E85Jp)4&i27U&P@j! zJdb<yxF>!)4;+|fP}%s0{eE(^n)FOH=~=YYrfcl@4cj1bl5%E-KWAOapV_bSr}=9B zoSop$oYDN5dkSETG`v-u%iYz@&mq@n;uw*XZ8|hwH6gQ701D(>5029{qjU-8u1+1n zK<jfhd86a<06?xGk~&?fn5*A1(SaAIxwjDAv-cp^f?)>~K?qIwFWNY!ZPp@_)<9Zz z_usRYVOLu_S%MX82ZXHjBA&9^i+M(QCU_Qmhu@5;v>R2maa9{twTi!uXO!oBo@Q1} zCcvT2bAO5;<%TxsSL^rrRi3jTE+-p^07V}_l%Ka)D!sQmk<UiSCx5)1TglyN5jL)x zBFV5!G<dJGtib0@*KZXm0r?MoWhsUa{LZ$09ZMLLn@n8DOJB+82;)hn7~fR*e=@o< z&erI1%B!`zjXb$RHEVJsDfSZkXRVMsygm<YeF>^R5ws~v!;YlBK%b3B(;SnEJKXL) z^H1|z3_?4Lyw?yThEA1Bvfk1Qhl=$NhWGRf@7$(5c@kD}=LK)hj|K-#rgv`3G|6et z#>3M0$2F<}EB+d@<vsfr0#C)4OD@)oSrYv_X0Zw<<fQUy9(n%xYep)~(gMiKltP=3 zdR-Y=@^ql4pZe_@oWLztw<gw`ra`F^*Nk{k64@M6J26*W3k~1YDs26eUPauI)SG_c zxAIWwR+_IMTUap_G@cjn`_*_lm`KiVJY5&<-FU_>9LnWktTlN4r^d7WM%#E))^8xR zmwmP)@5puFmu)=biLh!#+8>!>lx_SoyvuCh2c#vS&^!MujOC`FO<fV=;>+|D<LD*` zr}j^2)_6dgbzX~i6*h^bWn|XA3#VgIx}#Pt^z$F=A$_rp0s2Fs*s-~3w1+Ma0)%`_ zZZcZ9;~2i1XlvN}CEo!m2b$g~92_e~QqZzn{tIL4|5Uq|Qc>}>qUHdRmZ$pLP(FUc zT&wy!5kkJ|FaPRLq5MbHpLau6_49<_-Gf!jG5TJDrkO7iU!=cCUl?N1@6*m-S$Yf_ zrS9bBbPE@LH%oi}MCi5ad5l|WVqDiCSJEMs2`m!wyT0DF?wrNYhKxhrSTU9|`%}i9 zYMj+m&O}~#EGP5ihEl>Z{`{Q++{?40l=oP$W{zBpAwKO3(;6!88~;*0QLgNK&fMRg zX`*Raf2GxJ<y3#|ajReC%CMHJNB=e=aYrinWJFcw-Mki}!T1M)e^D&(RY-YNDOmnA zXIc7V{1N4Fo=+F@2^4ht_+lr+^3rE9ApFpxJZr=C0eM!U2*FvXS$|4bA>9rUX=`Ln z3r7yMA`Cp`xhj0kak3WH6!jtbC%bX<aHQ*9v7x);vpKty-`KH+*~Y$2a_!5U0c-5~ zPeuvq)#?{ZF)RO}x(p>CeD{&?M|T<)X2u8keLO?w`8{YDcai++AcBs;1QDc5-^kVL zgKaQ%;Y{#U4?2@)vA0zd(S4ae!Z(UVC)!RaJiK$7odf6H)<);FYpEUfPTNO;_PhcK z75Fm+hOI{%JbE{={anafXC*sNu$bMQT#F^o1xlbtO19{-ptWOsF*A2hprykz@8x9> zkz4Ri8utm2IcXNXXXTxpk2d=3p3m8ViR0bm)u8H3EqCi%`^`H)jkE9%>@dyUJ9-xS zr_3EsxKry;I|Ki(@6v);SBTc*6J!d=Wc9t)oxT`WqM_&on!Z`!o_02oHpJuNcc5`a z|H0jI`f*}WiW?6%t`=)?Rtl)@Pxo&bPj0OBgMT?STqHGtJyaALO>=`|%SiIhro*Mr z>Fs!kFVSE60_?TVtUD6VEAhMY5#XMVgA1sp@_D}^;zv_kMU*HNB>!oMGVKprnr>2j zr<CqY&k{DF(t_qJ;*fos%&B=@W#Y4d2(QaSS&NSXlz(!QMLE*7AB`c?z#q8@Q<phc z%Ev4M6WbYwylF@+IW<w3(ONU#vCkVnt=#zt=;CF+qQ^aUSprK}FKTfwZ%uZG#pYsS zzg_S4r_2dXo#ab=LF)ITYfKvnZ?#Ac8KTzZA=`Bx`cmKS13MOAD>tfA>pE(ZuD={& zD@e*Y7V3B4Ax&IIaEqp_p@CCN-Pwz^mg_?LOg?AD?xx~9fP&%c#CZ@0uM#4ZmZX8A zX7YvO5c)1S$l|2b*MPuUOm}uWK}@uuKEeJ1$|N5QJH@P@y<`Zs<|M$5GytRW5Y$9~ zec)nKM@SP07TNINxH=O!VO$pJS_(WcyPp!cjJ3+5X%XTAkXLPKi<<0V6JoA*>|t5< zjwq`X$f0u3JDk-vqUvZ!$i)TZIFK5epU3oQtL?p(O*fH>ayoLO_!CtUnYIB5p}33d zT-v6^I^-Sx22C7D0Uy<CXjL@@PQa8peI_%%J_%TLIG^CDgVd9<mm$-Dy^b#cdUm@z zV}5^~8BufVx4D?g#2&#_zDE(aQsmb}GdL@hsg;gq{aubvRBm^&cJN;FPhPEzCYMFJ zTFL2S={-p(nhG<Gq)9Q^sf^p28AYqeGS7RF@PSwt{aDtWlgGNJ2&D+jB<RTK?D1fH zoCEe9AJ|9Is%(5Fki)DzU~7C}yBYy@rd7&l3pfau;Wox7t8bOgprCidH*Bx+qkR-G z?zCUvC>2;pfvkO3JP@HYz&LNmG>DS3Y7FPwZ(^+L>#*k18_+HA-b5kN%*!L(SC}y% zXS~0@j4v#=k*@PF!ek|n{bky#Q(r5U=&!G`iPd^ITmx^mIS=dKg7~C5k+oDuE(Le9 z_-6g9n9IVb^pY@V2}=;yX$C_E!Juof@M7OU#<}k1F|q{vD}Db=wVX>Wm<uLQ)hYD? z(&z`7wLHo1xz4`Cs!dweP~Fiy-FkE`af&-ned4FH@sL*kL{D+)ngO)##;c*1p751C zT&4&Y`HS-XywBk|5B$yi_UBV%aZ>Sa9x#8V80OZovL}*S4xin+`OJ9IGOEb4kvytu z3H!KZNCuSG7Ij<9NxvFCrtgfGk}=IKOGwh4RE#MZ7)vt>u#2QL+SAmD?2e39%9Q97 zIMV}hAv~ss`;F}fxZtGXB>?qy{~ao?j&J52>sWZ@9Vk?aa^AP6z%31Dgk<^(9n|#N zM~rFw6t`2*oi6j&qhnFF3A@v4RCq$4y@oDj;DUm&@FDLA=wvChvJQ-1u$B|C{}EJR z&$AT%V#wn=3_}_$Sn>!znG<1d6TPpqn^#Qh;}eYjzxFja6#aLASpV0tEF--0VbiU& zy>-ROzgGZiL7Ldp0+e$;L8bQZ@n_*fBrE9K%#RBT_;XPwe->RpvbwW2etfNwKVM(R zpNqc(YB5+M6a%MqcnH~gED9f2(beUm7hNr)+W2`b0^zx!h?M%NswI+2^A*+vO7xjm zWEIn?cqds+bApjItq6}X0kwzz>30pA&M|2%!bqk;-(J$w8XA%3Y8W9u!v>xdh*~E4 zcrNEz>|J{`YI9w@(=U!<OV4n5bk3txfLERKxW>Llc~wgywb<Ll01rVMst>dUy_HI% zzxhSIF-<K1^M0kcsW{^Md>9S0C+wTl27NQpD(^Czf2Nw(kARi73NDi7m)oB3X?O<< zX6BPS0@me|>o*HgoQlW9b*wk9ar+wOwamU2d*62<-L59Ck_#~!H2E$K?JrQ51e2<m zo8-6kfU^CamY82nn8cmk<~KQKY+lB-K9ux5Mwv}pHs;~U7h#0e`pm&}F+=++=nCh% zzV9JZpEmDY)<r?e%*><e=E!Nxc*ZQ_wFhs*=iBDno^ylrL%L-=J<vCr@uNI&H_pZ; z)XGsQoNR1qRyLW7Y=13f^i6{q=Zc?3K@rH{I6rD-0;;`&t5mHemXs@uhg4)fKE=oM zb=K@P#N~vwc1lx#sS&X*wnJ8f<75gkZInSG)g529J-9gXyoe!>s_-L?W-!nwMWgx1 za{O7*8_3<)kU%p+0Vi)Ey5kKjG>6u;B6jTOP0;GCH&zIUY(4oKSVONYzjcO5uJ-OF zw&|yGznMlzx)Bt(YXR?-)xk(+*wi}oFUYAK){)fr^HS<6oa>d#&!Ht<_3a|BNs2Ci zMh2k174>WOJ*(_G+ZO4iLp(ww{Q5R&s8c`RhM9;03Ci8anZYINk(W6rMcYCYxt>kT zHe^7FY9)UGVlpcfCu%9r(69Oq7y!b5&ExnM@C-QjGz-?m@r;9t<OK9&UiQD_W&e4Q zU3X$jI>nGD_`{v4Us^62sg59q<DK4aovCy7QQ-c(0*^IOpwut0avufuLy!R#x2V9t zS8WZif&0gyq$!M`z{M)CfdV;yHyAH7Z;35yaue}p_-ZaPQty@idKf;*SNE>^3OX|@ z#8(qM+9a{hDO2>t;g$7sjL$h(6W?W`aY8O(yND1vTo|ME!$(6e!BjT-9%Vg-<kYf4 ze40&o3{8x1Wu-EUsgaWVbX^T(-xIy=3`l!%f#t<7_rbhzdCdE=3f$!v_~AYZ6z3KA ztO{J=7r1&K1rE+DP^bbkDUd%OKm5Kz*vWo^=InZl_0r$G^#%63I=E0~@!6x9sB-$! z3}Y0caZvu9Uoze%)AKr8fOvpi$ME}?7}V68F6)<HmTS3OnP05cYqLxi@Vs4*sXei^ zSVwc17WS9rv<rOLd&y`aTK!ngVEsA?{7!R_HLjHm1$DWXS6N4@-1`z`S%FjO`{iZ_ z<}8T8xw>8oa=(E<pP`~0TWUmnBwKqRvD~dQ-Q|x3bw&b%lv;xJx%IU|lsQ2jtl(|n zL8z|L5)k!nZc-iyh;+R|$uyo0`V#sO;fUPDXY$#m1#V6W*^G(*gPx&yx3UU0I&Xm6 zfW4dw&2|-gwJ9jrlsOhcY`oAQ+bA1!K56dkgj&FC(TR^j?Zv7gtp$GjLLNhnQhN^) z&!d_OeyCAt1+36eFCyPYl(TTM$$^l$7qFq{r`R6WE8_c!#+Q5=uZ9JfN0PFB)A}K# zl>kd2PQh;WVYe9AbYMJ-y>sN#Y%-%x?pLR}GJ+@OTJAc(XDe6gRh*#*j5<{%8hK{9 zsbh18a<jp&YG|bMjjLdp;!vCDuDqttOCA4b5#K)x(sg5sKOPF!|HZLXF{$c|yG)Ex z>c)D2?Q{cvbF=#)tp3{hb2e<btRYS>F?;NOOGMNtPsc?1B(#k+!NkXnuYb%7u!QdG z4U?xC&rV`uakJgm`^;am_{cI|PndIHldTpG75ST;G8I3z@%N$eu9S^;ElCi==o%v} zzbC$v+THdduG4nv<rJDRu(PC^&`n+P-%;GIcx3fD^3uRghw`|pcstoWDqZ!)z@cvA z$mD}uw#5NuyWPe&o#`Ldyq!44ZTzrnOUKKRdm9J&$|tACWZ`4S%h~ZS_{OQFRwK1M zi5e~DcNE0zw2icMKlk`u%s-<IgHQRhZIAH1f11I!vKt=Bxe_(JW+OT%&q-f4?OX%g zB8q!wR}YDC<@zJ^TN)M`b3A**dW})~#pyZ4Gh(v)wL-`7<A0-cmoag?Z_IA|lBShK zhVhKonX6xD<b#h+I`LTOm{yjU0Yc#kAS5V4?hCn^J$E(1(2=x%EB~HXM@l7LJ((t? zAWfNDKU3mEx|vgH!TuJ7aWpZmv+18^A`AV~!qg8R4ZHiNS?*6W&5OcXw`AXGuDqLE zz}21{+puL(5KkZ&6En;5Is-0D&`d_uqDqsZPG90g1hs=oiCf<OzU`?EiT)s{HIKyG zS>Tk}0P=p3WN*xj<uq4^EHm5qtR0eyKiKxR$i3f;xG12}78-uF=wsr8hn_R_bmu1A z3$$GNn@HVQHA!6{@10>p-jtp@#Iil6!oJbgLR3rq$6K}Jm078GQcNQkLB6w1=3<c@ z1u0&#w91(#`zUQS8OijF9idi$Xs94YVbY$E7P7D0IYZH>DmIx<tD_}WJ4<zZVXZT_ zF_OC0RwQuENSE^!XVSKe36E>(8uSA)u$o57v^z7jf!$_+Cp_J0Iw>*~U$;|@4ILVM z)U>vahW>iXIL#o{3zktIAM^BFtp+w!_Fa&pl1uK@eKw`1otB{$4(_Gl^)ox}a?fBd zM|uBg<)FdwR2BA7Wgpe{QL6`#iu36Z{-jAo?aIYG{0BLw&>(KkehhRkQEqKqxH7Lr zy$5JtvR;k4T)<`GYE{$ZfEK|L9{DnQ`8l-iv(mbIjuB#c^9#wHwJtkIvGpxTs0o|S z7Is=C5X!wjE&)2D`ri?{bZ1oe*Bk0cVeMp@_is|Mu@l%B@|?Gp6*S1Y3>sUIixF$! zo6bMq>O0?YUTA9_Q`92q+uXWn&E$CEPjDn!3yD0#i|w-r?@-zw8k^U;o@>BOJi1j| zGSElm&NnrYyqvKlsBg-k!GrnsJKNuMGmohLu>tCvWYiH<H2|xnTs&hu^fcW!1ZCY7 z(yZm7auYUz<D`YIToCG{kIjq!Br0;FrLH{rog&D#WqOy<$z$h7C%J^lECw`+qdE+1 zYtM>~u(*UK@HBO3^1^u#w^r8yBp%Gwb5mYDvL8V`W2tB0hGFquYk#y~r;&W*=6>}J zMxRO;nY6nj!R$-yC46ciZ1~MdFg3?r+T_j%Io_Y|p(Zx$x{1P&*}=;K@)uE>QiNPW zMx%lBPc%(0{zr6Uc8D*09bxR?-yY;JrsK#|vh;51?o{2|D`@uqiq*R1qy)=VlbKGl zR+T*;_sp9Qm<F9ZV?Fk*a}_H#5-?_g>Nd^c)(f)>%O4uIO$>&{VWBhS+}yORDHv@C zzQ^?aXuea)OubKFj=`y4Zhopwfv}Pv?}bea4)Cd7`>D)Fxj)I6n;hni+#ycVE81?( z)7#!s#E+8gEzxJ+*xppKy(zZ6rEGgkMJ~Q>^4FDYQ<0XEXT5E8WQpzdeLKl@MbEzR z>=twD`2pJtwr+W$_l2H;5!<(JuLHXOA-b)xY<pdW|1q>+?e?wNZ{xPT|Lm6SO%?oU zDHA@_RMNZs+3f{;CFV$)GdsO_zSFDG6#m}VO)xWYxLe;+`S>K-*^0>b9!zd5E_@VC zHu|DmE#xBfY(`w}0n8w9Ox3LPIfHK1kGeU4b>h_4<%bPi=DVTU<eI6iSI&29)5_x1 znw(CR`Q`e*E@*RRwYdl2wQZ@~5}37f3VpDYzhXjA-WK%1xc;wMZO#RhPriTDrJL#C z%r?BU=Q@AYa+T!H<!EM=dt@ioqn&kVop<vGV+(5DaZ0W{N~?(8LfLA@oBe5#S>v7Y zjM4nPZDs?pIplqjRG8D)$E5%h>H4v?PFM58`_kF0)Sc7>+yZXF6qRmM>+y9@n*)i% z+tjpnkHiX?E=$&B0@iS0_glMm?NUqq3_U-QSdff*{ilvDFnD03v=_G-3*6wIWMH!S zlbPn4o)rg2x;}$JS&8$4m{OnO9pR+EKHuBgjDqi?iaKFyP@rmC74RF=Q)4`4rl&6E z(d6SC>GB{(zT3ixBHEFZ7N(-UwG*edM6OQSAEp5{G91}9W>-b){OzN5^Y_I}WVIrk z&w9^p*>KoLgDcj1_*hcp$f}<}<o2yN4z)G2S|X><YAM`Y^B4vRl+Sq3uiBx4t_Cu? z=Py?f25PH=cxuguk(4?|cO+=I7lp4lHYk+oI9*#?Ph*hCTxS?ewPo3K|Hp=*WMDvH z1Sni&W;E6U#G#oFu;Vx<*|mnv868?oPI)5X#YiGwOwT}>FCgzTr>N5m53CZO&OAt` z+8BX5+{dWp4erPq7`FVJ&PgrOgGg5yiG57sDSsvTaa96DJ_{n$$*^8Rml>)Oeh1D4 zKSWoU`7%hkutH^@8Y7t`)^K>xbcT2cnuD{N2>oWIw}_gO%MrQRG#P1-Mdg2^i0P&_ zr=``|>dm5T=68rsFjoTe4^N?&T)p`yk4Qt0=#S^o4}@Y6lcyDudIX9pCH>SS!j6vs zYx~v>th`#W{s1_fIao;B(K{P<1@HPic!KlxFgVW<YsvJg*z98IiF;OfLXUf}dsY!1 zNiiZdQt2KBWj9c0FPdvr)A6nol<!zE1}KLch86nju&OUmq1BMU*{SDm9aB&V6Ygt> zpKtWD^O3M-n_4*<wUr}MTX>!iWi1mP%p5Nc?m|`TMBwYx614Md;~tATtG!$F{I<8; zZ{M#?#LF7Y2`bPc9ZuH}Noh`9KDCh@4A2gnSYS*53SSIQLMOD&_YFv%S(!-9d7P05 zy-TSu^A=cxv;4va*5(~hvtMM^e$IYalUseGXzbVr1WEfx$-W`af=rJh3OHuIf2rG| z|0tuzHif=XYsgiY%M7&!#9@GdRTU2UeB+f2uB^Q^)p-B)udz(Z=pV^yCf;TiYw)g? z<lWD^y5J`X9zHuNghbNyF^;cQuy6aQB7XBDynR&EzJ<JtnCo39{GBCjoGzHIpRZc~ zwV%R5i=AXA_0ZX)`v+qvozmaSi0V?^`qq`bYxtPl6YIDpnLVF!&g=*3UTd50lURiZ z8I#gZhSh?5B#xeI(~K9%w_rFEIJL%-t6ew5<#Ed}mGO-7EH}c)EC!KKoZoeoTa2oi z`?qX=DcX0>lK(T`;zv$z8r0Oh(D8D>-)G2RnNKfVMc15*9{@Gf#}bfWKeqJ;TYZCs z=o92vjC;7uO_+JZYKM&)=V7We|JFH45-o_NI@G*8C)1NTsK?vCa<kq-m79}0#xL9@ zu0cp``T^+yBM0xR-~-s|K8~OlzCT~CV>u(&Xy2JG+D)%&Q%<IXo|l#8i1Cxu){tb# zd!9kY#0%(Q9;eFms=LYPBilbEL_fjW+pxR3Q;?=ao%XQvYrRKO5AwJ2AM0hmK> z&q!nuzEe#C+=S!8cTL}#*EAGUg@;B$oQdalUN5xNKopM=CI3EM<DW?Cn>MG>W{0$_ zL6@0bNUy94R`!Vj6VGprT>U-ehp{S<wD;X-enYvnutXn<$j<Q%fu$D@yicA9am(Y2 zgZwL%ABC&)%Y>HuN_YE2qjWMhdnsK@9!XZ|8X!nYH#G8?_&Sv_V{CDd5-8A`t^0ed zl{NmI%f5VYd-a=S*UnQp$1J?X3TYpxF*_}w6_CU;bVd#ZZ_MW~H1}d?g8n<b>Zjr{ zYfA<88k`iLmCh!PqQ}s6b#GATV+6_N&nA%Kb3|&r&=)2Zh5tFM;x)O7-Oih=D5KuD z2=`>p0kWaT_J4ER-1b)I{8o2bt2dp_%AMM#p!sxi)eJ<^lX*JEGxW-Fe)5OajNj21 z<1Kz;S75l3y4AxDyZ!N&-*9MCb(q+O4(21wUY}m)LuWTFsAnKl*{ipMDtnVJk6-w_ z^e26XX+U(v$IQs8SjUl_D~bv_&V^-lK9I~;`Rv!Hk2!`R8Y7ZJ@WS#%^0ORg;3+~Z z_LiJP6%<bVOc{{_r)SCM=VQqGJ`)wm6`{dC;&C0N?%b$L*r6%P3#S-lzCkMt<hiof z$kVP2^6tXV%bcY~I&^>7O!TV_BV%ml50_<o0Pb5o?#;1U!%|Swcg2Z}NcXQ9={y*j zb%=9_-wFO1)Uif!9?6X}%|dPtm&nf7R}QX3SaNtLlfy5Q_`0U?MYM4_LYKl0=qjQy zl}qhjo5JYP^bs1avV@w(FNIn@jBU%+b)xZLUmn;A@$Pd~#=aR?H-5^zw_z=uXPvjb z8(Hfa^xysT-5@7qw7~1*kvSJ+RDq-t$Z!2HM6`^=N5I=~Vy^O|s63A=bjt>cPfo=! zDD8Pr5<tl-ndK)es(=-tIbs>Cs{Nd?HA>sd)?AW<C+<Q-6;Ih3*%Ebdn#(Bmia3^; zwSX6>4MN2?0PWpVgMo!=vqCUPyg5iTS<Rr--2b%Sr3Y}O2l0WLhc4v~so73%I&^T) zOCwoZ#|g3YBO$Zx(i{ItfR0RRuWq29AmQJa*Iy?k=ZHvSdxQ3>?*te5n|UmTy|wLE z5snJCJv6bsD3a22u3JG$Ro6e9_E6%q^c49`RnCCZ!|_4xsf9g{z3+yusi|I3n)wcy z)29t`n(>1@ua7T$@Uaiv(D!SqIY9m~LZqP|bKP;ri`<NdIuulH5f}whY7ceJ2=SxB zxmcT~Z8X;Gmroa`$w`!C;0a^D(hXlLP)15U=GAzS$(x*MMLj!4hyoMv_6~;(1F8>S z?&46U9t}(v|4LAt3~*e3Af7)TWY2TK*;EK;aVR}`u!bd9x;n%?&~3i<Bd7Q`&Lzyn zgz%d#M2wu29r~?Vhf>PSi+gH%@u2gTj#7FHPE>uX=9DYv5&=AX;8SbGi{74r@rAw4 z=EpvCt8SQh$`!{s&%%qUt2o02UUVBaaOc7Zc#sUtWMDu1gN6pS1>^rPJ3T__g@v@) zaLpT$Ro@m}a-><;<RJEMjHuzu(rL)6C>^>TzC<~8GFqdt^c#55MOU7m4xj9VZqUWk z?*OQVD-V`#Cc7>zjyfZp#aS#cGjI|xzfOnmGmvV~6`hQADiA-o@|VsBf=gN5XrbMG zMJs;dY)uzmWo8`Yrz_C{9r%S=kGMq8Z6ql(o{n)?ybf5*e~0LeuG3u)S}lrxx>^5? z{)eQP8+8wM{CzVu2n40+HSNXD2Oimk&x$pjM9XUDwSSZnqypY?GB+bB>-~mx!|+lb z=F>;w=Dh2?)A6cb!22mt*yP8b&tDzn=_HSD>LOh)1H5z6d{xtNc#z`(1Eo4|eJNks z$kR8<<n*p!No*FxlYnr?weXoM4DM%lUu@tYPy6%NnY8XJZ<l3K%Ms3xTPM@F<A%mi zyp^JeY2U84@Co{e+YD5h{Z@QWp2jYyh6btt&uWq-bg%I<co2liwJbVvufbf!N`@7y z8CGnpifP6FJ}WwPScw;prv$s8^44EVo>e|y?TP0;Z<C{%p|&tNO1vrbnptEQP!<<< z-x-G8*|5zg%3Df3#KX(I^QU4kO`l)xUBWvV#0Br<Bh0(lN?hUk$>gF@;q>YJ0<oyO z^$YX8CWPl><2^|pJNDpn^b%Wn_zE8hItqEc!LE66)_c30IRB)E>~fI69#wYF2@b$q zgbq|YFPft-n-@RK*?PY^)^r;)v;Kv}M>8WUyt^4l(SOBBLvA6jQya~8bKj>HH$<+| zrYO#^>3Af-x%)J5KHjjgV@$x~u5<BWIw#G9^n#90WOcKdRLV(rz1z{E0LC_84B`79 zhVgxcNVm%54IT&fsP3^i-vNM$0Pv<VsP+?lxq3;`Ge<!eV>DfhCRum~nc7U#VZRO9 z(>dvMA)2W1zKk2&H_H49a@PsO^QcpniWj7Ca7gU>ll~0cwob!acU%L1nV@|p**BPc zW^g5jX>dgX@(mv%soS8U=J-Z3MZWz*-m?%FAzA|o#+L!Qh#Iua*|_&7Tnzd)J>)l0 zG0<<K@_6JdRH%{hl=D#R9brf`QM5?c`9RA<uyR-B2m3!5N&O&4c_eiZsAm2Rm8O4W z;db9BAzkPgbd!$<xQe=4MXY0pjijbiP}106L!k_~hyRr)y9qs{gzn2pPZr*r^k1-a zECmDqBH;CtglGjU{I#qky*AQ({YoBhnrS4Z@!~oeV^)`TidCm+JB(>)W0dT<6dIyX z(>^=YIvoTAikLQZ*95gXfA-e+3nF849vLFypE)AD<&-cdLi_zG_DnkCjuU58I6kbp z&AGyrx<I^mom8cAH*zpNl!WIUBdD__1Iv5@M$#22kx9<^>)vtf8qGYUAW|0J+lJx0 zG*_kfNEwim%5KM3LUHUc6npaW-=zE(p}s+W+bekgtP>nC9M<33@tpYY{e}RhZv_&H zBPucIr~bt^)5qF`Lf$i9`~Z6QI!~A#<eEoRpqKq=_~$UFoW@b?)XH)eizg(7yqDfa z?P}xRb9l!|ohxkh*NiU>K7S(`2^wlK-c!`iyE-^;3-3N&{l@xJ6AYIfvu{CPzn3h8 z^?@Le7r%pkuZ)nHPp@}%UZtIRl_q=!bTZN_=-5B=Pi(8em|dDf;RT?+2&m*J=~bam zM$)uAkeAB&?KDqSyfe`Kpmb8D1Ft4GKgA|vxEO7*DiA)`SB0R1VTY<9EGF5z_82Vd zwn^Cz=Fj4e=ECuFZNL$+828~8vO9Q0XK3T~KB9T?9Aw0|Zx`c;^CZsNV0^(DM??JW z;rDG0zklB9qlQ}E*kb%MBE1Z}#Rv-~*uTTY48;GVYlXIlNX_q#x6FL*XuNoC>9R-f zMeu0xq%<hXym<%^XNQ?i-s!MrGDzM^a=>A8{xs*&xO^mf5eI=Xa~xlPeGH`RQHRN% zxS6bV@E#9wINgp*R%3LK2+Z#BK{5RJFy%St$(_!Hj2&TjaxCc`t}gle#<|5T%$;Kf z_>dK&N)`!*Tm!L*1>>y_gOEFDNSD@3V(~0v{44npS+$wJlio53+o^OC4QWNBYa^*9 zgq}3#jr#mb?j93KJwdL>svaS@I~GZ8G%w|mu4^gc&WI)7KRmKpt9zZ@Pwe=`{sjf0 zNa{L%Cij#_QpXW%g}Lb_B2&(6hJyntz2}NZYLj_6FOu>`D+`Fj1$M)l!@rt}jpxCN zbUcsuMyclgB3%cer|t}R!De$Dt^Rr@ru49@4eDcB1d!Q{mCE`z5M#!Q!Te>q?mYos z{WLiZ>PIX+&!ElZO*qnZKV{$DcoXZ_srdGT6Q?PhUArK8`B4QOCxIhvClpgr%j8hT zr2t34qDzOGQ+gs@pEcT4qIj5Ad9Jr|jTr<O4=pL`dY9{SXUBAe+u>Zd8CfM5CfmR> zYXOqn4gY>mCCS~R5-Y&A<B$FIVlRZo;6y>@Pzw0=Ik_7KF5`D{H!Qu_U=!oc7qU_Q zh{)>K<%-0+s!t^Hk6J-o$HliF97(BjF?2<`&M_E=a8U#037JVP<@d9kY_o{`Rv-uD zGsQ$>SOi`|FLNbzfvV~bP*qoAC6;<ySnjzZ(UIJ9UZkrYN|<TX#HiWepH<wLlKKoG zJ~~lfFEaNS__2`c(k2n~AB@6BLL1NQYM8&P{!siQ8L>w`i4i-jhCK~xw;k7K78xu) z6X`P3fmWiQp+G<qb)gCcncvc9B5*M!`9?+XHMwX1$m$7zAlre;=H{{mdD63<O1^(k zWc3KL8P$3fA2yPD$0AQWv><c#-leESz*l{qPnmx5Cih$t>3YBxVu3(GCdQZKo{mVD zmakI(!Ad;PBz`5*bsdSh*3Z62)08p;xC_ZWUyO7mY#|9J^R!7^6zRIaCXQ2Lk4aoY z6xSvms>C}@BH&LN0=_H&f3^7zPUCDL>0M@N0KUK`enN>~3K9n_?LN2Ic4-lvY`&kD zI7lk8zf4D$rpi7}zN@eTfqZw4N4}r?9G%oX$52h6ud57OJ{3s~()^Np#z$7`28YbW zw(fjQPwuISto}O?lY1&6$@}q1l6yWAN&QRN>kO37N4j*O7l^7UXMRW)UoirSC-+QA zL?Ww9AYl*8Dze#`pDxH;NcQxsN0aaGf9c`rIe$*i+LHWW)TNR1oSS(@R&R&w^sHY* z?weiO^HOO4hmyOC7C5s@8FLAx-TOyU3G=d_^%j%e`#JTo%s7K4<XuHgnI8fp@TdLu zy2^0#Q=DF78}3lsTAEdqXyzfN@sgJp7k;8Uxr4KvIaCr`M;(#@a-C!VEr_Ik3>uMD z4;!<7NhEcF`KfJW$vufkN}*Ace+>Cq*-=jrO=rv2mu41HL3-*7$=&BfR=)|}7^B<O zV7XP6EMOv|!duV+qsjWBLI5a<`)upO*76w>pD6_x-}ECBweN@NJ!Ibx(fe+>V?&^u zimb)<p$GkjzGV6-;Nwxj??9^5qimVm?dN=@;ggx2Puov^31hj!Ry}M|)^g1!qw!DO zB~k4)|2z05FOQ9kbdBUK^9X;ef1<v$YcoG>ry>C0P>}gF0A!D?$?UpV>bcHj3v9Nj z{hIuwD6NR{>QWPTXO;qC!CF)`(luA5=kX`G=Y&YA&?wWF5=)bNP?(uO$h^TH=g|d6 z7kso}Qo+_p>N!C0wk?u+MQ>7(NY|&xq{Bxsl8PW({uX6ClBpFppdj-#MG*FUodZ=Y zqa<oEE?{wHCK-IzD{zucugay%8fVi>bLpxen;y!gOJ>>homz6~yB4UZbuCIviu|r< z=3z4U^qeIIIkS(-9AgNpKWc$`qFPd+vS-Hutm#Xqq6P6=KGOKZ9#nW{(SrW^qoDL{ zvO!(+N$XIDU$f6_pR|L@1DjP%bjVA7)*Kr*8wamwy}UDbdMQ5Mh<Uy4<Z!yB&^b38 zxwn8Q@In2P&CG$xG_N<ADRicna-68OcevXjx2YH(*N%UP?JKI!Ziu%z)Qg^1UhEbw zLf7#H^+nu5Z%#Zk4rStKF6?Hl*@5mM^x|Vp+~1uY)qUzDbiC<L1>oxHa>HDG8`QQ3 zzGwBB`Zvfa8R*LWHXZaOH1!2*XKyh6kGT|-`z5?q*`wLu%l`Tz>zM@(z8PQ4-XJmA zD;$--JU>6v5^OK5dF+z?v-1<Ix4U7G65N@}88da^2@h91U%1r>XtaF$nMI=u3eOKY zqYKXuCqE`08|?p(vtH(GWdiC3)mUFNawL+`As5+0h*wq~Tu`{AXo4cp+8kx*oip1k zX0w;ZMFCO_(sL~c_mFgBp);e%d23C0MDn6gVN#dI1?1Xzoj)E?%*|V0!NCW1Y@`Wd z69N*yj9`5JBdC_SbDY2W$Ld5`XxHUIKXxIxdo=6Dc*nxFozyzt;D=5YNjz$K<47c0 z=~dGNv+_KGU2+@jxI^a$E5F32{82xD5%~w6w)Tn3zyTrtdcUCs4*WSUp+foY(l^y| z2@RUN?W9>CSGfiEe^=zX9`EypIne;h9c0T~N}7eAU;hz){cEVmUVw=I%<3+`{<l<t zC41HW0HA0%MiGIK5{ZPfG4M3IT9Un<!)SKl6NZmx%V|Q~v8H_kpKzLrST4m?YfYi` zj9Us4Bi+di9_<yt%Ps8i_lDK6O?CNooToZ&|BM!2+xCKd%TS~$4bE`(mmZ3Gv>5jQ z>`~i#l!?m|z%_d3KHzW8ga7YCf!{bBz6j8T8cih=o5D-Rv4oK#OHWCkTj;cutT`ZC z!;XE_usE-V8&$*KkGC5i3r{xe+>7LI<Q2G31%6KfzdfiO`uArfKU{I?*=)pym6u+s z4cR;o(sO*lrPFL9a<=w(;qZ<?X^uyZN*bNqaca0T`SPj$ht7vPJ%tTv7HX3W$7z9? zL3!9)(T5)I;P5V^lsiolFb#l#pBrG|?ty!Jc@Y1w^47p*tk1DS($fo_#u83hAOZ6i zNPJ)XYR@D8qH&OaZ+W0q$h(~i7OU&%BpXO+wNe$4cm+-pQp!#iX3^exjgv!q8uOpV z(34$<>XedR?x)KwF{Z)0=}kz+R)pv>%t1S)2{c#hBifxuv5&I+CFH4md|;>i1)i_i zmX$X4)t~<Yb_jN^a4?ZN4bnu4l;5uR*M1XrMKQ-=V$y9OObIinL;}IZCnS9=0p77# z5R|^j*;Tp4n~uDlt;R}vr^q>iTt1fcg<v;8lV(|eE`H)XLmw8o?>z-km>WHWTC&YK zhCV{!U{jH^n~p8{T4VvD=EU~M1D!MV4YF*<d@$<?XNP+BgnD)tCI22t?uhK2CGx=c zRcMF<6OBCZgS``jxXh*OM{@dE|E%q5!tOAz3w=t$kvC!Hx6Ug_cNC_cPkb(2zoYj2 zrL#IeY>lK|#SV3Th{L{(m&gN8X#dH-jN5b=xlQ57z2_CAp6}S=9>&KZU=fa;(MCRz zd!I;tFg|k4M(XVRkdV$FRr%KBjvcjVoYqh4$FABPk(BoL>BsKcT^+x4p0k07m-b7~ z995W$C$n@fa_`i^o|i`BIK155`C(_I>zh)D9jEU9V9j4TUQAzAP&PO?No_c?N?S!% zBEu+`=r#NAwCSVMH_+=a*ma)kdHsL|D<8sVyzg<ZLT&N6l`m-w*7=uheEyeLN?Jzu zcL(ipps4f1QA^oY`21k}M^zGs=y(2=FZS}R*v&!zACu#lT#j!Fcy>L;$K;)m%R7s_ zACu#RT#oXO&++M8jsy0tPtsGE#K<)>h78$w6mmc;1<9AjXO@t@mfyzVc`0JnCkN;M zEGuF~=_$;D*Kzt*$9a)oUl~pgo_cAS^PxLc%28A&AOm%(sSRA*Lv6E2et7EA?a9|p z?HbG;7_|NteV-Fz-o0qTZqq{K84aF=&G<j8y$yI=Rki=0X(n_E12aH?T!|QU(9}jv zBxqs-rcKgD2pDK7Rf@)I!2-P+%7j)dka7~p@i17SC|(h$pcVlyD%SEMBu$%?_ZAS# zdjWwnO@RWX6sXPr^WFQL$s}#n-}C(QJel*hU)El0?X}lhd+oiAx6zguEu%zR3?p97 z4JmoqEG6;3yw=!Yy$mlMCp+G2j-#y}DM`uLDKI3f%wCYCZag)75M8^JETnxVNPu<_ zY}Ip+vRSEQ^j}sdd?V_v4~~VIY8*(;%R47-bb3piO*;ppa<vpVebL&!1#eSud~m9c z%_u-K<%yW8D3@Xv-8r|vJ$eE@xhagczXQz#a;GB50~xtxPVZ@Xasua}iVECT4(6s& zx5Dw80^X;9p_L=!x!FJ8YBn>BIhOvia}L=?*KzvjI@Ex$j#2S7*8VlPF&31<?^PUR zzm3YbV5JS+G{Vn;zF5YmZ;P)s`VWx8ld8JW{}!S)u%^CDebx%Xgfz}W+pI9Z!B59{ zGJV7r;{?Twl7>*$y7NqCjSsu$f0~RG(_r(nK2_$RcAQP+n}wswF*8?oJfgf9>H@76 zqYIuN+49~&Num&`(>+L>T>cnD&ik|RMs>~yQRWvFhSQq3>`;1?9IIX5hq4^ggF6vy zI3E-yx?VRo(M0zrNt0Na?EK*3^y0+I_K5pd=ld6@&rPgcG|qjW+eDYvA0$@R7uIoq zDfa~EymXK^DY5dczE|TD-kz}9-H}+iBhwV=du^Wy9}wqK!AUyn`}|~2^z+^%-rL96 z$YW3O=WXY=`%#$nH1wQ!&6h?it-ltpL{tBu-}>?WHH{OVk$&b<U<Rm2-%I2A{OE-B zm>3Hp?oqV6q9=MV39U(G4v;cfHtE}u@%7^bV&ALLzL)l$@OGa+E|=LI=zGK1D2D~5 z^+XS&q|;1MDyef(;l&-ZI4%qfQ*mZd#GUNElUVsq-y6{hZ}${OOv>z$3<$Cx;ss;c z^V7Wc)W!E97%Qtj71}4ewg1+<^l_X1{xCf@#LD++LSp4sudwgUaWrVc+nM%AK!Ky& zCxga}XD3?7dQ?yGcnjX86ajR}UeGEiAGOz<ZlTDt5bHnP52fzKPgo^*qHWG@8E(wW zaE3D6PKH@C?!M)Bzx$m>xCc^g798>3%Mwl-Hh1@CO0OnMLHZDP>s`-HZ~xePFHL-M z!yA#e`!*M4;s<3K|0{xZIA(tJlv7vL*UXtqv6}!xvu|lup|UMH)NIR~SlIp8U8*n9 zxY1qr-b+=z)H9rk+j<Vm)#GlRxPF5lA*8N|$iGZuB;xE+$Xi9?QnN3HRxz}sTB}|M zG3A0WH(n)Hj(6TDWC2ZiVXr@qh^oZOXkichG(NHN)Ch|kdpAd&O_hn2k4;!_K271< zbpB5rM^s(!W)%54^D%Q$)PARs>Elo@>{B7gX+u)8({sf6=fUZ(xEq|oLZDmN%}=`C z*+oD884yhdzQiTt)e+ZCVwu%sLGP$z4@A^MjD~dP(t#<_{RgHL?OXM_)3?vi9ZNx% z?5~*&9$;){<n6@Dahdd&B6*FOvXgg-m51)BG5<`g+=q6UMnnq-rVJm`Gi8?+9EAD{ zWtSJ)@+oC(sT66DqpZ7*vDyEbts=Y79U?n>5HG}<bN9k&KcJN%Ykr7B!=HxpUl~r` zONK>x86HrEL&#wI8}o(Yml;*}+Zn@Z5LB0$AwGQ#-r1h13wXzHD8|)OaOs8(*~kMS zmnO`Tgqhom3fw`6SA#j0#3<0#)NoW7kP`K$BFCA1GZDxAIerS(Pf+V(Y@B)o*CN*T zcLJ{)m1P(8@6xianW=g{H_^r#KA~|WnwWKtJTIQDdQ7M0>AW9~wN0#SVAr2TucIy< z!G;tse%Sf`q(s+5KGuCU(RD9*>%L{>f8t(0u`+W5ovHKv;q<(omf|{Rb%cSV<94d5 zk#GY9ZtMKt;s9hc`YFw;r$%WPja;Q{Xcd6k*uqsoH)$6O>bnfz+_&p~zu-QMxvyjX zv<3Rs?VIRo<VtK$l4ix%TGHjj&y#=}()h6P1Y2B8;xm`tsg=-XdugjL-T4(ge}!-M z8QX6@RoBbjT*4>rYXGeoW^dPfVps({I{*mw>1slYJ6$aZ*DCa@C4%VMF%UhF2T}Jv zK=e8ibS$bC<M&kE8~A2o{3yAmhbptOBEs`m*w+9`SGu@`9{(tFaV*9P@K|j;Yy_Ms z%o9}m<ARsW^DpmM&%d%1m9KIqv$p2~2u-zF(C1X<uv|2MTST(#ibEPkRXnu<C^M zr)65#cYZM8{DU*C_woJwWTy3ct_u&ywBGEl$G??ny`QV11ZZ(t?dXAbrfqQ@ul=iv z=r+%n<|dX#?FZ08YvyY4k3!QGk_11??4KXmTDvuI>0!Ka-=SsjY86{?Csyv~u5(@- z-|H6|3EEgx@HpG2ytm$YG2*-*`LFw(O%Zt6d2t*z*YlahwULg8x*nrU=FcAlCXlX^ zDUCz$7wE$9Y9;TEW*(ewQ9X3%h<=DY*TdE=k=l3C&54x<xDWJhrq0I_D;FP9;6C8I zG(K_T-xoYRP;evykF-v2Vc!P`<}2@^%{{HV5-Vp7J1-@2FNSO1=~xB1D$(N?bFHT8 zn#cpS>l59MxQ#)GW>*?6W8({PS&ikgI?H8k1j$?D^^Q-GLHs#abmlsbtN3w#zzXeL z)uq~8y3rH(m~|g!*9ofCY=d<4(2~ST^5U8}D|<ySq<_cKG2S_bp3|t1K4s|HUkE)9 zIDGH)Y*UvJJqu6`sao_Eh~?auS3PzwG%bj%b^B{sXrtA;?)srmvA@v+qHBQT;=>X* zK9F#9VhZHU%!<@Lmu_^Qg#4ZFAKCFlrXfP+OFzeFKLwj>@8-|)kZBmF_lN3zJa~VI zDWlMo(Q!{#FI|eMn*Eeo_(o6)OIP3-6*B;08t~JJl`~VHcZF0oq%Lx&55q(3C{oC! z&RsaZ`+jc96HPmu!N^dt84tuS(}&&nc~kp*dJ4l`-H{!eaS23vD9RZqgzw7v=--Gw z&Ke{63SNo&SMxN%r|NQ3WzY0otfyNI8wwKlVNW3%UH4mh8_47=`C5#{%4^d{(e;wo z?1f}M%p+NH93(sKzYfBQ1smYrk}|5h)u*}Zbq_<f8FVmoXbQ@n4kO!R9?v>8X1?T# zf0_JIa*~1~<A~Y|zmC*Gsb?fsa;UTzAo~GCVc(-D8zg0GC3-Q0#>j&f_PC?T&p{w? zJWo|;Dh_quG0`~#6jD(8ZlddZe3n=c@@;?6$?VT%rbkeG20JGo+3{xPyh!c482VfN z2-X}M+I`fp$N7i)Z(#<(GTl#sqTF~&2>x_R=;$M`tXx$iG898<(1OTd&zPfKIAyNF za7;f=G|e}QCWa1HGu+MMfTm&8FX&$t&_8ogr1rz}_hakd#ir7ZMeeSFrr{$=t#ln5 zbM*_YlK&4`T3h+Bu6A{zdz0R@1o9z5x@uxIxzxB*#GrNV6pcc;4xYnDA*^1WeNAJH z&^&EiZU6a8{A~=$>Mv=~FYaU*Er&aOO}Dy(hAm%<`nyOqVF&Fjr%74-R`NEAhW}RH z%(b092ac6D$k^=XMDUzHN$hTg&qx1_@CmFqBYdU}7ZvzFITRgiZ2a2T=fJ*B1^YUk zPG}jL$b_8zjiyzmhwOJ=FVeP)Xy(ya_E3`9VbDJBGv;~wLE(2h--QQV<FOi(GA(6J zx(Tcy{+bZ*RlT(jXulQBa<S9X@gR{MX_&m}y5HDR9slTlCexBS8YVkZ8LE}N(HQ(% zWNt*$X|z^(dMSoMPouf$37e)0C<%wW8Meo?_kRF%RD1D;xHzk3D0tpB{Om2J;X(f! zlmD}O$}jSpUBQQ$cnpjAq%Fqc1D7;5h|K76gftcU=^^x6Z56KrV09ddn8?5Akb?>a zqDK_aCT$OgK9N|-j6{&9-sBNdh8_s}Hzfq?rv~by9Ls6orBtd?mE$>Qk><%;mU3ka zl`|v6g*}bbN!b3BSxb9-q?H%ERN!LFiw%D}3jO!MKeBgfNN47pkblKI*D?Es)a9v! zC+)*mnqPO))Lm@r)|xP~mzuhn6CHK__Ng<fdhe9Cifw^3MG&kmu;IF2BT$cOD#+am zka2T}WYlHHpOf|LfBq{n2^#ayJ0z*(c1-b>i0r|FUQLd)#=`mSkY5eLAcKF^!I(aU zCKXH9HWET<`81FpCOu=me27THGXIt=F!kH>pX}Nfs5_7#kP|=$3ri<6Yj9fBJ%ZNq z282rmNwKtwOF8?GhNKS4xBI*2Rlt~%@~7>ol5g);2?vB9;j$puRAme2$Z&?WvG$SH z$ZEEQ7HEsXYAUJmU-b9TlAQ;bmedUv#)FpFgUD%5vHQI!`%Ya%6Gr9_g8k_MTG-KU zSfJywJ(c_`N**lS`DKeAbFg_lJlNd0hfRMr@dh={`}-}Fu~r7m1wAeF2s#0hAUAj3 zbdcFqxXkcb%JLbkE<S_R;qe;7XNXw}F(L#G<ys=}v<8%fWsD}`-cnfWdY)55za+ju z{zJXThlrQ@Aim3Gcm`RVHSh;hs|r9U7-)#nYt4&M_QG!bb<~08Wc9=Hvr%Fwzc?%O zZOYfV4B`yEA61_G<x-PjCFg_v7A6N(c|lLBR;_8-E$yN6Md>A_emf%w2}|`Ulozz8 zoc1*GzL_>v)~;J{rV2#=PT}&XOI+4XdEUv<iR(Zg{C_ZC(a2q9!!(gBkzRv(ewkU< zw|e3_+m4A3WLo02Ju{-28Aa4>r8HB8w<UD|Ou4}m@}UfBL&o@L?KNkd%0&)KPUW?K z!4Af<wF&EhXxmE$d7Q%xUsZ->L57~aWcX-ah7x7?4jI6g=#w(Y5K?4AuAcaSF#9F= zw>oTI4|`oTrfR_~(X|?i*p#!#txiSO(b%XzNLkJrYg6(<>yfKru3}`8zVj%X*=i-U zo@bf;N#BIi76u|ZEFcgBqx8RUf4EkNF`Mjjyvf=Dsb8cb{^OB}Pu6ZoTyhj`baw5# zut+hz<t(L2f7{tnm|m>MxF-FqSZgAxA?kL-BJ16z=unlrp^(kQw)QkdGfhQ<O=2hM zkm_0$F5JX;>%V#c-3#kWuL_B>cGlDdTP>;BCM#4sV)VX-s4e#Cpc$HLBNr1lO$B6S zEILr7<U{a(iIvAkYaejeB`*6Fbx&NMxiEwSpcvaT>4RyKCYUPD`#hbK@&14n<9bdg zN^>}MdY@fqy6K`qcy9zM2pizfJ2rDdk$Yj0w|JkO?qX&pFPvbG-<|kKgvG(*-ud;= z01TOYVlQkHEHyNY`Qp2<O~w9}F>l>VhPpgHyImPRjKgPAH1pzdko>S(nR<eRN5C7Y zfL;6;{WchtgZ0jq{&v6X+1@1WcySFGA@=#lPChS|xJ>NrHAP{i@xt*zEC7ba3yC&~ zVl_v$A`vH^$E3C^AO0wNc}A@E$;4%Hi4%XuE>!68$dl>O%=Drh7g&`GPAK=Er8&qC z=>Qc}7<p^r+mMx<J1kq6vJ)%MVS73#$13H^{zQ51R^-ASiWYB_1F+w%Vs-zP>rY&l zSn1Q_B2S`($J}D;wmXd!BJd7V!@r{05A#Uy*=>+u(SDX@dn0mJUWT3TkYRd|VQ)k} zH!s73%5W$dteEy1jXuNz;q<=9)P1~tC&$wJW?vy#&WvZn-;Rxv=SE*^VeCPm8+BPe z7ir49>1ucVBqRr%Qr&U520VRgM0b!n6NGP_LdCEOb5=orlk=k5eSBg+%be$=j!q8_ zZQ8v)i8<7z75f^bmjS2fSw3-f$Dv$PLb+r(b@<yz!!C#Dh(v$TtqhDLd>voOkwbr5 zN_s^$m8;#r%&G(4l(OnNo>tfG=Y2^ng(d8A>7{19V_ts<;zh_*P4+4*0|0@+QVYx) zf78~uRgTXB6r=G|E-HuB_hntA$hBd?7Ayu7<1zCaGXOvnfUK8rpGsHpq!r(B$B%H} zLHdX<myYW=aOkiRc~KJ|$6SH=+VKu(6+Yv%b${LsJ!JF&=?I2iw7Zg`Q#_X^?(H?O z21{GlP7ti=Ql^+iossel{-Df}Ll3WFj2|9)VNdeD1vuMe_G&(n;^$J0Tn-xh&7odv z^<L*A;&EU^TGofl`pVU@4IN)&Rr&GqUn>QZ8|f1%s$$|hk^b6^=`XlzhsMjo9!h`O zbZ+_l*v=$jpzV0Y^(T=ybctF2&6*Yir<ED_U##;%z}=fLrVAb*Udj<tDM&S5P<9;- zw4-@fooITSfzrPtW)N~ag-?`5${r!cK1-}jr_!v+>&PArHt?U$lw(9Yk<i-g{=5VJ z&~ulDEw!3|5mybei@AzT+T5td@VPu{upQ<2^UubW6c~yvaL#G(ZB*@Hf63`*BD9gp zc7U&NcI>zCi$oP}w+asOC|!$xOEe&1`pc4*>WEb7##8>9@#=_HVKeXOUt8()-P^tW zItJ;v=uPEx;)xvtnd6Iw)`ayNeT*&(fhz;>Yh1%byQ>SWU?Whbax>Jyem35ss23v~ z!u{vOhut>_ONu->xjn9!+hALpaKDDyN8SGPXIKhg{Jr!n+TaiGgCHnmj0lsD@M|V| zKKob<phKTGEi<E-38&h>rw=zRtm8c9=P(%x@mijf%L*x&Gxe7}t1mewL&X2eR5J9K zM0Xvwghszp?KP(dYM~5j-F#mA3*JDm{<SC+tl@YLzB8@G!7d>|z{p^IT+xo$cy2N@ z?1J>zBcL`3hZYlb8zDNr7i|JWCTL0_W8`X29d!~q_aCG#&tRt7UC+c#@EKjFw`j2b zLy9lxXiQGusMGj;ng8#KJ%!okQ}nZ|KNJ;z0dUY1xBKSfQA47VHo(^aNSWJJ8X zH7HXOs6<;JN<}nwDUsROq+-Dm_Wy}ABr|xR8c?$sk!1ml=nt0Ok`IyzbVC+=b(G*l zDbC!hRx#}Ny%vq^@XFa1_zOyAxoNk4!6(zLd@ZvMyS)4j&C$;H_g#o57DrUi%+w?} zBo&cLd~uyZP@<Wcu_AfL6OOh=kf_EkN}`hW?7N-OX<VY)tO7(XPbz3uwJF*&^vk;x zV<R&mR-|AG`jPu^!pZOwF?z7X_*p$C6i`A1CCs2?{2BWZUN#W%OK^|UE~S~I4(Oi8 zPC+%vi5q$-U&dg2ku`%RZg3xUA7&gl3xJ2C3Fl!IkD{#j-^9v&dzy>f9V>{}I8)Dm zY5X#(W8<;AvWlk;_0^fFv)lu*i4nCGXSg#b?!*J%7j<6TIq?BRTeZ6Z33b-Q2O?Qs z(TYmv{b=G6^-S`l^sW)tqkLTV({xG1YA+gdqx(__Q_M9Bvb@&r^{MRP$^@+LzG{T* ze6J;bhTC%3&ddd-T~bs(h-{enq)}9}H;b3P%#pQ=&}Kh_Hv74qnMFpM-6b`QMDCNE zhy5cZ3kpp9rR4zH*mBq|d$<sDkcq#{jDMFS;rHK_{a;ds@?$aPAUjyWQ`&3ri&fi0 zd=zRHr$1?AQ^PhcY=EgKFV3~t$=JbN(*G_5s(r8H@tpV=;a3n4<rqVag^ZxA2Oy?O z-C%0esVN{pwmvqo&pj@gb2AZ05+$-Ur@zyGtDezRGCT3mi7UP7DyuH%ABIEvO<%=2 zk^70o3PvtV7Rp6m9|V)K|K;ld`K{Q(hX=z=>`kzlV^^c*$z$328cxC(d8fbF?+~pT zwlIbsK#R*XsAs2aEGk%Phxd{8?zY|>F=w1tT6gYW@eiaTEKcdIZk<(YenipS`wLi# z;AoxsD1Gf;mv`(Q%6kB+s=QC^u{_ax$(DQQ7v8n0^}5`VdP0}U^svl1#ahvEs0rgM zBW@2yF7-}~O<WJqslFXi=2zb2wmdyMGp!gWeAg9ZWr^{z1n<Dog^N*)X2m0GX<sR0 zf_zb!r_*4WxH}{6%}Tn{;G3k&B9LjxC2Isms9221_p;3Qim9uRGHN%czX`Wc!{^L+ zC9U*Lah*(&lL{EM09X5KmcsGn*+rrf;JL@T5?j)3l$%_BN{Nr9Ev}zEiDV(YnZKx1 z8fii*UE;-Xb*cZ>@PP#?&4`>jQ<BP5X;13YKGa!CPZpNw;VHjYZv~KdY=F4zs}N%p zJ#BwesCFwXJ=1HK22p|hKE-nOxA;=Q2Dr1MHk)^_0$1pNV(l5*xUk}82bZ`vW2ab1 z^G~laEm8XhM-7vA^vD=md%6A+yvS~&%W7D$@XR4+JMg5n8T^jKB}YiIqiVtkQ<L@- z((-W76ud*nhWO(tPUb}p5;Ix*LJl38ZjYuCT_Umn8k6{{Vd4uSliMuSrk&ngL9X&h zVSCj392x65t%)7H<cFEYScoK|@Mica(X^40IWF$JpP)fiB7o~BerR-0(F4T)onUo} ztaSI`x7zwvYs7XEwQ!vEw`eR<k$T-6z#WEJEOIHP9x%hOim-kDqyTo%QO+10ey3X} zf4mnhW{NcrjTUq3D`+wA?L4p`kf))%wJx}N@9R2%>Ui&@s52Dt7DT--JFAo4**n?f z%3H9bd)PfG>egr%&9BGY_Lz54GJOCB_en`7(CZkl+oPl22(at-0$6Z@s{!m_0rt%i zz=HlK_}Gc%@g-X>msFUQ^f>6AyV|G0SViIzEz@)#O>}8jU~fut;?vNjJQG(ROwqfD z**!L^AgU05piO#heBuyTud@s*Kaw_+5mU$f&uD2K=WzAr#Ui9FT_2_QXqL2ErI5cy zaXNnOa|>=xbP35!_EfM?a2@c$7_AKal{DWh=rrtM{TBYJEvg}kgleUr*_r08F6V-^ zuub>8t#0cMw|N^6bKGX)v{;znOp8UjU*}C_qH(?6R7Ymv`Xy%#x>@bUM7P=pG?joK zSBp?dc~pxm$I&u>n|7_7o~%V~Cc6LEW+<OLEt%+^qzBvHHvxRf8X?+BK@B7DYS<3r z8`A7h(2lJ`VLR%9ra9M+#{71)1np=H+JSt_Z^!G#d#P4@F>J+dEs(QPoklS<?9XXi zVxr0nBv^A_Wa>CO6)`GqyLT_#7C3bcxBdDhxNYnEY{*H5gX{LJ{VS{`)c(`Ta9@yN z`(A2LL_?UNK^d+HGTgS84DW*KFvCI0aC(s8*}Y^?m_(T2#TUs?5oFj~qxa3raJw>m zxP!hwq91@(v7TZFV&KBe7-cWRL=E+=G2a2WAp6~s?^b@y_ijyf@r5zGhfD40$;2gw z$+}YFCT33;n{HQ;==wjNjZ{V@xLEPqFs_Vl+%1VFZ1>vd6PGIfksL?kBN4mp5RZtR z#nu%rlJQj<0mKRls>h})Az3l+=>WDbYgD3ts6%kA<C^rZe2vPQWD8ktZQts4a8v~% zm@YSatJ}VfhZeWp^twiet%#W&Zd@NZ1>qL#m;~C`DzukckG3GCSz_=`K42#ZFj^F0 zFbUp={csc)dtIqcA%eDi<Ylb#XA<3t0Layp(>EDhLNu)34Gk~6XKVWpYr6fVks8GJ zd*e#!har<KegU2t+@2dRa{epy+RSlVS!FBkalf$>yvE(*w(`U=S`uKz9GNAfE$P%7 zR5ophv?lRjjs62!F@#d|E;{dU;%9{0_9mvT9y>qS0yt)VaDHm8Kk?xrb=z=q(`+kQ z?!WwYkuX0GBDUGUtob%Dt1Z$?XjUeQwL4Du-uw^=F;(5^#fpA9p2m7jNyZp>i@jah z))4x6O;Ik@UX#?J8m}qNr7qaZWv$MTN<lr%*HC38rE&=wRCEsIZrmrF+s><(d$Z%J zPup>Mi;6iyW$SzIWTIDQqL-NkCy6c@hlHv2MQWc)biJnHqX$$ymP^!{B=+$|aXpGr zg)5`I+FiuzWwCsXR&t8dTO}yVYnzkj6}rtyq9a%b!Vf5JOMi!UI%|u=rfvaH8oHGW z4c*3thVC%!uVcYLAWc(&aQuS3=3FC_01&D)^V&ZZw~PO)Z3nV{focz}cLS?Bf`zqx zcUZHh1+{#CFSRHdHmv0>TsVFmwFC;RS>I>;)y!R>wZz=gl)rOpksQ#P;4}WhP`_bQ zWyafjY{?55BK>zshTV3qcPgu2y;F<RU#r?~(r2P8Go_c<WiCgd%1h|rl@Upqe$+UG z=@6KiZ7(2EupZ1~bokUL1!0}mE{rc+<uciL`vX{4i&OQ1a+JM+=iol)?>ptxs@LVC zsQ__}l1;8*Ch3EccG3sMOs%TgzmE|Z#u<F?JisW<RA1Tm>bS^O!#*A5LyIKV<xM>& zxnO=K`gwR~bUJZR`edlmD1peenX95DTDZ!K+{(2Sv$Z&7tyYXzSs)ycB>s>4|Az<# zYrmj!udy<x^wFj&0$%W9o|&5;vU5W-jS)fK3N(!LQQf_FcK+_Gb2%tN(d_3Ryb9_g z^MVN=<9|Kx2%b&QjVW+xcQ2i-Lb*B~RQuRidh)dRg0%}bN<sU*y3Fg@PA=hibz*Vk zDfCiWy3#uk;FIXGT#CJu)RYqMt8tWuQs)2SDc06Yfncj(F1bd2!0G9f-K`CSylFJF zBuN7}RLtHQ@^BWHl1vf!ApHCB^FN)LbDMU=?t6J$WTPicC%P3juM%2HG*$nk@gB1l zL_4bGgdntK|JITmKk!^Ec^J-5Xg*^9H6OIi<wF^`{}^N{=UyhK8WeRAY3hHPfj}Nv zf4)L;o;UoA`WytlXBvvPI^~h{{!adWSKfIg&Z{32*VnD>eYeeQ$G;Izr(K^ki`DK` zkM;RQ?=4Ju(@QharR-z-ct?Eb&`_VoUpck3w!h=O%+yl%Y47AxH%VdiM5kiyCd!NW zzZ*2Ypwd>GeTKpzX>w7}<Cl+-E3LN2uaaCD#-rgM$F}Js{ueB?SS<S~P-vw9J;y{i zf|AOuiN02rIbS5-Z@=nzb}w}tmsiIxRL84qDjt-F{Tv&*IcJ|zZuGNleW&U09WUB_ z0~^tW4iO`NAcy*C@siC-WK(`nNMgJZc8V!r%)p+pJ-rf29%<&;$-BpaWB6o(L<p0h z{2HZEbAY<Q@UR3ubuw0pGf_tl;dQBZi1@@cYEaB?c*Y2u-PhNMA?lEYGjYi7zvRM# zvUW}_>H2`Osb^-@GxvS0d*~!e;c2#Ee5UugN(!}cjr)oSbqB(DTH-lBTA5{^&r3A1 znu#C5x}4YgHjh8+v89Z36F1aWKU~jeFZysJmySoB9p72_0IixWF9%TYFS|=(Xim_$ zHnk?RbkkX^<LorQ$4T^-3n-R8o~$0ME-QU6&VLynEBKH42S}Idr6|SDq=F-6<(ei~ zbf7>ZVXIqXhEMuDdxR{C4t-KU=mW1?U3IP5R(+Tgs1G)-yEPP3W9IWnuesF{FS+Cc zgUMyROFl>+14@^zp0K`u>Dc}JM(fL?NN|)wGP{f(oks<G0;F2UH!0KH>X6W-_BQVS z4$lc~sDva3vfs@JJ^Bnij{1-2vCLE}l1O4MGg>^i#oU@YB{`SbI>*xHY|*CL&C!Mq z8qh^Fkv0_d&o?KkLzjv~*Eb{;t@;bfs|`JHDFpNgzJ!YKQujSrwbFSF5p`cCZbejF z!mq-w+KiauhE?}QM4g+;M9pFzs;uy)lzOF0rEq-&He?j8<eUbLAE%Y-rPzJ)c_kfN z8NV|>R0LKvHbg7`Nz&@T+G0u(|7%`P{9g)WGI7+<e@l}~HyJ*p)bth1QvDSWIQ6UV zGXzR>vkgFj8Q|#BE%w77K9lJB4roy)kHb4$<74IG5JjK~NiG6Si~sWD$gR%}VE_cU z3|1ADhtT1G4j6`2Faf_zk7s{@nE~D_1B*?e8(OR%q;-1BXrR#H|97A94OeoKeZ5&w zOA=$_@lj*%f0HXSLq!`7Ij>}}P<-z`KiCkPs~a|zoDt6y-=`46IjM@m(!V{c0p@A% zaQB;~?iT_sLtmHUB1)swrz@O+GMDI63_`zv)<JgBI8$s$uMHu4Bkt5P@8neEvD)<u zKg}@i_YltK+2%v6N=mFI;JrTSE+p6_W==o$rlc~}1$~<o@#Fiw0pqOYwVJXG+<HGy z{9PUDIK&s%R+#bAOE7eokBmRw6b3}^>!lhKw`12fUd?9l?n$L?%zdikC1)^Ni*nAU z20DmJ+%Nv5%3p_7o>l6eo61g;2nF&-UIUWA6kHT_OTt#5R08-`%xo}+d2AUDY`Zx$ zlVmqc?+MMBWhs~DWtSP>l`RM=XAcn{Oev+IHRc44P=BJk4i@z?kcc&J)QB=_ybJW{ z<w`-|@<%hUEbJN@V}86~AB`g=Cg<JKDDG9#+;}R@pugNd`c<@mh8<MFWv3=f;q5Xm z{_*$0b`9GIx_@Go29CQ_#t8oH#M)qebS{aV-dOGGjxB>l8i0647qp|7k0kT1F+<1F ze`px#@y%eeh2QRHOfN^c(RLGaxm>MGFNRi@3sK#Ro+!c=!%~XgrXhdm;85SeJX`X< zMz(ZKrt|=JWByq8xKsC>2D!N%Pu1=(klgC$)C9M}ygqLq*SwVj{hu8EHwz|Uj5m6& z<`RoDGgF7yt$`3!IsfN<LVy{xCBIyZmy%cDn(1hR)@Gy`W<6Uaovvy-#1J}-g?ub< z1~S9{)1%5{*j=HLVSCW(ywcmTp3V*Y`^du?nrSM7Qk0c6PCo_V*gjfLZBhj!+vEO4 zwxamg)!)|!faI!g%B#Mb>M@l3YyS!ulEEEU8&fHjxa<eu!C#irdWVir0*^DOk=|cG z%2nbWCIGr^{HZk*{F+w}%<VrL#OoM+D$tDSdsd<tK^F7x|C`m0O@AKIk2jiU@$-@` z*U}F9VJ{a|{V^&q0pxWo^s}S#?MksMb%!pOr&j55PfC*sCY`X+4u({38a`6A<su_T z7N-^`x-O;+_wVi_;H{4Ja+kdZVkQn$J%bGHr3i#wN~5>2-})nyneIzm)=!#D^kaOB zF}fQyf5$5VtK-?K?e4od`iT_t;bq09OG%JF!jedOrMv+WW=Z;Ky_$CI-{|)LZvLSw zwMJl({I4&V<aM;!G<{iq(=!z%AWfK|xs~qac6^juB2XX@qyc&Y8F!BvD-vC^XdHP` z?vnx5C%&QDe)|v3(;RRI7fhZwK*P(i$%F5iIY(;{m#U#Arr7d~^skX#z2H5$&ITfr z$#VW9P)Q(3XbNN@M{fEq136u+)ivQ{8rO}|$aRkx^Ur<4v|XmR>YT|{oIjhZ&?==s zvk@Vxu6$kxp^KBO^ZX9G{tul8hSWiDZ7vKcb3uF}r`d>?GU-3@h^b5(wkn$&R5mZD zZ2p+ajvQ0jh`+Ea)oogThouI%%3cF{M&g<lqA#jrchP6L#+TY_&atBfw+M|Dy!J18 z5GCXOmpE}LjMw=O`rDmoCQ#+-UYVr%{Y^$M#)qPss*x^!E55}{LnW*$k6N<qK6B)* z2qTuo#nEiA(9p=mGBz~-1v1A`<hPYqr_M5~GngY{f8j0lM6!)uqH*h5qs8EVXhcTD zRg$V+%Z^^UW{BuQ-SCU<l#Hl{a%19kfY;2wD{=4hYFLL>s8GG7FZcMGvYL-K@<i#u zUJFR{%U0z%D*K_ne=H?r8lt+rYH4ud@L)qDi3`Ajalp6V8y-Ads${pmxQjs|-=AgL ztMOny%qMSqpve&fQ-lA#Q)RtJJInYS*bCBF1A9U0;W8zG`>T4*Ng2&_M)qf1V+1ts zTl}B3Q)*Z08l^j@k(1I5+K}D{Tv$-R5<SK6l>r@>ls<7S=Q=Vje33&IGBZk@{-|El zH0_WFzsLPse{2z69M|Ay{puqA69G5AF@_s21_tn1cr4twbsgL|c@s+E$oTlL;}L$} zA5dS0UtP-S6+BV@vMT|iF6I9iSBzsq9CH09pm&*RTB&KBe+|Sn^v40YH~Q15j8Dhv zNAg$SAgq3LB>=2OUE#stoO0)77Q~4<5!>DSl<D<zJrg>W{yLK$l}xtp7tFECId%Lt zWJSz7euqSccf6Tn*U1t$K0wyvxAJxmX+XBpeCuiE;c=OF+(xyzI7-`ba{h=?H5C$= zVLPCvi0f<H26f?4>23S!g7#rZw9@6u{G<O2W4FhHh7Q^@v(N}=<I@|7Dy_^LuZ(_g zxkmUE*NA&0Qzej-{tB>Scm@*fWatFv>oC8A2>-GE6v5BwrrH(mqoKc&4MHVoF#%}D zSsEQ^2W^a(!$)c>r5X*XN!MtqQS9}T0od!==R!}A-LJ>^&lHB#ijMRp`dCS@9?X5u zbRN49Y?`%|DsUAeWeyj!{OJxTPxB|SRbwbw#J0GPp^mul<IjSaC&u^_!uVs;9*h_k z%j_BQujfJjcZ8h(2_Ro;_tUCW_+@i!^4E$NB%C#s#yK01vG2ub;n$MxlPnPv+T<aP zS`R6+`NnYfPKtvy-Y5O9tTXIcX5tv~)`%HOO^a*eVu}wp&M{$u__KS1^LUnQ*$IqD zCs~hhNj0H8nu86N&@~#d6PIChg1Tk1`#EOo&&+UKt`x-^pQP@63|*mW`nyhVoS|HU zrV<-pf9qAd<c^*LICF(jt{P+ga(P6i$-87^{hjoJ-1s#(&GI=E`pI~<p%)NK)(FtR z-~3p|)#M%eduR_GO34)*CM@omH->wH*@@eEZSeIqWauChKJe5u)8m8Mgs-8WTYFM) zCcWd>q_$%`#lp35g3WUBhjrs>O16tO7=MM*OHqh<Usaw&R{K|tq~EiDX)yzVq`ams zK*(=}5ZlY-6fi>puj?g3?4w=4KA<cHfC@Ohc{Hcb7OJX-{cqfBWa^xulMQ@|ld;Bb zg=7&(k41Jw-c+^q&zR}Snt<WKLLE@3zt?kBe{bZP^h*X1Q+VhW%pp|CF#bgJG*-y@ zp963x{1K9(Np@VR;EOuK5sn%9aX=q+v2|DnK|45^+t4w5?A7Y83bUpe0w$la1dMMR zL&#vm84=R|(P}!=-<}Fgj9egKATNPL6Kx9Y&C#>!F?^1^=dAnP;(d8<l#c9;w<95S zegz|p{2>akEMwKPciub~T%{l1HS9T?WGL`-K8XX`9sdU-M`%XW|2}GkF&4<`m_6&V zrKixh?1mu5AI*M^YmIWiP|^xhiYVoQT0s9Z3ISsElr^A?uNj7W5K|0krC%o@rIp2( z+=SsrKQuI@ZN9_q2IOc#m%h3;)}L+z#nL`pqfJMLtp}07vFW60rCd#ms<-kuldG^c zo2w?|<>*cNFZKh2((O4)3hhA44RewCRvz2&XEEr|?0$v29(CXFGZqLkrX52?j4$@( zdv#{%KZH^-=(rV;M3(}|oK3s#6fgH2Ku325V$SL)-i8-CkJ-pl+=4{c&-n&i6?etI zGG}h*DmAiTRg!y&fMR<!LWJjN0cc_XDd#oOI91OWhMta4L#_w*obzE(y18@lv&{wR zx4gz@TSVYP-rA)hPBTlzxNKE&)0mPAM@sg$;}oHojysoDy-q8ehZ5m<>h#Ch$KdOo zlMB+@ydOrT)%*ZTp`^V+8|pxIh5NqfXgi#2LUlk{Jd&3+{)2QeQvW6FIXYi4i_#f} z2@;6g`IUl>>CRxR_QQ^C#(6<Rv?7?vUlHJk+iKTpmL08wR;CDVswyaXcvB$H>O9V_ z6kPuTDjmN7R6oj|K|Miv8nbsR&+@|@I#k+Ar`j{lLy$HcVG|qS1gAzE5RAG1{5xf^ z35=AAz#2e+{Dpm!Jg1ZLc^h+~&!4ejJm&_|RUv>bV&U+Y*c3!wrD$PT*2f<s(&cWY zxp-6N?pCguTiW?$i6O;|_YQN}BXzy-_GZVB*Dxo)#-=k2WTd{cau9|8X~RnZkhw(+ zo4I?3fTja&_4fr8bf@|-g~0m_i}}47?WUK>OFttGvzK@?7I7){W-L}tO@hos(%LTA z$W>iXy+U13Q@%<6SYnPmaf4GXz(qu-!rs-mPNlu8bDe74HEH41OS{;+2Tpg^nvvzX zp<Tl?@8#vae_|PXXu_yP@LR?yVH8}_U&F7U-t+`aFC#v%2T0<V&Xs*L$M$pdBj#<7 zFl(%v%{mC9$0_d}?4YOp*_%&8A_K9oaUwm2W>o0=nqDhRcwY({rQDSS*QoZK3HoTj z{-azYG+X0RvA^^kWU$IB9O?=CS1^ByOIbClMC5j*H!WTiw(0^7pY1%R;C5sOOIhT( zR<DkeJSHilY#k6Y0KngG2SsQhN)2eJ1|5|imS-6Vpo7@;zr`9Jlz%P_gsaO)Uybn+ zqui+f8KMx)3k!i>4Kg`EX^aWlCA#)^j2NN4PJ3eBIJ?tmm?4(^DH-gjVWTUxxdG}R z$TU>_d!J!BS?1<>kY}(Yr0<5@^&@Tjm&iSe<8T0`O!z1QFA$CD#FDy-CCj-gDxrca z=S}0(0ZYavhWiWyeV%uY**-bfKIT&?G1+Z}XWR{hC_ov^|Bb96=KsLH{r=7kqxJj1 zo&j{(5t@0_h*=U@=j@QZR+hNp0m?e(t%nNJW)H$vL_Deri{j<9+vWa!=u_k~Vb{oU zXMlZ(G#BPqKZJ0AByLkG(e))5frk?J-NcD+YQ|+HWvV}6LN`T4RU2p&vw=o&#(x8T z{563OBWQS0GMaK7xBjd22JH^>2+jOg<sAD*iL~Ivqb6BH;TiHx@)lBGDVMl^=^t!; zTlP}l`L@1pZAq?H!IaWp%F}ICuXjIl(PS|nCzZd)`%(<f68EXZiI1|#tm|P~?tL{S z_Ep%p!46uY{|e}tJU>;|u>r#_2p+NeR8aEJZ!CYFgX3+!n1Z5bvt3`;xNTyFMuoAi z;O-ojF+AiENsCi-PO6-U|2drJTjCBSPJBTVeVSp*G^9*p$;4H|UMZOHUwp#I`@_8% zdR=B-2OVG<;PEVGjmPQrAq{XcsszYzJ7jRyR{L`}eG8Jy_1JMKSt<rQH6rMbmW>3m z=##fppHQH#(EN{iGoQtx0=$fUjaF&!fTgs{V5wLihLR2A3>Y)^3xF$lB6;xS0pmYL z=cv8j3`h4OK!}J+bU)8Ho;{Pwa{VRIt<$&8$zinxtlpoG)vhmvu$hLyJy#sbo2qBB z$8%Zg>i{SX<bghn{CLFeU$Xj6HTaQ;vxUX4KxxFp*2EvGuVR#q3%{lQA6`-KP3^vZ zj1q|N2IU;5xK274$%#PIDQq~|H*wLa53sUa@4g=I?^x({rT)RKFu>UALeF#0mfpiI z1p9%gsL^TtU*1%tB=S=$HINl^(KXq|D8)6dXOa-#HOCaD(SXv9qO_{sC2Is$o)$V% zkWm5ibNmFsY|{q}ZS=om$0siP^aMcPhhr+{)+5jZz!fNo-~)u*IB^xWV<4>ppf_3I ziv4Y0WDf5QNM~4T#Qw|FIo|(WODc(#kFimWcS^x3fu;bYW1(2)!l;h%9&B2~%kVh9 z#ah92OUAi_SMKQrZqu9)swNqT2FG}Cn_@OFyj#?@iWK112g6#83Ixu^3|l*xyJq4K zjvc@7Y}3{*+DbeiYbZFq?np4ud3TR;5CRF9op(!XCs_V)z6>~eh%l<U&I*afX-V`D z_?+k|)DYcJP3H-1ZLT9S^3?1)f|3Bo8ijS#)OHz0Aw+XLZwC}_rkR2N0RskOiIu0c zZC@Qpbf3fb?W?1lTW4-iW#0$u+gHcZ;|ClqAL2f#d(D!uZ+RKh3us^##DeS)_ufTO zG2}_0x$|z5EYUra2b(7XoXO1H5~Zd=Yq-f6mD6>erAVtPVJ3shX#I9nB@^%-_xm1X z#JhWwY88^RW$JIN6OaIZ1z<bxHsB??eI6{VLRseS0ubanH-WfOWv|bUlzj$e16M4d zL7*nzy`IWkXC1#CUdCFV&PJZhW|meS+xpKi_4n`zk~Nx!YpEm;r||_S0J7%;B|4#P z+<;j|8S#v6EKL1383v6uE!KgkY!YdD+`Rn$vthb`F&gxV#bTNQ^aO7jE9Dbi@*8<E zyaJ14klMh#m<`-BYwC;<n)I*uvyrQdD3)kFvmRSrzmr;dl?&lOvM;Yc+YYJA8|_VO zd9%HVFK@9oNlGxHU`4+G>x7PM&hFTD5aQ=5OwuT*Iz>aeOuZdVuek$(yE+rt#~M<k zZzEGKCg2fpghq%i`WsD1sL1*1<J_t@0Iz13mf724|2uSk#=#cCor|&GZ(x4<F)X`{ z{skXU=!udeNzxV=Q^E)}-sB{U#k)}eXq3MXYg~j@wmgD2+xY4_y=2bbigZt`bOd2t zqzC7Kc92hg_FYnZavGiHbO7$W+v78&Z{s0z)vfSd=I-119dvZBKURvm8wRIV>VD$; zPG7Z=H=P%i79_gPCXF|(jI}Z?Jjq;RkA@TD?qKB6M9*JT{t0c70Y`O2Bp`(d_vrvA z;Y@|{64{h%&lk7b_AD~s33`hDwJLIMf^4ochiWp;Hsv%zPiqOCRXm1Ve-HQB-)lXB zW%xAJ<OG&&b-?gv^TpyUkJkhA{f`Qmg)2JIeN<in-3J-CL{`u?kuUiYPl7IcI5~}d zJS+O%>K&X^lIVU5$ZgN+deszmxy_&DJyl0Dcdrmj_QnSseKDGe*bvt8-({Hvd0Ebi z^}6p8?^aUs*XiE9hD&xWJY)5%RiapS<@>p3CCvV2<e8cavOgVprX>a0OLNb}v;KgG zoPObXEtCMW8=jY{_l@&m-2DsAp}TqF4{!gdxfjQH`^U`v9p*l6?gbGpJ~Qo#>fmo) zKz_yNiTRy-loIU)gxkB>uCvD8%|ViJ2Sm5YWWM85Kw8jwQ8BE*NjH)tmgl-Jmkjrs z$G~||T5xVv-w)v2X6`MVJIuX>bEml<3+E;0{=dO#hNbK{fx0Kg%zhlSvj0S5YMz+> zXhu_skZ1n@?Dk!$+Q+w&;2PDQmm}(f+&uH?C-Sql8)>4gN)e3yihnTB3}%<Z1WS2Q zLxQ@@RgwZ$au+~5WA{D!ApFX}NrIZ}Q*b5wzvj}5`7Gz<(trQ9y!1DWNw3alyY)!= z{PMqR($k*!dt;2aC*Z-LUH+C^G2*_o1|!bW7p;V^E|~cvgDV2lry5+vM{xTOZh<${ z4^L{d`eBh}m-<YHrkmJhs$SV|>@5n0Ph3U8=)Cn+>&WmwwFZoJ%+7R_3_6m?pejgw z`dp{qjO1kxlh$~d;+ZDJ2*muY{e~mzXj5_q^i$i&Xm_&;OzT_!x{LE8v&&f2X2#o9 zs6z$W6OqqB|BUJR*xa*s{JcysGiwJGjfeiUdfI+ZY6WT4O<3jd!^BEYau77!%B80z z)sl4~I50#P>%E;B`0Ovxk1xBH7w+0@A3%6lSsUe|PkD<O{RT4AzJ$>eIKJ%4Jii=I zbM2purLoBl>*Oz3g;qzH8Il++{RZx<dSwBAoJvPvxrz4%mU9_s%n3c&|0ai(LbG+Z zpGrBAJ7I0T<%HeL`kygwg&grT?hgOR)pjXgGC=cKKfs)kuHoOT4BPr_hP~DBc3y@> z%Fs^+)NcG!9r%RY2j#_Y!D_stM~ats0OLkvLv7!}Z+iO?F?hUp#5s>w7tV@#SiKRZ zZrmfB)zzpEUX6RfLrl-P7p(Ud#oP;?@D|103pRQz<hkHk)&;p2Z1NVBxEK6G%EVM3 zOXshS@$|oA=NmHd`pD`HS+-Ye*x=5Jp7U6>IxE_)c=&7AK+S2f><^^(+x{_j{=%N; zl)1$8n#bKohy~A_V=^yzie_k@oPwVGJN!N$Apjd|I61V}$~JwwOW)pRU%-w2@LP~6 zYEJF)kNO#Pmt>kt+ySeF%77h+BEiLSOVv9R3rQF7H>xx}Al>VpqgEyiQ0Y3GW1a3v zHQph{mpI$ZliKk=*TMW>l2xX$0nVsUqk5Kq`dzXyZJe0tPx9~RtVDJ+p>dVW%|7Zr z9>(LIO$<D7+BK^e#@)rYG&;e)k%H@qC#eW`$-z38mi@wf`ttD5Q)YdO`?#}ZF)b;} zOf{lo#XTl2fVJ4c<kKYYhcmU!$D4>qXP9Y+PjQ1JH(tw|U{P#-Fqym+G7;Uf*qnV9 z-Gv|<5#I`fsTBUX?%7@WBGx?#QeNYq8dcm$fIP@O@L~Z)*Z|`dP77#b+M`=z<qFg{ z84&C@(ycJ*6=jKTv;<*41y`q5B-3SHx2%=G^GcDsh-0?z21&_i`okCsObMkaiY18K z*(BP^#s(Iy#O)ZqVJ@#ew5ZDj-;3V>t^h?jePPA8fo`kUbe$uv?KaA&gf{q9uH$<( zrqGPCMAu0sMGe(cPr27UmpiGkF9MoZ088?ARsEk&o9nDAgor#weebVU>Yqni@9H*w ztG1(`bseu~js{7!Ixp?iJ|MCyjw|L8^NuUw64zoDqsJuuFWziM-Btv=xLG<7g^M&Z zxoU)!#FxRK78m;~UxG9PUbm`K!c2Dnbgo&;R`bPo-!h9={FQGA&uY$|Q=ds{?`oBi z$<*@;n`j7feSbcB<6!qSJm`h@*G_)LdJ4!@&yC+*RN$RjsupMY1kDsKSnfVPlr;Tg z^1@P%w&_~Sx6ZqN#4jpymwwx$>6bIN7%@?Sz415lJ}tKrRl}zWj@{`0AC;S)Seo)1 zNHO$>rJx{Xcc^0gC{t_14#B|jm3wzVVN+)CW`A;pJYnt4hQ=@;ijo5U?W&iS)GZBy z5_34LWZFh4vL7GO_izO&zN|uRZ^z-=`B#mC1?f7kTYdyP+p^h|(k;c?rH{jD{!OeL z5$rtsG3H_+b4nSr6DXSpwYk7ES?;XY{Kn=m=h@^OT2r+>`&lH!(p<hJ@{^rku&NDq zyjQdlPg>y1RmnSdS-wOCl4xjC9V-JR@4ep|VDxS`C2uK^j7SNw;9QCo3(A-l3rguL z_WPf<l2YZ;r`1sZ%@+{7rVqFSvQc&dqx#QR)UPxvPnyZUF?HAP&gzXpJ<UNqEvB9a zDbpRuR*D3;1y^;dy|C!m_7>Xqb|<L|Aj<_;nGi{x3$etQ9ZP1~*`F-YrPJcGKG?+P zTQ1z(DeSwisb1&Ro%loF`L%!E-%Y@<h6eSr0?ITvRGC^MV7sS5^*oBFsJ5YBof)1t zhnJa*u}49;m>OO!_x5p#O%Enn*8Z7R!9owO=lVAIrUnU^js7jD<&4OTfSR1nZsE~t zY9sU0I+D1~`wRnfg_kh`wYygXz@Inj_pj?DVkdaXNvs;!(6KoC3l$yC*Dx5wJd+$~ zXhhWiV7U=;-8ZU{-O8-jUiU-xj@0YzUEJ$_!rmoAIj*1?@Ovr_3GeC=NW6o**rel1 z&198bOht**=U+r!+H(JVh!hT^1Kq~OrAn2=BgvovP$*&WAg-*=PSj^#K!qO-{OP0) z29S|Fh8J&qT4@E79a@5FhHeWLd%HhrxIVTH63zDJuxf4CI||#Lx;u~ADrYh0!CWfz z8mt8R%d0m~?WLx0^UZ*2s;yA9<_nGzy%yuN4qR&5=pR7?T%U<&qxBTv&<(K=&IgJq zRy|_mL;R<V1LC5**_mfxD8G5ruHo!=)u#ySLAV%o1Mp(I1NzY$L|iuX@7A{afFhA8 z0Vmq4bC+{f=a%M_w16{TXvy07N0X)1ecJD)`(;}xLi)~<E%6BL>LN^<%N?mQUG6d4 zK6xbq_$|qqYP07)wfP(WXqkP}!-$7vCYRe6^88l+PLy#CDdN*5{nhkEGiX_^_X^p~ zmneDOVs%ZS^!Y+6uK$Ax<_`+n>aV4YC2Ith^`+<HooLqlp}R)>*@5;4SOBno8}b2< zhClEZMS3y4dYkZH1Dp(GQK5)t_Ut_pmbYk6DYInq%i+Rg$n&nwW={potZizlay z4goxa6x1am`d3`XXz3`m8P<$B7xR5Ymo3pNcV5}4-2xajnu@83iMvq~X%Dx-GCSDO z?b9?>nECM}3_90ogh6c)0@~2i6pnsk3Xd9a(^EV#RCLn|MlO=H&OeQ1m1+p54i`9n z#C7Di@Em2J?YYuK$9hv#>0XOU21Pwa38pByYCK07#uoK19)IsDIp;Fo6a2ax1Ag#7 zd>f|gvaD6^U9E;`D7l?P-qrQN(<QKg=TuYhG4SNYiLN#9XXsAr{tFNIt4W)^mD_)X z&l9dUqi=jJL>pOPLb(P{Q}Rgn__f#{XeyIEJfpo?SHs5%^XPu_;UFpAE#gZE2g*#O zntxywK=Mu0(5Z=6Tt&HLP-uj)IMz2<pNoGRTww#H;@PRAxrc)%Bzck{2ekkOg|@7U zQ=5Ms`tzN%)6}~eE8;?7PgNk5fAS-eUM+G;JL4d2B&86TxN&vj5;P^E3f9|*B<%!= z?_0B6G-Qrx2v(o}u{m_uZk536cuV7G&?-iZWFVA3T*_(EzZsi9`^|rkpSM1rkDo~5 ziX*5fA3v+Wg&MLBpA4n92#B%x*^G?L$4>>7kKpH`7slY{bSz30rDD%@g&*;#@bgCs z^18)t20zz{p+fxpgoi!h=lauxAC+M6139_oVt+YpC+zs6@Z<h3_&Js$Nu0djB6T+p z#OWiM{n=#jZ~Oznjz)B-w|)i{=HCj7rGUqV=!vci;bTdSA2)F0I${D_RQ3^R*w!1z zrNTdkU=y>zxgybZImukp<?Iqiq=g&|OiaLkc4ng0&P>d-GZV8-Z=eTAM%MUKZV7PB z3K=!^0!vQN-^zClLNab7tYqB8{SAbRQbMz1T)Yvo82>)ss!5YZ{7=lTg*P$nn~ihx z@l6vPA)o22N=?#L){-o7>2jsv38zw__FXGS*3Pk0I&C(9d#*N|AUX__Onp(c^FNPF zvV@cVsk4Ozb6%bL1n=8;FNo)I6~yzn#{I-Etn^r{mZ{OneEQ!iz6b>W)$*JmJ^pzq zv~NLXQAQZI>M!~|&!#10H^O;D!88*@<A0AR`xB0?d{X_2y;cKKbx#z7s{a*_bYMyB zT{MK6=BV5)0uty=4}<*|+`RW*#V+EeS7m=KKKp+qe6zJ?TfqB&MEH$_fjh=u9ufUR z!qbh@0L)Ph9iPqK4^hqhMLzK*nf`w#{%214&xn7}&;J$iFUlkSH7If-enIyhi2p;J zG@coB_d@)AZ-w~hpg8V{z!%OMA@EKOCwT<^$#3^g;Ey6+#IM<#urH`Mnc9mSIx<fV zt-l&Mbog!7u{jfVBI9m?t0u4E*DJ&3TM=CULZx}&XBLk;_BaGr<qg5D6em2ca?B8X zlw1>lUTWp;ZjgKc6Nmlp5JA!gB+9VPYG}J<I5rRTe=H-z=gBZ;{e+F@s=!)k_SoCY zGkgAcM<lx5k<<wzKMw`BQGxo`Wx!zG^4T~{o>?u6&*;CXG;*=rIYh@s?d;=AZZLnE z54UfIHI4`iO?35=p741TRi_xVESllny+$BY7hlv?U3~W;${TN-q)Yl`5{6-JH~6T1 z#_EgvcidvY@cmmD5uIR_Flw@AMh7PKZnTAqp~hCQ=s{I5^h?tp!zO>q-9b9zPCz;T zlhpY1Z^>P1PI$}NpPnO-F?j_l^EJjUqODPokWC{P$Kcz<M<zkF1Y2w)T#AvlyFK0U z8=8ZWZKCE#;MnN(6Q$S$6FJu2LzuB{Co1}6mtIn2_5)qA<ym0CkdXt3YGw;G%yoq1 zF`oulN%qR%`J+7RginRBY$cfzl{14V({=q4_;b)}N<mGMq{4W}sQ)QyqF_1Al$|`w zenYrEJ3bLoZB)i;fAx)Y<*w8YB`Kk{hIve|x(##a_VvokdsExKtOfGqOlfH6!s@v+ zmu9zN5to)gjJgeriGpBsus|l3nHl#)_r2i$toq^`4k#!nEL!?R+uW^AK_ug}iX@I{ z4#N@^wz+`#lVu}1b=O>yc+*OyMO^kBWCC${z3BzadAgg~Ts;$A!H!3lAKb1~`)gf1 zV{6jeUu)yJEB5x+`grb2y#2LCp1V@aOtc9b<)C4B>}F8E`lWFmb^k7?nSGG_g;%&H zJi_}PQxau^X4)N|xp>f72Wst|tO9#?LvY6?t5AdfLrKD<RA+U#rJc~rcq84lny_yw zuoR>1YkTFdG_Jiw*Cue!tb1bRC3<1bj+~U}u8_ibS0`^WKhm#E*l&_jC2#*VG@2G$ z5lJ6PMiiEmcjZmg&a}#j8)$2a3Fz4?qM)H7(fw7xl+%1U30A}s-IwspGIgnWKj+qM zih7-0R3P2ul$dv=?%i)h-Py*8Fr=yo^Yiw}+-*Fcx2Ph~@1#$XhXAL0Y`jOX7Tkt> zz$-Pbo#*4WjoWKggA|;u)D8A_9=A8y+xgtC&}~CIcek6nG<SEHyG7jL0^{pq?(Q*n z^4?1uiuXQX!r)A#2w&IetMsg{)H-f6xnLC851Nn2?^qu@nvS)a4;6mnV@45~4c8sv zs{b&r$u(ebD>k3@FM0)*UCc)8iS9qa5GJ}IUBRxdG9ix(@bX`Tx~XeX%5{wvRZnWU zL_?c9V=h4-RB?bl{vr3$>2Fj2-oy*`5I8KTlorO2IqJavDM0G&MNQ<rT&9Y)2_?p* zKe4S@vPP1}x-6`i@=jzXDbZa8tRqvOS)F2P{UM`zFY8U!fwNymOAExDc6;9}9JBxH z(%F>aIdk}>O$U3Pp5eYa<}QZUqh8f%UhgWsr7Q8PKRB@KBC4Z+0Y?t|h}U@y7lg_5 z(!|w`sYx(qw{}2xzg6m<9&=BRX43*MfPY$v7hRFF6X?{6VB)9-MKBRBQYuV@66Pzc zQO=eL_?*8cKoVnFluDTec-p@i2Y9whk{tgpS!WLbgtV86Y@sSf$5*fJY(lO;ijP>_ z>Rl;CsK=KC*XU1Sia;eGzZ7|CnDT!u5?ovtb1n8?Wi~Egyaykp_TQ^^y9%l+)oBZj zt_v!>nN|RH@Orm8uNzZmSE`EwOtnF%mgSAh?b~AitdYu3q;hDKeFas=)~}Y9k&=z7 zBs~l@Y4qA3BFY#@2K~v)kq3M+VX|{bDPLJ_qU#J<dS+aj<9|tMM1CW_vd0CA)GQiA z`Mc>wT_Y{<AHx0NA9iCf8$NB%85ETrYF@ukhF5=OGn~1X8oKi`oUIIh4l-=ni(2~K zybQI<&=q8;+)E7$@-oDfVFnpsyHKBFJ(tH;iYOP2tTCIJIj2qP+w&aJjUjlxd)^#8 zSazj}{}g^5p8Rjua|QQ5ClL!=U}N{H3jNM!IM#07lox1L*`wiKP@BAHFBp3{54^MR z+xT}ZHyDd|*$g?S!mD`+>y^+Wq3IY_zgYr*Xc)+9K7{u19Ls;sPR0e9m)^Et>zmpo z;*Q}f4W8fxOJ<leW19?nLZx?$VO+Z|xdu22{NHyKjgF}%K!-@-^hqol@K$y5pwZB$ z(8=E_^-hT<x}N17ixIpYQ`SjQUIrr?E7nO{dOfV!B>awOPt7<BJMVVMiCk9=1CAad zo{5zK+_TZ7z-~+_$VuOd`sZCow6t9s#2dW1euQE~xA%!v&9#p&W|;a*fM+#Jee5fY zydev3?7?pP6gq{`kF7B5xI9lp;dqO_fa?0=Gndvru92{S6-@5*((FNG64@W#3)x%q zYFR)n{$H<$npV(QdK&$=HHce>N^M@6_4Z%w-rjK@hm4`|ia=(|2D4n;lI1WABv%`l zYaKnzKzu>f{r<O~hd0%JPE2stwAxkMD9qa1#o%Dm7#z&agYJpTSaRs9E#s%}xznGK zm-;uP_TRdWHLhB3J~LJ3U9ySKj6w;ZLOU<bHe3N8VsA{Hr#{qlkon5aie@!>*@0A| zR3BBUe0&7!*OlknpI19dKP&dm?Qfa4KHS+dhqa95C`XGx+TvhYxW&-BsOou(0Xk|x z=mJl}!Dj!fm^Z-OP90_zdg627jlR)$zu}uO_&yl#l!sL*bb3vF#7ix9a)GgC|9I;i zZ4dYf3?%(796>`r5<b7X7kplyhtFB0_Lu(>d;%ltpgedZ>w~>cnS=Sya*X6Z%S)F3 z+&Jpl^t9Z5Csn;Of&*#WKwk}JQKvZQg}l8y{(|B>g1wfGk92Q0=W?h2TX_2UI^n6! zoLturyo<q4nfWdREgFNMPtt2g5K~He4aExf(9kTcu-zbR2F??Rbe#%hd`pW$lxO?A zkfMx?fE)b@k3g@%?78$k&M%|SXzN*x@jBR4jILmBMJmMkCgzWwmi^nqL42IqpQ8~4 zy>u;!3JPUxIx|5Ryt|)wm9dnx?2_WjU1K<LSK*o@j`nRCW4}_h)C{!R^~x)JU`TZK zP`266fbRkwwO%x%rN$$fedVjWY`k8;@6L`y;xfU_B9Gp$qUeP4xvRF>o)YdCvuZA1 zhu#?ZKC7AM=SQBG>G_e7=d_;h9eGYF|L;ehYxMoPk>@&nzhdOMhv)1MB^*sRUG+yj zpEL4&FYuXdn1k<cQl44r6FhIw^W>5A>y>`e$a9IlA3pN@XFczidlpNLjpuA1VJW{9 zQRsj7e}mQb>|X(at4G9XeY!l9ekI2lxt8m>So&hj8eaQPV!vlF)t^GEf=qm9sMf_C zt?BgD*yS#ZQ)L>$zTS=eK+5gqY+fb#Vwfa29a;Mw!%q!jd(Q7=Q;up5b=EMwoBSUE zxNQu;DZv#0e53$obO?rS4H9|d!+VPv9~d22<|)<;;;BaVpEg5i(%;lYL)Zt<q$%b? ztW60QBCtvsNVrS-_mD<|%1uPDGN@q6jNXA=`i0`-Dm2IPXCP#~^Zo9_?&FEB>v>uV zz(1lLEPiJ7p8q+<KwEOue+kj=H9X{E<Tb3fFg#&l*eDqMD;-m_zW6IiOG!&btIdo( zVHwxyJz$DvUc<AdtWCD8f7r5oQ`Vt>94YH;^3?v5MJ4c9puY7}c9+V&BCqVJq#Jr( zdm-qcChZKBlJt8pQ&gZuN}n@}l&(D<ri!MnQRb7BIS9HaA~TB;bVATZe<Rif9{^Ni zb%9^QM<pEauTx=bs_mg@rhmzxr$JhqAVN&jx{PQ&wWv9mLS?kk|JhF{UH3t4KckqT zU)uO5n`6<K9A}KlaRxcE^T0q*!|!Q;Y8ZNi)~r@*9EPN@{4Xi>mr2cftZ8!jN1qMS zhY%HwDZhvuX6a4(d!i3Rowm8$+rHonZ#M`6fT;iA<<!-ev&RDX4hY&~BuDUWQuyvL zAPeIw0DnC1v)@w*^si9=XEF*!p&m-MBI&<Y^-N&T!b#3Rg@1@hGzb9dsM79@!gLQM zX%VH_Xh34V(SW$(B2YswPyP>_L`X@;T_GO@`{x*criZx5Oq)$Ylj)sL;z9VPb^-c= zc7mVQO6Lqdm0T(A%|*FQ;1SIGf0z#rm80VkZ<+$qOgTe8LGPbdEjDPqN=Tlm+iuco z7<Q~*^n4zz{I%_$?|p&H<yf&xp@d?j%xNjtT2u95fJzW_twBr9iL9t~x!LREX6&6| z4AJUD*ROa>AvGpAi{8Mp+dC)d9hw6Lcj{I_74koTX`q=+@<u*&=@V$>R#kA@l97u@ zG|8<{k{`5^S3+~Snlu&fIJ^^A5DM4WR!eThbxdi2K|g_qh_q}E5uC1J`_I%06D?-| zPjt-`_-GBxeHys^IuO8^tZ<l`>=*ee_DoWqs(OYhRF&A3YgA_~P@QV_|Ab8ScU=|C zFxZ5<W!OJ2!zIe_Fc~Z%a{F;AzUCn+@UFEB450LDDdX(&6VmJH(*u6Tr|p|#4&n-^ z;As<iMtg_uF^d(ViLSr!iI^Vwiojxv$N>1oyfxA>x!-Z7c>pKmYem~8`zbbCuR!*Z z6J-b!Aak*v{&K4gP-+D)WKdto;p8;s3~+M2yb{2F*zbUnL1OqUBbRE(BR8KaQE@A1 zga=%Ci(zy6h11Kf^0>GfA%*%YDqIVDl>8t%C};}?r_9tP7>8$@aoC%~^mLbLyL+DD z{)LBNk+GS1p=xn@P3Jgxsey%w?8Sritt!NAt+d~bN3Z`Y2B;dZL<^lG)RxtD{NBFm z0Xuj^RJ73V3?rpKF{Vjp5D86THLy~h5*Bib1_mze&IDb7cDG+ddBLN_NYE2vybXGS zmg@zcp(I(=JzcUMa+Aqw9wn4=-9*Hbg-TUgj(DxTEnA*E+mI@{yx88vmY3L@`0`SF zBmd;4p!h>QN|;um7O<|qwmflZ69Q0=?$Diwk*M$G=zZsk`t)<QREj(;f7HM`ze)V8 z&wV6uWuN;_&4Y<9;@gJrTS2lrk5IvU@A#TGPX0qVd_<@B8sss-bDom511l*t*Z4Yn z&9Rj*6S7tF4;TX4#1Q8f+_zK3e=I28`WNmiJ%M+h%Dww4mEG5<cb^R2rO&x<o}NFG zOCwwNzGZqhDST%_#i1HBY+-)Eof^#!(I7#orVGlRF;KRXH-z$6EEdeNTwqx3B=J1H zsfqK0YrBym4W$5Qgh}u^7F^@{%!ufJP(tTvD9e7Iq8MLoVTNHT%y2(f`EXH66#%!# z!t_~%-DV0)W<Nn;Mjs$=4(DTAbFm5wy7ChXY0VbgtpNbWvq<JP(x}F{767x6H;+b< z;hJkr2tb7apd`Coo?H6!eZ9i@7bwKAPq(Wo@^Bu@YClm39qx~Ha*S?pgVGzZ&3+{q z9|QvG6<=;2`NGSa^dt*xnVG)eHqPy>_HELC^aip9d2BDbL!Yb&lpiPPMfcd-|JPo$ z{xV8vsL1{q77z800DWmn6xtRA*Tsf#4I0b#NI$(7{a!y*%ut^FZ&PHR{=%Uvh(^sx z*P~dppv!1?F0=i#-+Tn3jJY>j6J_=h&7DOE{*`6CRT2gi1$&)LDh6f~gu9Y&iWD{j zHiCQB{+jnf$}#QDyG91@oNMzqMJVU!6XsY3hoSX^&XU}BWC-)Gl|_nytnBUAeyvH~ z$wV*BG*|MecKw3Spn{dvu1}Ymsn&Sk%dv_5k*71Whx<0iYM)L_e;k+gfexxn|5Dl% z%RK=G<&}?^ca<a7(l+=^3>jj0hcF#5_j_r^f`*xtg|<+BTK2b$TY>)fZ}$KEJ_8&k z8!c!Jx!&oW?INLXJj@_{CTgwFj&=sphfmhru)mOiQb+rO+VgCJ{h^oHgGueWLfkIv zMRUauE=z6Xmf@ET$9RwnmD?I_H`!Y@v$%$Kp>)kNuA9JFvq)`aN4=PZaxqX=0vZ?T zR&qONB$h%|$2IP6TE!s0-CdjR@D9yL&6RIrmT^dUvtm49uf!>UyQJ?B!%fa+v5!@Y zTe!-AZRILIj_~;(bs7J+NOvaAm!*0En3{z^Q~5Hx`?2l8>uh7ygQXuCDE`UDxKuTJ z1Pa9<3W~M>3MnXM%gvNDZC-9>q-peWGa*f@mz()$q@e$CLBSg&f;v1JuA~9A8JR*X z6WnizNdgInP`nA)jsBmuSsP`*|M{P_Psg<a(VqNH!eq&bcElK~LVgY!g>2Zq0FCf& zca%S0_T@}qkPd+CXrpexG$FA^la;kby^u>g7iiDtz3*J`1hExhrE&yO;sGH_JRow3 z2mUj1?YM-d4bWrL(5ha|7o%wJ1QBW`4nHerJB0%A%Bi;U`jN^TgUXwO%EdeX8I^vh z%0(rG_St>Fk!|ykNK!+iRH@HmY6a%%*q6D2aHD_FJF@3zvOUbdqDOrmJvOyNk4ZhF z=plP)$rg<uP%X}dj@qlst!6&kzx<mcuF?KP_b(|9l8IlX_WW(+5%0{R&~I<GJ-*3j zv&f%)4&vx?%lcOP1J5;T1r+wbEM(ICdDpCW7WX=XP`Iz>s?Dw%xhDNLh*1L*&DJ<9 z=627W^grny<Cf5d*ImL%)jOztwizuDbt}#@5Y6V@yb*}B38Nrt3m}?nAev(#nl}Q` ze8?p}Z09OIOmqFu_^`bbT62o?_o}hL{Y#jO@}{+NjJ*5JR=wE33rX7vEI(MXMkEXN zdmL04EUU=|7%x0a9J%iU7K*2ASIvzStq{h*W}_E^-pZR||K9JR6_o}`;oiFVN#qZ^ zc!muA#%|n^!T4hN>2kmcN3Gl;0KL3~tpqr>po9>-wuTFctcUd_gWw2-lQ;4xs&Lz! z=+*~p_-<`R2}8|xw}y-cfp}NoZ=Ywzt@)r^{g;b6q(%gFNOd0ZN!)(~)X~%NJwWD< zFQI}#uaIG8ww@2vvz3=CC=`ypNf)b%flMnerBSH=(dmpb=>O==P*AqtF2bnofuIyU z1QGVPVPST~qk-Bcu8fKl?4gSItdQPPN{r9XqZLVH{Rjv?MS~gNz%3vX=>}z%q#uuC zCd>LYqs#A&Z0CWgkZe!lFY!O#rTHvMo}K*-(%qWvJje2%1AhuQsv$EKifEl&{F85> z_7~i>h8Cl?MxXcH5t#wz(OIl8i#L94w9fLYJdhgX!od}yrk+7MXTT7pwB7W0y)LCz zVWK3sMsFI)4jM$|3a*l*l|l<wjS0oR|0}58r1jA%T)F+f9e_4t20t*b&5?&sjsm4o z7H?+Z4sZPBL`j6smYn@gp;0s<CZFz*K_=gdDrPBc)MX)TOb2`(7uONlERk)FYlUnx z+ZUI(&BfkvrEYVHcU+m<T<RT{@=oR??J~DD6>b>LE&&D7_hwVxJhMtj9%ZvS=2C7n zFhT|y`%+5%gHZB7SiR9uVc(OPAR=eIn#^_2BT{Q<HqQ*r=GmdyJSQ}prE5^$OFyLY zHM39aw=0C#%w|C*4_dFtYx4kqoAsLEv(77E@QSU%mX%D8d*6uFem%B${3<9_a1q&; zavB*&3Zh2WZn#USbcAXC`K3%qbQXNrHkb4TgPqaf4rk9`=T6Qx(Q9W%UB}Y{MVs{4 zZ{`!qI*&0=-W(49>0U;fO!PF4FZFs<Ky6Qq-}INfr7AdcZbTnnjJnm``kIOE3#8R< zd)yugT4PS%<X}+dZneu~e<u1>W~&y~nAj4tRamC_H2Q3m!zA5HRkU}h3Kq_Gor=u9 zLdClF-RhwqZ}8pKgcJ_l5A!7#*&Yz@4tl~kH52wZTGwdmT3-9Lc$NIFPCHCn{ok~% z<5*5Waa1@t;$<H@4qvU@<*_80p?cJFwt*AD@g%vO59>PCTQo&v1@x12ul1jhSO1*| zQ$HHkU-gVmba2!{s#D<;Xyl-&>dkv^dtTLSax_zD>~AYC>JlpreK6lzA&OklvrU}g z=hNqCC_5DMnJy-v{U6~i%QXHE5tx~1w?X8f2@2-a#4oTvnvRQ%o?q_jh@!&rTJ|8P ztF`%tlZ3B5=j88SpaZ`@AHGqG`}TtIZ{@Xk5P{_%bg?GYgl`Y+1gMQ$ZRgcMH=~qF zP3V8+Cytv7)N$xv!jX^M26ISJGRYY6CmpVClRIyN*Tzkjef$)<YZ#w1KO7vdO?3iC zqWfJ74Zj8c`~Pcrp^|$%qx+E$R7n84YyAs9G(z48F=}&P@b}x7DC>Qd7V$Sq48Qno zGbqY;s4+?Un*6mq_9%IihLA3ES2AiJv`rtUjb;iU?w@`UaxzHvy>hj0GGf@BRu+~b zwhO-V@raKYyLu5ls=^zGK$Vpxp*q}ZMC*w+kBC$|-jLZ0n86Ih`k-G(UO>I594YjR zc&qXD$pdI$w<DtgUIKpnnT&t9$IbY6Drw0YpK7l;kK3^$Mfp#j0l`0hp>=Lo?IlA^ zUWQ*Q!`8+0D&jxT=U9exextJ^+L7QG6=FPc<AZ8WkEvM$1&vtBYk!Uk`Yi<o<A;%q zDj|5zl^<O=lezJdljh7_^(+}pk~HhZhr<Uu{;axt%<}_do`*(1?+L!3p$5Kt<^tb% z;4`OlEM2-P1@QU%?T7r_kJA!<w(yoSIF)oRiWYRl2kN5{@yW|f2Uy&IuM~lj#5Fx< zUj!2b;drO>V#?qVzm+1D*ew|=Pqdq9Bhz5SNsEnt2TWd5<K%rZ7nY}w^_rrp@MPs~ zYIHwv_Zd1kM-T7BWbN_MbTgYVOii-T{N-J>FLZ1UvRq7-s$Ok*m1Z*%d$Je+)O+8I zsl?XbvO{Qp;#w$dze%4vKFNm8&WpPytebp#ojWy|K0GMw3l!#llf!N*3{6cCtb0n` z&?ZoxtcQ+5{pt3aW6GTfLRcfsYk$gjK>g(xz#29{$lwQXqE(L#)|aS9xb?*@XLPid z4b-O!2J6dtg_j@RfiVJqB2k{w6uyib%E;qPvzGS9aVhPaSk~8(bU7I$nMY53lncA# zNsiKHnf|(dVuaR>@U!Z7dh3UN8|piH_B)4u7CfJFsu4c3X0Sy|zq{4h(!zlhCGMMf zhkbng^dh?gS`y0L3L1(9I3OL|aq?Nb8wuYpT0}F0X`O=y8dC?GaV=x@^$1-Dr_q3o zSV%W&Ao=G_yN0(q=d?zgH7$YCO)bS^N=*l)D#wH57)eZU^}z)lhmA=u@1>wn`d^TK zXnBsG)KF)OcAPE)tiguaqRT+ToPuC#=30no0d&u6b+o^9sNUK5H#<I7c(a-3yl6(% z@X&Zd1!`YNH`mVGF}vfP+Lj$NJ6_Ms7<T##GwsBBZRDi#)(l5wFJ51Rzoyh%yz&2| z?S0_mEUG>3Y_n}sSl9&?j1pwk1yc!_NYI1^*fvQU+6aM!5@?W!6@v{@VM7Zokg|#J z_^{f`pL^koh>D7eSMCK%L6M{>O+kcGw6v7+M-iVTfaPCl3pDTdH}gE3ZA!WK^S+<A zpHDOUJkQLTGiT16IdkUBnQEt7zt>e~8=i|WFm#vVLbMgjqvEn3j^nbo3%G1^CtP;q z;(*Ki`*o+KVm$&eMDf_ly)f%~+8QwHjRN!hqCL(N$-a|>X|z*R33Ami<20B1D`)D; z@sBOnIA6<7f;+Ed+E>bYwq{I#TWXaMQg16h6IM&Y-sTowW}Qsm-U~h~TJrdWh0m!U zj!y%<)#hH3z!5f<S=}HTZeD-SrkS>}2>+!AoJ?@vw60fZcPeoTLDuxWM<p&--^ya4 zt=@|vwhR*5zfFL*SyscU)kO~TF|(a_iw?fDCOGCd8TP6!N>8i3M3Y7h=Su{EE9aHi z8;zE#Ug}d-+5*yVdzL778js6)P6Qf{l#K?&qlPRiB~q<%wC0I>4Zwla*Z5WS+!Tyg zEGxBdI_sR)vYusbeS$n?6p*?i3vY>`I<hXj7^KNNTyK_H&N>qvf%tW4P)*bJOUiPS zK*;E$4`}8sN+0dogCdXgv}Mm`krM&Y5>$S7o&<8X?GuVn9v(d{o>xD^r+>H@Tv5QF z$76Bw`g`o$T(*}2_Z1YFq5^FckQg-hUEW-ju5xEL5e;k}m<`Wp(kT7^g5b^JF;=?; zdFH*8wg|TD1;JYi3UsN!Jrv06e;tgBrF6kUI5X|aq4N($6~pEr{RX2o_DhtVULK-1 zHY8{H`XaAWJ^T5AJksaE&|iUhu_-ipZ)Fu$--LsPkFlD}pv^%}+(FZ3EzD|HX2r-x zi*|k<dXR;PKeP?B-*uSb&;*Vt=dwt2#nR*~=YlZbQqJ^}Y<>BZ?auU=Z%Enr?TLuX z`i79Zq>j2%?kvrbQ`S1OV$Pg8#B(a-N2Hz8(*MYnhgA(sThPwUJj-d_wC<tyXrI=% zoDr^F+w(7Oi{;8Et*W^z_w;bK?I6QNX2{^E$VeRas~x0TBKOtECic#Cb_f4G+69r+ z#(dlUHr6(8%RDA&@}KctOak10;rmVJ8hN(<L=8i1apV?j?3w-fHnXDEm=Q7Rpg=it zSR*}QjBHfqFAgG0eWHrlKp_0USj7};_ByE?`ZNQlDfd;>RRi!DuSt7^c8+@u6K(Em zrgE#_ne_;35s2cpqWrMoJbUT1eX}#l(^wFeItO`|D+bFdr#@oT4kDAGf@t|+%cI^b zi5K;}N>!D}T!*248J^_6TH~(@_okgpC>UiwJsT!|{o63H1?=k^{`}##v>@-I8FOJA z;=3Yu4;%y$Vv*JlAMyhQlgTW>z8=_i{|HCtfRpJW4Uu$(XiSG0=B=?H^9D`-6pT@# z-aiYqbj(q(z)5g@8(mKiUNA7GZ)65ad~KtA!R9g%=dN2>?}fKz@9CY}F+W?^pCEBB z3Xk5<r{{)=<;wK*EI<u8#3RINU}8*!wUGC|j~!0RisUOd6{W)2hGG>MovR_EA7_@> zr51ux9FnNA%gHQWiNO8WLg^+QzFF7jM_{E&Ty$`w6>5Gp+K10D9T;Hw>0Xi)fdAqN zrK7;VE_bMKO6T>%pnMVuWRz}whpi@CU1d3VXIsl1jkK6XAZ&+ajMz8+I2`5R6S|Md zog1BrAKrfcO2H;0x9!d!)*gHp)agCJQ*;ib+G9LnR^6!NE_;IRUbEZa-fA`jp-czg z)LSXCuhUO_7I<vn@h|pEQyMvF#9g%i=kSueTBaj(rL%n&TcT@M1$8vfl@R*~tME$t zT%4gJM&VAtBa6bB?WGrQWnNE*SX5{m!!EM99Z+(E?45ws9#fZDbX$j&g-6Vu?_F@Z z8Rp#_3DnXyD|?#nh=!|;&U<9fDR-W+_p47^6t?$WI6JjK8P5Du3zVGO*rbKdPhcyz zu_d#85<$oKoo#zqauT&7U6gGmKElQA&g?d)v4!*6&;a35muXCbv7%H(Ob*O(?inTg zT&#|a(2)n*X}Kk)8WsquAie2$YHg8swxXK0CA;O|Iu}Xg6S7q_WfRK1E;&FG=%a2D zRHN8%2pB|u4>=rvVV%#lct~GUBhs3%f>HunN^-v@7r&*yB&eVPXfj^PIvfw?r9Or> z-*vc7_VD}=R}APt_5Ao;WaNH`Pa~gC9b1oGq4gL+x<v`w`?qQ5sm~xB;H`~%j-#rS zGd;}RL(FFg^b&WLbUa3^al2=r`rMU1+h^P!ZKMvUr8S{+qyO7s(0v?d0^x5q_hluD z9MfiGULO1Y0_^9Vf$TsD9;#<tsxrHw;C&4b2)}agvp1uRL11-Iomyinwwpe7VHx<# z2Sx6nNG%K*{l22_2R-U#*(4mPW*M4$#W#;kq6NZnp^qbvdJgNTZ$RPu5S2a!JHDBx z;Bbm8WJ(#Oao7Y<%n?H~;E<|<tjb8v!U8!?=m&@mb3*=2h4!)C^ez@p&B~wex3hQz z+~|zmX7S4k@cWoVIr+bTwXseO>`|AGT&>^c2HVy>R^Qhaz#M924%&Z#)#@hfrNB`I z1+G_tE#C|lQoH#(YGo2kVg6ZSyY-KRyO(e5p{ymLjVb!}5BfPK;0Ej$R5%@{(#BUG z^RRg4RP2=S#YYOWk^exLJ#0i-3xEnm+58YEnh|BbQw576n6DiqI6K8e*_Z4i|H5Nt z&(AJd?EUo1(3rC+Fjx!XtCvrj!(cHm=n!Y(wkvGvyzT6O>4grlxs(6MUuG10KUnmX zclgq`0VYOh>9)A{#LrgQxt-=@@DXB?fnl}fZOqv!Z<RkIuB`sYbd=w?TT3~S<t2dv z8RXV{YK-=M3vmT6o5=&ggi?Jsuml_FG(1@&-(e|@j5^cED6Q-A^2x1VOqhuJ;9j#U zYr#^)av0*<&WG^z<FTtNm=#SFS8`T>+lNXHVG>9V{TA5g8A(V$S_WM|RC4^JKm+^K zY4iw7Rp%rlIl3sRb(S~P#!@kezQz@wB8j@=Fe^D!S;0NqFj|7zbc)SNU_wy{2g!t$ zzD%H?`d%lUbqFkcLID;(XhHhwxU_G-olI5V&q;&rGt{<=*KtGtb`5=N)ndXF(r<%k z?ZeUUzfn+fH*w();qxh}M#q;~(NKBDo}yuS0ebJBYKfG#hHEu`cU*k9?Ee{S@!mwk z&kA7P2~6*;^FLZN_`z0;61qqQR#70(XPX0IAhiJ%0_Cd<y|&v$uYk}sbeU9&O42lG z_1GHkbgU+)XzU-<n_u5W`;VlDg0)>GIgAY;P>;v2?Jj`t1IfPS6eB?@okd}1RteQr zJG0o0LwUM!faO}Yv4XkKaMdMnn~7VvH9C04;;os+r6IS!7jkBQr@v-@a+Dt|I1b&K zIffOU7MyTWC)PF1QMoskvZivag#R68F|-nx$xI$-ByKa!9;cCLZD;fUgZ!-Rel98h z@vHW}wsQ;G7NTv+e;M`WE<h9*{QzHnD5~|F1ea`RQaBW_I0*`sypJIT&ERW;w}hc# z|7K&|37=n3!R?4dVASQ{#Zh0)mAbi-jh10U8|V>CoI~f4S%wpZv0L+cey-b>mYF#p zroKo%Rs|G$XbG|#fZqV%$bClt-$P%Y!#7`kc2Y&}lIEhGeb>}Chs-)VeYpSa4!!|e z*Xt#$vOa;zu;)AjI!}Yn$c7JxKY}66hfyT>zt^Nt)N{ZZ6Ig^=e%;G+D1D@#Y1$qY z-Ga`Mx0jmwhF_z;C&tz@EhVGp#eMk!y$J*|dS0o0_V*7Va~lJsg#pqI6+7svP9)ZR zw@XahMK303SyGA{sWi7z6=9&51-cGAa5j?HVPsf*^bAg*`9W8Mg>k`rt?09=ugwff z)hYW-Cw2Pu$@8j0!jLTOrfvyP)n{>tkj7NE>XU(h5HVyg89f8q=j%1{@65Sl=TUVP zc)4oY?I`c(X69!Q;MI+JPuyL=o|4J~1<J_8IrQ30(ZcSwMI<s_z$BEhXV~)nq4R=m zfi!~k#vDpFjsrhj0RHE*;U+dA89biOMfu0@3Rc(YM#FDmHA!fz{^f7L2&C->k2X#K z;_nUOOuN0u7p3F$yDU5nvGTF~hVl0^oBSyZP^pkPh{v<|Mbr(#9z7xloIoG;?Genh zJyTX*ccwPZtWo;~*6&a)aun}0$fXR3iUe(xbWHKud+223_C8-VhPu3cL%fk<g<ORu zl%z!9(_BtLL8vfkIH}6S0HX(QXPryG5AiYfZCl+Q)lMs@wn^3A&}pi*y!fH@Ni6-p zu5U&`eH)vo?=wMt6-E+k^1%%Pi|K*7CQ2R=dKH3vqc40^L*^6!zDj@}JvYC3h)KZu zXTao@I)$~1%y39tTyZfAA$O9QN2D`Eul_NA@pkFCjP4kMY;ar5dsRZ+_Y}BYC1x7K z$&(^>od#TqcNr!h`Y0HH-eo3R_<<i-(uX(Ny!`_!Z{}CDVU;OWKdw|grKpIe!uQy6 zGWMAr_#CT^%<6>MUed|Qdx7G$72s7u))C)6!}p)-dv(Eg4*(-SwepScKi2m+-vxAy z1)H~_jK6=v@Vh)|umPQpZ_4=b@gez*DyKH6ow=hrF=*{>|EYGl5}7VZA;Q@YI1*($ zb9|Uve<(9NLCuE>W}XIuj6dGXgwb^CwadGJQIHUkn%n6C6uBj{ncD2TGF8gAQa=qZ z)N?pluB<>Ln|f@|&5K!A7y}H}rgCairC!?9DC?T{OI<WnOx>SByrqEOB>3cN$Z)Lq zE4h=&IyV0GYKTm+7a%if<N#_X%@6plF{Hf58)4XwpL0ObSov2gK(huBg<`Xxo5Dzv z{*tz>trY3B!1e&DrH|iI?=k^h-C@<mi}q4Lk%)o<O)78$1<d|{i7YU;HT&(PGepI& zc7uE+xwT<>BKQ9x2HfM>WUb~JNNfl0WYK6M>||DIzBQq7j_H*aJ9Oj^)&{{eM{2#N zxvPUT@#Fu4KbW`a3~D?x%;n$IkfJuEL)iPf?f2AJ4Gn$`O@0kB*d_ii_r`gPRD*Se zac0J|bHiCq-OjXZG&7>MJ9F7VEOA;(uyYR=8`)j2<Gfb|4tjw<9(7i_)06qvM*dV9 zhS!1z2I2;U68G{FMJD?Zknc?NED=w;Cqd^tSO09*-nm-K%l`{kfBSOyaw*D*@2~_9 zdPiT1j9Xo4{K||zz!2m<b!P_$MMT-H-g_*F3gQineUIDkoAsUE_19Co#Ruv3iHPK^ zVPmrf>uMj!nrXU8(}(xx6RcI9-x{grP?iRVp2zTP_Iea^5qyTdeYrP4lrcHrv>*KA zgJ7Sj=L^efiq7ho-?M<J7=!M$0#c6WoJ7Xgu;tJTCThkxWAi)xQ{nnvJUW8luRMGG zK`JE4Vpg4I?PjHicf<@M<10q8;1YXmFN5m8DIE-|x27|wPCTn{E|QQn`-A>A8Qy|p z>Q9P>h!Vm;?Zu5tu;%mH`vtIqI0=Rj!}W$@g&QrtzOYyL*NuapD1bi;_&OvF?+Rq@ z7oVRP_}{p667R#g8+eC&5PZ0q{h+vB+W-a#PAzb-K_p0Glo2y|TkGjW8fjp*+Va+4 zC#lcN?&mX{pCK;I!z=v#F3V5K#oj%BFnHXUKoNfPGXtQlf98bhvcc8-G>24&>zgzj z)$>yYx0rp9%t){5(R`f0;s|je>MlIlZhUy}pNViMP~o!xQs!<m*_Qd|to-{YQm)i< z`4YBk5;2?Q#AY`I=5g}ft#5HtT_*^Ebg@(4)Vt(}qV%NRCCQ?mF2;7HYCQjJHgZ@^ zsFGm_!~1sL=Z`Cf?Sel-Hi#lgskNb9B8#+IJ6hVx=pXlPxRlXtG>~?0vT(4XwZzTb zDa`z7?22}cf>gnHZ*9TOFJqP2{y5#-G$Xah)wWgQqXNyD%3|I#9NVR`1jpt`k{rk* zA=XAE39&Zd42a=JqcpLt(YMFPtn)#AKM$(Lf|9NaDABuO4VJkz^+$x9`UZgn6jW5Z zP`$m0^T1ed#drC)|2msf#X8psVPgZ9;Un+(j2|f6Bm7`siO}9DCo)KHIm1qs6}+L~ z9tB=4C~%kxbWtFX_uS9*gddS(oSi3SCyo+#y0(+ca0hni`ac}SP&+f?a0Bc5^rxye zj}+rpmaVv%7MCgX0a<o18f(vuIE_V%{?5F=yS<(Io~FK`>^+ip8Yd>2VC~lQ*;VTq zpJ)u3RiWCgJ=?P3o5&%9qkuN3-XGko7n5t>N*_`6+Q=khpO}pH<;2Sw{+WkO&Tp=x zf9J(&-|C_EGE;liK-Kz@6=wa+_#CDFr_c+ad<~+s7ns*JCr{$Bnp4YStxklPZ=axD z#*ejnfl;w4xMeE567na72|Vuo`g7>L_6jnH&!u7v%rvWN!@v=*qm6P5>iOt$GAm=n zJ*g<YkkQkk>{n~J(7c|M)i-#zhZd+~8-9mVqehf;5sfJ6B9d0pMdIG{ON^bzNLImS zK$;PL0j?=dqk=4^)-=XLh1Gs#hN(7%)&Q6WhhU95@-b5iPP4pJH6$8Ul@W+1L0T0D zuz~!<b03VlnkOx9>m)$6P6BWyB>tc>;hW`#W0n?S?*#%e)h-D~ufZ=6jntvtA51m# zlEQ!XD!+}*klS_vO1Hn>M`9<;5{osEB=@%IB_-*jT=vRll(MX>q37Mp<Idt1_wq7l zrG!UzrGYij=FH$`JNX`0(<M3&SCcV5>ACOx?E^E$Zrsa|QGghq<lZaCGh~iCT|<Ut zfY!%tv{=kCn^gt3O{Y(FPbZ*g&t>*5k-&g!`oVe};(iEPfgx3$m>G~al<axo&a>bc zNb!Z!bu%LaW{9`3NB4r+tp%912(urYW=H>~y%hLiL4m_n;F}a+pzUVADRV!83A3*c zB#CPBSJzBa*-OI9hIAN!kt`OjI+a<x{yM`}JYLPCo9SlKaE~)L=+TBh-m^P{JpSwl zvS2`cO~Pj7Ilut%W}XI1qSnz;OQyP{w~F?==dcgm(;JLi&_rH5%y@lTbnnoLEAF;d zSQ66*4a1U(MXWKJv)7m@@Ntpy8yFh1geLNx&QtAXvJ`Ji$7Y(hyBD*<ZuoBOg}e)U z_q<vV-iHqG_Cn8MHUI<Gc%lY+exhY}dOCjw-wogkSdAmCxQxRl&!z5+2*`Gg(Vq<Q zY+1irF>;LLADJAQuo}a?@N#D^T=2BKg5t$-HK5FiC!IGvuC~{-?}kn0`_M`=+X+b1 zGr;+yxb8lP*UpSA`iX%C3ceW5-3HY0{sqDpIox|WZY~GNdU_d|f*x4zJngW<v&O4d z$y2*P4F}<^-oa9!&+O#a@3jGOZaYSF<3=k0CCWReEXbRawYL?g3h(>MJ1;>OZ&bcm zVMT$woxPZV8humg*WSyQ7Df9H=a;=i(s{~G8p~e24r(FJ7DCx@$2==Rk0oXp&DFa- zB<Le!GaxjT1Wl7ltZDZ^5_BnP+#9_RqCdm6Tid;tK)UuG%{S4$J2f5Hj*N)=Rjse) zTJEL4UgA(kAk_8E;oZWoGeT~7fhWFnGT!6v4KL}NETK1e_E(vE!>jrQVcU}0*Vj3H zot|wY)p^NwQsXd58uQ*i8<^nY<1K!c=+>H1?9ogrrt5T!zs7tX!#sA8s@a<JB3>yw zuS|2-5)o9G8TBr}S^n!}taLIj@ReWHPDVKMtH#L)XMWW=8R6_^{=#2Pn4hA!v#RP5 z?31TQGJ_$c;Wpnsor*A@Bd52y8Bz178#eN{YIE(H^!{f4X1*T^)voE;hIp3SLVigT zremSBp|B|a<X9(qbB~+Io}Ab~^E)=2ygaiw;RNTZ9>&@}-0k6GK(y`asx@#jy?k3! zzZAUEE3?0r;HdKP6<?NPPh7C3tk_uW10hn05CM${d3D=m*4R)>nfZK6s!<8UUbiQ{ z=_S*md&e-$oyB;mdZcQ7Zkq;!nc3|9ZDxHPL$oDPt`pfyN+oHBK_HV+146LlcJH6~ zHXuV285^ys1Z#4jznwYP8E&oGEP<17(Viq;rn-~d@XZb!cw4Oz3_V;n#~WWi%OSPg z$+hi~MNiux_KQDFE_+yu7RI_Q;rGxZ6*eW1e1AO_$(NXO0P*OkKYO*2y(m>N)mnlX z)4D{(q_~d-u6p9p54eETh^*D*$<`ay>VEUHO(p+}hP#)v6W8&mkw&}UVZ!cj_!RGF z8uji^{1lCb^h#ONW%AG?{JT@%o?e%oTb7*}Gx8CW;-&2Ga38n1uaf;|osRF>XQV;5 zm0l9Lv<~BdW&pqIKJ^U2!pWX~!L9Gsdk}i?OVmPO{qWtC(TirPrR<{B<k54T&>#vr zKda17gXEFsXNle(s-KpVc-oIACPZ%{sqM|7Y-?AxzQa2f#>llxtloPh9l!hhT;Vcx zxfox#$=98Q+7s=&mOSR7&GcpH!W>qx#msrHvP-|dU<-OmsWf+FNvY-1wo<KQ5PPNK zGDJbl+wVAr!>rQKkZxK{uVNhx03$TaQkaFY@-bujhQ*k-xf%w)sEk63exUYEOVB<x zvC}g%1Ey#9nZ=7)G55^4(-PO;88P=`&Q|BDxN}v^E89thll`nGDeK3Wob1tq+;5p5 z{HZF~W<mf;aIt>p8~y2zmj=cQ1Hx^Oh$5{E-S`8<3E5}CoOB(xBCoyJU~>E6hRE7N zgAa430b%*nb%Wa{Trlvj*I$3#Hj|!Ssdl`DNTEl9%t=*;zGwFjRb2<w5syTNT~*RM zaJ7()+lv`<Z_E9N{06@SxK%TrE8W|Sgxs7yI_Mu8sE>GkQb8gN4edA?1}qtE4ZHIq zOpcqgUnv!n3^X!EX11-F*-|77pJbfq^%OR^7_L;jUCp{&HRt7Du>U8IeJ%KLP{}L_ zhtp>=a>Z8O=C2{DhqLuH&aAL}E!o9J9RmD$w1?pzRxUlixgOn33x2?WYa2T<61KTV zpJou}>qFJ&`e@X*gFsfobKkF^#<j+r!CFE(N-W6q9PN8UzZS%;okD@izZvJzIV0xG zi)R-koq0xb{8v2;aS)oqJMWH;?&j%vw{$q8sztn#S=!2f-*`g;DqVvPUX7aKeI8pq zO^DnlodEXccitYgsz7>u3|kH=mAMewJ%>3Tyob(XN=U^+T>W6_ar)5i^!VG8&_hcc zXvFaGR&C&!hF{(QFp7*L(_4e4c<je}k*4<-;B(C}NYnL=@^|q0N6QPXcd*wi4ri7m za1S5^7t-vAqMi;JX7FA%-b7fiD!_<NtR!KeR)d?`?tP&OzNl}{3>k@Z2kNa`KVKbt z3s*&okEV;*j6S<FlluZAlldFQpn-0^tTaHCq5;%~0P3@qh$$j0ndQ?HduiLX1#6C9 zA5Gh~HJ~G#Sr1iH;_JpC+#_!s?Ax5)zwZ&_c%42XqeHNLkMxvDXbI5-6j9y*z7Vbr zpX^IHZZ`6C;r!{VhFp)XJ?At<%k2>3CUiTl!e04LXge$1qYx(LPPsdQ6p_B%saL=@ z*X)O~>uj$Ct8nMEa}s?{hfbo;>C{Pd*>qYvnO^vXg{Z@wB#wTQ{?P7QKVif<*4E_C ztj@L>Wy+{54tjbs?VzwXj9)T!RvJh#epO@SCE;w6G(2;pWo8XB6d(02CpKK)1xPcR zF64IH!a;e(6Rfx~7LOVHmZT&k6s$r%7%{DNGz1I)>4XRxD_-3CX7#N1=<||W9U9B* zCoAvdj@@^7-Y;OySFyWzU#h43?EE4Qw1;}ch0(rGlh>V7<Ib$4@hOK!Ti*d_Cl1n9 zKEzCsMBF(IBr)%-W9SY(F#=PxzCs85n^~E0!k>c|I^wS&7M$^)LswP`By@D=h|PU) zTFL`X!60JZJ^?uDryI=i^9D=bCQILDjtr@5fJSp|@2G2ltlpW5#SJ`c@3cq-r+bnl zbWb@6-BaPVwh5P(${cGJ!~6f-3-6B<5bw9xhP<8A?E?MXy%c!0pum+X@CXI+`)R>> zH&lL?T}Kd>df(8$*<C1+Q)(CO?$Tswc2PL{(2e37gi}90Zo{+kYxNC0y4UQ!RzHxC zfsi9F??3%#<e3)gmR<D8tkwT>Isy`L@dZq=RNqAPWy}i={7wby%1QN*5VpK>K5ye} zsmUQP=B5@iQ2NhBTDaeeIJ>wA-~{?Mj&?ph659CgJ35idFnl^&VNHFE`BxEzEM=qp zH_#HQ((1tNiqvjd^sw`;s@^T6<-~;$PbUx<`?1U#$v*G9m^hjCO0(yfBhyQG9BxdI z&rF_=>FX?G<x`z5)1THI*AD3WsT%90!@YXYKgf}9;tdo;{+RZO0=s0taKLzHoVJVp z=bHNVReiG(ELKc?9jcFo8-NL5u`qjfc)>uO^GtDgs(?E?fY+dA1(dAdfVz-ic4lhM zsmpwE7o2}I_K?T1Uut*ZI<rCL&M<_&ojTb@>Lnqja_ju`#hD$Up0C6D)%WkqOV;uX zx3_+st?$bI{w}@1P^o^dJl6<~>WO+sx7wN4@Il1;&y&pXkYk%BR1;DVI3?&VzUkyn z<g0JF8v>**IwPYQXI`CA>AH=yk$%Kxh;LM4>U_R#%%a3&C1#BA8y#XnP>Og5frcS@ z0r2mq%pREqey>rR1O10}Gh~!6Qd|Fe03_UVOQL<Z(Ll^vVw0~?H~T#ZT`sW-r7r;S zmO#b%1>bymH(a0a4PF*)&*hs%Qod7mHztqdw@!psR0g7Lkf5FFM9@6o=V(L#v7o*$ zjn(Ha3bQC{K;N9Hd9v?T7}rYL>&-7o-)s4$c{+>^AR)_at!bLsx`71!=oBV+)R?{J zc=^k)Ra{3YiUz$;PC@T4cm8VNNy-9G$^`JL4ZM})c5+qgt6r-bbk@FmY1xAH6~%KA zJ;#CwY*FDnG4k1h^~bjo(W@2sF&qAT)%t?$@_6sPoOQ-C!cB9rgoJ5A+%|!j5Nbl1 zJ44nZcSeE-?7T^m5_g93!;k1S=AO&)^z~K;0*25AhR_Cv&;~}tz=-hxj5rA}N=YK# zTmvK82cabT%eT!4$I|<3t8a@%`{bX6ia@jQlgbRl%ovqXMh<Stkt6h_K>y_(J>6z{ zdWW+vGtfZ|EiOzDaMQ_Jy$AkP1}@ZA-+dUZo0~Bdtak?UWJ~{06s~&Bd3xjss@3{V z^d;IJ=d7j%^mU#tzLE~n3E1ANN{V_miZb$~GZg+X>Tp~G9A;VS%(B#(WvNqxjt7M) zo?gCf7L=JJ%B1_8ow>h{nJ)r)R5dWS)dY6-?Q)t)?@itgL7b;eq~|;M35i<3?JBLG zq}^4kODo+z8+#KOh#g8;mUv5+LoHp4Pyv44g+JVVlDcBe2c!L)omJ`2GQ>(KV8-%f zQJ5*}A<W8SMi+aZLRSg<f^E)5BLR_pjqRC-yCuJ@lnQsAX9P^A8Pn=XO^5)Fct1WK zGp06MbT-ArKC-e;d}Of=d%pp{f*R$oto<#!yJUh@`7Q;%i0)-xfUuR$TJ5I+#huaZ zhObpq-~6nZ`J9KNeUlM6?m;?0^k?#CcA{kJQf&A;yO4$TLP1#Ya9wfuyDXMCW)_yZ z!!{V&WGi8K&>{(Pz<aX-Z!L9NN?k&*w3KnGn&1a+Yf}0Rr_@kyS}TlpBh|)jMenJ0 zTTy#zM9r_pSkZMecBswF)CSEz9che*CO~g?mJB#Fquh(jP{Lj}(-xM({@2h9K^@ku z6UUEyC0PHO#{7U!%*p&UE6o~}#j42os&R4)HrKhSg~eqxys88|NwoyOcK{B!JZS8A zKl`GoPW8yi+Mp+K=iLQ*GKCLC`+lqs{R66GW;iJL7zMM9VX}()-Z_GEMuM+g$z2@n zKL;k|+p>qHNO?cf*M6fm9TseHZ2r&PIdWtOwTZh!0GHq2fVI4@)tITE8kVveCzJ%T zx0ypVIjk=JwC>Kbz4=;QamBUH8T4`3X+!{*IE~0(Hc?r8#n`=*zd|DtuGDEnz?C_T zWpY+%Ovpgfh%7008p|b78Y?6P8!IIQ8`;aQaT-l$-nc*0mR1GPec@^CN#rf(J3eFR zs&{)>&T+O5Y<_AWbZQ{Qgk)4vX*JC}$GwN=8s*UN3McW@WpL0*FB`?ccSbPwyzHWm z-0|oH0Y8w{bZE6PzjXUq$K)%>wz!MZ!Z*P(#esq+TYOtS4BrKN;M?Zo+fFKcC7$En z!NS+qemH(+*l;@6W9Pm^&j2`ftX&iBVFbNytO9S{C(+gq{UU24DK=If+Vy+jAe?68 z$k_ycqG&&X_>D?<!NU@-X-ylE8~vphtZKFu{#mec{x;ybM6#dI;aoSV{q|3~r-Y|{ zJUyL7aKxW)r<E;BSLx{Ys-Cw+@@9Z*M}Be0xiT{N&k2k`_K*zc{W!vS=4VIE`z-oV znzWwgyV)m$7)HBm9*59N1qi)x7)Mt$J&Hiv_d=kj3JUy|0^ZK*!u>JH#$*9`(v^l; z{Msj+v%3?~n`6LCw|xbG7_zoP5%2naY0gkKRVto1;|mOHSe~D=%}--aJ_##zHX|bx z7@I8{Wtdu}x7X@zeY&WZPRZQLgJbq5q#ADjABJ>sW;Ia?6@J7jmb>kjRs=2ZuZVNG zE-u=?4k+42t&!llsJ;KSo+%?=b1zJ=?&)B&j;jlIy>7aG#6<$V>20-7Tl%-HJdB1T zMPkv0tzwHieL5HkX;=2)!<d)?^ZVQ~8yv_wSG>y@*_Vkq+AkXsd6FdF#rr^?GA>{D zJnZ}a9_|+N6B}~7WQRsCVus=h?{`sq25$|=lVM;?U(rXM_mJ1IzXC`U^b*~ogQnqw z3$R;xD17o32nn*9^H@Q1l=(AbnKdfCYba1PkgKq)73m(A{bOU<y$+i-L{=kDcJtrs zV5*mQ*TMqF`a=(y7#t|0E+Qj;TfI{sSyLYmRiTW>pjDCY-12-0gu<PmKH|T4+`Q-> zd-0%ov5*&x;6;od<aM^%_&WG@WOv;tmx4z7{{dKc0Y%fHcO1Cx?~G<TfoD$1;lARt zm6>4cyHV@hux2}N0Y+;w)p}RG#7eRFl7;wC=zTpk*Di@TlNMd)wx-!Ja5i}-JqwNP z9!OrE@@-~}Z=cb(OA~CRylRJlfSkhWdQE*x2p&<hy<_mR(A)}TN_h7I#v||1FIZ8I z<SnPO?Bqq+PqRazcY?E~Lkll!Lt=hH_aIJEw&H5dUUOnTB~E*SxwNs!Y<Y>d#R(r2 zu#PyPp`dG*eH^wqZ%o0=$8SO}h`3ELXCEDS03#<h#-Cd6S;f<}0X<a<K+T9(8{I$H zFr>FyRdbN0O7FarPYyfVnyEA~*u!_CgLgm6SsH0<7!}@}-|Rl$Z)U?AQ-?z|IdYf# zZU@lh%?dgWt-7bgY%|4j%Mf16d86H?t(P8*)xqCXs(G9(l#M+v@vU}iwC^nP(X4XC z#hKL(UmeB*AirKnCH&n>)WQC@!8&`c*&O&Oc2&d<2uPASGh^;GMvBdhI}2mZedagw z!L!PSc0+@_mS58pzvutLxdWNIaZOqGbu{21XCWJBH42~06u}sng-Ibjj}Bj`ehU1Q z{(Ptz)p}P(wW4yVpN7|s^`+=Yt!Yx}3X4fK_bw%kd$*hdgAo@&q`%d6ME+voN*sZ1 z2jG}ao%_#|wURuLqBYLYf&tT#f1gOJE^0?J6^j~PCKT~>RzSaEbW7`Wp0{Qbx6#;o z%xl^~ds-YwG10c81*l;Vk&+;Ur6dS3DGA15N_p>>Z&st$1S;OCS8G0D$k3^GWS>u} z;$5UF-c73F3zheB>)Ms#H=i2(B29h~sZXp&PlV;P=t&L!U2b-J&3H5!S+TEaNPZ?X zMFms^i6|{hL}_6nN=LlW6Ie_tS2>IKN8E*_&c=7&W$_+*)7-kzcQBM@w;sp4@V*5f zdPXRcbUs(RHd?>d#zIJP+l4|yeugNNGfL93L8hD;#uVwyNbuC;%n%;U&Wv)Bh0J=+ z43Q#Dzpw!)%x1(%mg18Y?UxZ1rKpY<lGim(dl^a6X;0)1Lpg-nY-tzJd+x{o@ATg1 zq|s5)rzp3DTD;<;4=7@lyeQ&q$o)I(#BuR93g!=g{i+jlw;Coivq%>VMZDW+;VjY} z?Z26+nce#Af;Q%y8fgs&V!Q2K(o&S30ZUqCqb}(^hEa`H)-Z?4F6MVnow|qDDN+$f zToLyMd<Z>%bbSG(PPJphfs=~XnyIDlT<Y#!BIg)gU1Yr(PyrVVlmUh)rhQ<n{C7{F z?i+gbWZq?GhZd|ab6mZ_awriPT8F{#4&`9=$g;!O5fzgS?o9;k$SyI8)sJVGrX*xa z&%1{toxnYW>kmBvmasAIA;ehUe*+Syez8dCK#YHtqj|wA0v!15Ea5gT%IMu566K&V zWt*0Xug!2F)xZ_uG;rhItl3DEK_IuIV|{KjV~NWCW-HUHU+5KG^aQWmd;S78xD7NI z{lP5zvsWqxQHjusoq;g)EuXi44zL_Rz#!+(k){e0kH)<;!qhq_TIi)OR<)^D<lX#N zR(C>%KDhOa-Aoe8g+>!-j67%M69wZcGrtJ+K*lTE^Pr;FlCQCam_SK`EgfA3WO@v2 zgIczs^$YUr*bqkgd>Fx;TlSURmFic+MoG+jYUjbly<G<|1s}l(RK0U;xjmLZ+s4X! zf2M#}I(5vSxbS>tXO^MuD%wloWuf0?8RDzYG`JwT^}=y@9yQkc-q)!od!^ZE{uL{H z$j+{%_uHpzSHG)Qh!U_4-wYHH{xi6!!616K2Vb!)2vliM5MNc0YCu+!im$3k<KDm6 zXf{>(H@`ll`j}LQTc!SVY6(>!KiGog(1_7Lox)3zZ`rr7!Dygs>DcTN)0izsz>ykt zJu}C=ss8GBe95_{<M!wPwiE*Ny=IIw-hX^HzdvW8xWBgEPtm^b152J+dHpc&pH=(k zp3B(pC4|Eb8W9dOyJ%M!abm{DK+iukh<*rua*6QbsFUKb$MDh&G(RnS117tBT<1+I z!0}Fmr@5ljN9(op9pbNbd*Ltks`AadkfPqoBggnl`^Su#Bp7SP@G3q4Wtoz-t%@y6 z+o~9|N?hA0T4&mm(cZG~-L1d6{X;%Cs{OXhn#>4(d5T$Q*6BSw>aBS{jMKyg{2YsY zHL;tl+I#YuIojVVr23L3F^*WDbnR{oai?d8r%mmdJW@HW;+FJL@^~9!y<V66y+*b7 zuE0awi?Cm^k+NI-sy=&tm%r8W0bT`KUG!5-#iJ^|lHwx|`TCBZzuTClBTbft@?H?X z7^5u>D+k-<f`qW==XLhyUZMp1EhBHt+pr%!dVtnoyp{gxH`LiQoT}zAAcJ#mczCj& ziIPCho6Ro?FjFf|LN;cKGfT0Q1;?3H$uEP*EOUk7R_|Bb>*oyRo@Fv;y|r8aEv5gO zIHYx#O4|O@+(mrOlEVJ$@Fu<I_g}|H_21PL^>MR~bm~80I@W&)_1~f6`|nGDA34s< zCzO|P#(ZugTH)ltszuHY12u!uK5e<E-}Wc<ii8#2zW7vi`%=H#DR?(u86lC!#`WIQ z1-;j8WR|FPr(oL7RMq@U^7eN7Q~i3Y{i%L6Jz%F9!}Lfw-ugTc^L8Psayy{(*!sg? z82S8n#Y5u1o&)o|SGO}<WQ=A$7@uO!Ce!um4BPc;l6;MPbWPV=b`Syv7t{3y*ICuP zyWNz~VK>vNS&CDLAo>9gmaxNWu><27S&cWu*m}_VYjq?8SIVWhr&(i9ZD8Mt-ZT_l zvDsV2mkj<}vhn1P4=-2wHr5rLnz!VMJcl+QY3B2;E3~P0Q%`BGoL7N76)S9t_8rWt z=!%1!b%R)uSHus=yf8WX(^VJ02zs58bu95DVR_VAL7KYO3YvMeR)}~%n?|eFWHkXv zQA8FG#hAaiEroYqhkY6;$)g-x!c&KMnNp_Pl!@O|vBxB*yX=sZ1D(u=wkm0vn&h<h z&?F~iD(>y0{e55i30pM1FU~Z3zLmfY<L@riwPgYV)ui%9*8ZJDuI`zMoBVJx@G88| zZAT*WBV+E?;qPwoVxudF3V~km_1tgiLE_WD+6)weA4dBQ5T#L@wC(vbD&==uZ_V+H z95_z90WF{t|H4<zq!{ZZbqqzN1B#+ryosV(yhV&ZWoC7=NM)K4v-!P!_cJ8ZyFExY za}Sb94-m;}NJTO!?s4yFws8$?+~9mY`Bjmb9=R)Gz$ZQo{ER)oi(&#_?t_;a689Dd z;Nfr13$+!cZy`BDl*qjyzAx|})_e$n1a*@Lo=72hd9}v7Sp#~A9NukT)EN^Kt;WoV zqJIVXMU8l)Pub2qWz~9tQ|krJEL*%ytfDd;Q!(<6`qee!zz+e?-~$lH34k~*;@u1Y zi_iXr_|(k9AIYAt)V91LAah@JW@q@)sT56SUI~X*QB8@Mlr(&{@Qf$D(+>CD#PAWz z5D7lIf<0MIT2XK-h3KIpMjj4E_{!TUH8i%ru<}=W4!&}}H9Ni3!JDi!xKFf%+KL<- zq*6bJr)$b4iLrVjiR;OG7!4F86PsQit}i#=>nr9fTYaUTw#>t_k`l>Rg%KSE{l|VG z=kM}I8amZ5m7qqil06ak%u*V#kVg$P9DYek-7^y;W$u}JDTgH;E|BIkpH!o?i&Udj z8=Wz4E$hnXyORsIbR^riFitkJ8h>`bmFIQLe{OKo>zf8PJ-YdoEzd;1qYb$&8=t?Z zWaArTP4%7-=B|<=cTq*O{}#sPmW`Q{CPe$^k&As}JbT@9O+X^aHqbU?aW5)~-mxka z8n6h5>F*|RX!fe_j}_q&dfgw$d{qgNtG@F;{Ms_B282@2=eBH&e&@%$0Ow}t*i`$} zRR>3}d!Aa!diB$!zP;2(N~N5OV$QkoE$6beaw!?yGb<3k-r=EjPi}W+RdB!{?q?pJ zWjev0S9g6gp;1eQXPNFDo@J01&2MemHCl}7F{^yc1Vx{X&4;rpPKbV%HvGsvwK98J zi2Y3G%*reO&HF*w0Y#gZCg;-PRP?@v<Xotn0;i4pt%lI|M$YF$+s5P8^028p*|wSB zJfw4JYzq-w=7VwWWE3iL#obvNPLV#cl3EO5i)PU|oP1wwFD2}>Fq8Gsl-V?KfULGp zRB$CZHVqUOt)eJp@Y*hU_9}_)1ZOzMV5vr4mI^FAU;QlG8l)BcPkOHuQ_TcKh#Bv^ zO652`7r3dbq&<hOGv|?xaX2eXi=g^-c|Q~|mJo&ee@*Iitf^1s4(9_<Vo3`nGSi0! z$BDzjUmT-=*9s)>wokA!*zKQ@hdNEc-YF#@Z$jPryHdomIr5#*D9qhd<;N=?%O6+1 zD|k;C&hQd+TX(YXK%ktsVC6dbX!iH)c@3@gmO@FuQnH?pQs(wm$|*GroCNojkDlTk zCjfvy3%4ZbNW|z1d496;x0+=bmmk$O#V(n$5?(Hnd=(|u`IHzPM+ratP5f&d0zMft zk9Xt8?KY(J7sV%OK!0fhH3aGY)Q#*>sE=<|(!ACPCi`hKN-k;Bl`u2H#P>^>b1WvZ zp9F|G+rr^S6WtFiyq|~dtmY`TdotKgpJ}I<nUPF=EJOunqW>tY{rS~keM1PWpDWET zT*vlLse;f(arQe8oM(u^GCNN%7bE$Vk=n(vi~r7<7JMMdJkOmZni~Ez{nKI;HpC)C z=(0rk7#TY=CYV#M>+|aTdyT)CJ162UiA}pKa`6#vNRfNk6eerfA%gE|n2yumvW0?e zz`=ipi!Za+E287LQRAC>s-jkvxTltoMBGy&6y{gVyQmnlu^y#G70x02s&?i|OxHMb zC8g_}xrTHjw~oz6?*1ZXw#}FZ6@)9yp09y^iiLhk9{K?mx<;;mHjoOc<gH|XGbuYW z9DY(`yrBb47gm^Ewu1V^-^365bU+XP`Mj{do(!H##yv;;XH}|!Haj+)Drtrv@jn?( zF*!11Q)Y6+n;Np<POWLz<fTl8NY^dzi_*ENEF|;&8|d#zx-Q`s<Gn6!G^%BI^mN4n zDG14SDmI>R_S{xlUQ+c4ewNNUdpLA>hQT89_xGo6%nXzgAz(NxZ%8cP;o8BA-vlEK zRfWSEo>5Xq3;Yt8y!Fl52TOK79=P!Ln`g8JUthuen%O>a(YLvB=2;+&(RbzfJW4C^ z>AUjV<DM6ddv?Y>cZ_@f>h8}Bx5)LpBF#tWIa;(2C-365SAj{#TXb-KnECQ9K|7M> z{_}GG_QPQtlEXoitz=?hgT@HJz@L&Siympg*qw0CDdCVxWlsJK%ZH1ku2c=slkA)N zj$L8zokNg<SjrB=*l6;n&&OZ1kt`*dnsCn}pc{T0{8-a@m$8`(ItkwGp^-O^HO15* ztkqxRRpv&{^_igaZev(Y_}x(mx<*X_dEd+HN5Y)15P#_`Po;Zo?+Fp<H|c4xm#1@q z<i@u~JQf3&NNoP@^KTotkR=|F_DRexnboXGSwQCb*ZO~$3eq@!O!F)0`2-f{{X`&; z^JG_^lv$lH2Y7}=gWoZu{x8*cj;sE3S$%#9B^2MBHPcN48eg`*nvDRI@LNid%%glH ztTj+^#9kIGoRm(q)z;Z_fR#KkeCqu9N~baLGRo7VWgI;&8;8&!=8S2_q%Tw}k5M~| z)K2k*cFpiZ(Yt5ymd0yKXF5!j%OR}jkGcy=@R3MPyCNLzTM1ORM+W+M?Ui9XD0-$X z38xo3&$*w3>)xVR;3H(TXgWi>o0rVNXt=;JBP<R(F?KLVZZ`Hw{96jzP(H2=myT=0 z2Qp_|C_U^g=XKw{&<Qh`MMuzvQh9t&a*LcvV)5gt*>_%0L&s+xIY^u+w*nD-Kbv_J zZnN?;=&x>;_e3(J-@4o@u#X$ov@vKi?~N|~MCQE-(eFJ0wwd?BSBd|-wM@QTdavd9 zp>pcsb?x&`BV@c$Sx5PCEm@p%irgzo`bT>{KXR3yeLmSu-{7!krK>j`OvQ^Ac#u-r z)2E{^`lvXic=b1yqz4r7TjPYmg<qt`$>gu^K2C<m(e#%)VAN}U`4@D1e*X0%rGF8c z11$Da+d+{(_#G9fe!l}~F!0&|=>0T?Of&OIw*y~Qi`VdWVUg-}?WF(A9!`zd!EdG? z`4)ByZ>G|6_*$_`7xJ!#XS<dfYtPbgJaX4q)j)`Qn=o+XzTvB?PwoX@9SREYy^{jo zTTy!q<dwY?7%V8TNCj3=V7dHBhi$wP6VIJYMWAnn(u<$ng)J_<AG3=eB?@||1G|pY zhn~+zSIkP*jix`FT~wZzPuYs^aFtgh^n>8s21Uq#=!(X0-DuB0fKxR(&)L44|IZm` zKA`oT#HMy@brYcp?&*EamdDTXEI5pLp@QxU8#@=>fN#7v-QXAP+eCRtUBM79mWLyj zEc7bf9dCBrv=GxcI?y)fO1>+k;(RBB4A8kIlMBnI$+gtxLXkG75p~|ceCM<I-eJD? zyuhMa%o(nLIUV>T{+<~gF{8o8tp;04NHl6AG8%K81-CrF%5R9b)Y7t}O8(IEv7FpA zz~VNPlc%*WUv_Inv&pZUONyd>`;dtW0>e}V>=Wj>MF?dM2jNw@f5Jz+s?e(zUfGuC z^8QVHYkNQ>^4^rJ9%9rtaJV4nN`hb?%CAQ>edd>n0rr19LY&~N={b_9ZOP0~IsLrP z$R}Y8dOUqdwk~7C-x0k^tn^RqCo`wT#)2va{>*hQSJg8~%TTA2Z`4*nqSV+s^5c1y zB43qftM4}Q`oP>xWa@t{dr6Zs;vZU`)8H;>vKKtP>>fk|6AVIGGVoyzlj!Ce61<or zP=#MH@BHobUTe(cHTiUqnS7d}$X6ERJ5l+Fw*)-4)aoS=M!Z}8&iefr0%KH!G8ZL6 z%s%~#X)iCz6)B^<c2+WaO@r;Kig!0|4b3VK*n$1A)|3-Tj;<fM2dB%I&R^d8`;>0- ze6`e<XH=0Hs__0gg$;-Lw+%(=-#1A(nIIjm->zQqUiuqI)Nft(UeT`3`8|(hg8itu z0YE9dmFF+lNVpSV9GHH_yGqPq&ZtyDdn0V?#tGYg)e%m1@!CthjoA48$!72~aTAZp zu+=S8?brL`jJYn%JAYq<r<p&4`KN(-M^<i~p|o7uE$Z3Xdm(AWTXvYS{U3$}rH@)Q z|D1yI7fAH{`XEhjK-a}SoTUaxU$U1n22QPklU_;4kkVz-5(^1{7h|YLmYt~I(Y{CE zUdn6Ol63iCB)v6SEiOkK%3v5)F8R2AM8@~=)X@<a<^A6fTSwliVQ0JZLFR?%;A`Op z+cjd7*=yA0RKi2TJBqC(_$%Rfc$IuR8APd)(3)Q6RxHQs^N`#I+UnEe!X`PXKg<iH zE~@2xpu}9}Y^D;oQEN>zml|5jpXS5c`?FoBO#|uwb{k_zJarK;WR(Dh%r?L%v-7xM z?3MIiF<_#7=fmx0X-#nQMvSdJT;ucGE?TJpk#LYjcTCpqNVDV3%d8D)M)3I^UXvY) z_?ea7-Ot0*44~nZIbMg1S4@5Ru^LwwjZkZX)N*v88OZ0n%>Y%@X6@3dAqVlR+TrB8 z=3?&4k@|^&qK!7N<&*}J1+&zQbi18uARQz~Sgsea)5)P+$%bm#U1Y7Umr1;CxV`~Q z8G$J!PQ55oQQY4_Gck9xHaVqPoabq4=_I=Jrull`-^t%><UrPQj`>}?c9F^%nk-j7 z+G{u-vOtyP?lmIY;42eq*G0eo0rk*2OhU<Q9Zsdig8s^LP>Iu6NF)Iwwp_GN4x>oU zq!6R6Nw<2r)bizeRKN>)Y-<$G6n~W9&rK5XDluZ=B{s?T5&O_Q5%P%Nhja>BfQ;#i z!(<jvnE~`qd~T{Xat!m7ra>?K?z{buWE*ZOf+%yFoJ!~MX#XNB4TUV|B@mU|GJ#O7 zosFne@JuyqIt^2coUSrwanjyoBFiF5u=nr|j)`lJ&e?i&=it2ggWHR#IqYoAKLOx{ zj};aDlDz;Nm+yOz{5r-1e~Bt=>{fa$TcDiW*XCQ+4)asPLt;SUAVMl}5c4LzX_>*S zXki28gbkFj&bk_=$3SRw=!*oCcBOl%&p;V?!-w)=+ywt{X??xn^vv1`xrtzmzGdxg zQj9Q+23-m?F=D%wpkl@jUWt!7NkyRsQX$zyDqNaL)tna6nD-4Suxm^<BNz6b^UD_H zHd~YOwfhiNqadorn0EyEu+W*csufJWy-oPf2lq4-KMAENwWfgpbqu^XM~gmcO8(3t z;HYe^F^cJY9Mkt+rsa3B)0n__THF;y8#kJk%9LXX)kZ2R33pLRxQj|DQng9c5|u<P zwMo>{fM4jqMaRQxnbq^<sgFLS_K5ZgMS?6LFvPbo>SfPL5PuPa;%WFm!shX$?l2L? z#?p!D#}2To{vn+>8$Xsi9=AU5>tFrqSMUDq$yc)B8?y1!r*4R@`1j=b9rHu0GVB_! z^XrSQSQsC<3r6ti8C}sH&I~0+z8|c2?EadwD)YBu_6pJmWp+;J*+-A>Z_Ug|gfbX< zox#kD?`Ka-xF;vL-Vaec!Mui>V%OQ}KC;4}_Jie6ABtKq?VpT|#k;YX89mSk6Le@b zQ+cJcG4n#Pj<<eJfx$nC4QwUDZ4{|5ts?rp;{anKi2sa!$=E|7WWrQ~=wKNy^0ROi z^^H9};@x$SVa>f~aFu~8295Ojupq161>|_ZM?=?qM!$E3YS$^Z%XrPT@Pq&Q<dj`i zTbYIN_njyKD?gjuJidaOK}xvEnnZ#*J7Pz7%sb(AhA?%TJQ986k?13jKR?F2kCTTv zs?xSMcloBUWO3|Idm;6G1*CrN6-YgGf?dh&t-uon1%9If+e2giOR#1*&kRR$=B(#1 zIQ8fhmZ-t)6Wwrs(ZIaI{Yh>X8WJlvrSRe!sKw0O^SV2uA%Fj>)!%GvJPzg4=}q}g zKbBjzAxt_l`m_lwXwFH~y~{>Sb?;3aecBEGP!+<3<|F&Be11=#FRn#r<kKZpBF_FW zKItBO_(4Hi2eEB<5!%XBcH=5eF5&XBs;6GjU9fz-CEv386iQ5)9veo(x}ant_<=<| zp~x);&Ls`bl9Y0MnjFs7oD_3m@WNiYXIB9RCkcb^78%1pfqY9s^h)NjYUb#^-@|Kn zhI-C~sLoKjk#Xp3;0|mZ#*Dc$#8z?kX-E{SkEHA)21E26X=Oc!W>&M`EP-%o(Y95g z^c^Fw=hxf$ct2vsxSfXy%28$@f5afU7xjh_deZ=~3+;<M8pVxwX5Z`G37SCDM<C^} zUeh)m{hu99@1twvIKNyJ8p0s&|6;RAq%8M4v%#i$yYY3DMyPb~+I#z-kn*I_*!cSi z{rbM(HbsVKp#4)~Mns9KElJ0?!;bn?t(|75*?<0DD%W;!Q28QNzG_ztdoBIr9*E>F zS$4cu2k8lK4J~^`8bxO3j->}K+j$?wt{TDXCbRR9p77A}s`b4OB#c=%oaqXOvSB<N zCHYGNqrHzt|6XVyQ52xD^<~hQ1{xBq!TuC{R8lpNy*%tZY4;aQB<IXvw+-Vwql@mi z>fHSJ4CW&(?+90g<ve{b9OawbPGO?wwqFdJBTOplQ>L#bq<0&0YC@8jle`}_v+hT5 zMfV^wSAOJV{jz5@8+t#y4=sfIG@n+JYCf$Y)qGk<s>!p(VO~A&)09D<QyCLI!mP!m zp=(Vp6<vlj`2bar#=S3)KeM`tof5OK^yx*YUwMd3Fw-%vCy&sRwWcR0W>(|zu`Fjg zbH|RQ2QS-UI@256QJmRv2+oqvF`n4U!J~a~tSH?hk_eff(sj;LLh&TE-oD*q=iu98 z9qG3=>9@ArZ*7HI>+M@63Ia_8^tecYMu1mf&*;5B;HLU;h(py_dL@za<6HeJ`BF!x z)fi=#km$v{sAl~xGp}x3Ph+mK`vm@nnGD*I5gHR4*b5)_kD>2%y#ycL^B#O?;+Lxn zq%Fn0A6fWAX>K1a!I5n!|K%TOrz5YB|0D4`cW?L|^1tHu>jM1NVqozO`Vjm^F<H_6 z55ezu0e;x8pj;`VBhFq$%mn``p?0Qrb6;=z7<0Bg%n&Z+%5QcAj|pL;(+tmeIX4%1 zm(G|O8F@Ld$ILAmSywn-MSv8b+t^dpVcZt?OAeX^${|*#u#NdtqK#i|-J%DwbxXH+ z_Yz?h8v81|28EPTkzES4l+^j8Qc^2PrKD;wX;5h}X;5h}#k^<V0>8;-A&X__E8E0g zDG(3V)4}}R&2Iftd|$M4-^08o3^nv)R#VkoKRlIMO%;2u{k}Iv_EJ<FCZ?~sXB2S? zW2Kf8R}^uR)<&-z+RE(9<>TzeouM7>(?nr@txwMog&T`9N7)d7QotEyzkG-8(C;*= z3(vRk%yb>xOmIa})#%9c!FXY{HSz}*@*}^oV!*dgrdi`^>+maq0IU<4!`_z#+X}$! zm0{-%?p>S&XW8)hd7(Pf2-S@7od^i$%NIC4jBR$dRQ=+&hL$h8+~h^~@cq-kT-__t z({t#^^vvb4BCc3Zf7U&{)IB-OwY-VYI?9&22WYAx406x2$`f62cDQHr`OBj#PLCJl z>tT@XCg0S5Rompn2uHZx?BEy~|IL6N#0y_iaPX&FtscctLLUsKwJG>5%>{5Gy<6^` zc$ks7<<6RSSJ6?U>B`!J(qg*#eAY&sHjxbBR%>XDI`8$|hBd;NYcbI<O_{s}`EJ!n z-hd$R=|$mk@+<_N<e$9bDjhnt?PbI7mB^$$M5&^?`g0;h_BwHR18n-z9~CTJ*=5On zh6ZRptD(LW?>h~1>#kh(6`dAs$;{`(7jK&&K&jJ2;0fjHa@w^++w8P7@YL<J>qte5 z)6&G#LZ@B2ZkyB6%v0KF*N|>^T3UEo?6ecWq7B!u(k<<=O|Nf>ZE4{bvbR8<gG+eq z)6jBqt3hE>ifnphb8gF~%egIB`)6B<HVteX+W6?k{hmciKbtDql4`+Q?uE^-T-vqe znJpW)wD2ae@v%*hJlj-`E8Qa-M>f9sY*XcPgIiLi8wa0zlsA6S*p^gkbMDduwrtw; z=oXMF-O>^>{RNa%ld9eP<Zj;r{@JoI_&8$yuQsYgEI&UP-1Y4LgWftHVQkK^$9(%q z!l8%%#w_A!-R8AFBI$sYMDqq`0_P3U>ya1iOq4$=Amf=JeFJUqWh^m95B8b`vn*M) z*_*+yk%v?tU4Y5U$c7K@g9S__pHW6WP{X|3Aw1Y&W96OXC$TgUzcGg8Wb5riN0pgX zh#f+2xR=BqtfF>yhz}Y0yD#6}L(!l%@QI=G#Qi38!@u78dD;VD4S0#A8D7-{3B1?% z_ozO;AwMN1&W<s@r@OP`)Ox&oI)3@-W8I4dtKz{EscK}heVTfIoYp%)?%5AH`Uxb$ zgq|rx50Wn0v)N#2+cU3fVBCJ0CY+_N^=VfVyJFgLc$}5HyEv|R4nz8>EqjnnMf>j6 z<3ezV_WhEdbVU<&D^(8^nKnKoI=uDsX#Y2rnKd4{`<Li9AkdCjI$x-#F72aFN3vI~ zN3b8wus4v?huuFBP!F|PDE~1Sy?$uwrsy9ZAwF1UeUXbTzh{GcVNnP#BJ9@>0kt6; z?)4ABKk^7Y30A5LtYrSp<6nol9_hfRI)`&{H<|+mre!tJzGwJ?e3{P|Z?!g+r6&0e zua5SK)0XqD+Hbv_5)6t4S+({rs)-D?h0m%Yzj$S|Ps$?uGjiqN$ay^zK(zlV-qG+S zmZ8#=o6z&Es?9`C!kcl#&_f%M>wC^}+e?Wf#M|^KYJRk@UeJx#*$JlDm+sdXayC44 zRzNfiqt_2QZ`J%M{lG(C<>mcm=W+u)@*qT;>~@us{Eu;kkytg&KH4_BQguMX%4ol= zr>4>NO?9+i=PhVPmqJHuSBtxi9?*nEuBD2Dguf}umSvD{^9d4=8Hy9?mMKF~0i>|r z`ht<UEr7&+{wmqpoYt)*?N004Bppuu`%dfjS}x*U^m~I9&>cFYl{FTH>U_*Nmi8r! zM{_MYNVH$;WWJ~T?<ovvdNPdKuls8`vBDu;PETlaAV0s*kP0<~l`(!ED^G_`nzo`1 z9+h{(KH)CC>Si_riCvgS0Na^cOZI?f_p|I8`7!E369$4?T>tzE{v(t&OHBwVncW}= z%{z_Lf-~g(&#>Haf>Si)ja@`dDs#0>^Xpu(RUp|SSbw}Tx1w8*$qPH1oBc4V3RBhi zy)a&-`4sbh^S(rBdJ2=UA%yt33%pDjTXvz3t_noFSD!H<YR$EY<l};<eN_3v(9~Vo zncB(n&R)ZCOEc5UW9DJK=~51uXHCO#MW5qO$b@Cmm)oAB_1H>QP{!3vo;MeNxHh^= zyWrY-X)ud6?YihdhgKBw3f7`d2RgK<>vV7$d>w2ZJPPJo_?+qRn;A?u%g5iJH~zU5 zRY08;$?O<SA5Uba^l=Lwng75Kul|qL&|vngr#O-RH{7;gnK<Z8TrhCn)S=AIuR0qS zl}7(~edh%jTi2a%ExmOq`kOt!7rpPsqEuJM{MsjbUX8Bk9iVI3$$oM0g^3eowaTn5 zX6;t+kCud2A{wzT?!RcV8@?%p72&Nhe=Yg%v7*iFEJ=Uq%1>u@?z>XMKD|$7XJn<u zcTXv^QUQNwc1~WY!&_-@r6wPJq;&~(##cYFYjhgwRrE&~ZOS-|kZnkXhQ|3P3ZG>= z71b}=HvoVuPh7V1ZJyFcU-^w?JKyD(1^=04JGbjWCYJOe%XYq_2XTM2?-u@=CcVXZ ziDf(gO{Kf8oVjf0jmjfIpZ>?Po$}aUskMH3<FcJM=)p8+4fd0rztN*<=O32sd`l1f zFY5Uf`g7I5vYl&H>L<%~F4q^i67-C9^GbPk7SLnml--}l_y0-(E9ep8#XrII7_tf^ z7@H+Ah?yVPti8~Ly{7NRil(fJ_T5fV<*Bo&9s6j@3=A)6@<_B`PxRj<*pFP(P#h{+ z6E1GeSZg+&Bknc^Vk<&+2Zyo<!<TtCUdy^5%>rvFx~Vk=_=7Owt!1Mtfcs@1ZlIqT z*kGZ0d_4AOmegJ9@hU%}j`;<3H2HN%pAXiDij|98W|I5fFX@(LJ5HJrExPiH&e{i_ z`to_PcV8i(-1fr<cTSqR>Vj1seO5bYY=;%FVQ7_=($15EI}XorMe?Zgg!A~|=;6zD zDBRSQS1jA16AjVtT@Rfzqx@*62EQ>63Yc2tr=}CUpVN{l>-;QKG(H2h^2#hEOv}G` z%@}n<YYuq&f+qwnw~Pwag+3tfT+~eZ?m|QCyhS)-di+80vg+|ui^yRgf=FS8@reB9 zJG&#Y;E8=4Z#?$zzD%T4cwkNF3BzkE!5)6>KTU=o%WLC{cx?dIqWDS2r*`f@=E(Dx zudMo(u9}!obiPxZn+kxXk!3r6^qo*q^qT)vPgrmd&i5PVr?zn^)jN*Lg&D>-Ze9QQ z#?8-tk}CZLtBI#$wBd*po<=$u?v1&aUP2pcH}vc~vJiVKmv3!Ie<QkLLR}*LX2z?m z+ML-wWzpP#-?Nb)WXqa}BvJc#dU|xlj1XCrp>)}Mqc6NO@yZCh1~0xdv1b}8<(HgC zN1jj~K<z(LYSu5&6+HFmj*!~Nd)_ow^NiP2cl4sSX${`fy@+SVQrU13h+h?$x-Zz= z`}!9(!<DgVKb`ABINNhsD3P8#vVU()qGyT%psnFR_14-oto(r_lljJAXsmOd8QgjJ z;Py#V*Ilqqj92><W2r29)2ir-^`Ui6@yM^qoO$lhdd5+Z`9Nh(F~~-qykN5m+1f{X zFWB7qO7N7s2rQ#3(nNb{OCFH>9X(nw_vmM)I~gv`tzqqDdqJxMS(CJ;H8x>~nd9kQ z1RR64b(92#KyUEw&6%)*iHyv`xeb2|%KP?|24hbVkOV53VBA9%P1UYoVQyhuC4f|J zttPo@;7Ok3rU?~(`1SycPk;+1syTc|qd9EbOmyc@;eRhyhdYfx=m4`%0Lfrw*01PM z`sls%Ni>D}*vRAK<~!P7QaW<WZuZhRET<KIg2ranlzMk!KNLxvW9`m8?i{QI?aAEy z`jQqqR=e@K$ZtdNqE}E*h71W{8FtN`29V>Wm(5ip!}X<$zm2|$Gn728@ZTbznGkUJ zZx4s|IpFN@uo_T=jfmSM{5$YMvr7&*n+MZy7O8G~eAwQH7n&VA;A|cW4>+Ki<n`bG zKj6EBL~kz(%`QFQ?6Tohsl}Gfgye9_h}h8V!~tjXkT74`D~401Pu!;R(CqR9&gQvX zUxrf^O7aFQBM%@4=chSA9jvcKp4jMliE+;*<DTQ=o&$flV13`s%7P7Odf7xjl#=>y z96o}xK8cN2A#?ZwpGp<2W2X&`NeVP4qsY1FBXY*_IlbFoLf-lKmW{(F=|2bar|ha} z=1||xs!MF|3`hI#h9GywdM>-Oq^FTZiGo`D1MpZFNSC54-Y=MljQqmR;ihEbP5G~L zv$=70tpA0632zuRu{Lp@SX5;cGd*m9mv~1$_rWMG0t`dt-?-D}uPMy0c-#5>+qQgw zn5i$xwIOc|xLAPag2yC*_;ehfxIaSjg+bXt!@TGN$b_LFvTeBNeq!5by5%PNB~nQu z>|J>e{2lyTWn@eY*SCv9oF}L5z?F(U<G}{AtL4l?3zpBrxkDO{fL|)`F#|rE!o{Y{ zjz<fewue)yiyFLnfER3F0FzP31waKVy86di!-|V2-Q36#?b|E_o_78k^yfKRs<}|c z`_y_`V|$04F>n1wyKj$Zwzesmpv29)J1op$g%;52M=BCdE*G??p3Fn@t|<id5u383 zES~~ct(0*u3}bJpsQn<?r;Y*iwF14k0CWY}Ond~tJ<D*EChJw{3W#D{rf;^rUcw4b zHWcrb%|;s51r@#WwAQtD-4&c)Vcc+rK2Aq^3-}yeF|*`OY(Q7B&=FT3s+6O;zh#Qo zJ<Z=x8sjcCrHN?&(~zuhVDTk)rqVM(`e#CVi12NJfL#PkT+rN<qSuB`xY)3<5R3`I zlP!X=Aot1S=C`r}x5#tsGndBwYlBd?J70eLgX-D}sw)Yqs}cBbG8*VdQ=MQQtLk~b z{ux7;e6{NVu7>AybRa*!1n}Q}VyroLl9Tsk0P>zKc)vV=u$6gx9Der}<m<BKqbh%E z!TXk={GEH2PZ#7Xx8-+;%pC>qV?lYYtr=f`bwNJwuLl1YRlcm?{W{*8ZX!Bjmo|tt zVvjIv_(x@Z<MA;P{EV!ISg)a#1~gh%kfASt6*JpTy4h019{^C$8R~>DV=i&U2mVz2 z<p6FLxRPf9>~sO_ax(G$7pDCM?_++Q%)LJPud^*kPJ{jz3Ua>u7a#pks+z+6Wup%z zT&#eY%cMPdXOmZ3hd8QV#5j;;a3I=uhkojqf??sAYhf8Hnbpb`u~=PF4fPgiT&sot zJg`9E6z<c;cg49#KYJKSNZmNGc=|2{bkOW8{tV6il2xXpk+V1<sh;72dWy%@Q*3f4 z1pLpEXiJi^73+Qrf;%&9Rt8mkqM(Y$pE8u4a0%T#q2T=r-h+nfG(&Qmea1@G!7rAV zW<@BqC4jnG=6WCT#pIDs75%+so0*!zzY^w<M;fNadm)8RR`yoifO?)!lK$6VXm?IR z@l)p0f}oOf3o1E?QoMgjgKAd6`}dIY##y#!k!d)$3^2ZPI4<wTU-5z>YfTZ;u}Ay( zt}MX!7KT|NzPFIwUJEx<Xc|wr{<Elr!02oUI03f*{iiXKe4R49e?!>bQt<xEyf>3_ zus(urVls8(AAp`&!d7Dcxd68{z6$?xos%`VMEjXfc;q&xIh@z|(MbRK%MFKOkyF<# zRU;tyMvapKmfXnvlI!vzMf-09$jJQy6YVF~Bmm2cqJ1CmU6G>D97b~k{ISEv>O*ya z>vYo`<<UJEOW73Xe5b>b7wfop3l5cNW^wwvRPM&)sc=)}s7GP20kKE~ej}^Aq+;Hq zLy(CLx{QB6*ysL-5EuD>_WY7PJk;VAX`!~0VigykF?FZ&cy>m}dUAaIzYUNAqvs`? zQSO*5*EAf)E<%|+rd5q@$AB;YN`5ShEgZq?E`8sr^(!9&yI2|63CqvgG;j9(5)kOa zIt`YCLE7tlCZ_w~gZ(muNWy#eZU7&wLmEHTAE%Vf@ioN^8I%^uw;$^*!!e2BP|w<) zhi;~X_j$1LGxWTSo{Bx~j5F`o5S-ikP&@UC4&6{&JD9JtaZqJ*bE;?%nENvxU2e@` zQ~uh0dfqXM-=JXue?8Oz7`yKUfN0-iBFpO!_3Eumac}+HJx(Y_|6^73di?LWL4>#c z+aQS1{?o^~C+Y~Fzm5FhrWmU|Hn}z{14Feadedb0(lC2&Ps1Y>;^Q<t6`b{RsE3?+ zntqQG0Zj)7%|Xc7WFOOq-DAie7J6=@DCHewYD`bkQL4rwTh%i;;uzWZ66B6t;8y}{ zS$x8s1(kGAiF=so1a=uVX#f}7xhk@BT(Pf>6*G+bDHS!o29M=#r=Zd2gY^Lly|DY> z_gei%`(C81vxdseYKzn?w755~J6Sezkh6-I38l{V?2-_K^hz0B!czp+cwM+rM0JLG zp4QV0o|HWspDe0x_j1h9(6$V^A2#w06%^g6omf)dW5CkK+Krcfj<l3(J9}%6?%Bk^ zQBE=zk&VpWPx3hzZP2o+YO~=-TgK0G+kb_N*v=_i<O!BaUB?^byw^vX@qI4ygOwiz z@zs{SdKa~!XD%kh+5kV@dy}%}nrMzTT$>R0?q?Yg1a!2q+rYGvFY3H%rP2Psl2bdJ z5#~y5WguU|R);9@YVQe&T*J}+D7g@T3G)@w{fjRko`8(>U^_pRc93eR-$|;azwAX? zMuxq^n<v=(hP%7`{M~;3g?|3DH+&B)isS=7!^w`3d|~gZHlup#P{3-?CQG%EdMG;> z%BZ5mdv;&~i~*!dXdY3mG{c)Yhqt8v6=I3IEnOoD|Kwk0>WtixHdCigZ{>$gtBAwo z2giEfmEnf`6Hv{7TfJ<x$R2E~q2Ez3++~4CDQ*W_?_tzH$!?yT0_^{d^A-STBER8Q z(tvxzCyrI9W{|C!RK}AQ(imwQY25qZZ78tRPCpVS4s}hHLarv8n&;fb<incEpHF;J z(PO27jJU%ehhh%lE>;lmpux91$QWb)nyR$tSED@TY9Do7IB43ScYCx!tmMN0oZ3)F zsy3uZ)rJOD<JGDSYjW)x;>(%PzlDr1kFF@$wybke$NT~3Pd%R_T6t*I$bpC{?2*_a zxAmG&JqNI@^jc<hxwSh=KZ^cQk})y>ex#OLI_%NXT8mG(hfaL>4;oH{tC}}t%I5tu z%=(tij)=PuJ4?1DT)QE9wJc8Vl9KG1#kH-GXy!&9bNBE^^8X-rP6^gm{EkBGZwamF zitClI8$Y-+JZ0UrAwSOyGMrAv-7|#;cTOPF^n5OXA|{>5HTc4$eXbU;Yo|}(l%>0` zdr3GuqZoTzc6vB7SW^4AQ+#nnX4NF{x;V+WW_UjU9i>Q|hls9PpIIHz*$3_U8Z~_C zn#`_nv`?ozGrK~}I-hQhMf;AV@1raJ*hEb<C$yt>PUPZ;x$)pz1{T-%tjO$|Kpf0n z#XWPlmQgKkq%{|gwdOar$>G5dCQR|v8b23cFB~I`pKHS42VruBLQ6_Q$C|sA^XtLh z#l<J+h8SefbQ;jRc)|(pB^((ou@`D)XHPI+YafqZ{VBei!_M9?oXN3SCeM9&=UxJ# zvNJ<a32uq5IC-poC+L_R;VEmcowQrd>B>6RAU|t(aK{8?%@l`ocS8+Rd+z7_GB)+- z)!!5rNXa5^dLD~@KJNzmBe4+ZGbmy0RSYh4l-k&$gK^oeZ7Nx`pHUqHeWHq}5qqqs zI#Ik9E8O=|G?j&{LmK;%y`bc*;-K4|#o6l9qy4QA6{-D3wEyG$VjSxfubJV`8Zcux zfquD|0V!QG*}sinDSk<CH;_tjH*voaWy!bHwI};f>FPpnB21cbCnqc*`i(MZ^Gl<< zIoTFkyM`H{sCF&o+b=GueKVSwqAWV}h@A+O`4C1b8GI!s{1BrIV(+5g+xubfV#wMn z3WG6C8orYjB45mSerKf>%IEw7Ico(?m{fvBf=7Zzf~Sd8f+y`Dy9R--N#Fv~%<4|N z#Ol{Xb49eVEx9zbu6Ob12`nS&o2o~87w<X&wJ+OTwJY~Wb^pD_Ur7K#CQ=8Ag~(+K zkZTumR8&-0kzbyUX!fpQ8LgEmK7A&j2L$96ylCH#00OphvTF#fV~eo=2lmZkax^oc zUBcI(FKh<+`SP;P_%x@ieZIk-tZOncV*GXn{G{M}OVy1m$FERFhTinMvi~^4lg-KL z;w;?=+Lk+pSEdALUonz3^0+OT;%T}$?E?j38!aUw6EEGJBEKo1$jtjt=l|{TnC6>U zna#LIf&VHfaIgw=Qoz^`T4-TcbVUcTQeb@eu@fDz5!MG0Ylo$KuYQp3ea0T+iuNfy zAc9#EZg6BmHarh<4M(pzO}yy)@?2tncSCL6@l+9dhV@IGp++j&m)2L^ti_ZMEgB4C zH-`*kH(h*L?K2n4;l0lLJ*zQ}=69J@82QwXi&PdBgm=}po9?x5l&enq>(}jbH#IB_ zt*u=Zz2>X-O@#@7P-z1oRNDXuH6{Q;i#_x&QaENLb;FBd`h}!o`ZQ_8J8EUY7#i}~ zHLuugD4_9w|IV`M$L}y>NF!e0q^b#AwZM_en65E2-+{<i0A0$^5u};bK1yWB-#s%h zjtd?xs4zu^BR7ek)b0v2*9%4Q&@(>G`>)eDYfe^)0d<FLL+(4gA&(hyP2)hz11gXQ z|G3vT;|h8u9aELdP*ncG&B<<_FU;M<vtd72f^-k|d$s`FzXQ&D@lTdt_r~C|ga`G1 zT?Ou@z?sn%JLX1Lyh)JR2hY2#V}5J&zOvtS@*}#U`geNaJo(h$qxVG~)H}Ck%Ac~4 zLyB9%PyKVsd+be@hTh2RC?OQrqA4Svw(~<NhQmy*<f#$fW-ksAK<C;|;1y4{MSo|W zAMd{s*bmZ36!iHAEmw7z!;;Q0JymXxOrGxib?R_*#Wgd863ciF;_y-Z-=cm#4y}UU z?Yv9sor^bKwC`L&Yr&>Ypkxa;nO%AzPI#f=G5JF1u;R=b&7;v3PUq$5GN-&BUD5Ob zCogvmz8EG7QRc<UDVy>i`OvhBkE4SxPRP7iH~8M9f{%P?8qK_TQa<-+?QqWzvhiOb z2r4q8T)TZMy^tB5kp3cXTHGkE;#at*hPh3YV8D+?`%e;{I1m-%zRmHn{#|5OgED?V z5%f+K%&aQT3`{7%d3FI>LKw8i(3)+~viJs=%^p?dJsClZt~fWGJ#}JE$0eyCvuXm% z!~ci0vw@GQxcdKwY+%vVU39BKu||zH)M$yNPf3mK0tu#q8U+;<TdZiYVjqf$VvQ2q z4dnK+N(;WU)fTI5eXF%<F$hWmnBYqlq*f47d~5F-ZSkduulav}GxzRpAbFntKTnjs zcjnH^nKNh3oH=vmOkv@EeifY0Z?5hVY?+3V?9Cbq=r1%BruOMQE&}~{<2#w!OG6{q z#Fk%cIuH#|CVXdM2R1T5A^Wq{f!S|R7zLMSyZkY*d9ED;Ke5jodpO&Y^fIEopP?-A zwyn2gVEO<Vv>(M7Fd5EQhI`523oK^;GN4BmFdB+eSw5aE=FKf0u{vzct2&B4az5|* zLY{sO;69$>@bl}Q#fa>grhipEcjpi+0Xn^6ECC8AbcrmPMVTlzV`-gEL(NeAxq}mL ztqqylDlsg54x`ZJL)_@&Dz50MO|R{pc)Wwx)F+Y4zk&~sEzULum$Qlf+0@fEwO7OH zpP9N3sV);0?_w{0aM6cbGSl|ig-Iu7nw3rWVc~qRu|93@RZSm`+>*JxXwz%XmQCK! zHEjnPsF1z%Y&;gI3}v1bVJ7Hm`l@0B;xq3ZCDosEcBa#~7fp4PSOPjL-1Dr{)w7O& z|Abq`cMZ@1DIf?sVEZ5GfTO$V00_soAF%kJL`~-OgXW%#kzNVUvQ))VybHX-7Mu^A zO&fcdDtBWHH)j$pnQ+7I9pMdIZhBy*NQ{Fl>V}s!+R!5*ZBj#-(OMY|15FqsZ1SZh zmVSjdzT<@9T*Q#kMcqzrJ%*ERl+@VK7Gn;zON%9Vh8RXCzQupdL7CX{$&8-yy`8TO zaymP_!Kv43;15IBI6E*F@vbIC^(Rd$D814goR-dvv(>S*e_!<&q^Kj2AZknpu2ct( z?97}gV_hA17)>{JZt5BOV%q@}QR6r3KsD=(NbwnASjfVk5IS1&GzWBOL@~%iv}nCU zHF4I%Gpny00FvMYK<fk*(oCaiF@lueKe6Qp;_auXpT<6bU;!g35>$AUNWESYTOPjE zOd*}rIcC#qOe42y8Ud+ehCZ3vr4vY_uNd5OgtBDncc}%N-eMjdlbKqinYK;y_!tsi zu`Sg-$oQ%bAj*%w13BD;@$$wT>b(je$+BoLYQwq`^=_7fFg|}egF`xBD5>6XMbpuI zXsZinCD!K4Lte>Inm+;k|Iyi94;of>G4+;bmsqV@nc&W9Uk=KOj{pfgqr0=SZQwo_ z9Ba{wc>AvNr}P0v)AoW4KU0QnYvTpVa`bPgl_}9%f9?$L{H)mw+phOB?0fVH-oMRz z3cFJ?f1_gV^S8VGB^`o$gGi44(Z@f2=H$!+Q_EmIzew`yJWHKU4Suv=L~r8n>wS&$ zMf9lj#HqCr@65+P>#csjX^WDbLo%v2RERx|J^z8X02J482hiWrJ@Oa=q}EEZi&7$} z3n%xQIKw+tccoe$TSla@u2Gh5YD@X{Ir;MR<yI9&DVbCn)Tvk%7T<|+0bhI91Yf5? z{G{_e0!Yj#Q-bTrZVJxn1F%2sp6omWM}E7k<pkk5#DPtmwW@zRkR}4SRL|X*64Dzl z5$(Nxw~=B;&tE%9b;&?m_%WJEk-fy)sCUf$>YFkNPWk;7huhjGwfy)XbPy5(ohWAC z&L(f{Lw1$6g*fA+HkN*0uc<eV(9$}VmXil63acgM|DdVnOJED&&w?0Ok;;G(_P*E% zDRVPK&%wd?05Udjd^p42J}(+wzEN7f%RL5cJ8hG^ea2>rf1D<aW>O!ewr~H^L<w$2 zTF;EHr?F!M$EstoK1b(0MH$FALeCeSPW0NhF?1AFO;iBnVj_f5tbC0wP{tbG<~PaH zWt-fJJO19T@dp(t=d&+-)@!y)DA9Uc|JGHopIzPr2BH$&M}nZ6{U&dH3Ok*Zi_0ju zX`Gw76Kn`~Z;(R_+H6H;`XK3}IUp&OE<oEqh%w%3*ndmSrKkX(&+wt=?f@mF0tOtc zzt>DmLem~f%JZ50e3CJM?zzs9(lX&KeT9~o{>%<n<AVGC?0l-*(8jp3pPFUtr)u2P z)UX=XxSs%c;R;mCCWcl+FjES?tu)^hW4_hJ9ZY@5Gx<p>G{Z6i0Ku@_@X<*#y!O?6 zqB7bOOroRx5uUB=#5%|-hzjH_so)!3t(B)HT=!1etgYS+)Y!7Jt%OJBL0ym*YfbYW zz!yvJfS^%_Bs2GX0DLwLm1^@xd^ReGnPU=YlI4im5dKw{e`a(UUnQ@*#8kyah^sX; zv>^#mj6{9Xl~T1uIGIUO>m^E?GHD@&Cj^6*v9x~v+G&s=bS*bpI#3y=-h`<a9DSut zQ|vUS>s)6?aI6JY1xdmW()aV%j#g$8cHM0#KwtKtfHOEO-<JYvg>WDUv_+E)1^kSi zS<1ppX7gWp6Z5h_nr1&lp9mD3%l0{611%cP7QV|sQ05FFSGjXym`8;!Sdqr!#HhJ$ z$%twGa6Z+i-Kd4UU)ufF9+2<8Mz^%P`6UZmfF|3)4tV)ylL#{)zU*8m+f6ml*ZSDm zNHfjH?1!)la2KBiR6L`<vd`Q)VO$;(?+3qSp8WGF=1H}ukG*Qf9y**0&k!MO_n_4! zQ_Dl4`D@Ma#_qou_b=kp#<U^g-Fk`i3i7nz>&sMLtv?Yk=%&P4e<5=5`AE|NKI?!2 zz-)t>@d!$6|6+m6gBuPPmES~`)Jna>aNZ<fI7UhljDk>iYBO*8>rTBCyiuZJRARjh zC^UmiDCL1tW&{tEGG#n!oC)Qrb+rQ6j6&=Sgs{hbgqcDqYDj*jf|BCi*U-5b!zeek zof_RGZ}7_(T^~{A8hG3#f<>fAT&bIiGwZ16&ASzShTsmD?;_e1{o?Huy{{dy@$%;W zJJ4UZDU){>8N3f3vCD=6dBLISk0Mx@{(=0dWR%#^w^y0rAcU6zP)<s?jd(Me7xE+D z9$GHtWK^upLo}m*-wI2m_+R}LW9JEB=dwzL8c_OKw`g9StrsE1%-g<@a{p+Al)E3H zddi{d3e!Wi91k)_&$EXD!EW}=02v1@8s3t#c#UK$D7;|)-Q#;{!S`VOiv0z^H_(Ww zkm0nJM@tW-@}?tLiWt+rhX~y{sBwQ|{284;*Pe23-A;5M#?-3iFTFs^u}4?Gsy8pO z9b}M5INUba^rl1_l2m%p-}uTo@H2a{@B_A@!q#&e8N5s%ydG$!L9k`o;$v&sH^5f& z3WKc%%2uC?o~ERHOOPF45=$(1zu-`Q`Wrsk)DJ*5SLdPg=G+F^Jj!_^ijEJI;o5=> zW0heM84BqmSf9>~fY#}3Wu%`2%JdWME+9O*ke^uH<IdmGx^8sLBi9pdUt%KH5K+VV z(jnGYM6}$xir~nyTt(zuhK;x#h2>hCiYtnhEWvk@$<;8)Mo>=F`}c21CizNZTDH$4 z)Jf`~o2ZSaId;u=aex}a;ZvE<^3zDdyI`5srapBYPXw^FJl%O=8Hr5=tAW6UyWmXt zbZlz>mI*%|k|yG9xt*zgio<VHqt#n3|4t@+IrR%VLm>AT)bH9Xs=glXl&?PSz42>C zQuyKOo3}%kjr%y}*|l&Lp(0=4HT>Cms%LW{{<WT=mD~JU27!DP|1~C3zj)7~Xz#Df zEq_pdp)f!^pA>LqcKTy!Ih*ISaxA@_m)NypvMDrxtxxl^y7+2zos$!CA(rkj-=Ej_ zkNK{>^hfo*Wu+NWG`r@JIN=os@}mx6tdBsH&@^E><cq`uq8Tx<+KqztggmqoPrMg? z1@0*bz4F9FBev_-I@ip%DGxqsryJz)c1D0}<oPEWH+LI(4}i=%o?8_)w`X6(Lr8wT z?mfkvx%v~(mHjf^x_I?Yy&lS|#p<Ib{FQvzB+Y-9znzXKiztoTd6;4$Gs@uGTe3(y z)UslF=qQ2U>j#8xwx^TQuE-ePsLIRj>FVkyA5(uZnN^@xBU1jyIW-+=JOrbX^2P(% z@on6j*9w!aafmbRAr5p%qrjau%xAt?#m%=_c^Q(I6}&Npl&`8hef75=U}cS2l8w65 zfY%W8Q|pp;mm()GqY|yuecO#M3B>G=K}>6habs*iZk<d-_7b7XZ#JpSXJ=QoN{P3c zP^?wh&W<ZcxQa7zA!8o~=O~A~+-t2w*|;}&^eqGyXRMv%zhyQi32gi*9vom9onH`d zd5k6)$=mP(+9H}7H3sha&4>6zfINMsy5-ylKqWFK*loVi_-JUK8)q5yr&Hshs&_`N zbN=Rr!)$g;QL%!VXVQPx>S=4NH?Q4vOp*kX`~(dq7IOFI{2W>xj8Rg&XKtPz!SA=s z2{|Jqa{^s=#ta$Ad5+N@#J#hAfx6&Wr}GL~wH;lx6Sn9bq4fvdIFV`u1H|Dy%lrIw z%{0cBbCuwvdq0zRiq0k}b1FqgYF7=TlF89ztH<vV7*qTn()Ti~R{j&ZN<0TREaFwR z)*S*T$?B4DpT(-;D~M;f<JTm6oCu_Fzg*lZgWEV5R-)_L9gO{=`D;HA3n1ew7+JX~ zb9E}AA3bX5Ku1wki;wuQSAAGcCY8UY!t&m=<weSEdDolrLN8h2=CHoyvF6e28}_ng z1?AcKFIZ2G25quHtVPyHn&Vai(|dwOrA7oxDq?PYmtmjM`CqfhA|`EO%;JgAnRE61 z&SDGJ%zHlXwTDbn4Mc&Wd7^ircKdN?5#awBd-)<+C;o~4Pib|is*fRSCKdKWhnmnd zh*;l-nUGeB3KbJVc<V}yq6!4*Ma+--)3+;DnqfpOW`X9{9Xgh}`MTwPYDBEz^^`xr z5b=obE=a0vS2b{)aDsFj*6@@Rs}3p(wLB)ghZ^^Hez}awSPJW$qFsi$;%o1Dvai_v ztG_<6vsa?!5e_0F!JXo!#8>T%5b@EhZdwCI-IU}y5rlc+U4u7I8rOg<yIcw6$;`C| zS-z$A%YR@kveICr=_Vhm{-?Ek>Pam&^6@BF$DinOf5G&9RF4dFyuXZ+rb;JfYRWU0 zl^OE+1yUPeGO-hBVmyk<q>PHqkNKO4(Q-aWBX=B`lxEu?<^hvteOW%H<u#>gJDeCW zJ+76|_<DC=R0pjelF>a=M*FRYP-?0x!d}K3AjVsHu&e{|PNB*OyQM`GVsvmmFlYZ9 zL6uWGe()T4CtO4PH2k>cc<MUfmv*&G+#Vc5qC#Jep;k+vuizQysh#VD_nK6ZR@3$H zTUyt)LnQFG1G$n)bsX0!vo_~JMLRp1vTkaX+Rm3!zWDa^`|t|6B`xN&pQkY^r;_Pb z=GbE$EY(FICVlTl#H2s`!OFu|4v^u=f(%v4(ClYeIzR@UH3(`5DZ@lE^s~QXeZx=p z^^|c2Y|B*#g&LC=Pe>G8sk@odcHsQ6>Iurc{u+?4yQ3@cdPbvXz;CDfvQl;i8USBE zae^6tzPcw08$ye70vnT4%D>sTEDc3SHg379l&H5FtJ2Rkorp76>G(8;(ebrSDgR2W zRilkc0RVp<Z|Jxj(N1?yRUZgb9nFGIr8WK8Pp<r4c|J?^2^|lfJ0q5s+pFC&&ozzf z@KY@9$b@H_&7Z$hE6!H2XEHB{q3yi1Zvp95Po$rN2r%^#F0eK9hU4>0O-`+yjWiT! z;>uoT>3b}5pRfc?%%lME^BDoge)EUVus7%nkk=xBvai66eEEi)dkEXlz{G++9<h`@ z{{B7mu`dtR9#iC+2Gfwn!)QcfwEcbH&W?wVbAEjcy=V`xnQ5;*q41Y-)1Z-qvN$U> z`kd)}6a>5LbKWR`;1^4P;LW>zeU8tcaQ5OdyNgf3pZ8}hduz}<n(?;7d)Q-vv$9=l zjad4h-~}=?yKm3%9=rBteu2K}J1gihb6q*D?En<-KFQYO!(HP`%|JX=)?DU%pEm_A zp<$jGKTUlB(Bb>vx4Q~=-EGAH$}$tGxX!=tAvr)DBcKZONq-oHIvk+sv|vpC<YVg0 z?Z5TcACl67{#f)gu<^oOx&9#jPe5Mvgc&*ie2=3Y3*nO8DYc$aXWH@m11wMcxBA^@ zb-yK-n9b2Q4$SJln6H?&o83j>z}=nIeYie{`kH?r7H9JGC4E_Nzo6{M>aD7b-e^3L zt6Djx1g|vR09#Yz-?k)?Q|<jCuc`8`M?I6r-e?ZGpUhSu2Z`P?tujhDwOPHh(Qn^G z>}&v7?0pYbzBFI<|Jc3*^X;4VciJ~s<ZQ=7AN`^blUk`Qg`y^TO56`%btyranUk~2 zc9AWW=5x0J)eww7{VqL+In$~qx1fs?4UJ_flUXu?<SZhi#i?8LX7!SJEu;6znatZa z<<>X(`CBM4W8|tt*ZAQ&0wA<#hV#C@bYPs+gFv6y{zse?WAq9;G9y8|HI(mth0_TB z5FCwb^n6!IY{=e*>rE?Plre5c1KX&Ul_B-Ldwk<QEh~%k%Ar&q?)V1H;RgdtUnwQ? z+noI8Bkn2_V`M--=3*0L<Ul{>EMfpgyIS5Q92yATSMy%g(b8O8PrcuxUd%4Imapj@ zcl=b<FK^ZEc#iMHT070_biLjKRIV#QOp?efg_d+E#ME<)LaFr%k@BBpLJ)$P*?tRq zmtLwEBRc!Axy%K==<LT_X=049?8n@62mO`Ov?eSMMUHn<Q9twvIz~5DuR8el4k1J) zh3M?e!exis_{T5g*=+YehBLiF3S$70)=9B6ip1>TXd5zn$?qx8pg%pIVQh*yv0i2W z2yD@+^bZ2&J+FV}E!TAcyV{n4T~+*6%-fEameoeB;!bRMWCZzF9>EWFXpJAe#TJ+w z`Y%zCQ9Ic!)mZH&2149(ROVmru!2qH06;ul0K`;fxZTgNV}J~=7i9R7GR*NatQ#Q1 zYXup0qAc;o`Wf0<`p3&Z3Nk#d3~@ih_Xo)E_ks*dmEo1!ZKIO|WO%b6!v)H4pPwNy zK!!I8G90H2SCe74^=j(v@<6ku4Ms+8<I(=E!h^P0v;GisN%Y~TaqkruC7`Qq4d~w+ z+sdr`c9_9u966-qs64w!Gj73tVTxkH*}qA9X!kD&Yd@MtcJ@ldXw5?=90|hVREKuT z!r2Xs38tGdX7!S)Wq`ngPjQz>?qiauXDhMNF(FMvz+tbAT2il}G=+Mmu*l^e*9}xs z*_~20{iO>1fpV+Uzi4Xwi2*QrXo2Li{U>1b=->2_kAY7r+j3y6Xqk&dyf1p2bJynh zw_!~TwsNf0G2?yBIw@cR!7JwMM|$mj!jgM(>VIER*_C=o@(!-$KHuBkAH)Qp*){wD zpgI&e_BzA$6}QJsI6Ishv!HTd_1Zp?XM8ot5OAY%tGnPBcn(xugKZqxl+%>ynz(rC z@TYvl&E&~>8`6_@N_f5*`dFVOnKX8-0CPIVlyzQ)?F9SV;7SF@-?WV&I9+|sQ*1+k z&g2>OrXa?M<qlzLCVezc;XHG^<h%I>dT_JQRx_QplX~8^lCtZ#0Nc27y`r2uxsQ!K zTw8wZ<_>!acO}<uS91M!1<zxtucBwrw#|;op8a`V(CK5}Hp{gK+c*f<LaR6km)2ud zd7B<f%NOghsC=m&r8?aMfo{c~mEk!5XnHZ&qiLGWd8C67LB)4*0%ge50q15v3KN>* z6MB0?p(|?S&EZv*HX#Ac58YXeDtj2|CB5EaDt9a>jy;H%S~m++pO-!PHYp6uyR{E; z67s1g=YFHTxb|wK0Gg1X^G2i6!d453+M}Y_wRiAq49T**fa=lGnv-vgNn1=QWe{@$ zYLQ>+3Sw(w53ld^jFdN9eLo5HF07xgIRzKxgz+7in?G({hy+fVX2qcOpS$pBsv{ed z+XlUXjCQ&a7`x3U;>_GDFPYiT>{K<{D8Z-G*^5EQ{4S$%_tElDc?&sqL(2ibW*Rm8 zM-4M7^TQ?cT^{nzMZjfbB?aj^wF1lth}VB&MwjCE7+o9lEdp{8Z7om9(PCUu8Q3lU zKT1PKubvX6h6YLnMd;@+LnldtYNQ}FUPVmti;zvUikQZeYsBMZ^ZtgRle&SzvQKE` zoLgTwOHF%&{(lsOavy$=z1Q=SX=_||7b#J;PL+siQ`|!_Gd%_TMR89KH=k@((ecc9 ziGYcBg$fy1*mg+;A|NXSji&>wtwzs5?pyVu(wZKGHUitz>{kT|=h?(DXsG)WD_}Lo z+@HiDWbCL*vd_NV+l#@Poi41t-Rdi+!4T&H@oYEM0fsbM9%U@S8p(=4wu)an%wnwv znGZ$>7Hi#3z)EP=x<oC`en#p*UO^p85*2uyNm{5)+m4pV8j>IZ%4)%ED7~l}@8L>h zt}%?Yt|wRCpyfL%V-go98G{y3n=rm>k9MV<1dY-xONAO(vydY0-8I=-w3zXoQo+SW zo4G=X5m#fiosNm{+X*@N#aIvEM$eTnodIIKA72P!nz^(o)_R)|+ktaigCJdh6l*<; zxV$Zl29R%}6H6b+5ZJAbMq?Bsbs(6_*Kq)Kz=wXHSt5LOrKD^rvWY4fFk$ZuI48Yt zB=T?bF6gpnkjhu?`ntJe3z8kqdob_<>y#fZ9C*-8XMXCtkg4^Fv+tn$2KvkFPTFbo zu`Mf&8kVEt8a7tb>;rQfHt>P+w8CGO_@5T!KgH7MWD4dli&|mh3QL^bsSb4ye{{GJ zoh)L)UdJy#>%|=~BjzZh$DJk?z1CeK`xrp4bQ0xW^z=fD8PHZ~tm$*}rP8#W1{<-4 zGuHzPeyo>hiOp1UySqd~K~!!pBe5%&{y|bd9Ro<FZ*&77@Wvz8_AlI?lE=2^%}4I} z>d%pT3h$Sm2^X2p7_}~?SlO@~@lFtHaMuG9w3ogBD1&ui`b+|`<*2LVdnlGZ(R{O= z(`vsh(IA$>PrBZmt=A1}lw1QpKX%12lyDHSvE@rtih|aB($r3tH%XKqs>?`|aYepu zQ_7Fd+@l=`A)tg*xsm#$xT6NNh}w)>hO|2H-=~@}i%#+ASh_^8+;b-d;QeW+Z+hme z@du%%X}{5p7rL%tH&5UrbLbk)cc?EL+$9FY=Nc!tsdZEj`=tlj8!#I#8q>eSCNyJ~ zoq(1YW&6l-0ZF-9_`zJnwx_WO_cesZKSh9}#v6M)qhGZo?=L*>LwN$eES?*&gimRa zo`vrP`j5WL^K0_y{j{JteLl&}1;`>-3w+p{Oj0vp0Mv=R`%I$hx$M74Zu>!)7d8(B zn|U)aX=;zo;**|K;<`bqpPpj1xJUc6|4mW^`UYlk$ZypAxe;#>8-rLO9^dp;uXj7P zq;`YItOooA@|`G^2#*18{z}EHjH?(+qJV}0hQPxGMrdzd!w?vCW8C-0+APN9-eSC+ zBMchxZ&mp%mXs1aG$eH|o>t;fngwC|%XRg%_qzo&malM;AwHsVV|rir9zz}+f|6x0 z=Dd<egj(;rNKX{npg`sxLoHzQ=V>cX*q#v6mMEcBi9`w6l1Y>(yRG2|OzBY9ZBy(^ z<hH5yC3@R5`x5t#xgJ#6X+I+JI`40GbQ}_~?9I0u3d4vOfi~|iNH{t|q$_ugI*?&s zw}v_B>#p^H-<=Yx;(sY=RHPvAmUBQAF6r$HZ%wUhHhj@vA5sp3PXg0)WQR#=`Xs~$ z4(kye=RM+;wwMM_&o@}@QiHX2P=jajEW0fkG`KcsaDC9=NkM~auIt<2S!@T19f*_j zj1)BZCN=ma6f)T|$&Ob4Vda%d<du5ro#ZxxhGx*=N}uB{k&Xvk-K(rWeHnTiKgCc7 zt$N(sj-nYr5xJ%okSj4V@k?x0o~v0-caNWD@?i9HUoOY=esb(mj)^A6j37sIki+iH z1>D2*gQ=!8MWzGDB%`8JZ0c|(mDC)y#ratH-{CE1%OaDiQ5>7cCY}M1T36}Yu-vHc zMvN0a=D)p&>RBr-;}Kh)F293k>pN|=<%h=7UlLyGj07gNS=Cl^Lv(JwTYU=ftT>1a zPM7@K2#u>}Dy}>ir}h2nMT#4di(9I=I~8|$E^dS3o>ttExwu}%eW18wa&cqe<biyM z<CN<2La_xc`ugIE19`0eI>|d<3v)b27sO#KX+XQF(_RSh-WZMn)<F@sML3;7&yAuA z(avb%=81;<a8zM>SF*GgyrtmQt2`L<_2%+JL$P!x*=+T<tE4Mh=C2bT&EUx4=eDq| zq=ql5BpFoVhl5IV_99nF_d&Tz{z$spRYrC{a_anQNd$L6lvMARFv$m(0bpuS4~U)B z7M9pVi3rg*n9SL3II}+<ZV##K<%%%$aN7=!SWvnld!ADVfLCji9J~io`t8b?y_AA( z|5R@msL0Dhw}maV(|zb>3{aj}Uaq|E;gqM0=2+2fyDUhv{32!#P=uICu86dXP{!<w z5+rl$uiHMbh0XN~YaXDm#=^qBuELZtn^9o~QNF&x?yqpe2OOnVoOKdha4JV_>)`wD z#8U1ft{K^hv&@O5vGi+H3L({V55pjylbmsaw?Vf!X%diE)zNZ8P~e{yzFNlZDfC46 zur%`lB>2%)hMkrXr|}e;-!+=)icqQFrf@1h6VeP7E;hdBzR~LYU}!LmwO+~Z3~N); zq*)hG&#Q}#>?vtoU}}l1@9KFKrAbTc-lRj?rXS0O#R889>U=ZIeu(sCQ(?7Jz|FMQ zt?o66#&58iJu3ZN<KfPT^7-9rfH(iQIT#wu<V(5d0R#N(Z<{4GC9R7FE@fmM&Vm`E zUX!IigS=8;ybKtC)US%|<~@)y+HZ-*o?24FGvVFMzAbQ8I%~5c{@v`ku#Y5V1=tS8 zS%6;QsLTO~q2!_@bcQ3c+wRzHeQ)p)XUeH$nwd_AftCvIfEjE#t#!sYb2TfD>K<>z zB)m6Zu0~aof<r3$i)b`SQ0`ooke*^eu<dX;)pVPXNFcQ?ZZQSfTX@S-yY`PQY=AT1 zvU^o42n+Ok?Po((KpL1CwqHcJ;6BXudWB!kr~ih+&*a1RP+HGp`S7g@-<J<JEBvc` z_y-DKmk*y!IC~W+v%{)=jKanM&<wNogu>_MzjGn@jI1tY@zcKzJlW&(;mrykoew{u z@WJ`;V+!w`4?m#rCprGte!Idw`S22jx8}pm3O|(#ix74<mYs?kf!;O8(55vai2mNq z?HBjmuasVHd;)5gVz224hsEPWini2~(3bKFbv=6erGKTxtVdGzFhq`@r9R&Oit;{2 z2EFAsL>Ek(;q&*Br^&yARh-Jk!xj63cGum=3ExzyX20FID0@ZPKC8ic;|2yE(no5o zICEh1pe=W=+T|0Qsx-Yq<i>Xl?&bFUkBdI*Es<7G72+NQcuW532TdPew74W4gw@A{ z+k&wAn6Rc$WjB3HShBhatB(mU4Z`YU!ZIc>-_^&2ZwbQcW5UaVu=<#=WE+!SeN6by zAgn$nd~Xm|9}~Vm2(Pr^hl21uHoPhb|I&s#g0O4D>w@rAHoQIvUt+>}c~k~pGOCz_ zy<d{^V`cD$CDZt=+Ew-5&^3)`$m|Oq@W@io-^?<1EuByb@{K}w8eL9@L?~TTLHH4N z0s<P`{G-5#snRH&$4tlLqfZ~1R0CBYOHvT_&vY%DnZ&qDCMg~&ks9KFpJ+MVxE~Uv zmHl({2aVJsV<xGyUYieoiflp?CH-G;ezT$bT4NGIDtLFLmI<sW$jERpKu72?30w)W zb~Vg9_Da@WQ;Y+Tqz?<hey_ms9=J?f)5Z?YE-sQ3A?7SWNE22cwG&}0*QLgkS>C$l ze4f(+m?G#?Lf$E;M;w+_(nqJ(HPH6m?RzzzYnk4r&~puLY8{2SOJ?wk`-tidj){m} z*F#~l*nXWSjnmKx`#UP$mpKCpG>S9RInUfg{$jot{l@e^k?&;sCSQap&h);3cQjwH zUh@qCz>d^+X3A`VSoHaiL{fFX)8)&1RNen{c@<Ts*41*N)ELNTSFY1ktpiX-pXb{{ zfPD~T?S(pYyLq@PCF5I^pc+7iiuj%~29DVe{|2lN9mR)G=Bj###Jdnx5%O#6ABbu> zVF&hJ<dl<#0Gki{O?rtFpaWs^!#yN`{;_!{f=GYZ+@RH#EDCpcM?&6y3;ba@{-=EO zm&-T(n?+}Z;XgjGP1Szto(=xq?c&`A?0bEHi+e}>kYih4qzpCxqW8cN1H;d|ZnwOj z?3VW*m*QCGI)i_^zIzEwq4)Sek6X%j>2YuQr#xC7Gv)wIn19Si1`EZ~$0H>8>aeEM zjUhtQB~qLDirK~nH(kDilnnZWCJ0H3AS<p_2Tv;%L0hi_)BJU+*l>)1-}n|MP4}9j z8-Lrgudh$(`MrTRlP>SDCB=D|67@8Vw`v(*+Yx|4RgoshWr;^JaxYVAZDK4n1@X$o zv<;5W$S%Erru&H)gS=`!Fk>rSuBm|6D6yIac#UTk7=}V6U!4bG*`|v&#ApLSxndXk zwapq|mz$$LrI*`-;(u0@t&A)Qa@aDhEFGws_H56XMx$+-l-hMcY~f(Wa?8pVbq<A; ztB_cFc^C$>YcDp`r^jyX;Qkb5_f$s=h{N7b><E~STJ%DO3{F*MbaBPf*rL6=#t!;^ z*Vy7YOf-|a#)fBijV-yLYwX}-y2cK<tZQtfG1WV?YwXbTyT<O-*fn<VrmnHk%VO8} zP;=(QQJK?XU1RqtY8$(+i>62WF+W2S%liyeJu{8Vs@5;VGJNF5maj6HEuMrgIe=JY zklP*;3b<?3`G^^;T!(@=6?9E(As%~m&{#}AEJ3B~M<82UnSsMCdr=`#H5_<ZWE6O8 z8A=vlL+utGnWg17@QBrIzza~<pitMiqG;x%eY?id<Z;Dwy2jDmaWr=v%^f%7(ynol z3%kY*y{v28Ui{np{H}3P((Q9$to11bF0JFr+s5rnV-{0r(X(pr8gLF#sZO?zC3X}& zS^WZrtinTcc||cT%CJ15m%>B&3dt2c>wP+#mf-l9)}7&Sajn*cQ=E@Fv+=fw^HEo_ zxTrH5=}Lx6+Ukp(k1}(Iw$<Y&Y2xIz`jXhg6HjleAB?FEN!sd%5Z%zmttZqWcn%jl zTpvhyYS9`&qBCInnt80i8k`8N)Rax?MNNc~=;Ge@nzfx`2&-utv9n<`!auK#eulYz zhGvtYiVR?+MQ!tw=6v<ZZC{%{*x@4~&gA(FsfPlm2N`xV8{m^ve{t`5rL))$lKR~% z(9;Ipe%b16ljk<&S!xD+#&QkEj&dUJP$CWerFK+XhG0fDT1jsK!WX4>C{?a0>ukZQ zZoPdKCwSVv#=YaH&T<)gSi@i3M$)0-HhC7a*LUd!|4XjyhioY-yWPI3>{a$P?)^>c z*8hyJx^|Em7HnB>#HTiI8Ct<UEEoAJb7F7TxP9lP*2Dla%-ECEBVs5|dGo-Rcl0}e zOLR8Ily=c#XV)X&zv!Zi80&+$TxplNq-@a0HO_|2>7z2?mbTOO&72l5>KNJ0mDU}j z+Q!DRZ+~JKpRW&b*8Alyc^k}hXOjD7kB|@*tT!_dnnuVzYC6@wgvJOeo=tp{gPuhE zs?qYRA(_+mfn|LImIZqX!;?zjO@nz3fj32n8(IvnIu2en3SKpeR?OBemf4N+{T&qT z!k1p_`!E_htA#pMH+DLv?&+%AM#DZ@iRB#A20716^WMe(Ntj6ep<T&A7cf%)n_>FH zu4GALS90)$UCAN5M|dB4Oji<yncVxzu4Hs}S8^Y|?Hlh(#?J3b#t9GO-+r^YlKWrW zl}u317l=QA^am0yrOe@!bI@11k_UgkD>-6LSMm_jfAInzE|!MpL&JiH7>zK7`o>u6 z>9nY57hPFSS5C_AV8_I+hvigj2FScHI}^KR=?fYE*_YHuW<4ESZp~hNewiJ^7pZ(z zL(lE8<;~@dMm-3g;u{zCzt{K`2rgJ#G+)U2wwohi%5d)h8OjPWOjL#&{S0jbWDrRQ zH5{Z27y22(17!FU12V{vMVaD__A`tcAj1;{8QPVh*v~L+fDG>xWLT&S&v8}2Mfl&= z2{0Weo96yxbQvV{M6B)m%psW{b0O?eVlUpEUMO^Y>S@SsPMMohq7#q|=EW9%i*%`V zcAGhncV{s|N7(J7j@PyI+W2&EU>s9AW%douR_HLaITj7-qdP3v0BLDF70w}qfnUlH ztBlokif<B3c#mIT6iJnCLxap_H51#yaj?tn-19#YfR3x`VhgpGE3RQU2<@qVQ$W0X z1XbDdyU<{zSvnc{H{#udx(=X>BHfSoivOkkLW3a$l{Y0C=}eoXpAp;-@S2*+VFBXF z89uI!6$(}D^L>UWI!59~_)W_#j&3PvqUC9|K)J_C&)f2IE6&SGT4f_^nBiZ<qR!9I z2l^*IfQ_ycq_&r&1q^y=u~s?Wko5?BvUJ1$jK8EZ0K?CwU1R|6cS(hTXF#MvC++Hg zNmT*B)ME|CPZTD07~?$eU(1bPs9wuTeIT_q^pbtRVlDn9($c~`j&ro;EB2l`AKE?O z%D~Lj*h5Z3$82riKf6AMlL`Z)xtu9%uL!@N`6XqJBx_<RwEt-i_EuNfz14fo1RPub zpth@>9rSGLgU~uGOtZJ7m)Z1!cCZ$yLStIZ$7Ou%GF#k5O0$DBl%d^7Q%3r$B{tJp zWZG@V?i`x#y|M=UOq7DUQWL=j)j^+B*hWpF1|z*qZji;QrbFZfI>GzW8;13x&teZ3 zTm=b{RF7}F`3RBulaxh=RkXB^;!P3!x{E6bXkjk_mN7QTZBxS(^QvOTCMbWDlhB^1 zF6tfQ-Ey5lusVN~+oJ5g0OHNL(x}@<b(>g954kOYe)mRlQT!N6^3L(!B^x{QO$uUb z6{|`#0;pCWMPp-g=j`5l7vv~<y|=K_&{0Kqi=Z`Ci55ZCXRn*?X}v+!TXeOw+l6{s zsz^UB)h<oWpr#*Xe1SJDDkcAUZ2J&5N#m7nGvn=LRxmzq1|%uC)kDI71XGPy38qrO zOE67%BX6WBR?s$nsxE%0Kz<;V2vaLJBmGln7PoGqup+^ywH0v}vQZP1vCBJ)sgN&~ z%%%sMD*en_zFHB@`|B%I0--jYnEf?y=j4?_`ZM=&QSmYoK%cE0JpJ`-taXNTt2?T8 zii@TAfP)qgz|Q(!-R4b*#@Hhlr#BPlpJZs<*Ii<Az>fc+w0pw17`7@H8;|Pe<Nhzv zMh0=vo(yRjU(-;@20QjS&>P<jmf<fcO@uUE#?Yt8vF93yd|z5#b<dt~v}3lBGZT{1 z&X{jm`J$iXS8lbSY^1~hlpKEHbGy7N&>0z>yyTUF@!k$!%kGW%nBTw4m#@+5J^B*n zFr3FO^xsk;`*a@-e_2EcxMJ(&n%7-kFLa-+Ce+=cQLR7G5{bRU3lwxPRY4~e`GI$c z6rw&&y^0c)0aRfJUG@pV#nMJoirItG*aD<;@Ipuy#qTj?{iV-P&=8nmaBM9hGz7F9 zN_a=%*3gVqc{SmxJ)e=pTK|N&M#1q*2H^CU<uyUxtLMV$D=&+OjK_rRe*PqJ@c>!Z z<ze%Fr>yVJ;n;}3U&SUBO3rc@KRc~EeUqKW%cL58%JCUms*suewvh&yQ!(8p-k=)f z{DsurCf>x5-&KAMMA2Gt&~J6`&}DqRR9{W{lyT{^R!Q^8u6dqhn1&N0PeQdh&p#zw ze0xHxU!Mf<GXQ=jO33M%OX@}S`@O>Ogzn!JB{W44{oxQzqf)(LjtE;-`+r|e?Y>TL z?W+dPK8IpYWxi2SFT4yRuv$r{8$MkbYt@1e>W~}|Ho8fFhqC571Iq^oL<<?^!16%^ zRU_r@q3s<7;{*=|m4VpxX%8e#-7<|`a3o_j5Zqcz2^eXndNreBFG7-6-K3avplH0; z(n?OM9M%WIxOdIj#yq?-JB;i`e+LOix>^>O(R^N`aNI%fuLamBQ+Fu)`5V;okX7tj z`5|>>L#XlFW>>6bg}GP<M)-^SnO&-XuDi@Hui(O|E~YapeL_Otc*Y8saC@t-hfID) zxhZWyy}!GDp8baxB%nVfzdEPQa>vfZ4D%%S+l@t??)X{G#F?~~D=264h`8gW_=vjW zrT2*E{UwY+)<TglGaBP)E_<SoWt+jB5wm+9%=0H}zpV;0E2JaBlDkJPYqX6kRw<q; z?`Gat5i2!o8IS(vj9YppQ-T|*o;b7VnIP2(q;glLDd_l>i}-bywD23d?$3HRCfyR0 zI9|$~d{HOU4lO%zcgekccIJki26Ue@x{WCjF`=E~!rV5wLU~;o2W6HR6CrXA>K;Es zDN?>0>>Pj2fFvu`yW_>H&@Y}Pmo2<j#?l!THF<_oAWnJL^NC)UG#xRLy~!E%uD}Co zR@TcGEx!6x-|Ij=37AR9s)?u3`BHS$8?9dM3zO9kFG)&3gT+Hma{qGtk~V;dE!4`P z=XUz&Ed=zznmB$Zh8H$v0$ru|r&^y_U*v<g{|^i7V@J4+C>wPs5)YcKJKdvo#A-&s zjM~qn+X72#Em)W@?(jr$BkXP%I5Omu%W)Aoz)@Gz3IotCuZc;A<O-eZ?9$1PO~gPp zqI?}jGUk!sZVYy`<uE3sfL*lfLry|-!ldb722vxtCXL5}+k)d;e|eNP=FZ*rytbIL z#}0$!YgoY}dz|DSX&w9nd!+S;tStWbBdrx9bfneJ=PfJm0Gtq}<m1D(B52J>)el^Z zabs!}Uq#wPnz<B9v@-ks^h>FW<7B&kulK(n$9Lsap9kFPWh9I2LG-F<VZ#6u)zthc zH}5lSv%UIR`SXo^_fwPZ#JGD|rF%(~^9w_r_mBZDc^w{jRU*{5AD28j3v^0NhcFk& zNX^_W$Z2+U=7gMRI1~?^=7z&PzVzbj(w$s^b<dRY5seL*1!{YM4W40|W^grO770m{ zS)kSjDd;FOY%2JwIHMg$rziT7Jc>9+w;!VMpb5!{G?B~#8GI3ky}Cx?JB@ogS<|wy zcNx5yuE<Z3JroY{*206>Ub7p(H?7R^uV8+(`m*UzVsM`bLt>UY%iJbW17XfEM~`$g zLyiZ=q?k;L8tb_{>ku8Y_?oaM?L2g=`(1Rmkn#6`t=!yDQ+3LBxwV)E2ab5X*({?? zIZf?qKB7yo0qZ^gGNbu7VykvtTKD}hGi><JX5UYG1=o0MloW1HEv$m`b(=Uo^46~h z$9|~v-XDlcH;{Y&TEA~*Qh)%N4w7@;9MVe1{8$M8{oNMf&|?np5ddE3-$83Kb1xH@ zy~ZD)y&$IbA26VvBMm<@7Z}ljo4xn`WM*oiF#V_!tW$kL43loI{8ig1|Mz_M=b!(7 ze~}zY5vw)0;2Ex`bl7ChU*z4VvGI5-HSjSGEALmMFfpIWyOIpvx|y(3;I;JB%x0rm zYWw<t?<4{X`~S|lpKX0f-MGZq+e0<x_7x-PX+}fCWCqTq^PpaUbtjAtxbaE!gqt$U z?2g8mw-Tgwn;==3znXm$*V~DQeyl;i`@?u<NgLt>-B*J!5p_=)m1#AHvvX>IF%mMo zX<q^;v0)OjgEp066LxR_4GiRsdX*LCy9|KKnBwG!TVs(dTD(eT6WM4{tJzW#y(A17 zd25a+^%k*e$nMJbUv3@sFwh&zwpjWDUXdN^)jMWo0YeW@F><5g_E=T)<{2V&2!=^K z1%qTc!Jvh9!rQO_WEvFb?^E>84^WeT*oL~=&|&%Ks;JHoN&)_#<R;TRnrlS0bdHho z^U+5VE&3VAVeG&1AbZuPLO<z?tP1(`0SHdqAyDu}lwmR%=wH#>{I^*JYQZeTL3!F6 z!FeKWuF+Bu^&#vKJCHtRQmKwfG6V8;tFcz&uUI*lH%UAN4bD)CX~w%F#TA9RlSVj+ zEk7%=b4`*Z_>!lI7r$!<G}0yAvqn265_J|h$31^TgyR=&L)o#}xrSlCnE7Dm8YHkQ zpv0YPI3lX+hjy;v#_tlO*_~^+^4sAh^;%iuIlBQnQ@{oXQDUuo!4uT4^9^i{IeJ1k z=_W^YrKGQACBIH+kok*5Eq@jB&QpvE(SwbnixO}Bq_5~@vOo{spIDVkqu^(~_Ub;n zO9B6(p$;^YNRim;pX%LVATUnZQHDt$UNeJLK%fee8v2_j8#S~MS$=c8c{gY?=$a4S zQm=7U!-WhNK~?nxJNYf`#$tgmjg3+mt>hBaPH)XUjI3{vbT`aRGnl(%x~8d{)K%Iu z9h6!>2v~4MAw%4xGkH3Nb*0P##KFZ3Et+!)QeUU)br)~edSqj4p^ReO@zdOfN>&kv zwI`X6QtL%qVRw-7eDeYc^-aMUk(_eqZ0d5aYLN5Km7*%2I@I;)5;23EJ=Jc&PdC8l zoLy)XfaN3wB;C^z@>aU!es%L{WsY@CwnW>D?rFLh`HKejWK@9Na5~6U#?#7au}O+( z!O<0?aso4VL7RE7;@nw<e7YMjGYl{*JE%b|d6<^?=ka2#Q3kYuYGQ+%MEmNbl+46% z6|p&lm-jJ}{x-S>zV#u^2Oc-QZ2CX@5p2?~C#@@t-`L{&WT@(}8FnTk;aK|jDw4ZZ zlJT9%Fv7=8whD-Zr9D?VGp;m0?bf8Jrb!z1Cade8?FxHoP8$K?lvG3n0#^t|nwC~U zzovgkscMH$l#P4i&17W>!!OiyamMb~F$}_^7-9~+@U2s1q9zj=VsrY@w+jY^^rN|* zbnO-|qAci3YPiMrHO{N%R${sTv&GDhELH`VhO<^u`4O*4pjPzhz3yX6Tq!#bHIkL@ zcf-dNgAeO{<!LxS+2!aUDKs4Dp2RhO_Lg=$x<N41C;Bm<xJ7cj+YomW<!*yqRCA4? zj+W<K>b_R0BM2&x`zD1qvCIQ~v~r?m@)WXqpMIZF*Da`nf!?OU*LZ+Cd5S%kRXuKI z?38gc9b*kt{cLQZtHQ=l8E{bE_1*plWtAoQprTkBTXQa))U^*2%s6il;e04M;)D=5 zHG=ux>uK-DtT6|nbHLxQ;X{yEqZHe<a1n=&K8hL2P6-jiU@TFGP($yA?*^a#Ak#7Z z_1Xz977U7q+2v(fDyU`wpjA+az968Gs$G3HXZqGykhtDMQ(t|jcW9g8af}SeyR&Uv zxHDVYc2bekDI*lN`*=p$PAazSA&x7!@iQqe<V>F7E|ChR*sQSkcMU1NQ1x8Vu3=B^ zq~s!Q#dzLHwJ7b9G{3R*ul(^)^_<%x9ggLwMI*b1KkuwG3GY!tgU>BoxAd|1^grou z(CKXP-bLpJ>=swsc0r+xR|D0sZbNS53}v69lZ@JG+<ox-Z$rq+<Da=QquBJo(hGI_ zsg&{e(1gtR>5!tPq=XJ#^@r)Tj~3KEQ?;A@athyL-eJ-a)w^cenfTj+d~%1CVLwBi zatCuCBBhzzCY)rXH^uKEz1`hs_)B_|B&mTrou{O?89Wo-eo{s@TZd2dzUlC9UJI9^ z4%O#dR2V7tDB_7TR%-eN3QYQaiT4W^LFdGRzr6r1b-r?O#@gB_({yny9qIEMG5^~% zBKLWZb{qmw!Q3t>)b90}+U%BzX-&@HF5!)B&I9i^$N+!weB!CMuu<?4?=<53Yg9Gy z{WYqHMu9y`PdDzg^yJU+SvK1YeOW)Kv=$5r{OQ|pDhK%9W#^evr({3+Hz{-TGrc?4 zKNKkVK2Rq!@-D3JkF#&+)3ss{(k!Zrn+?F}@)m04RXkk-gID&yt}-?2m?2e|bA|c7 z$}{x+Sj1<q7X6#^i&{t7HI8s(ID(co>c3r}HCp1kqN0j=?{W_80Y$ygoLOW|lB9Sj zSm=yDm?XZnlGZx%x@{#vVpmyM)yW<9RTI=Y`>MvkB<-w_GoUK<eu@P^b}%E0nrj85 zp-Nx6d;@)7_Kz^gjJ3lQa&Pvh&B%#{@b08cqW2)Yuk1m1nhSjdOFHrq{E!cmx1P>- z)@1(y?kF$5aDXMp)%o7@ZWzasWBb|hU@9;phozx+@582$i0H?x6;bV$sx74=ILL+t zpxUz8CzP5Ah7%}mkA^&&uMm($CR#J9$EBVYCy;(R;YEO-{KoHb_7Ef`wPGNzR~O{5 z<2^f;RvbhtlwlyRSEm$Y_?0qbr`ikydG7jG9&GPYWoY*^JZD!Hdzd4fT2MocGA#5n z4CE$j?}7|_E5n(7hJhS$olubBMO4M!k$#4OoQeIUpbd8^!v|;CMh|3CvAiI|TxD46 zXUGmfO`Qc9PE>}Uk-^#z`R8w~jV$ZeWzZ4^6?cfFPz7H6Lj)(W{?V~CTiqh5G43Vi zNZ`l*2>JVXv+X`wRHdnjXLvc{d7dAO`Hb<Ys>Y|Pq)%0~hN>PwnTbXtqP&4a!I#B~ z&~QAi+Pye{$crqC1BR|{{rnuJqYbbwbh%8*vW#E3RQE$2jC5i~p+CIeM127hGdmx{ zf6oj~rcN>y9GSKAEf5308ZcT<?-ml7I$M9Hy3BbIBc70AmY;IANjZ*`)-52-nW@1e zVfAEk!R2P*f2^_Uot{(Ou@NK~d!b6vFmt5}PSVMNsYI9u#uM5<i@RgdlNopkVK4PN z7J&Eo9As8(!A`J@e*G{f%XNgsu33X&v(mIIwtQ^3>bag<1AF((5@pI5pVHpHZlmQ! zVKm!Yi(ZzVG*frXwX?{f<4iXi<{;*%u6SyXZmc)Z4y5GiVdvF(oaWDTn3v9z;#quz z_tWhAY`xd%J$1+7AZLl07`lhP(D>cdu2A!Y*mcWj9L8Bwd%kSsTj{!dEkMLuC3PFv zGSY_Mp%qWitY*@TDEFRzRK^%h>$_7bR)5{58og-+{tWZ3?awvDpxw=^6rEJPBdETM zCNW^551y_WRa<Dps7s6v+$X0qzYFpV;68tilFr)WOTSD}=>$!)ytmAJ(-j{6{AKy7 z_^bG;_^bG;_^YO8>FP8+mvTQ5?eg0=;|_TG1b~<H{Uw&{&S%-1v~u^Qy@0<@OAajQ zz1gQLRe%4IUd3g`qyFQu)@3kvi>*IMZ}=D0`>*Uy-cuiQ=v@G0!Bc^JV)bEKV!}Zx zc`%^vXGp<TDhPSeFN5O8t2%IZc0)&ZU8n<h98Qz)J0(*W7QvB9vLZ2)y!)hS8+tYr zRTl?)-Z#GkWLurOXjk3Atg(L`q5M`^$|+M<t28r3?MFh*-K}@h{k^^Ves4estsS|z zb-B3pew_1%<|CB4h2K(B+CtvU$jr2A%R{gY;zQ=qX@nlTm%CB`)7x4@^IL;c8ktG( z8F*$Z&rItM656KJdTY-H3ABPNyQa|~IzH2C$jj$>)4y%q&!2;bA3x!<xrFA106$^! zAe*o%pYV6Ngb{EZaM2Fmp?xHu@akN`Wne8xIBJwF@s-nZRZqz!)XqkbaPb?~<?-@- z!lQEuwTTfVZ28P4%;XaeB4H+D+}YChAmQ|{QZ-^9M-;s2`NYqk8=z=ZL4%Th^<U2? zyf>GywjklMUAFpt^9fVAgu3u6sJ`PvoAAvBwLF^17-yCAQTcJ|);5SkE-Q(6@F=>z zb-l0#A-L)CGTXV{$JgqEnQTb5h?Q2R&Tv(TQ@!swY<Oo{*Fl>r!Vrx+EY(?>>R@yH zQwI%2!)WYXxmeh1-P+Z<N(9{9+QCD)yILRR4WiUqR>a)Z`ZN%s%B@2yup$I7k1(x= z9M2nlGegreM{9NTGUOdWgmHf0Uk&B7PA9qXW#F{V)T<mOIIT1ED&GQ5>nvVl=`T~F zaZTa0%HyzcAmOww<JI^5!08jMKfCLU0NMIPTk9SAm~JH!yy%;~1i6v7)~$~;GalR1 z{NU-uIDG~An);`<%lRvjyw~IR>T$E)wgosnE1;%O=j-9si^y3#HSAs%W*f0aK0YpH z7`nW#ewt6l&xd07EB0e^UOf~m=es6t&i{vEe;35&ynQHkdk~xR_o3KtfDco`4%K!D zP${-Ch}{PUw&DwZ>=!}3Nh=p1#u*4{Tc?GIMcZT@e)wke<mk5QHMX1Q`EGIHG1^=V z#cE6B7lWYj&mjq6L^%hJ(tH#7c}KqRX|J<T{o`Z2x+1o)15V72X>$If`k-RFTN}&B z!e3Xbv5A4U%1pSWyLFv?qvuW(fbd(mCK>f7x;^bAlt_6xe*meUR>(C%wAhdakVG=A zv&bTt3X*>RQ<APSBP4T!=HX1b+@n;r$CPd-Nlmrhxy<Bb^*@)H&)V0rCB98q)sSL` zebqwm1N*9l-Y)x^;Pq4cDg|aRHh=Xh7_mX2mINC4W<0--KC<OeV_MpzgH|TXTi&!^ zXqQ3rmw$0Gog~=6W-qUTM}NEu9)n{bHDCP-f=-h(a?SIfGGWg>N4@Xfq>0MeSk;+& zmAPwwssQKpsn?3g5f_!SSe8^B{Uh%J7cw`q&SF7>K;TQ$UfbyW`Dq~6fP+Fr0gq{x z{s<`{XFv0Q0)O>i4fww_ox!46RB`+n9Mo`f<y-$M>GBQ0sz2)cD-Rzr2IFdy!j^=e z=Bvu{zDME0i?eWg8G5y^l7#iDjS;4@hY_>b`h&4+dvdD$^*jbHzk{!){6V?$XOvOe zCM%{`XD(K+KuVRjipRj^NqjctJ+LW&SKKq3^2^gW^*N>d&R9;F-H0Z^>>pV1L_KN6 zlTiDAsdxWR;t7ROnh{U3^5<qaPR<XKxKmcdB@UVMgrwN}0={{;c-C-AQS5%iK60YS zk9!1H-<)BF;%aU#VVcFx+Vedn?pIRXrDoJX(2ssQ&bq^T*W~7|)aQenUV-J*WRd!f zKFhKY7-=Z`G5U?g*58di&?>mWw-ze{<NHp&8hnp?F2J|urR@Hyfb*@~hGjK-q*H0j z^yH7%JM5d0B284mh$I~L{<V=Jr$KTlO{m!pMhl#2vvNa`7YGMX_?2Hb>K;Wq{_c9Z z{3V4bkMXwMzKRjOVPE6k4J?4UgTZ?Q#N%&cG0NX39#O9|HUFGY_Ec$fWl!NB>Esiy zOL^#zSBZkkEJ*xkZuBTj!@aKnzuCe_#%^elB#`~g>fe%qo2O<{s<aj!!g0a8LX74W z5ozIww2O|gw`qfB6ixHlJ5^{gtI1O_`&oUOh(#iWb+GjyZ>!HzoWQejzgFCL703Rd zjcffEZ}7KdchYDCvXgynmuOG*A8(&ICbykN1`O`^U%>?AaGPNk<p?RW{ilQqgCsw^ z2a@)pAvq*TGRbacF#4b<Q+B=7eB5gI7PK%;)SDUoc#G(sMMz8Y;6$kD2fR-8HTKb^ zKBRty;bHWv4=EIp@IE>gXd5Y0As~$hO`Nq`6W=Om;yPvemH@-hi@BX%cPGeX08^7V zkEl29S+yh9c92T$<gz0*!JBj)#56<=cnE<sgntVR_~JCAobg@(_bl@*mX@F~#5(Gr zzIu>9p#F1MNd0+47=t6x9FuSvKv$?RH~^kh;usZXXPn5Lr2I`rd7+hJ6g9u9NsK%x zGW?wA$jI=i;d9qo{ZZ=eX2!x|3SiB5iyrq{>l=Ga*=;CylV#N}(kh*LnH0PJkEDrZ zZc|F)qy(1Yo!X7Fp(Nh8NgK~-2ZAZlVN8~M3t5EI=EOA+COYhG{Hj^%HURwyiV{(j z`p<BW!r}5pTa+3g6BI4Ar>bb4TKXou6F4@(b)2e+T7G@7?mTQZ&Wp~o{v)c_$F4n# zktA)?^%NR3^o)etE}p<j&3(AM%;2%Milg7dUO-Hh>qvP}u5}-d@Xf{_4_m$ZGA*1J z{SivAdJfjbLfps+@!@ACRM;7bk?V)Q$a<HA&KZf=qT5Z{rTqG7izdW}otYSUa%A{< zYLLO7@_>95<%}<LCew}0c=^JY7an9|*BwRf>Q7?VU&Ht2aP_-a%q63-F#^~!kRJ#6 z34j(MYS+|U!g(*)1F5+o`XRXkq{>G)?eRW6nvSs*Tj-&aG45sM?zv?YJ&82(OjeUE z0f$Du59;l|!yAGQPn=*nyulEG-{IS<OovbJufqq^!T>f6BD-rP{LJ(_T)OOpH|cwR zhl`B7`-T^GxZpb;@M8<kVsbZ5mKLLuiY-(y*HNXz&m3Wt9%g<w-#K&?d@q_%I*jjF z+1vSF`Vd%50%9n2>neU;To>Q}3~n9`HSZm}P6X91Htlp~MkF_8ooC#Ph^n(^ko(ga z>hY7yu<)sS-}xlH)jhAgY5&wGp=+Z4?Q*96tG|h@_ls5Qt9o(K^Y@X@41Xon8@gur zW0cxk#c7?QXNJAvG?h75bJ+r<u=wh?t9DlP_WV824_3c>`D5H^a9<EULEyv|V0+S= zJ)a)~zYcJ!4d+DNA1B<CBJP}c^(R*kIk&1qWnNP=^4;N|v~Im-$O<y_;(o0+<g9N# z>6-B)o8rT-P86RM-~XJ1b5b1OopTb+hh1|}(aG^)=V2~SZUA`L=AYNm^Z4S_N1-cT zEjqb$*m>5rIrVwyiuRFBrNgft(X*WSe=<E9soDyaMT_bq!=^^LptR5*p1w!T_jnPX z;ZZ)L^v??#epyDMQLvLSl94ECwA*6Fa*GD*ha0Ll#3pR0es9hZ&Zd#?S8twkx_f1` z>N#h#`=dzp3-bmyA6?xw=SwMbUCLVXsj7n-_3@h5{pg&0>};-jZsd-l9m76$Q0$(D zhdud{T?+}vw_k5(!uaC8!|c*LDSNk8paAo}mA5Ze^MM%S2CQ$yBbxWSX77<><HJu& z7=OOd;}ttbjx8O28ZOnK=QGZ#>X3!nD#!}9yg`peMw(&NO2p}Asi{9S5~*FKb9P`l zV?Q)bamSXnwCe<AsHq-npX$?4PRE;1m{(FgHgfrYvA|P)_j;kOs@HXdyrT8PKHiuG zEYNg$_4>=_bl2HisDktN@K5DxnOhlZy3EBir`zf3>^;;6MqBd5<Kz45ZeBA&{zC0$ zg!r{>^iuQ6L-Y1+E~!4T?6M)<bw*a2zfR5b7i@kFR4m9<QR7Y82(#xs{IA%lNsPUZ zB(b)+{OTry>;IdVs*bigttJKKD>IYZ5W7m>jEV0nW^>6bddnx5WMmuc&4G_}eH*UA z^E-Fj=ihNkw5?<|Nw;P%AF-umE^pgl)w*ONwy*+>Z`-W@bd|)mk`}(|%jM-SzxvYG z+7$9k$_2yxlw1D!5}V+vttYH}K%-TbsyrBTRHw@auVwDsP%Ql^&F~{K?JY`I!+n_b z@F?2|=e?sBt1(2wZX32Tr@pk$odS^=_@!B<qOi9gr%Zwj_bWMHBU?(ADIG`||3)md zrR07>uh66g`d-p5(9Jy>u?72w)kyK7c~#QbQ+@Beo;f~$IR^fiJ%S&;M2{pJ&)htd zq%e4Sl4$RiBN+hysKM6K$~!<5wEVD((K0+_y5;x@Q}IKSW&5I+I$OwZ>(rZ1S`3_e z=Us;J_zE{Al65{|LYV5dyv<TzWascrQbDqZge$F~Pc~L5x$#8t;ahs$_;Kg1Lq~4- zIa#JvZ;EB!L<UrRcb$P6jkJ%dZONHi{wa)HK#Dv@Vhh{o6z&$eD8}6)7d^7+<nP7p z^&&I4R%FIjL>rzLF;z}?HsknWGu3r|Jb2`qYHq5DWkyigE7@(EV+*HJ%zPx{k3zBQ zrIlV0O48V^pszu1S;b|hu#sT8tSdRUXoWV@syeomEC!#>3-8}UKWh4)yQO5QVkCL8 z<FM_P@)i<`N{P}s#{_+uf?nF<5tk;(mhB{v?xjuXtyAkQB{$o$G;|i(_+>muDSeFO zk}V~-kc9Mi+V~N~YyCr#GG1@CujRbnVqYtGU1nb^dA-BFj^foXVKlGz+SoC?ibhjj zi^HH;&SivZNnes({Aw(et!EvnAv7OvcfVLy7JB5D{KT$*mCWi;c>l>8IP%4~a5i>+ zawu_AWlgjrPbKw+N+u0`GM28>N(t2GDW!pq+xW55IdY@3{^xYwB>3gvY6kD+U)wFA zB`G|cI2%pEdB}SIMzB}n*tI<p@!{X8t0P78;B$t|R05J=_L;o=zm55&XD>C#PJ>lj z)v(@g`IHgRMeI81SIA$l0f_7w=RsQ+MR;o3_Gw6OS;YnNz&wdi)2cgT3-$qVDj?rh ze^jUmo799UvFml!M{Lm!e!1qmA(q-Kh19G31m)$1Kq2)*^@jQ-hU*sRdNU_v$C2-) z?3Slqe&XeKU+$zY>$Alm{N-%+pCCZ1lf{dHDBMlo!7-8vJ*qkafnc?QS{~)^A2hx$ zugXAiAST=)l7(6-jx=(m;zlSB&r<&xu2eW&{#Q%gk}D-53n>*mwUDUfnP9)(*hEB? zj|k54C0J+i7WS^>T#TwY?Ns;`7of0=ORdx8g-Ighw*y%<wtU0RHJ>*fey1$AXEp89 z)iOysl&X%@x@l`|pvVRQUMKm@HhJ`?wgLaZln`;IhHpt~;&Yh&3e%`$e~qf%qfxa$ zWfl`W)u>546W*aTigL9dY_`5^*%9wVwsKS-iOi)G-`|(|c^9y|`Ky)u$Qi@{<wL0% zp=&DQWP@RL;c_J78QvL!mK%decO={9b)Z?d&q1jRe<qB+=e&ytoKWXmar{#`*|xaz z9<Hc5--@&~==%6+9D#Z(c0)4U`BrILLy7a25;hFhlN3XMtxS_0&EQo}b)-5_ZB_@y zy-jv;F@;4?aQlk)Yy707iif5qhqZ*eEHdmW<hL3lwt|xQ(V(Aabi94$=C9N9==EOW z4o&Y%|CO7+?EdJ}LPOdpmYJU3P)JlGhW54s4H2Efnaw5-v0;#+ZuNGI0ZHihwHDos zWB}~-gw=PIYDbY*?eRX!zgG76!B_mzEym&Q8^9NgKgUCo@>Itn`*_%hgsaV@%EA?; zp4P6Z7edaT^d;3%<gCy~>~?!QUn{Mqd}nebmVN`^{4%5ne8HqNS%UQSy`8Vdhd!Ch z@h5GL*joRG9FcsER+l=uixDK$)TB_sQ_WTPX_`{^iBvTkZ6}!nmVQw7d2jYXh{xJ* zTP&wq)R>~wVl{=f)L|shHa^T{EtFn^I{qQ>se&_BKS{TSr~0GIK~;k<hx^G$PiWm} z2H5F{FI3;J`r$g#_T?J=s~;Yl%s{gJ;f#;EXQ{A0BW>GMq&vP?sMNeq_A+Bl<2o)D zK^#yBDMF5rBIF1uQE%SKY(^ql=p(yFYJr1|^Ua4F$fv6^qu8@~W+)GNXYv#en8i~E zu^nn{-2;xxfP(@el&NRf^pZ_n;U}igx{Lh^{*#`&|BJw7i}*JJ_55`jCT6ttk>3sV zPL8<ut4rN>L%Ck|H%w0?15^EfXM@*#pPbOp8Yx<|dpKGLOjK}UgsHbOmPRMQ^=9%H z6I&n)O231up37Kyr09A{8pCdq5DD)|A~=?UBao0FMn}AKlVGiwG*79#bO+ufo^kI{ zp+2{lCDCY^vZw=c5{`QNP8%z_zSq9e6A993n{B&d=#<cJtT~AGhp1hfR=F<OGxd8m zbsEKrDy$UfL16*NhP3yD`oKdB!Bl21W>}F&7)E<q&;fp=9oLTO6VUd7(wS78*GL~I zTwa#IH@)!`7+XH5TfPfJnK?y!kB_um6)$p(x1Z?n=ltS6d~W`0Bxn)p436X_rY{aE zZwI3K(x5UX_$QnpvGl*eMYXQ0w7_<?jAE=5HC}8Qjq~#i3gwai1c@lA>|p`*7&@AM zdu<3FK3r?9BRX#MVUe|t223+g^^{mQMS63qP4c7x^?zqrD-QnLr*&VkV=hR+u~Hoc zRAvvCu$NoEc8zB$sVfpwjkQ+ssk>O+p53Zc$crq94E@taL$HhaSoD}7*c)>MOS5U} ze?+iRxG7EBp{C_!d0s`ZOKq$O_GbGkH2C6sKLmT~uPwnIj$lU-qrhF|$nm1L|CACl z2N~3k%D#disP=-7BI_>wp`!pnKn6o(_aULKc?Ssee7p{EZM+$;-QuF5tPI0Ib5%z+ zP0>01O?R<AXPYssxAVzv_-*0q{{_GIis$vguS)dso3^jQZ<~D;eizx-e(?LRTZLaT z;{e3B%l%)N!nR-KbM(;ezBt*Um|_@VD0>zASJ*5k3VJSM=fpl)sJj$K>Lg^*lR%;q zcMS8a<tfEgJx}c=NaG*(?h|9N#n3P_e#DBFmOrF6`rK%#wGX#0G*{_^IO+cX#WcT$ zPNSRS3kHzHI!Nu$!`|s%KoYyP(wfyiIY0&trXa&%$}r2%@aq9GY%Qo^M}iE;`x)8? z$e=+O)Ua9^_VP1aHb4d~V}cCVDZ`ed<9Yv3!TQGBBov&6OYbC)>sCU#vOztUM&%DW z->VSI+l+)_gJMlrQ+&p!T`x^n(+rYdKEMpO1~aPc9*U$3?V*VAX%B^?U%DENlDx$T z@$^Q7$~hme+Jhy~0mm@ha*lX{I}=&%ac&9E&StIC6k$~)4yf%Idpqyw+@z{bR<XgD z7C>GIThJg+Am9F{EerogEt4#!mMym{!~iN&`?Ywu%8p@;@}E}u(=Yrd$PB6+PnFp% z%(tfLKkI*`aZCZZ&e;#zcyuJH;=(_08SYL-g*$uSoA@J##CT-y4~2DKvNmX@q&^uE zTd4gA$bv)nc70h!wQBytBh30zv*swmkOud+m73O!0=y9_oo8;*{AGp1<+aMLnZi!n zqL?v+C0lCgnDADkj4``!m6Ylo1~{p8^=w)d+&@FwhExxS_@YYkd2ew@G0xPuGorj| zt9PCvq_`U!?H+5`xwE+&q_A*VSFim^J3b(H8d)pJ?<$c$q)e~jwm5ZsB(|_wQG556 zXI=te{I#Y(BqFvv!rG_v)lz3-7)42XQ$bvOsEsq*cz(KwALr)M`4K<JMVP`ODr`bQ z9EF*<O#mHKN?|5$-&{H(s&-ayXgtXIn>#sCJUKeD3(+N_esmD&n<_XOf`GW@!{@5s zi!B&SzM>u7#Ttsvcv%!P(((gLqbNT2)EVyNxZwhlR3{6;rf2U;n4T@8Y;{?=-(?l* zGQyQSOXUy5_G~>*2}Mb=d*5l*6k@0?7?^ei(3AG{x4OJ<3YDH=ale4O=!_1y(^7bD z4gFIf_esdRIR<6Fev~<H-(Ad_FqFkQ)6U0Mgv=hE4{IS}E~_&0wLgCk%6~W0*?Uy$ ze+N~e>}&Zj!BF-&f8aG+u%h?w23{+P0`NXU`{C6JJmitx^c}-Uhk|3e(RZNt07<ds zSRHsX#0;kR3J<pUz;mj1=j9Pe$C`vPr*id4#CZ#EXUXCrc>WE=>b9WW!2fTktzjr$ zh6u%Vf^zDhwuZf&x7wr)akk(anD2X2^c3T@yU5AnDmc_uAC+g`DW-%7DfUr{w)(hH zl<aGgOH~rfGz_CN%izmRJj)qd71p`>uhkMw8MeDc6&l#03Q>uuLIZoI0~suo&}gR# zk%p!TrJe4l6;sHiJ(skBQU&=-P?kd<NA|QqrSZ@b%lLN3|1S#gf8{>le;sL+Ve|kQ zBv1q$R<8_8$N;0X{WXIA5hn|q{<7YX#?Wsy4(CKx>`!ZS16|`Bw=SIC>b&cG?CYAG z_ha{dgvM#8^Klm!QP%I{ybD5!L;JKBamgYg_f=$sNbtM2A_qn2)4}RV^_IE^PtNp7 zw5>kYHZ`8Yt&`(vZ&YG`T}jU(5thGyW%#xBE$F^GKaVY6-!wG!aU_;@Xdh^+lz7D` zHtNAC;KHFh)*rGb`(C=A>7stw_X!qPbCuopoK{`x<-Y7YG`^61fA8bsfPIT2S8eU0 z@neg+#~OK{d#vFKJ=^-%4~jZ84QVm1NsZ>sAZ}*S2BQ$Jj4dy&i8THYFZ1c`K<8c+ zaW9Foh^gq=3&nG#b%z>TejEr{Ee0|2S$eaamyq)j{aD`lYBB7x4Ao;<?6)6o`uon# zvc|CUVb#u|Sk1uahkhnXPpv7ci8z-;+lrluk*41Pz-$2|lcN^qjix!oO!d!&$I?qE zz2$@`*TjXIPSF>4@k3=eN?Y8{FMEr8c3W2Q4gga#9C*H7pOKE;bE8glgEMV|28UEW zk^M+ZYr+n_b<T~FYHIwoAdFV5*>-~w&UiQZl=ho9<EQ62trusY=ef`v&`_EBHs}<3 zM<>~*y7$Y1uK4~Aep}jQ5*2E^qWbfB=jo%<u4rq189qI=YseMHKcb0TC$A0U&O)_E zGlRQOtx?$vb}{WTfjZZk_Weu^%YFeKyV1)e9w%d{XPqg$0M^rg4y+k@zNLUKpdkab zt(TKW3EdV!LDMQS_lLG!8p@u>2QU-A&mYgr?K3w&oJAdsXVIuPcPQg|ZJC)LC@lON z^~qW*1qI_9ziN!}8j3Url_3P}3XE~s8Ql_NC=5x}h4x9Efz4D$<GJoxVP}WE#39t_ zm2!zgm`far+s2g;ja?O&*teY%Z5ub(+0p4m+QtoWcC?L)uxaO&wv8LAXS{9PUV8Fz zZ^pB;E2qXftEA`l-N!RySx88I9FC<I(J)=8;g8{`?I4Vru?^xrMLPxN`-o!e_Z@gF zCoP_K*<!?n`yb1rzg0MvZ`_$5%a9XenI8RTetw&V*1Cm~88nTcvYFF7=?54ktlYF_ zMH{2_YHaz)q8A*mCfrzA{X)||**T=p2%gE)@i19tyv3Gpjx8V8+g3ZgNGaQjnzlK+ z*k~<Uut5dct;1nA{*{1+;`yrN?4sCHTpwTS-YDCGs$P7JjG<w389@mNMWP$h^;s<N zeYOMsp60kb+Z6ujGXAr3;_j5CmS5gnx+jij?1L&*3QY*;DnH$hy$s$Jw}%KkL-pg; zDv$SCpNC3d((E^hXTn=`g4s$jlaG{Pz^JaLi*?JCR$^m##(8SjC*gfMj(+mRb1^!# zsa<gz>6Hq-_(5?f`%WOw;M*XNPK(EU^UZv_%5+)AUO<rL9Jv{HqiG}Uiq_a?Zrq)d zZ<iMu%($C)NS_sl9dDChd9xu5nG(;G?r$9ZftAb?iy4Ho+{AU8-buY#RGn~*y=<)R ztyE_byBE(kZO>FDi{5eG%G3>IBBjM;W)Fv#QJ_nFZ@SueRMcR8y1BC6y25S<iw&0H zQFUA~qczM8EX=Rtm|w>+zm8*m<z5rkFKy!>w6<}BGUJ9e&S7U4czUL2qP6xR+)uFI zU7XTMbqr3e4Y$>Q9D8`tes>blR{x1R@l(03sQ=WwuoLx}dEsu9&v|L9$M^TAPV`2o zy7~nihD2|y-n;3KvD=@Yb2m|x#vphL#7uV&gkq0^$+)LRxWi>b(+O%<%6Czx_e?`c z_82%I=O0NQTYhRd1K-$G^-dQp2=P-EYS&g;R-W8M?rnZ|-ML$Lon*VKgJ|zGboAaW z2g4?<!Iaq_MV=_7lgdQbD$&8TW4-7a``^an+{s~|4LY0Qg5c5MwrF?UrsS2~$kUn0 zB|T3U@Heyl*8rcGPP=A_97Gn**swdM<&z@k%D6i>>|B{}=SG|>OWnCq=gJZ8+_-aP znL9V(T#4amDOYWT?2^tITM<jQ0AzZry}RAn@yI=Q-+lLouXVmPC=))tsH3{eN&>-1 zt-ZmH=m|px9;p{oAR|>Mg2coj`yZ+MeM5f7%pGh9<zpj7jTcajLENXx3t7H0*i@sq zJs86IdsI_SbrPy1LW?0(@=SR5ROhM@8mZCns+<`c1faeu_ggm0R@tu{chMeI_Rssr z<g4`MVfkQOMsDAbSL@~nkq26?j>w$m4t=qE6q%Z0d=2v{r+=x#l&a*4PuO;>xsh#0 ztWMK|!kP<;xvRKyd*mXgZZAc?LM9t|(NG(+Iv3Nqy%dWYrMk5sE<V)8U0Dzp@#D@U zuDcGnSop7HQW@XN2f9akhH&iRy1mpr_fNH#Jk-OCz;}&%vIML0OgJf_MMv|-MXEdJ z?Cp+=%HZJ=B|AN?#!G`H55}!$@j|f@+QMnN0Aemz(Qk(7d8-A_jJUk>_2Lq9B2+77 zQd5iQY6?$vxYTFraIK3H_++PM-lVpc7Ts+bQ)c=4{qG_ir39GCSZA!GZ&Aln9#AA5 zYVH|kCaWZ2u|_y$*n8L##q|E@kePfpa<`@Lw(sX1@pUsXC8?|2LBo*xr%}Dgu-M8n zR^J}@uS*xhi8w(?@`UhB)zK&fz%w^@Z0l2X-0MJjWBuunuahaRJoRz0UCMCO(Bq&& zy2F`tL!9$^=y^d{`6Df~p8j%2+y3$~X7pL*KK^|996_M8y*cQjN!Fs-BP@sjB*Zhk zIS)~+b`4n)z#sR%B*2cNPWW%#2x!6hgJf$({X>ch%*fUs&66@JRo1~sWW@_~(ry16 z@8H+RiesW26V>#EmJ_zqq)=1TIeA2u!%4w@jS5}S2xO1U<;TAfk6KEBCr%B~Rl7mG zkqkb^iq&m2VnNgAMj#hSXFKSL-2O#yow|l@=9co`l2v0iJ%##ZBaXh+UuXvNpFzBF z3!1%JvrAn_atZq)g9t4q$Y@sZeS;su3_XQkCrn7{6++M35W_{GZbEd={e(!OKW3K} zw=V3S9Csq_$qA>P*HVYu#ZDgK)JL&<cIxBq$>mOc!abvcbFu-sPhukmN)TB}8mQ%| zp(UY8Lu(RG?U4wlb_g;=b|K&c1X5D3&)+H;w@Ie{oR1%-*;*#2dS`UG_XMQu4o=m@ zSq~%x=rj&ra9#8{&aOSy1jzR#ME6+}?DE$HyZ*;DL8bK*x;ArWNzZTS<@gjkTB6_E zZPXk_Q?$|{+Pm)4V)Xy}7wG>B^#S-jKpC*-8ls)7!Vfq!5@I|04@O&`HAI@;1%Lg{ zBj3nF;G?_$d1MDeCa=yt{jELM5Zy@;50jeJ@-n|!d2t$D*1`w6p;2PK+*|xV;@$?l zs^Z%JKOqMRdi0!X)KpWAZK_byHnh2IQldl>AeB_3phlod+i0;;jc@`eScB&Tvb#N+ zUKO>qD!2At+uGJw#MdUgB=}muH+-w8t?pw$5nDw?^Z$Hj_CDt%5cGHN{XaL)1848q zGi%nYS+mxfHEU*qxx}shTw+At)6695s-Cu|kht^1Y)Z59|54H88cIi39K!tnLGk10 z$C=b)brC8wg1P^buZ{d$b=a97ZrwnykD{TA=+}ebf<=xudOas{nCXVKkKIXOaJYPl zaJbckE-K(gj7|Op?n9klf_<@R7Ykv|D~2_sX2gbzhMPlP;Z0{-aNv=5&IZG>i^wCE zUEsiy6BgP#Lmmf)iR%i6q0nP#y#cTf$N#Z=1p6M(+N%~N9dY2U(2)nsfy$hZpyLAE zRPt?f_a~n0-{(f<5CYDQ3|_adH+U`R?mOIV^S_S*-l*<R4kr+MyFeekL_iN+rq3us zrxBwR>no{fUYNE({xWA<-<XWN5fOZ1Ebtp_=3U|QZDlH?fYjV?%n<x5JmmkowKU21 zU_OFg?H4?F*G%3$@iGMbr@~+cg}in3qq6KAZ5Q)vIxziF<fA9iA(1g~K2}z4)SfzY zl!My4><y##Mx~o13mK*b*Vu{C;9+`ZwgT@B+#}vMVwxCP{w_;Y=DD+CpYKn+QIP1( zV^QvE-8Fahs#L|*lq2A)aO4v%(r;Sq=%%oabU8lkevVnfO!uVl;*WlWH-G*#=edq) z!{qVZn`7KRl6QAnzVoh5(o1(t)1i7!U&ryo^-^F?*4vB2VRW+I2o6F_3>%r?2+m$r z#_;oRQD*$5P8!~KgW47I+jY48%_!|D6o7CQBzsY{Yg*JeS^|HhvpTV*lHM_fu$e*7 zJ4-$>Jy8M`#qy;-$z|z^<YoNEv|K^fk4Ca14JQ|?6g4q!oKLK&%w7NCcC%+xMWHr4 zjF07QJGwSJwzhcQfnzqZ-*S_8z4&93*9t$fF2a%OV_wK>iG8j~jsUYVay0N0=F)OA zKRM;J#49_^m1)oFPKGi!j}a$B${xQHw#V;q7>_KOi1+KaKhY+<r1YlaarMoK=S(WR z2?ov|-ucwb=HX=siEW&W+cPm1>Y4btJl$TdHk()-8dYRk%=zvn7BuFi*qjad1KB?> zG!R_54-POuYy+YlC_{n!(?n_U3^@98AiUCn=!McVpwoc;GR)6J-trWl(Y`s@I|~cl z$>IFT#YdkQWAEFNi)pyKu!vX^23FpQvCo~RyPXQuNZRD3LUzVu8olR^o>M?aZyNLP zn2p{WiXzzLb)k?=tPA3<hQVB~$j?=f+qeZ2<}T*d?p$^0MA^$VpF5+_F?$x&Il1b; zf%ljfqXxfJMjlOZx)WQtk%tpEI3LM5t|<NuCjF-uzkfl*U0nJFl*T>b#;VoMsyU0? z<4RBpb)%n5czMx#UT}^paZWEztQj?ZwZ_L!hZrA!$Qd7R<9hMF6R|51&kj*Qe&Jw1 zJ){C7{Q@0B6!>FKfs_ht+6T$vuc!I?^Sy4JR8tX6>f}A=2?E$3PrSa<-Ajx;F>I(c zQJu!_Qp?zd+_AtrUt=bZ3}1GjieJf7%umGIMqm;TqbwVjxoj*n_q3OLJ$v={A47C5 zH*9iwE;^lanyYv`5Powf7pDrNRqN*#Y5qz#U&s(8kt|AIHGhjcrKD;VW@~jcalgt6 z4IDgqA4KnYxVvlEHzj(tO%Oqms*B}eY?Jc-TrMnDhn?+IH=^IFDN^Z7E=HU>3rnIa zKG7ES)D`sxpc{rsjjdD0#WKk*7_5x*RmIB!p1i;G^S0jTiY@M5sf+igh8TqEej}Xs zGS7wDm8;2{p;j>#frvCoX<>JgC|KZ5(nybZV^KPi5Qz-%Ka?IQ89T$MbhTf`Z*4IP zu-k*w9R00U2v@Mz($R`lsSdRP*yV1WX-6e>d(9)W?eOQX<xpXi^FTsvNq=1f8+yBY z(biH*o93he_;Bi^{Y?$FS>3OO^RyM$w2dhjkHzkI(>`3-YTtO<zVWtw(-GzET@YJq zfy5QvPdgW15{}_wk0wtZ#>++i%d2#Ls_YM`VwaAB1Xb<&KYD4cn1UK?Wx!W81-6<9 zGMzV#?g};YkN-q*>?c_R%3=2e^<#m1LIFRVnI9nwPcd(zvXMz>IpeJ)7;onR<E3C4 zobdw5!Oub=eLfr*>>o1y@0w((^i<*f?_XMq8G}f|ru&?5h4iWF#QRHw<oH?cQW3f8 zQvFXm%I1#s`=;Db%t!t<&H-VBc$NG@EbTBXbLc~Zi7A`z5HE<g@$b5I327)n@LK(% zALpB*m6>9u;xxw?^@|A&`&sfCE{s?%%#iOqCS~qHhJ0GDIaNe2a8ET?2e_vi@+o#| zgtCdolPu{bS<+3iq?=?(XL>JPLCui7T&+$Y4vpMneehapR2*U0{aKiw0{3SH{6yS& zrW&TM-c8#xy;Nqna!);#w0*LMe)tS6nBapRss-r_fFrT}<`6=4WsXp-d>f&f*vpFT zf@`gPH`os9$|*2H1y1%06c170uQ>&t!Fl2xK>_SRXYHv|QWg8_%GPRY7L<9*Ud-3& zac0$)Vu)3T!O%$ocS1?k>N#^zOh454b5AOA(OkciAe3y>vLY5cj8SUUy0dP~#`l%7 z4wriLp7<#t-rps#x%6zO;<VPy81-e&84<DR?W*)4L1MYl2rGD^%)Lb^eb0(`<A!Kj zBf~yWVIOU!X%mMBUS-)6PoC2y6NwwId@HGdQ6(!W@!`+rA7)(sTmtz;4k%4L+SXB& zuv=n%vt-U<_)7MYw_y%rQO~_xp1021&N;Z;tsZ~0C)A&KI}d#>uCo*jdw(bMKtR@? zVXT`1Zh<KY#rL(RbNmiKc)=2DSh1U){z&Jf$`H2srBB&WP3O!wrzY3ZQy`_<U@wjT z@Yv|mFIid9;%qk;+(lQ^l+bI8j%sfiRmiew0Do?b@2D&Nx?aD>HXr@gDBh#4V=Aki zWy2C5a{>KYIvwh_a3b~Iww=-BFG%YNU1Hms=o@F6iv)0R(f{iLKmT^td!P%qx)50N z^>|C-kxMl5eJih{QMx;vny^@mC3fnjjA|bRIvV1-H-VoTBUN^FrL=f*Bn28Pus0Hq z)^rs0B{TNb$TvG;eZR}<Gu2032U3^QlO8RtG`^c29i`O%7Sp3_`c1Ev?1k)%hi9z` zI*8tdKD`ZX6CduEL+|JB=NnDQ()&ng@ZY2NcJG(ERaVypS$apIohbNr)X+`zW{tRA zn5%!D_kN=M9}S{+UoO2_o>Oa2qRjsjy|qPQFuk1*Itu#Qv-BN;-oHH`daw5B{Z2sd zD@cU{N6`~mdPD6e5?dCXQ*XI@U(I6{ck9lMZCrgjDA`UR^70rEukCdAQ8ej?V*7=X z^+aWyP~vcS-v(zDY(K-hal5*K(@xcF#XQZxL}`Z4$0_xv?OWlzW1|y#DO;Jho~xJ2 ze#XaRV8HU|Qmqb?RL*F4lkT-*Vw)Lm-g|h$O#<VVGhW}|Re?ff9R=<I)U3S~Vb-dQ zwwq$LT@cR}^FF`DsG$b>gf49K*?lU%QhQDOMu7P)xSMnJe-3cuj4&P-O+E%H{+N0@ z=wnKiYcTpZ&7X6g?dM|=sx)w>8h?yG#%B7pq0mijv;5l5BC;CytC6}$+6pnW!1^Gc z`Kfe(PXcepHgqBegKhkqyg{c5ICckvND`t;d*I}glR7U;yqPC3XnqGSd=yaWXEfT( zs^8ui+8wcU0|V2{hgHCeG>VXY2H8z70Iedr<U;bLxm1MAcO40iF!Vxc`?53>KgG*4 zejkUU9)&%eXZ(YN_fc8bZf#*ZhI%)7GxHL6irLn7>0Uh6hTAH?!x5m^=H~n9P=NdE zGxy;nC0*ZNE4oCJH=%F1LWln2IvBOmk3KY;DI;Dz{#_F$RLQ)#yLXt$XeTsg0?s_# zPG}C7Be*wpLaDQZ5Q|iy=1ev0LxF(R{j3kSE8a4-L`>fclFT)@50>K^^VYxFaS|N2 zG4G(Nb*)=C&>U+$y5cD}xlA@9q?RmYKKluC4K8-$ovD<2*)n4_cF+H}?zdwqqH1@z z$%jlK3S40daCZn*xtBep+?3PW)77NpPb@K)DO4m@9Xt9F#&Nk@Q<y!lIQ<Jk@;iMJ zwZBAnm@JUq&*Qv_Yd@{)Yugq?pyG0}NUJA@(CRu2A<*hyejTme@^Lhj*efrs)7ygn zm*KDuzB{I$+|ec5`M(EMBId1h4~VW<<36xN#x*pFCA#)!P<C$)=WXM)knZQFNa0Kz zFyl7L_+_UfFPvs!g4W~#(wypzcQogSj}S3>=l|HkCa8u^``-ZHVZcX|CxX1GB5JPT z!$_!xOxjf^(x(ma%SHST5o4O3aDCs4oVRB0yUXc``5K@@^XDio0H$5yPJme75Ik(> z+CFQBm8W-4Ile)Z4+lN$zM6NVE8aDvizpU|z$S$d#j(%ph@kN3^&+uzVzch4HD?TZ zFaaNni6zk*Q)Wf%?i?m4`8x(8#zx0Reo=yL{HCw5GZ===)V)gGy}G>-L`+`^3z%~U zeHzYDCTKR$8>OHenNR~$10R(l4mht<L!Ib8go2T2>8zTc?Ty=Fm^{wc+32`B>3~HT zhd6O1bX(dtb~MPyYAC%J`Fnz~vZ5<Cka!~MrvGPTtc)(znIed|N)(Nxj;b<}*6Zw( zIIYPhTtWiGA&L`*MiCojqn!~$E1O&YVU*1b`k>q~3MWtjBDdOQRlp|iQZ+{BA8x|v zJCK@urSrXLQg^XgrGpg*83Gfna-eA6_G7DfPN1<ZBEX5h)~UBOw@{;<;MtlN@UAId zx%WEulDL?ciu5-%#S6}7X<JC7aq?vlXj?d30y;g7on?c^gJXreisuZ2a!hITOC|c{ zEJOyBs}|+RRq5-sPtJyr5L8H5niszb6_A%c-Mt9!bdI*<{#+u>e8L8nl7k1;B8Wg2 z6nO6d%<M=^O)@s;a^6k9l1Xa?rrYLSm0kocnf6J4rEj3cWQffeLK5Br+JPiI^c5uG z**l_s)XZs9SgyevO~_0NP54|d(t^y!Go`1*8#_mTu(*2^bExk0uy_B^TN@6=$WR+; zQ@+{)`%`EV!=)i=@~(Y?HHL)|oE4M;FWf(niK#^4IMdJ$YR3U<qjtvcFM+zrUrFmF zaF{=ThevM>RZ(<3D_`VV{Gq`2Ci6AK<gjV&mM8p7vk}Cf@0@n(nD<yiED^tI#1hd+ z!3RbJMdD?tiKfOK64*vmOJWyTi5-!|E>^F^yzQ^T`N?~XZYwU;K5|;(UH>kd8$S^q ztvBOEp@Afq+nHMW>oj~&JTTL*0GoJeMb+HG=)}2&W9NqBKQ%72_z|4F6zw}S)1Rn` z{qV6JC^o7s=Hpwb6Al+K=dvO)yy~w6^3FNeL<u=N-hXw&n^lj@J1Fr%>^>1HTDyTj ztq~MI8v*XG*=s`~%cyovdUhv5)U3gmUpFvvU{1~yc*ozg(rM0h>dfnR9&t8tEmZBZ zUTh%L`0x8}?}VW>Bnzr=h>fRl{P1RuNAuSwbXt>wKrx^cv`#GL&HB03><QNGfT$=c zr`T+=$d7^Veg;Z-mUw3dl-9SFpty;Rh-cp9JX+wtAzFtcF}ShP`?uF2z$LLzw0$xF z_<k#3#=HP^zvR~a+U(={kiZ&OyFPE?lNV;JS6y$iwZ25+Z6t!DzPU{WEQucK`y(n! zU4q^@26H3xT6a1N>8*W1{-#+v%7*jClB&)Jotj-b4(9j9AMtVj=+(w-LI;)N|4hl! zml?&^rwBKIjtw-YkY8E#3bm0{U(Bzp`jX`}=Ncs!US4M(3YOQ~hsg2<`=D3>;p_nN z2XCQZR}+ZhC$VJnp;s)d{e&5|>W8<XVr}Ob85Uhp&vLJ~|KD|TuzJp}<yw0guU%rt zVS(3Un^*P^O<hh4Cmt#3i1kd0h0<3b<`UlF!r<i}fC+06Kns(PS!Vpnp3t~NU!J6& zrj-)tK(yJnk==mcuz4fTPPI%L8SJ~dIEPs$<Mr{Dy&LtniE%oeC@8xO$0{3)4vVfR zpB`PYqNJDTrtsY*>t-~c(Z4w}-iYI$`Nzr4iW@OvM8y@Is=b~OibsX1l8!5!-oN?m zPV(Pm^V|5qociJ@BU|TpQcZbP&&R)%=o*G>DMGc&4%8A}WcnFE8d$#%&(;t8^}r`M z+0uJY@M}{|!>Fb>(Um_$HM#g^;Ftd?2YyiB-}Y4BSlb@IzJ^p&KGhzQ;LP{kw=PSh zGgj+a6>hiVhgVboYkqw}{ZH<x{^M=^Q*3)@*!s^(HHAUruteAJA<&RNCKna|z2wgW z+i%bd+8^Ne#31}0^50<(Ht!k6O_vmW%z1*w-^2a%c-VZA8z0H?RW#Wx86YdJD?a)? zg7}i!UYDA*z%ag9KMi}2f7OHzA)oE?N~b%5b(Ps<G0Tx(Bknnc=9dy(@=F^jaQsU~ zQYdYgsDR~mV60=@z;Lq8>iCt7RBxEr7ckyIF)iELDz!O4LlKOS<^AhP52C1`AM0-a z*vW1o2itE#7$9MHf?8i-W8)&;p)Z)pK!v^H!JS~|sT1sEV1k{ezW=;GVVGbh47<(q zB?5L3-sARESAX6o#!oU%6Q|iMG$9meTZQv{;?;cUVI~FqM%qLGCS^!hE$^19@uX*F z1;5DB$=iFAiHOjA$UCoxnE^Axv-wTe_);hY;RW;p`<sa*_*D*&wa+4jVsA(N_@4&M z55-c>!~~fIrnBAJnW9~))<nzPGddLd9rM`!c$`}KQ06`L<|hO1G93OQ?4#KQGNlaT zjkl1wr|;(&d$1I{iyMq!u6jF~l-7){7(sJqGa;Hqe>Nj*W=2=ES+UnHvF8`)-wa2U zyK@)0(`VAG@N%E8w$n)vvz)YD`0606LU738s|v6dU#SnQ^A!Q-J;b3}VkW`GL1NU< zoBNX%H-|1Y%Lze&nLaA%C-{abDG8h|gC4Bc3oQ0n&-fNvq%Et7S1xgm7xg0P8|jhV z*;nO|yAE>K1Q&_6%lDbO(&K-3EXbISr`aViMTARlMRl0n`_p4+LnVu^>kOZ0(2P=T z{Ic4`e(<HiWhiZ)ITNek0JVaJB8H5&h(krGz--m!ci=t^4J$uiX&j>+ETKeA!bAe3 z^Nz<2fpu6(WYjp~%oLgz>mAmGcuK6Pbk>=$5eIjqmfi4rdbj1%L%hHdqn!K!IaT#T zL-1)G_P5`8-WQ&RPiJjGTV~{KVoM!Bn`o{kc~h%awH}n#qNtVE3jSXoP5z#Q=!(7D zK4^<?P2x2Dok*ZH%-UjCW?FcYxClZ+<T8hmREonzxQf?!H`Ly?2M*hsMN(kEX7?O6 zV;{JwhtH;#hgRi>Qd1%+{AcfYx6ANYQ->mlr8@5t73+*%cPGbaM(TpFJJOjOb0%v& zSl!!5hlIhb00jFt*rGQ6paIlpjm7b+aU4yKLU7Z1)}S_DQXP#heS_A!3yZrq7rWnf z{`LOTRUUT-iDW`c8y4es2vq*citK~`u`4lNdv56Aw*E5`<HWsliE(>(4l!;<N(2%D zch!it?}QfA;*LQe%@#3;PYpSf2~g6m!w9J}GsLJal@hSRrBfYTp8gVJ)A9pkQ~6A0 zOUao~(7T-~`&?*$)7>(t`r4##HT|ihP}5kSzoN;j3@;h3StbJIaLrq<?MkToHVsXv zrq4*IBS+>Es-r81Pz#a6KG#T+fe`Gxi>zlOU1khDw}CNKnq~$~`<UO+I&C>AMgYYa znuS%H;*+B*V(x{--LD?F_|;Hob2RVZw#v|gBi)nmA?Bqn3cLHWQ-srVA)_>;EJRs{ zI;p(>Rcmn;@ti(S6MHPed#r_e=IYK*sc%2(<F=juZhc>)pQ*2A<!7yL#Nt=m#u3f; z-)x^>-)%$Jhb0a@zl$nxFDgbA<V8iv(JrSiL&*y@q%Vp&$7d-?fq;^);Lpz?<`^2+ z**iW`a&OQ&zSDU+#wC(!oY_;;g5x39`D<99W@c0puCX|ElAJS<bhAbP{k?1cyLOwu zV#xfPY<{Sg3!iw2A>ePZ`7arm|0#rBF8^_zsNp}+Ye)PHsm@m}iLQ9gnbsU#QPlm> zh_(+d>6mtY{OdmDP8a2-8Ol-A@L(?GGV`O<@oXK-bB;Gz#FEox6^)NH-j^ZbT}Ogi zu-+_Mibl}Qr)L}Z8xo!*`WyN|Q2*ogd_<f?R~+A;cqQu8&onuY5-}{;UE$pvz{}eW zysq8Cdsf663f{T^p7h6H{QjN`Z(M-i(kwiC9*4{iKjx2KXkfoi3kxUTCh(5N_14A~ z0j8t2B~?4Kw|3^?>Pg(>_Bi=ETC78aunKgB=1#<s3>E3r+kExWw82O~rR`#weLE|d zBuF8z>`8TjjF=d|GGYq7(y%Q43Y2AnV;H)1l76}k-@hNv>(5+3zQ)*6oVkkG+R!>v zhO3#Y6v%c3Depe;Z|`!t<AsSeWmfsh4o!apXlHj;y&a!nEzt%Piw>AECeL6?)CBBm zJ`H@y+c&J-RbYit3>;My$XhkTJL@qF@)kPWw-%||pQH@32lvz;-?aTfM`(*~V)Nk+ zjoWQ6ysi$m{>edo@z`I7?u#!EKziuDxOUjCeeqBHG8)g=g5ys+)#;hyn0Ve2B0X8x z8+&T;{C{&#D9r1Ipw_00lzNS?agO&1Mb0{ocwaq#Ox~l;8Gi7|yErE-zdNTE!(c>0 z7CNZt8}4O()9p+o9<ZqI4hSFHIfTNCVZH}OqxT33@0+ip@U%WE3NLEA=)B?XPm0+> z)Jcy;mwuU!bDoW^IQcy1(f-n_XI{^?CPTlfC!)!tm_4*rg`&xA%$Uvz<%AoDDW*9N zfHV75wXY6#3EeQG`IvqIPwwFV#EzP1`<Y~~`djM@J(JEG#s-)h_0{ad8<@YIY$kta zHh(?_$sDTLU4DCBI`DN9iVr_b{_#WPzb=6Pb{76{^6yW6b}4wy^P`{hxXgo1I>DNF zMxKh<>!1$5nTcd;4y_kG46S=NLu=cA$N~+J@X?e}4>mk*_)lrO$bw4XFj~ZTvZ^Em zW@+^BJDcCapg)U3++28CB+)BDu*17h0U-X`eP{RP{hdkibdO}A_>uY>bL)TXF;l<N zcB#KUTmMwQ{wBZv8LB_MkOADiIWm$8uGR>%@N076&$jTDwhR2GEc`kje!UOB!N5OM zdc#g(GXy)-0^IGic2*YPZf6_mN5Has^Ik%jLxdC`u+OA8V+cC0f=u`;zODmjrj~w{ zcTb1&PA&Z!Cs%yct3ZyY6#xUTvMC{N0NZQ%Kx{8&8NI<PATR8^-sa|9<n&q|?f5zE z)aZ(L2ti{JA^Mk#W=HS2YFx=f+%mZ0ijtlg%>=))xgu|S-aCBQKXfA>?zwAZN!N_# zvloBZADUm9B2X;VP<l9c9iHea#DT!NXC?J9*Bp`X7X_TTvw1Y~bhRDd5rlt9RXRSE zFob8ENBh2%;os<reK@>$2g=%G<_nnCLm01BFU3duU%EdCdz`ed3Z6`?iKI@ABzg*_ z!)V*2B=%J>%9`ND59n#4)9{^5ML@u(Gh5F{5-<NO6xIfYy|jH{BAXZ@&P4Vw#GHu{ z^>0spp2JuOJ#2Wfytmdke%NdQgbHoGkY9pRW?46LYGa8tQ?)<A`fJ%!R>nOLzD~mz z3*&^ngJ2RLN{~CS7fuSc>LEr8xHUr3)ca3cbBzU~YQ>PMR}86&#gH-YXK(KUSIyFd z-Z}sWZqHB)RcsQ)2o2HvnRgQ&Qdr6pfgcfmn04EHC$9Ur-yRm3k)O8zW+RxBqM<!q zku{e#z1gj2Kp>n$9+hxvqVY!^bua>R^Ui3p1jck$4_wdQOi3f7PpE<RHO_~K5weB6 z;}{WU1zDHe484N<6E;gikQz9TDz&&FT4`}Zw9?{+XjQ_m7Cl5u2@lay!b7x_@Q8W; z{xqlY*{b0tc+hKOk<3^kha}d_hS5?J3ydXl%Ucp&R(_7<kd*jX9gvJ&Q|<T^u+(uZ zS-2lWs~m$(l-YvSzqxm!aZgc$Z*U-)VhgMU-({M3Y}QZa-LV=;{_*oja%)Ir<1rIk z{vZ2iDFG-$_K%!ggZqc1khh#+{u%n`5rhpy{vY?x_9spMsA|7|bl>yt`ln#)|5g7i z$?2c{@f~^Jf9`*yf8M|&IAs59gCM)@pFGwIKSTd~WzGLi|D4PjaEzav{;7Fm_x&@A z;En&A@x%Ig#_F7dm&SYW+1>Wf3^&e-@C**?VPhz|YSB3pb7PzT9*}&pL{_=8JrG%! zv)ei~xx~n^OyY%h3wF5`$r4a91|*;=`IUgG=2rr$hToxu{X6S(1=RB_dcMq}CwlNu zmQ=VA%lIjcfEt0|^5qlrCBjbSxnIP5NozxKrX);I272zzQjJ-EwBB+c?tcDb<^QM9 zXUlHrBfjv?BLr_3`kYQ8jsG9hXTx7}8Bp~33rozqqt6=%j{i&g{BtP!oWLA+7y49@ z_`gA)+n*RrpBrD>J$-r^xc|S>XEvvz82jM?qZ+y8paYV)bDNKzJInca^y5`;&7YX} zMBBpi39$I1z9dWA_|XV@9y8N>1~bp;R&=!%4lL(;p95>us7Ao*j6EqBt<!??m<Xo) zGRngk2WQ<C-jhUh1f|_6vz!g@Z>V}ay7XqIY<W-1>HHWMub(?B$P&n}T*%(xOtSm_ zD@YQuUW6orY5S=dt<e=z&cox~rb7oV#mH&<aCkKNFimLtFh5>_*_CRP-+W5OZ|++V z`1={TimdNnpBA7@`%?aN#MO+LBmOX3oxd1?zS|i|2Qw0c)u%4Bow9vre~S3iZY_PV z@4|W0y8~fkX+9MMU`QqYn#A;447ChBCdY{&)EO{3mJsY}C~ns4*84NepWtf2@|5Ik z1YOy7-nY69%DbKQUB3&;vfpI44Ve6S|M3o&)dH7~Wlmu!#PIrW!4Xdb-Xv`l1<D9k z;mLagx!`oC%he9>y~p5tlQ>B@`S{-K<9pwu2H!^079ZawY{doAZfB8K?1HcCQQ<pa zGU;vS)*tYdQCgOstUi5&?dO{AHI$xoFKicLQq{<0uhE-?!I}OWb2j#=D}fx1=IVOy ztNMZhH{mQhhp-x7&0^#&Vs`2EuFuT>?f$C77M+J}P9Jl&?LGed)_qWXGe`e*>_yEN zpFF0kcl<2S2{A45CoyL`<7YeDIBjNHamV=cqRAe<R_C>Tkw(sR*z>9#&-AO>?d^@3 z7%cak-RVuHZug?1_Wt;PozrTRD!QpG|KH5EiXORQwh=>34kFRqIn6{jF&$HQ^eBh; zL9MmV)sm9g=!hnZxYJ{*k+58E=Kb^v8F7`CqO{9|4JQQTAK#ps8+H$M=ER(7+Q}uf z0u=k1MB1e&Yeu(Sbbcsae9rf+y8nW~YV}ToReoN&m~I;M&0@?q-5(s>?^<S@oN=6; zzN52kVTtbVt5x0X<R8Tko9{LI;%MM<eq;v391{R*ri{E6k*sNoT;mb1_BQRTPfe+T zTwG_|<$R!!W%+isJGBmnrQIZ-{)%-Z`2H?;iVhoyiK*Qw6;z;p@g_p4zLfkUy06xR z6;Y9fX@sVRQqxLAP#RIlZ^88RGZ}w@)&HLofAH;*)?RJb-fefvB6spkkdQzMq5;6d zt~tMW-_XM9NS5<Ii?F(7D<g?DYr%)rLuw@)=&eVH(Y!LHo5%pu`T}ny>1N*WL;60) zY+An=c@T3HWv@9jQT8@;(}V;@yzW2wJplDB?Po#xX6FNXL=gvyp0M*nI6jbvbQqqy zCo}Ro6R%l86rxs3%l(L0;$HbntX|MtdzIo9&~@G=D-Chb2Dj2Zg--2l{1iF0ckxr) zTl;`Y^wzGiKVAB9YFDb@#7x1*Y{B)m;8V8Xi?)Q!SjunKPfzWRVNUI)-dg!vb+K^; zgRI<oaMC}9s=hq{0PQ{?fL38nP9wKy-j%yPBkye~j8lO;DVIy%`XRi#=m2d)K|fvi z8r@<>0-gtr1l$f93Ai168!+ZQeGe_KmEa_g<R*DEjVDi|1sU^hH+jU<-a)@XM%PL& zfHF6?riYV|i4RR|(dg3o#0D$6eo|5VR5+#@L~HUMt$MUI(sz;_|2Uk=oK5$I=ne7E z=ygWcRFod0l<0}8Qe}B`cclNcNL8PcZe8Cy$@qp6oIxzRqf@6<SK|>ortiP#_gDP$ zOd1eJX05+{Yy4}lWQ%+EX2|S5s4kGQd|GcrnsTy^u0CzoSLbSdCAEd_kSvujh#Mm4 zR2&Hs1*2M@$4mz@L=i!>t|z{?*wHZKYByQh1{kcJzP5!IgyKJ2ywErtqRAtyf-ceU zDApns5WXjxG8rLl7x(BLy9`GoNy)BG6f)|?Lhti$ax;2QT3eyC9|)YsY)pTdH?#h* zwe{oy9N$xW!QXmn=kTv(Sb74v@Xsap0yX+)mb6fBvRzRxQixDqJKK#NRM;K|=eG7H zrgV923+II5w}8Pc|1`7szHJZ63mW2jBEjMdP0B>k@FB#zx$MIL6`x6WL4xNSQK_ec zh~Xa{Wz@h+bcLy@noUpB)f8Wxo$k}^z!gJ_vHN$STLpBIL7@4c=%)E!q4x@x0YW#q zy>MIx^84!9;Lpi66I1Ptupn5+guP0*!*B|?jaFjWTX`CbjHIuzI^*!g=1O#ndbIub zK<+hAM49xjctsm}57RdwF-x)OwEve+f`+1or4YiUjdxCN_6~Z4G@nLbV8Wf0_dL=~ z)KumQ1?-7l$pFI&sj&8CNqHA5_vRZIr5r<LC%;^5<Sr=Y%*+A?N0Hl9lnSSmJMW3n zYqRY)`?KG5!`C=<sSrEMs-9p!89wIH8-XPn#1V)sTAMDmhxIrutWlZeKND}uTGs|P zC@V&On0s=uTYRa4`F6VB!2qdET*QX)iwfe$yC)Z=79CvTp2VHR^T&_=kR|EFIpI9# zqyi4pVDP<vf$`{m&ij~sp;jpRw<Zcibj3yC)(5QoV2P@*?@sm7OhV$sV~gx>W;Nzz z+6Y~*BH4TE&sbv|1d_d<#NI#r(4&f{<C^&E&7DCqf(GoKFkxW8@pn&X@2|gmB4T$> z#Pq|RuC+yNs;;)s{NSBo7<o;c66sDskLcENc#0khmv+CZSmFY2vaqq$u6zb8oOki{ zDx`+xC+r0`{PFC^h;%Ogcosk639-;YcUt!Mc|`mzVI}?+pNqd^44E40@g5=GhG!ET zl{!<$J1O<4I}C(9x@ak7MrenP*pa1Q2=qFBcjxY%NxDY0uoO1Z*1~2szlvj*rgNzJ zy1&q;{l_@r8@L6Cv7K3~QhU+YT+qEmnz{rgD|PE`D1rZ2lMr-oYd2*-I;Pd*Fcd%h ze=lVCCceKvk0V2h-Eb$_P2O(uR-F-^|B^i~rX;aO@i^&e*E31UjCXS%H)^RMvE!I| zI!`uLziLcZ)rL8H5w0it=jU<!8Vk*%*S$X%+p%~$H4M1_BT<}t9#q!e0DGyx@~XL! z_~HI~d~3<rxdn6g!*bc-ZNzHfZO(QK?105tZ}j(bZ1TBS+#;^|P`^GGkNP9qQdU_0 zH}y5r0EMR-`CT<P7XJ|o3!F8(^m0lCRX1g;J}s!)om@l&U83jk?ze_Ja|^59iC${< zHtW<{mZ7yDWjp&(J_+`tJX5v7>_=IGt5b`ijSzHofO6%-b{RB4d4EPpfO6}ttoJXZ zv&9qeRW*fV{)Tso<zb379E*pd)<vA+TA71hr{&Qa^6jD=_ss$aq}WYtDRz_fA|WsH zh4ZLiH8!b6gl4JUj9(f###NvO_q>N$dDuj|Yd3hevyqIox+A4-GW_AwSK?aXztCAa zpi<}Sy+cDWS>5`W93xNajm7;%!%7sEH-*gx^S^<pS@OI-ObMe>4gf3%*FEn&OHHf? zVf$>$P|-K*)CfZ#e^xvbqCyYv<_C7APYV%xG<3K0`Nn6Y&x>4sE4l~tslILieXu8L z3e!i4B-ZTYn$2*Uy)MD~(X|Ctz4MAQ_O@x?`|`ln#>}_*TS0M_n$Z0q`&YVYcYZ!+ zewe}JL^>0-VOB`<78a!0iKX)|9|Us~W+-cMDpZ%3qKvc<d${`|I+p$8W24FIMAk)r zDn=x`Bfvgp&z~u@ryv#CQ;>>>*p3R3y)R-yV5R*zIHG1!Ay6o;X&}Xm`Qc0`sp#GB zh<){LbFfmo`WO9O<|EerV~FFP7nULOS3ZsD@7s@8#BSBc(IpQGYe}pfzPKvvly;OV zutuHPZ^cP+1qKUq)X|<A@qL2?9XKlf%az9feDsbykD_J4xkck`tH#?_jsMhEMQp2* z-&HHrsx{SG3OB~Kk%u;I%*N?wI35Q06wJng)N$Br>p52Rm`^|<HBDL|60LjEiNW3< z?lphk=sihuNI56AUDd@&+}S@&7jwQhB}$$A6#M7llpiCxduwNd!X*iv+^vdz`z*m= z52xpmAxHkj;F3{rOR2NXozkKKT0q=Qvkoj=5X0~|-d(_|@8?Q5<2-MNQ#)INM^>F% zyHnN8x(0`b6(S{aaTxQT^iE@ZNNHsKo6!{uus5>uL7S`kuFJmL`Fb@7O$DJQn$_r@ z7ja&OP1P;!TU$r=o$LM-_5i;<@GZwws~JwD)UB8AB}`*9L9%yaMZ9J#0J!&VZLgp; z)KjLWJboWz?E4{l&0kJ1A3%h5O(kO^U(}cBHL`l8-{hzOfYUhJx8LqPRFu(xVk>s4 zCCs*<cYjOK2)gqLRCl)T^pw5M+OCJDKe`I_n(Z$DMJQa5{wA0~CbzTWORz}Cx)PK_ z+x0wmK0Ud)w@vRQuj%PAp7iH*T*cRW^{AsL+p3P>T96UZ6&*`R?&$aquiT$y?O*3{ zMN|-{cWFBxF+X1qN0Z-@2)tC)>CgRlb1v%EX!}FFB{t{vCR$4L!Cc=N?nnr%o0v(O z!;aBJoCojNLo~sQCSM1Xlem@~_M+aA{zbiQEA#k*)4Ux!FLl3ZR3d1UbH5r8UD2s2 zQyZsqCl&7$y;MzV`;dvvzj%NZBRifO7(e6y48>Wz35&J*xA5jBPcC1n3hO$vXbx;Z z7HQ}62I+SBIDO?GO&%(k)V2B9fps01Q`h>NQPSJN(bCGfQnX7yEKbSj!?yd24p)nl zbII3szlg@m*?KufCt^d3hXtW?B_Ggv`8~s+v<MU1I=Q*0Z8#tEP!hjVHz&K4D-^vt z5p=HUg^q+ecT5)|v|Xy^y@YzTB%0g_D%QFy^IpRfE9MSp;_D|Li@2-CzT^{@I@S1a zGTT^qvdnu~ZVVpM)2PMDlc0U=x>nM?vJx!aggA#&1QO#&yM=!IF94=+lQ7`69L0?~ zi4w9!6Xhh^%tnG>h9*>A?C*t(jH|%#P_!M@lkJ+eknNfogV^A#EVkaifob0~x*<bl zO%W_%TRe8#{LUZGLHkS9{zZczo}UBpwg1ScyjWU)u-FeV3L&O1Hv)f}!2D?t85d;1 z7&2Z9C__e$b(dp2vSv_$OR@#LbIF{p&CnZL$M`A7QAG5t<|uVwDQy><?~E)M(UfeO z_{ioPII%Byj#=`0nv+AXBqLeIXH58o2GQm8EMV`^<>065Ni09u{=6kG9vPdcD4~}x z-N3h?7m^aAg4oDd<u^0wJU$2Fg@UNbzr<pu<j+X}AGr|>PRT(KrsP2Qwji8NfxzEw zR}bWF*M77c)Qi9>)ipQYWrFE^%qG8}rgn*w<&8fvv&Y!-srI38d6Ru8T0X-*6ibz0 z>`Vv)YVfYWf8A=0oqYw%-?khJwk;P1+m?%hZOeOv^*bNd1sX2I@wk`qASr8((K#i? zhD5pO{)4LAQ_$N5C3)-JWn~Z_llpv&lG0S7m?C%zWhI#j@xNHJ6$tGlCQT~50F`IH zeV)ts7C#h7<!Ev%{NB4n?;#XUPeRw(<-tTcEU=lvGkuYgZo3m@swjG&Z5BK~aDwv$ z1p_&K75<Tcm+vAUl=NDDGc+$hlPwGQp?SIbnVn*=0=a<r4d?SK*v&5(50RK(i!rvb zq?e5u(Af3^#P-{~cGmpUpW|6DVl*2u>ebw34-akv7q@&d{H3k#x_VGh7q2!%24)j; zsJtF27%1vJ0;$bKUdCUyvgYpT0+v{pPdmcijJtKl5D|Y!IG?oU3WY$P?1{;4y2<Rv z(*ZZ?#8G?Nf?7x1c5oHJs(Xu|_{w6DU9K;dAfgkxF-&DrYriP-_C^{W8RvH(?KQ;w z?SM{*d4K&if=tB-#{TAIJZsg2N#jvGr|(6e5Z``EjNmh7b3`xGMCM1Q6sDVa^7T)k zj)L~WAM*HkQ(a?Y#y+iGWsj;)ghc#McZ@8)+#dVe9bCFPMIFS>TOq3PD*j}=%ED(C zuPpqCcgl^1l#wRUq=zKQn2dDNu>b+%zJNQ#sVIF&o$nnBma4l~doeEQYok!C#1bv? z6`y#FFhjf>bAT)Zi1*5!Y(osztF*egTlw^^M(6<f^m$VLr}F8PTdaJ_$P_u=BoM9w zOZv>0DL0t6A!Lf8%X4MQa^k23qDmMKk|}Gs{b*>JqT%B+|6rL?_UC~zWrt5yh-#>+ zJ_@>~=2uynQt^V7DaCXw;LGWmUG!r#Th{QxQ2No^uzQ&jdv^CSWfNO@a~d1SlrbFA zV`R!;8PLSe8_9sVhEYR-gmwKsX`ik1>^M4?*Np$bjHel-_~U6$@}lMX&n_<tAN_C0 zi&y;4fiX<y=-yqwb2Oy98|5tV<wZU>D+Kc5{iVo@(FldJI|F&Jr;+qd7Od9*Nbj24 zGVucVpER|paqp9orvmNk)Q%AyNLIqT;wN;##Z-QEPKNGaEaF$kKoz@JY6^ms;3eFD zrF339>s8UDITaj<5U?GbW7Nv`*X=Y5LN4za1EPbM#rJ0w=sMne%``^}RIadJsrWrp z5!{P=J$(hVh$cMUD`h@QH=<FPJNVdm!>%xTrd)bO0?cx&G@-0HDYj}u<mZ2{-8D64 zd2MwkqRK0J*zj-UhZ+-uMBDc481O>Z(hV{-RcLO{&McVhd<Mh!9D<Y5-y)mrGs&;T zTdF}GH@s1d*OyM^jeBpCtC8ex(i~w!wbeY%<O`2=LKefME^lqs+Gw&JI=EN1(dxv9 zM?{zYj@4ZD(A2*~6o04RteQYSR4KY3(H5lyp1kM^2&;leK)ij-yrb>@rMxry6cwY% z@_hbZab=PhMK!fI2q#w)wVs5@h%d7J9ukpU?Jtjn@QJ1`QoI*5>r;s}>Hw%4U18=_ zJQlc#%P4K9Rbg+-znghVZ?s)Og?8q}y;48MT>^sjw%c2lPHx6*Q?Y~?EIliqicDBE zj*sf9x1x#Ps6`fXdh|QGqG;njV7}xrP;<5)El=-d_PU}-Y2JGAF1QpyQqi18-8MDD zKI%*#pU@E=n{8^$%lkE=&|amZ(M7TjR6rvpORv|n1#**p6p)+kqkuG$+q(&k&T#0B zCf@+J#cR~-{!N$}c|@bD*$$p~iT1Dwn1!nDS7TLcoh#LPW`g@-mGb$ZoX-U#%|~&< zeE;)#na|m8&rqj|{(ipza@E=n)3I#F_rE<td0VT#wVNsz`QKuha^0^MX<KsW65(ap zWTKzxz6=1+9%()buY>&0RhiFFtET%^P&aekwbAw;A-*gxmH>K8fBHp)vgO~jc8Ub@ z8TzDuI`BRBJXq1M@2c#0(|bCdBj5G@uR-rxIL(3IC&zi<|NF2gnv}+fK6J-fjQ{A0 z%BuIBccSgzLY8S6k@F3pg2qtmlVE)$S?&1nM~!^-+V9`?;mBzF<@7i{$>iB148KHD z_SU$-?5cawD&3=S!f@TsEfgb%#GhkDs<-tz!-GoNoklJZM`?^DOCM7y$+cwZdi$s~ zv8U{#wsIMF&-b+O+sg;lMJ3*?i}OQB*!DB%4m;%3fM*olkr-8Cu)p+quxH%WaHd(+ zzoP9I!`8IC%;+CAbLk|qM^`+;4f5*|Lb`IxA6j)Z=ld4N>h!l+)afL_RP8T6toO~1 zFW;O?0nZ{QrQ-EnYbc<k-BDnlECnP`d<tx{kD|ao?PFp31A2=4P6yT>^Lya8^3-H{ zV3W%DJ#enAUrD>GUpGGZJ@BHfNj<RHKC1q|+sDGRu7TiuCA#SA5Q*Q6xf}vU&_TEU z0{#5{EgAjnBK=bqF}SA2G5dOooNY(L*VJ1`4WC`2eciT29YFo^P-i6Ctrks*#oO$o znCdS3n2~5tm}xK!1S-+?uh5~RjhId!Zu(YkS$iZK;KSGXw0-z0(}Qxwk-UplskqXt z(W6=)$ky6rA4SMD_OZ}&dd0)(iH84tMU%SIXrZjS@xzo}x-w8V7i&$-C^_8Pnz)&B z#2;iIJtEq=&658_xes)}T79%R#f0`wX(BsB(wpS`G5RP|e}}Z-F7^NV;-LPIS+lax zY8DKF_H&>G`Z@z|_wD)k(g5BcGw?QFJP6)*K0CaNmjv*>uQfG8AKzf|mgncvW)t1y z)5a3PcTw9mbuJEYNIw88WaTLxCtb*0MbCS;5vEVarO1%ce?do7P?^)i)ig$@%NjaL zL28$q`@{%o6ltBmrd-`Ih}EYvnCqR0;sP7I1v5dtf%jgxuZY?l#;(p4;G;w>;poDF zN9>QY$m{3g${&nfO=!jT#mb@%OqTj$Rcx=VYov++b*c-G8gga!QTBv^j3E8ycc2!g zsy4O4<^^!8e#5Yoj34hu4_eDto}{3dJ&V?iL$ccFCDyG$Dohi+66QszWxnJy_Ac$) zA$W@MG@4W`m6SX%X`q^qwmCbM&o)Q$g-10<8>rPBJY3dP_Fm9TK4WbA{JjHau>4Jp zs#z^r>5u0RI?Z_YlXn@<8))&s@vMgV^~e1BK}A6>q!xPjt~TR&9(A7G8B7Y2vt(EM zzRNeLSu_<bg~@k>k+0Df%6BqW27<K@ZI75}YFO?Vb^*Y0hh*F1FBbpvavH%i;DnPe z2W>Ek<_ayKrny4gM_k?P{gpG)jX~G`b&h}JYfaX}jctJC)2=gMtyxn9)bt2mQ<mMh ziH7#*=oZC07xFKLzstB^+I%f|xcoy`85T|{9NzC-?-vHwCUD(_+OtFwO9~(383to~ zBmBm|QB#;gZ|W*v@%!V$yYoWmHcPu1;0#cdQqW)#eM2ZHD)+9y?Gk83g(&*?G+BHW z><*vxyWq3P;A5i}4NA$<r0Nn@4|NYRN4_AeHZt)K<RJ}^{_9YQ|B>$drjSk=Km+^S zZg~YA34u<FnS_8AKz!6q=WpaRQ``C90KaS>XIUWqc|KSHmQBptmM+d|k1eMqE=;I2 z9w3`=m`&J}N%(?I=*=Xk=P9xxlb~f(5`Ig9FBW|<X?l>4Ry@{wr%wl~T=7VT2;Y4% zIY2x<E>UXvm0Tqz*Z-P`jQyJxkx~FaFA#Jg8;Ho7l~zP<WSFJ%$z-Jw(F~U_$Pa}+ zw`>vrCzgoCMkbcYv<<aA<S&q3!3)DF;!bQ#Et^3;##%kyR}joZ4fBM(%Lt!PFS>k= zwofre!ORk}-zoox6@(?NC^O^P$S#3eRP3^C`ne1P9745pLJ1h#j{Lk$h?)esG~~ia z-=YEx$F&S}es}S8N^}JR?e{o$yno#g6={Ynpg{bfz=bNX=2HqR%PCN=0#|-Yf&a`Y zaIgye@KXxhkW=9GB@`I*DFvR(DR8$6gg&K!qRoOvCsp9Dzuq&IewI^UiVEC7fz*{n zC30KrWDwrV%!YGFoSt`o>n4;ej!7kIjxbLW2paklg~?4?Z+K7xH$CO;J@@7kG6i_P zh_l8!>QnHXms8*mD)8R*;A!<42rXV2_{KQz&%`u{sqFa#>3v>CSZ4o-jpzRH=u(MT z?jXPZZ!BDl<iEt4ViSL{^046Lt|Q43T3J5uUEEnu62BRB`(=w>Gs#{==$$6?{PH`{ z6$ZHfp7-hSj>>`eKoWQ(vhYkiTuIxaz3W5Kb|ZqHOcg#ZOr4%obu90BcT#EZ_!1>B zjK`P8&vRz1D``6>@-VRh&Y7h>b^Fxk#ZT6KNzAwW6`Xrlg4BI?@gMzL9Iexx(OR=X zU})VU@+x1{U_s?Kyog_NYSwHTeK1J+A(YOUC4IjjPwW9(Ci1vnHn2@v1j8@)a)QQv z<yR0Z<6pr4m#SE&fNJ-Q60N7owb{04pZZYhoG@Z3+!sx1aBE@UN}(~aq_@rs^Mt?D zG*T@LIfs}wa@j$D+h0t?#E@;o&QKc*ULM%Si2|O}#&3cv_*_j8h#zfj_^<tiUbT!E zip+=Ji6u(uomi@$;Hdl9jv)y09p&{2^2DVO<nzBA5Fc%#%Wa37Ta2A&d+O-@Y_As| z%<dA=L&}-E6Gf;(k2Ic%0Qsp?_h#6qjUmbhOn>&+@slzg|Ls9UnL!P?L^%w62hzi- zdn?@ci)??U$_^TPaY^eqaB)r%YUy*ZMa3XP(c^?1dOU>p#T$8@m0~3pnO!()N=|{4 z3T(PIdmg74Nq6auZ)93qJf^GdqWVy)%)at54|{)x5-Sm4YQt*bbn*~Y_>$Ey`&U#& ztEqzdJiuiJhsQjeK8^`@XJQM7v5;7(isGs$Mn&I(5B-WFejt6|Ps`^2Zm9JD<+nQ> z56I$1k<9o|U2e@Ny8G%bB?tAJLg|Mn<O`l)KZTE9+eHnb_^@|Z->adLUV-u8%TNEi zP5;>*%eQ9ApG{K-mT$Z0cne>nA${tu@J;$*dw_p@$iO%G_Sy~n$re7QODO#wcFDl{ z?=|TUsa`8+ccm`?EPa*L`%Nx=v--ixSG;)@E;k-<@7KJFRQ25yFq72%ewrV0@-<xz z^VC~wBqHbJuwU9_A(q>o0VHN>@tLXJA4F;y>0z0!4EXCw_FnoK%rt6QmR~dRn7YTs z`x>>_JB>;b1Y)KS<9%TJ?EVRt2^07hxhE>{vfTaln2miAd)`!IUe$(q#m>6X>o<6L z>&F%^NtLw=*ZKdLdw|njwPF6>{fHw=&;0Yl@wcY4>ZjdZ@K-jTve7-Gz&$VK9&2yA z-w#flT2*)B&Zr3n;jKwB=w(3b3rjvIkurou*lS|Mw`)*vJ?Ie(x2nGQs8smZ!h(GR znBG&J$OxLy<WvuH&fp+s6C!E#x3j6+8&)+jGH()h1}x%s;4YL>W6pReyOdDQh+DDL zskp)^`#D=?G}Bz&`Z|5s=x?z}ou1b_(ex0ascgCs+pyI+FV_8!Vf3Xo|9DTG3#End zUM$sUHxOY5U8E6wJ29L-ffkJEGS|xW-L1aeF+|_i(59eo^Dd@u8?Lg#>!~3MjLRvo z9{b%p)GrX)Y)#?8+;dz`fg4re%_|4#PgqEcVT}-As@C1R=!CNPx7>?4M+UwakuofC zWQHXwmZpjWmMF0-k)`h#7VWD2MH#Kn<$pgM?{mkpM_QvuuJNn8@+U;bQiU@i5<iaK zF+o4gj9?`0DiLd_rd*QKl&2Qbl*4IC?*waROtAg+=RxNY(nq=>_UQ2u%O93Mb>MD^ zdp?)$Myl4vr^9S#hU4SLY;51^emnkEct*!|S$i>(V1z{6>LpI~GAD8+>lMZ`0lx^u znPKO&g5F7{Zm$S*h?JjS;D)bEtcjQyY&JRm(?Ux9MFg<*Yd=;wG_L?iC3geU@~@0} zLG)suj2pg|cU>V|!0o%?YsGR5i~gr|(AOCS^Iya~G_WOw)V`IH6p0TnnKz0<$6%0^ zBK5pOdFekqv{C|m-hN}cxV?p-&ghk09N3>dpHT7OT8@@diX=W5K7Smm4(0HYFE*Sf zyZefDt!7hLj|ZB^d_C@G9*601gn7(MJkr(?Yilm(za$$ne%h&=E#}@Kx1)O>t|d(> zt08aAn11)R^@npcmicyo`384%w1FjgD&5;|`66Xj-pc>H>w>%r_cl$Tc`I}8FviP$ z#-i1|R9s!`-l2x$bJ5YBCGN@EE2VI~B4V&%t4O^aAsMUGSJEp<CTGlBjIV^#$A}&u z^PbtAnO$F&FO$hj1wXyX(icHde>`qB59aaj*+<WR>`9hx(IfY)@wiow{Jy1MYAgq0 zB@mrt=_XRnAtie>W1=grLyO3wZ*40dfK=Q#+P2b6nb=OTA7F2}tAru7HNG%4gRQae z8UAT|fHZgNHrQwz3rtcV)L~+zVJOHE@tV%X6=1i>$~7m4k{mQ`$_AZyOxj0zX;uAj zv;2g9`Gmvo{j{pvRQdcXQl0wP+om`D4bP1kxZJun1;brgN)xm+_P~L>b!ugM_%=1) z_kx{#t#OrzA_>#$q3C7HDHy$69hFL!ZsUhz+AT_fPxmq0zZ~_t&`)k#a7d{2HGFI) zvk!R`PDApnC6AKXz3vWUgdHk+rRud&Exs*!``+=J^`uX&X+J9onzRak(DY6Okl7WL zSSjY@+)cdS0YOrC*-D9|TD)>Ltzfi~<KyAf*nrm%WaKda2p6HY@ZQ6cE(gL1A#FXm zg;&~WI@<<jb5`08KEg0N1q)^~E^8h+ufuPNkD6VTizYQuc3Y>qsZIvMn2krL2&f3T z-*5a&A3V+)z>2%uNQhp&%HIV{^K|k-If#|sx1Bs7S`KB47(m+l7%6>)<;MxSyEijx zu2h$4`M-f((BV>z9&ge-l;KqdU8wa>uxPtaH8JJX!KCi-Q?&?s2#<cnoS!kRS+lhi zlGB~mNaG$OyZ+c)xsD(A+84zxFSyq}#V?h`qE{zNHE~_MO2bRo@e^{cGHbGy3oSp{ zKGRs$;7?s;-~~+p{CX8r3+U08mYM!DY!Pd_&&>Q<3wtl^DiQEdTkoZ7>{BRFQ;_Gk zv3LAbeeAhZZRD8cgYr`26~-f9Z($OWL063;5rU+cGW(olu%g~CZ{g0L0Tf%jN-}b| zS&u=c3%T`NP=JlpzE$hR4;b=BS1eVf$u5q*JR_Q%$+NpuVh^U>&%I(c!d|5QmeTJs z2(VbA){S`q8qRVr_o-R!UT%c%6{_@r8;xM5@7rIX_bZ|uXA_8mQm7U`xHm`y(~dgR zj;W<Jd=blNEoiEHxkdtC%l)s7V>VVj&zJf|h0!Yx10U{+Zip@|<jKe<Ad*tI=%DBo zY6&$o@=i?69NvgmpjJf_8-;O&xw(EehTca#b){#9oPPm$cIt{50OLt!ooRQ%w3|V7 zpIW-nZ8vROYT9;<+UBOz?o1oB@C(N68|gG!>xsU+vzOU!N1V#<Ot)PvGr^b*Zo5%K ztPzjt;#z|0MF(9{0H*cqwp8F#gP`$ST?Lh*mlf|tY{%YXX=(J*7|&zg8;jD5Ue=}b z{V3N^MO;|)(%X2)5NKdzwhtGUzKnYd%b>~4jFsZvwhTMA1?(93^SL1LObs)}r@K_- zI+`_?F&p!jc0vmG#%fXyxJFvCcd4HBM<<)Fj!BOuiwP>hgk^&3{HyPWmxRaW&uM04 zE35Y)F*h_W#wkHiukf#8ZiR8n;<Zd3aP$;{MBMh3UjjaYrlIr<U2X7dy~jtp78_Ha z^X}LwVRvri;$^PEsQo=<G>Eo7>pbCC3<b))7FEtEI&m2%voy~9QQ*tOJoiS!`Y*KZ z9k70UG}e-L@ayJAEs0OClmypMbQn@!V9~(`;!`_O6XUpJe^hbT>ZBQ{hJD=An#F}r z3_}JyU<I(+98H!%L`oXH4ZNQMPtyEflJZs>=Lr8L`Iun7=Ff9iHY1X-F)@Kx4H)O6 zCfae{sZO-8Q`gp%@G^z-JnTt9)b#_$y7SXwS6dfjyd0ozn?P%hZw(H%?-|46Y-cY8 zkI3NYm^f_l8nYz3&DxH>eK+Res^_AYHG_Wi@<ug63mZE5!;ZuD1x$OPe*MTz(PW#x z!|jquI{)7J@ZLX)A+~u3p%_7FHw2%ZCAd#zbM$a#z1q~r%vr-Z{j%05t~7%g;%@+L zJD{GW8-fA#D9;Q+23z#9Iy!>^#Sp5}Z9A7%sB>;q`KlQRoy3_MR6LF8GU6k3wXtKw zw{>QJy+~V_x<>j$e8L;MQX9o5SD%Puzz7foqFCQ58#1NZjff`CnB&0q9)s<Btr2(W zHtNkYV~}GBL<%<{_Dr8ntFrA~syj0@^F3I|UZWh6fzCB5p1S51-Zj$bPyNQQFXa8Q z)w7%kjz%{;b&Qyy^=f^)i%#G-<6qWRuRt~5dL9da+L`J1w|kEnGDw_KW?Yt7DB|{m zcnj8w+Yd$jiwcLQOki;G=Mq%DI<dX1YJC)8S`c4mNGo!78gfF)RHqsvgxwlL)EcJ6 zaEa7Wf~%Rc60UG}63*u*w4~9aHS#5fdfM=&g&43um#R)a+=@kPSFDoD7#7Kg=||bJ zl1kC5x>Y%-7OE)g#XQD@HOv-K`=XHyLPok|+E%#Jk~F4*TutFaHB!W`3QDL1qOa-i zpY#uq67A1t{aM*;zj%es0MCjUo=A^GFc^P}&#uo!6L$!)N6nelzGa|VQ#R@{^-Dw5 z8L;m7Mu#{JIMHi6-=Kf33R*FDy?qn~ZnBTELvFT@vgXx-j5S|=iLvI@AMU3aKjFOe zg_zo%47RE1$y)xu>qyFFtdD5>HIfvQnk5`AGmi+;XfmP4YYfjbr2nK6j6L-U<9JsN zH>-*TsilT<)W$6Y-@xakVz|M4K9#-<_<W80F=lM3W4|?)h-3369MiKw!p9dl<x1nX z!hFl$0fK?dm>NwSEsLIw?CD;5iu*c&R>a;f?5#67)GED_ROq-#V822q@@&{Z3X!aT ze3?Fe7xD!9*;olgdq)%hq1@JLs!ks$TFM^U1)p|_(xnXu1Hs#u<~yb#>Gc+$5AXer zmAU^R$+}yado9PC4zw53M;Mf-&*y>OT05K){&4Cv!)YVK>3)AWt!11gWe^3N9=%G= z88ejlHRFgI%q1QfWo9^a6)-)TN6Yk`(HL?&xC<wg%7z;-?ou6_NgJ-!LIGze7I+6Y zo2GP7#INu&`zS{4w2xxstL)=0)6yR=%1ld<BtX_*Pn(%D_q1uotckSx>71IJb7~V^ zvvcOy=|4iyPWL_|ADO0}MIeBChZXP9_S5t>ZHDG74SKvFTs0=zejJY(skt1AakM$+ zLlFu<leN^`Jm)U+<Rq_G)R22zz4?5Z{d{^J(-CEKl9!p!Ryd}A1=wJG>1+y3RV2#1 zGdQqFJ2iey8NXh-?3gfnx<Z7>LVDUM+vHx&`25Kh$C0hn<c?m66u&xf)v6Lg`9p{b z3fYE52gJO2v(OsX8XmRNC&ZA%1Rrfci=HJ!@p^vv6I1It`&r!bn4go!_4ZMn_mq9y zrSpD&QKs{Jgrn{6F$i|26Vfkfbl7=Q&YZEw)|n^SXybjU@1NA?c9>b@!)}M{|6m5` zTxRe}{oKgZ%j^WQLki4JAlZOMdrgD57s@?Z5kSExfJ!kCFr8*PB?5b!fH3BN-sK&P zfX_45s9)XS-WD%0266jGdTX1hH>BcL-U7Z!K7u4fyDI<v>NYbI_ZQsU6BMbZxp)!H zk+g`^<#Zu^pxf8O<M|ey@MN|pW8R%-(}hptY)B>4OmY<n0@&Wd4?xXPaefrXk>58c z`(M=7TWux{z}tfSnfTRRG|B4=OdlGOTib_i^b#rQdy!hHjzJi#6hzoZc7cz<%`*%J z=8L8F16d5ZvKXwfkGo*dEDWrv0LnYa<=Y5p4>r#Fr$xc3zP$v&MVIgqbU>g-7M+!K zWgI^>U54i16B*ercO~1DFJfp4#><0XXs=WNqf#&|5^l|m^c~hX4y=XyZb78?@ZB)T z%2_4&Kv(K$gSM47tD<OfHn6HbiKbTbmf@0Ry!eHN8r%zVI796^l_FV|$PDi5nhkoY zzHMb^37Mkpx6-VhHofExzls0NBu_kI(Hy=&X|`X2c5M6#mmkE905tL^{)aSuh&Z&; zs9pQ1(o^{!H1#su;?C=V<+fcbh>M%}AAh>@iy7usiDXw5iH#xW7s`r;F{<@s;^YH# z8kKI*Q8R|u>m7A@!lFzbUt+nPg6y`bA}1m<0?ld)8@1&%oN5sCg_}5EObl#szSzi& z6zhZIQG91=H0CZfZfP}~zZ>1sBHiM5pI^$kP5s<D(x*}U3_ty$TxosnO!BxL5*)db z`<|T6g(T)^vf1DlozTNj(y?~hkrNAe@U9<bIvIzEl`d|Zkw#1tSB+lpEYVB)PBv2| zy6Q!|4a9cJdRwfCfzO`C^8noP)XLCHKP5PUZ_qIIfv->Y^@jl*YlhM@`t`knV?e=M zbYT#Ale_+5_QRWPBESy23a$i!mS@auyVVYBfh2p4uh_}8ge`fh-A*|;2vK;1w^=H2 zSSS6x2(OF`l``u9$zR$567G#P<UQaT84|rq^{hX+KJ?Ww>FoT{GY(tl6QDHr%{aSr zQMf99{tV!k3I0P@?CSoAWAG?oTBE~9{IpH@8<ra1$5!Lb@ZBCu3?|EjgVR@q+vD8G z&u(y+2%C13@diEO_V^^I@M0?Dxw^MaP1Rred1l&K`ITDY&tWrEn>G&)^yzUd#e*G; zc8&V9Q}1OmC-TKG-6MZ_3N}jY7#TfbUDd<y{%8D%#E$%Xv0LPaijer1m-wzPocn{h z%UZ}vh#%^EH?U{TT2oGZf#M}#kHn6=`TMxx_WIWpy<~$UHd~I3j35o3$xKg=0w6q6 zOtQBx9!#%kKI_^3-@Aj(O9eP*=rDs6!3)yAW{;}BoR+=MBXhs~&1#6rSqB5(qBor< z6m7pn6Ief`r9jc}XJu3Fy=letW*up}&TfjAH?L)77m3d5#H0Cm3Aq#?n*4^$yF+9E zzKkCv@ybpP{28;Au~$R>`hY%8U-xTaXH!1sLd{?ii{*7@Mna?|eDD7J{^cc_4SBEW zcAkj-d$;p$<)f_^aiKN*SHl>t1{OYun8UU>bHEkXv)hg0=76h+_rSSk<8-n@z8LaT zuF@S3GgJzMA~g3{{9;pF1*6H&sTphYs=g9kiUUeR-cXFy5xkfHYoO(o(PSNCTZ<ym z<a@B>m=_*=n-*mJ8P2AA6>ICf-Mu+XqiH56ROU2rTjjde<A7MH)+H)Ajb$`oBtry; z-^jjyAIKli!*TFOQv9*?`-m|WWa;ye`Tw59ab>6gv~;`OR6uj(kdHl-^jV-jrLY2Q zG=`J6_9q5TrJQ=dkvRE^7G17WO+=lG#py~Q^?iqdP$LEzp<G-vjuaS$!UT%wQmyw* z08=qaX<$`~h@<As0-H+b&3lVT<zA@2l+r9`eLmL+wS;r%p$>mU2hzpmyNM~6h)~Th zaCpp&6P@f6(BU65z@MtBM$Nz0TXzb3(pP)8^8;;a+BfolWwiYrItr%K@m%$4i@+}y z5`Y)nv-CUz4~?CGhkvejn)88zM&uC7Y2v@mvGhtmPisKJl%+1O_(ub2@tDn6V;Zm4 zrh5m-D*zi_aw_%ITT@{AZO@%m1WY74P4HftYMR=^kI&u_p|55J%~R7Hn!>Mbk~Ra- ztS|1SS%>+}5*w^j@0s!Z5Kn&he_K$0Y@wMx5%fU04d)@~kg3ychuFTqM8lB2Kg9Mu z-99P&7lGMb-y;)Rug#$;AiT9d0GuvJq7hDUsn^N`41!gve<l9vVullMARC{R%RAZ6 z0!u8W`f9bG>P_6y623VmY@pG5^T(zu8=+eZbb+j4ZwcEI0o_8{Oh1j+IN!9av4GzQ zzl->ddEZGI{bD?LPt+T<W`aN==!vz8_?^XXF~76<Em<Br*YI3;d7*tMSYBiwBFl^I zgRH2Vgeu)Mmd&BGypE`-#cQM~gYcretba*FxZX-8#`ctOdW4)gnfSInF}%1!44>W` ztHqyB6Kq$P)Mk_haPZ|_dLK<vY<*VUy+C8?z^cJ1N{8g};T2+3em4GXV(JC?D$~m- zDu#N%mvrab-wZ>2A%~&zPe&7;&|;&1W)4xHIH$nICJKCk0t57+qCa)$Zz(8`QUq2_ zrIWwB>rRvzhKqP)+qW8wNJ!PrHuP`V*+1ZWXYf7I;dfEdE?K_egGgwdd-3Y2{4ZE< zpPvH@K2>!wKd-lukBK#f>fRjt!Q4OhBzIK9isg<m{0dT+Rtun*eCugCUL`&<VeS>D z+eziV9z|%9-)&&jRg|`OX)+m|up#eCaTTO5r?bNRR`4s1t~Q)}(=@}$96_c_$}QPU z{9eouYY{{vaHO4Jpn~{O?g3O~<_K=WxK(|l^k|%c33D>7iT~E2_TINqpDaW^mP#1J zp~NXoaJ4N5SjD3NZImsS?)c=RjDIjwzYc{jVH}TgTM8guYKe>)LxXdm0fX5a({7B> zQSOpiA`jX5T<XJo3hK(AXzwnCpe>x)jHx_k<xC72|Fj>@tpvAoermn?djZ9*Edo&3 zC%pI89MG;EC1w9xQ8JWbp;8AM*6a8h&NS4rKPRY~T~{urXq(x4%zI`kl&u}*hLo2B zx8)>hRP0TmYfjuI1g98eB_kwn_z?>t){N*V;8&s};(d)>?9iWFoIl|6fXQqb!_P0f zTlr(&6HU}RrJkebHpaiXvSe^eFX7}86Ki2wYPPTVt@XmRR0s66uo|`+K8;DpLyb%m zbjyKSz-j)PTrrT;f{3?p30Ik~=CJ^dHA44hi5cj6yB+pA5?75>S?}WM*~6Tb=co3) zMkC`fzuX6Eg!aBcAdrx0Asa%!!4zJ$kg6nGov`57ntFEaxzJndGH>8;5tSj5M5ECl zZO<8zFmK{rfnGXiq|h7w3wxvtgfaDK3P2g}K~1RWbHTwp%z@KPIl-Cb!<lX1C_mf^ zPG#Qh<Biy>c5n**R?j5*1kRDywiRlPS|QD$(Wma@!jDmw5yRfv7X0X6#F7A!!k9%e zmiG@7YHj_ecG0LG7%n1bEPjcOYdxM5f8!Uq#}`Idd^eVO<?Xf)j*ceZ@~5(<<HyHn zy=x9%C0x*2+~)Ari1%~!A6P{8r*?BJhr<6gB{hV*RKLElS~JCHUGJ9TaJ^k7ox}a- zukP%-j_b9*Y^!ZerJ1hf=r4c#&tTlw`SRxlcLDMTs(Rya_rkEFT(kYemm<N4fA!p* ztWUVtw1ELKC?B=xtnOPsDE@Je@Lz88;ZK@12zWcd?fTSdTHpOo6dAyuwCC9koNwJ~ z)#wAIH-U)Tq}dvsS<R_i1-BH$4|GonyK@Sixy|mJVrTBG)ZE$5oZ?$b;)m(O$>kjV zpkk+loGX(&q^>kd=M-~n;~I#3Uk!u0%NyoAlXxPZQ$SgVsc|QSLAR1ATeST#@+4l3 zvA$aqitl${%{?eOWi=UapcEn*4g{Yt>{=ixy3cutxCz`M<u+=!!+>vZBN_c~rGvjc znf+Ej_}e|%Z!-pe`&H%}$|^NQv<b^J6FO)uZ!9tj4Y#YlG3Hy?yFc+szcq}^x;<P{ z%?()aW2#mTA5IX{jaYu>w=kwqM0c(XWkezQDt5_twyCt$%@LX8tJ@{tu_hl!r)hqu zn(14l#DDz=jbu<zq|87R_VJ6b*SeqJl$ucM!B|>GnawsmK#8!|{{Ba~t;))W_g2+J zlSeb~-If^Yz1sb5LDhcI#OF1sNC--A;wJvrA6+bLfLG^zxe>pB)xJF-S|>RYH?lJ9 zox?X5ma&ZL0GERk6Vjn6W4|~PcrYf+AB>`3+c!Fkk2(7NG+fB?jG@%g>eBI528;L) z2nsQCD;nEx@PWfdpD3-<x;8f_k$y5Z<C<SY%8?|JA!-D_VHr_@4B2@Cf^$MRT_Y)h zKKBc*EP=7D7O(WlsmZB77<6D9Vv!3ftZb}D?Mh*DqB1ssG#4VBcS+mX90iNWOC6V& zivk$PBi~>EO#}>t^<uRj_vZr{BcKJL&bP3)Q<}cP%p6+rZA{RP?p08{8Plo3&qQtY z5Tn5R`q|uN#Y-yu4L;ZOgvJqW=`LI8SC$%|N7fou^^dVM`*MG!p{D&|aH+Q&l$>|) zUoN>-MXZPk`tcbgW4-g&F<Y6lb8s}1B*DTw5uSN(f{XX(v#5Wm%I2+h_dy37=}sxg zds^qN+@reK=kPA>n!HVJtbJqay*eA3;OM>;TtgS`dlrMNo@LaVRP}5geL+V<)TW;B zLFzo|CjFXd2s(~W4W=Kc-!KII>>WHFo1udJ-)g09w`nMiV<oiWU{UBBi*AtMm(6VB zvh%4HDBeh>8UPon0s*5{(0PI1LMhKhq{Y17Pci1hRPr|gywS>nxDTp{{0sObwco-& z$&BLVo6kX)H2{DhP61y2cO`)8a?d_QmT$2SG4Ge(XZRqi_vbs&2Qu!A08_&rI!E#* z+CC2b&~{eAM<7)f$fA=Q%&;?(Ieh_(-@58%0N)#?!-CNQfJSY-B^<O^2K$Ta^0o;( zTJI%K=2Wpor7grj(@0V8thA#sGPShTys!kUeVgppbO7-5dmn*V{0Imb-Ym1hIEDC7 z_@ihDjJ5lY4V?3sZTb)X{vW1Ka-fuQ&e-jY>15Y^!ZNO#+eWFI)f@bpv1<*Vu;(Gn zoK=Z6Mb7%^s|V@dAl_d$KFLS0$(v@twjM;iX0mC-de)zY+8+h-G{RZy9k!LH9-Wk5 zR+@NEk;-9j?>9-?&iCkw?cy-+yIVd2&-kAQqsMXO#xmnRa1f+AQ_~>)pckTN{aw?W zy$hCdiaSj#Wb3Dz*m7)xe#0>ww&W2Vyzgzc#?TOXWJY?U_narJJj4AwH~FHlWH)ua z^0KXKh&-mQ2mL%<eO9Cnf@A8sjy&pQW6!*sdzd}^GT7g2@8^<rL4b(c6lOmLr1tK9 z9irpPvu{Ve@)6UHu#+GC&8oTIBQf#nUWrHY94>?;@4Y5(%+EXB<kf|h$~?uL7)!i5 z%w#S^Q(u%=Q)*_!8UHauTAfhx`am6_NO?M;iDYjRUKqQb1|<60;0jaZra?t~ca<sf zTNSA_-0Mz>rRTwe)DnBy7Kyy&7nLn+x}1lgwx3YcyZcOSIg4{2p2kNVmTFT$s#f|$ zLa9W}9xtDgxrD5Qp)fst$2{4myY)v<vbVN@x{R9n-RU0>^g!G;G4N0rr_*(3=6Dr^ zT}kjgQ3h2OuP)+$VbGGB5#Bc~8E;{EQ}~#1KhO|=ybn45o@g59?VN$=MycP`8ce<m zRolSH_h~bkeBX7X8e~p?l*W_`0)JJrdopIOW*3s1-WMhX{)~G6z8Z2SR;#WujaKp? z-U7FUeCC>SRrAaK6zBx8nNv|V;1^3@1eRM%=oMS}<o5Zds4+|!v#JAVE{BtJ&vey~ zIXkPjwpsW>k^%l0&gXv?pUmpTTXyo*{YgP8j_yEr<!hEYp;>wsGXp!&g04tS5b`yq zmI-x%#2H>_Zq`bE4`Q_)Bk>aAyl6orfZIJ~0V2DJ?x`k4N{{1k>(E7&{HuR?Hox+< z1)syEep21vKG^it$I>&JpTpDc?Z20*fI4-+#8^0=s-Ba#P$#|kE25kBT~Br(MH=5Q z3eL>kRH=C5WBuAO^%5(pUfTrJv)Y1G6$KmV`^60=POQzO;g-2uWbsaA8lNFX(B>aZ zK;a=Zpq8PArApX4UFj2=Q&)>mbvwibF)oTo89rjMroe4%?yWJMVb&E57Zi9uLaHxb zquPwv4*EMoO!n~fi;4mDz?Y~hDZNT}!U8q9gC_HvF*7x1^_xo}`EOM?<~emtSBrg# z5VnPOkqBB22_!-j1-#!(x30>e3JCL{z)>nNhXUsQho|N9)4Jg_@n!0M4PwhyeTQ`# zf7(6FWf6{C_#5zBLDl31@hQ+JYi-kk;>-JMjkVpI@VD8E^uCja$6}9jx791gDmZ+O zWPraN-;P&a*-m3(qSGNvh(KS9kuvuo${~0VKr4JDnqC4>>pwL3$|a2xa&7#GY|RDU z4@kvuEDs7TzkoS4O>#c8t#w0H-2b>O9tkpRW_l4k$5jJj>Qr4o8lwRb_xJ+$^k$cv zTIa>ypQuA#+OThqvy6k6TQY(cv+Xc_6efZ%j}jMhe8VB`oUr??_V?oJ`FN40QW^ib zdqExPEBjve^V{|}P@ydPS%~@Qiiriut_9z6r?4Q%G4J#%cg13oEypcPd#!+x&&wY+ zBU|MmZLn-BjR0%@mb@rLd82vzvEHUMJGDTJH@fH6lc>uh`r!occ!BM;E@@no@X&fI z!wbAWPcvSt*rOWE@Phi98-uK5n<>cOo3ax-b7FyReK=QqwXk06zYd0gs+Vxkm@smO zUZ7}+lH6Hr1#Obsa}jiPV+<@U#h|KpT8p<7;JbGZ-5>JBP$>dVHEPl-ur;yhZ`MT< zTLf@YlOHl551v6ZiB;V@p$=m5b*gIC`T3?n%Ao)QnsbJ1Z*Y-~eX;;esMF(8J(@a9 zC<2$&-~8hl&E1=a57+7LcA6MTO$fx0sc<fbG$S0M__a|gY4nhtU!K^g4MRt1aeGR0 zZ*4tIAjE=IQhrnB81~o}&&p6CYcL!@^5;+TNgj?S4-)~Th@$P21d%&8=JM8hw&YM9 zqIh6$ok(v5oZ|DJH~BoHXeAo#Frh{%F4Ks&#(m;<Z@e>ILK8aQn^-`-|0&FHG1=a= z#(7RL$&;WSz?sXIbb-@QecH>>43eN+Kh{isqckA7Q5qNO*D4J@m3ouM8Kofx@&5c( zvoLJAtATo`B>lE#DcSJ`iVT#3+*U2XU<}YR%n<)BEQm(@Y#cc9W6gD_tJL0=0EjfV z4gG(#y$g6$)z$x>zzCy`%v7VMZM3nSYG|WPG}c6;Mw0+a)KntU7u3{JOBI#26Tw%i z*h$pW<5=2)+7=b+{aS3jfYlNRBzUXWD)mYg>mCF3j;Lt<pYPu1%uEuoeSgpM=XuCJ zbI!i3wf5R;ueJ8tdk6kI%O)`~*nxBoRn`Y=7sxNbuElrA2RKI7p<~g20T2BjXW;cx zpS8CjvAD7GXT0cN<>I54jR?y}`v0o&vMsuv-Qegt{WIvA9zxf556#o{#L7HfvwxIi z%+vF8nkx#LTlyKzEgI5XXF+r3n>6RfW|rgMH3G}=h%`54FQ9GxO0TJ5PcOnf9Dj?4 zk3aHRp8W`~ktlW*WwSak1I|ip*v2$_Ieiq)ns3)LYu2~9X|_DjV}@$#e<~=@tpYnz zAPlDY4EqMC@RdZ<-3{vMYzDLX|G0kGJ~dqY+XxLk_-6~lc+e7J`LSUZ8yQQMzYopQ zeN31|dQiHjK^6UxTxe6~ieqH4xuwD(_Nvo&8F<W2<r-hiQ1i}97Io~cDQV2<mJ=&{ ze4cL24R1LLZuaiBz@H8AE7pgCDEPScSbcQ*fVBt8p;8SERLNuy8b}>ar3lc8^UnJ^ zqOv}dej4<b^PdpBm7WfUFu(kfo1YSISh+!jZH*mJBT-a%h?qNC$k14$LcNV&FIJhU zl;K;g-&hOCRXn0)lrwo|iv=@It391f;qT03sr5JO4_PpqVk2b=V8P1TpnASliV9K0 z7Z_B5YnhrN%`GT>SHC041_z<Wx<HgSsg_iVh9<relR{ZxDy!r?i;?}m$d5M{?^Vm} zhFBjZ?}-ccnoWhY6T8Tzxh3xF9e=7lQ+_b~dB%5Gu|}~8?61Jy==C1HaAOO3{qHEC z*-B8&Lcd}g!7?oYxJiwT+a7#!BOYC?>m8>#W_)G3{ExcwuV5W>@5#)Ylknl=OJ+7G zaEAvq{2-`7_s{6A?SiszD6B>&ArbmCin5D`wmvo}YwxaTEH5m3hb^o1f$9R+deG+E z)-N3Ie2^{(F6|D=nsZdH5t4G}81VWhR&E~AkUHOab7v%2cV!h4KQ2*&x48`wm%7am z3*4FP?gaIC=NJmp_+Ins4v%-X?x0|b{+;H{EiUHg383nk%#7l?H##<|t0IBVB%Ika zoCDS{9koc`^V-p!I$sizCzXjFzZPut&V{ShRaU_R5$eh<(QTri|Ks}HCC$0@xp?P9 zR5Phrrzh+-c!CuNuhVtyONQ)Yn(M_jHZCt@hDM2H_~D9UEkAUzv@@`5eL;VP8O{kZ z97BeT+m!&+k>3m2Gs;y(>JY|E?#r-Y^SeB47#@l?)9AM&C)k6p!Q+mGu;Zr&HAbsi zf!%*SJi{=p_f{^uNkif5nhaJ*Gw8It2lCKZMdDuvTWBOb`7#U|Zx}QYat6@I%;Qne z#N1<vx#7$~(Cj`0nk#VMX5R;-)8;SJ3R;f7C62xaK{t)JVzI)BmAY4ZMS5+*8<Fj# zP`Z1BP^P{4z?Hc)xmcuO>%HgpsqtZf-Z;8l=^hnXzQ{c$%m;^p?gCf5GdWMMXW9U- z5*|YulEGFZw@SeF@{TNU)yP4zRMiCKt-uvbovJ}@b$3=Nk7Ybw>fV++PdKdbc^>d9 z$GPP$-7Z=nC{`ZNpmo?vg+3f%!Oxqh8KABs$tdEAH9lye$Q!ry5F;sbc7s^%2~K?X zm8H^74m_qTjoir`c?Z8Yo;mtr@f(#e0xfkSs$rl82wW&t@AzbKFw5{ptq1fLJUoit zx4FlJx#A#Nwxhf2t8}2>Scc@WkAU1NUfdJepcYQ5webrLdiNBJt9M874q)|e7-wqp z*x>1<$u^F2pH$OJ3u%ejmGxz2Z`&4PD(GW{>a@u`AsrmAZ~{hQreOTMrd@l3C6QBO z5GBCnqB%ZCHN2bihR7EiD?HZ-G=6F1h{loomAXmNoN)k)`ds1t)LwW=npwsuSc;1< z?YI%L>(Oq69E-3DM#!7#wGE7rQ?*yJGua(f{aQf82wlKytwO2AkhYt?ZCN;YJ&e46 z$O8t<5<_?KhDUX;T~-s3b0@x+nA_1V;KuHtnL<)8a3{dKF|=0I$kDLC?cP$1$UhNb zg*5*$tDxCE9XjReXW)J~K<7Z<1|6|@Av$|Hbb{Bz(78}x6(}Q};UU&S$9i=gI%QOA z+2*Ag7M-y5!RTm(!ZObSceJ=eN8TmgmYAJ~pz{Z9%dt8_*9+Pr<n%v~cq<^*D*<lb zJ<#H|K6o8=)segg%;5Df+$0MJ<F<h}L01{~sIIa~w1&h8hg;bCVBFqQ0oPSq+@rc` zt9vXl-$uR{c2zI?zOn~_75AMvv58n-Nbc-QLe+^3b=0Q;jvX}?M+<ZTJD$vIU<_Ul z!?Bkd2jgfZv}4CW&<n>!f>Su|`9s@(i&c(h2IFXjmc!8sE!TfmXsQ2>XBTfFj<0YA zaCQplu+D{4+66x#Zj&gZ*~w_L7YmRmJpWw;ThsnlsI@y8`Z>X^r(4yY;8yoQaI1SD zxYa!*%#4Nr6bKOl(}sX3ggy!MOmfzRx%Nncoo3q=(o5aMu^_4NyX;@wV5@?KMJ}hV zlnC230=Ls1{=k=E9TPYya$0_;+obF|rq+!nbxaUvSz@|=K*!|OmCd+^3ZXrRZCu$a z0eKl^iIvXoi2Th*HO0Fw0s8DW;JP94Msta$e4dC#7teI|G>jI-GmX=6UgfYv7|gWm z_`p8%kF8*FbBozPi$okf;qRcibu+Dok)kyqT(Z6n&8-*^%m0h$#EJ@tHPVl=XTv{2 zKGKALgghN3?A9eI^^Z_!pMn$1p)E-`A6M{NCQ>D7%=`+a3_lCGI_iQC%BYE288x{n zV+lU4z}y=+N}kXf7xL=l3mGD0Ou8(pTxC^<$|lU#Z^`rxilFZfy|3B%XXRmZ_f^j& zP+%55+D5rNyL4tWL05!1MEs*mMLBCzonGP{Tj?KN=ABjH9b1*T%*vdj%Wg`f_O&@H z{nIOmxj44QJF7mmedaQ|G;wsLzYDg+j^5<j%;naO-{qze!GVpegto@KE$LMiW-2PR z?3O;7_T?lGg99Y4%qJ&{0tM$Y+Hh2Qu#)UWp{J5nRS}w6bCFC*$AOh7%oCWS&3kOl zE-<NLnQ`jD!DZ$TDbuYT@>H5|klrbETSqnqRW8wIAd&8KB+DNnV)n0~BjSRH!o_GK zV%9w=|C~bt&=WJ9;WW(Fovd*hs0}svkjw=~4)VpwEtB&v3|d}Dq<-izs^6Sy{Rgq4 zjaJB5og}o*eg(a#Jjo~X>^H1GEGio6xKGD!1H0(3n1J<?ud-mR6G@#fVb?E?bnCZ@ zB?z*tT*)f-_*{vf<1N!q;CQ_h>u+>G-(2nei*W-?!sOpr>l3gacA~WnQ(wtA4yH%S z@j+O+EoI)vOCV;gRJD)qU94$9{NG^d%e$5*?bM)m6O?Bo%jN0SwJeSX<Arxo=6_m? zwS5Lz4lf`}_gF4n{&hH!yZvGE7d81DTH%i?7n?ppeoo7?%Vu&l&D~uvrYfp813{r@ zwpGyFaU=qZT%$OKG;O2CsRmFY^BgFO0k){!jcWs?wUXae6omI9=0b)tl~$2|n1DVp z54I)qw%jnAShcpXF}9WCc1H(o)52fQ|0!IuhwGK2R~Wxyb^26XNE{W1e2o?aItOHJ zACIIiI>D{gZ{Ce_V($T_;C#v!I4#C62-j|o;v?IQ-gyAu0u=m(rjI@lOL-&t%PNl6 zXp-bM7bxeNOhZH@(oCV|55_A=zL|Z^MP)>m*fj_R{PO9s{m9>3o@v%@)&%)&HwUTZ z?qJzOCx`2`*)&Go74N#7ADOw(wz;(76g-KVNpYrKjXF$`N~)_+`{vM>6t@wD#xc4^ z;l%<?Rf+88tk)O<GQr%2+R}L^+mM$MWgw$Spo|jjGi*QQ2UsJF8cyJSf7U{}Tk#TJ zCw|c}?Bk!ouya&(#Es)P%PwIZs4vztyp=L)dio}}dK-@aKNggGc5j5sR}a&As<PhX zisXE5S`7)CxQ(npKiy&OXbJ@ewA%;9{-i`_UIuG*l27D~){)^pSZW}Cg*Ji4k6hK0 zi%$ypi&;IjV+MN|Y|n-F(*!@Qo7zJ>a%=RE)>tYUj$c9vGLfCrtD?k>)IA<=d^{65 z-kTI#xn4d4?5BuoxELs4BPtmdKXu~d>h4L)r6{I1w!-WcVoC4icW(u8DKbUozVeZT z7_3!@0aezs*vDJYHG3`j1g}Mh#$W7>A=KQ@k!TsOjrVoI-)eWZ;?wFOzvB?<cyzJm ze6KGxlc_0)rdkerSds#HhG$Q4R^|ZIcWSY_mkRc`*o-L`pmRw8guqrKngi)40RiMC zrU*c?nu&O+(O|x{3v|&?n=UHtW!n-qMQ6hD=(>fFK6MS-@qd~Z1c855@=se!L<NTx zuzo<^kYv3b^(+9-5DIVc8iJMidlvNW@9_ktR}&BC!bJR&BVEsTyxPApl+V)~Zqa`` zb`5bmGLM_7NFtYi=j2QE^Zj=Q3l1yDLa!?R%wl`Q&T5IMJS&I-_}zC6M6=gteRt~t z`1+|uBF=pL1!&fj?oJ3{K_k-La}bB|Z%*x!8D}}RkDopY!~tGoNqTjO!)=iKEadOs zk~_!Wkh3Bnov6yqX8{2!h7dqV1f6U4`5Nu1sfuCzz0LaCht&5-L4D7DmHH;JK7vzL zk&ILuu3u1Jt-tHKx28=Gp=7cJ(k3tA@A?9-J@)tRy52rSJH9|ikMK&}glowjqBDO; z^H1fQhgU02n?T^9|AE2tZJ?h9jk{Y($=9lxL#KD@*)P>DYIVO>cqc{cR(0&_e;Ky= zLiQHD9I4E|;fd2;CvmrYYLiO!H8}n)WeXn%rV$u!!-Om2omzxZ4rbj7e@-M5yTIGx zy^P?g%<!e?5Tr&t%_%hl{%q+Pt!ySP{<lYL-zYUC<JQU|ut~3pd9ceqbqW&g=tb#s zp&@zsr>6UkaFBeF@70^9dT-gY&mI3*NExE{524@lv=XobjU`Np+)1xW*+f-Gi6<~R z6KU{{i)3nk-hVN?o7muLh<y;$6ix)M=W8;5L-v_3))w6Vpz%;Mr0Wrx6FLs2t9N4z z?Ch0>l$^!U=`{>%$1k77AnrTsQd(Wnh>FGD96Zk7&qHJRq8^B#L1q7ZH;k>mD+X)@ z%Qk|^Y<QIHbSwp<bJ8WMwY(ev-LVH6!gr9i8ZQmj-jq-d`5Up9gQaB%EGvh=vh*ts z7P|6}T?5O;yX>*~r17RLV3V6MdnifG_Vf%*3FlCf)&pT)D37c>4e6^DLZX5?z5;E> z4_SiJW!h=vCZR<=A@S}X0`RAKfXzsnWC$!@qOt3ZT4KlQxX2PaRL9X%uByS~i=J)e zsLVEKI|WFlrRr%)hhb|~s*L}os23&lpY6L1Lz>rJo1uv6+!L|+mN`^@)p1dd><<|7 z*eDDs|L513oV-z)#$pYSZ^!t7)g~ipE~*!=8oy1f{kTYPq_n8;OnztYgakuk0;-l) zYg1K#Ra)4cH6X4|38#>+7l8NL9yGYlTrGDGoBbz+;7yEX%6{(E6CchT!%YkD(*Nqo z8bxOOfsBksXs7j57yrxfP<(eeMmj)$x+5IobdYy>>|=cck~G@k-REv=uu4f@-_Ff9 z45fH5om^Q>*RdMPRHD%|N;N+%aWgIgFYo71mJIufJKsH1G8OTYiOg3f&hH!GM0fJd ze%<~C2B=bQE6RS4U-P#)Kg=0Itz!##>E1Hxf!3NCvK%5@U@x4A0T-xK+Th%Z5?yMQ zDXTB*m-&$_1BNgp3Jl;romK6~v{fRjF$!KWPA3Jg?Erk>Ne}hm&K)R6SB$lhwoOw{ zks36Z-qyNq6jdlKssyD&JLD{?7(Ac&FodLYHci8Y^))4vFiY$aM~2AN8a2ubAXEM- z8`3JI*xM`g$)3F-O$d9;?#b`i%}=C18qx6;1w*V(!X8du@m#HAPeOS^8zr`Gypd{e zX+ZW+8XsN2qzzx@+=A}@rG@%UA-~jU!b$Ci3Y5s{(>mB<&vU-SwH50lBVBa)QFIvj zUUTfkUl$-Q?R@@x?(Y~-ot0oRfevh9_%|?~w5(EQmylEYX%s|`!f*s$vdOuHSswEv z%NWS%KDUkF0Q$7<yu|D$VYr603yREsIsqT6o5*tO^J=XgF;NSH(O4^urOd)8eceOl zZJG0u)()JaLpYj<6{aCYzHn}xH4f!Uo#C;uRyJRwoNTka#_}+{&#JIhvruO(tHsQ1 z)msPpPtK1wZ5TQ}=1o+*u@!9o#4^^@%KV8jEv@+zwa+QxPgGz;i9fNFq|~3Nt#wg9 zBEbdn5wjZx1Y0EbPzP{WFpiSQAx9>D@&|FtN25m;*=Z(p@eI;Gg?$Y`PXKMJN6|Ci z^ccI>;<0puEr;H=m3jL+Z^2E}=w?prp&b!chkPgT(}(>dVwt0h!6ZYtGVmoc6O$z6 z{}+VjhfOuJP7Xr96=aO`z^4;6$4Kl1u9RvZ%%(K@-2`U!ZRBzF^XZKV&`J8t6YNI- zqp#)o(H{q&TuE=hm=>vriNL5kIWhZReBlMMDS<G}t{%lmP3^6@o~TZJiDc)o0vhtW z+s;mrz-a2!>L}VbBb~fK;LX|8JtV$|@w!3d)meN6<CP--lIiXkLz7{cc*_mL*tgyu zY$f06q+k=T&7H_Gvvt4R0SN*Aw*JthO!%cl)V_Pe3Qan>LwVk*eW)WY-Z%^DvAwOx z|6h#Lg!hrAk<T0-`3Y`Hyh}5f&eXkzlp)$GZTD0?b6&c9vcbeAFN0~>j%lYMBAok* zs_>6+En9;f6@o~N_7ToLd>5^T<Aw+DuE;t0l&R5=K5w0L-r~n0YmyV*$0cM}Q)Y97 zd5wTTZ=6JQC9`a$_h$bnh84Y-sl3vUT%-Oa=OgU$=CI@>n;^M2fqVcgs#jERTKVb- zSVMtS$^3ZaQ_`OWkNlBiOQ@jurF0MHiKv#D_*X`Cyd=)bE6(JXFSV3Ti(MLYmN4UY z<kw0gNp%)HAwkhfnlM{-MK}Hn@?Jf?*%cbr(^}063Y$I(n4R}^k#etZqrifK0+*}6 zKPz2<XSPv57D(8_4^&_&1@iv)X;7*SWTk*jfpT&XiE{0v6{Nzc60s{A<6f#_-;H8u zZquWVg>sS9M@96g6Qa1s<5cSmD$&GdJvHWP^kQ#~WOsr-ELH!IC3M+JdE!+CX@XSZ zF*a~~B=9KVvWuh0s4KADxt+=F=blCt0v5pG9r;1kKhr@*rfj>qpLALv3<v(HK8U_! zN7=AGc&UIwjrefPW#449ea8Hu*~&^!oe$;2m03kzr15_6DFIXQ&dWs@30fvJEhY%` zO3zr(^Zb{W4mwk5Rs7f8)thQpbv&&GJos6+WwSBd9_?S2dcd!$9_WuT=cRiihs;fu zr4IM^^P3}HAe9btFubgG;q}XuGD;h~sK1|`6Fmdr1W{JH8es6Ydec<TSd$O==k!~s zUjwUXM8gqP<{Tnr?DWVvPn??z3oPu8uIjh|rSZH#RHU?yRVp;qjdX`qFV;Cq=X79s zFhU;uC;ksq#lDeAiHXLDJCi@><9HHJpU2Gqk*efKeKfH*Da}NT{%cvFM}2waHu}=W z8o9w}X48^cHCBrkP~`vM544`;9|1_Azr^a>&ZA_%A65AMKh^K%6J`ylAZnQ}7lCGP zL3JO=Fxe9|$(mZBzFCmrA7seE6V{icpXB8E7F6`$o2SVH2VfWYO1BTVbU>oDoXUwI zePUol(R}+@;NR=NV=%v;2mo#Q*`Ph|AgX$Iuz52PY(Q!nugxf&R_NXpfo}fpt@=T4 zIS=PLnFSg(R!6EgwUYgGZ?_GfZ*z)vps#%v{>lFae=_|i{6GB+{DbzAxxoH%QS)*Q z7H2S=F$Sf`(vUrYmr=!kORxDu==J>qdOZ{WJbK+EL!^LS97}EKHUD_IXb00v@*Ey4 z1@{s^!Dc<?%N-?i241o9a;jAg?P#}Jl+7)b3H!l6UM9>=Q%@dvC8s~hOIqkJaGH7z zLawQ++g<&cI?RvylKZK{kieyUYCsA{fTD^ncP@GY9(Z35Ey<!|TkKZAfhQ0@?nFjC zXgDu(REoVFP%E@cE-IkbO=B3&?|vQ8oVUkd{k`RAOO3$*A{osHnL4n3elQ%a$GsPf z84?VTQ0)o%3uvwV)%3pQ>d2_~^7hxdrGxA*eOmrS;Q4>Gzii!s{q+?p6O}?dmlojJ zz0?1X_E*5RA^rvO<y>5O0j<LQuF|2Ld^sW@Xo^gbdH-SZ#o26_!#b&CJFg^JC~{8z zcm!3;s}S0w{a63D<EK8LRH$wJqkvME<G<OqyqSUhQaFApg7MRO-0<;Z=>ac*TYmgl zUUK7yzKYEl(r2$0KoSEIvO7N?>qpdA=wI)shR_wCK_mFD#+jO&{wPzk-Z~8Ngxlx9 zTe)Zm4c^SR%#f2!s_6F;a}g4@f1&J|uz&ev`MWmY?>$J#YW)jaZXd+o`eaXi{D0+d zTlY5j+lI~sv&4Gj+W+7F1=j2Ekd17O;2b&UYj#bnxVvuE?2p0~JL@-lX3Ge?ZR+Np zWfEBZ8$$j(ak4!y0Wu~~CDA*~EpU%^Egq5?SB%yo!g@>*-`|5EsmQ%)ca&OAemecS z5|yio5!B$H5Wy?S9rHTD1s=nB;-4S!cgu{|(II8{AUVthgEg>b#!zY9N!mhP=0)zC z{j}BL+{L89{5ahHRkdHuwIANN7@EJ8s_|s}bGY^L)^G0zOojFz>r-H)?H5tfN>X81 z;ep{7(CUGt#v9=dnXvN-_x+kH-G@^5A$P&AwNELm2&G8&rw8GR$;oTBcUv2q&zcm> zLad{C=Ovuug0qy+ei>=G<z0T;dHCOZZMCPI(NBTc;0ybIR97_HTK4IH_#G|8F0gfP z9wA$_RV-iBDkZaLh%I^+jzxMMZ8EG+<26*x$|;|j67g0!^}Vk_`fyS8gXvedj(sk@ zs#LML_H?qM^vX!x6F+$;(;5xi17!&+;L@RTW;+@J)Uv*!3BVygW-zS|8K03E1>>^( zmfX0^^{4Bfa){%yLc0e!&5AzX)gJm1xBfpJ4sqAs7TWH#I~XM37wL;_AQ-6jGtKYc zhxK~^`%+7$dcYe(q@!>H((f}0V?jE0A{L}AIh}VhQ{df*`JUc6-jVGqNhFC>D;kh$ zA5J-Gs2nu$TRb*_R4%p_QVG6x51iiLozVn~ymg7x{WiOzY56ngp9KPzdWE9766>U^ z+v`akpeg}L;TN%r&2A=dBUP2J$PJ7S<hl1o$cs@%C#c_*b&;zrHwl+hD>PcqYjemb zMCns*aPZfy-zGn8pKhw5izRNMex&j4J$2zmh4^Of3L`~z5P*&WH&;bjf5&~&MGM$S zxfSnfh2>OlGH0^M8dQ4Yox8}^0o-p2++4_MgvZ4yE86Aa;uT(elY1)))(YLUTG~Wx z3~L?tzDzWvdZ2dDomqC<k_)4U3Xy36q3X7$A9JsVh5Fn~Ll9?{ayuxbv+yV=?h2vE zg>RRb54pU?;WP#<hfIse1j01QkHxOUf57JM(L@8(No=~}azgxy)eYb6ObF|N4TbwY zZ`u~u#5*sb#f<zg3aH`B&*GHPZ+8Mdk8M24R^)LCj~cZ+PUBHVE066wYU4>JI5eMH zt{CG&hcx|C`y7vV-{&2<=YW>DelDptX3TTwmGju?9+Nz7b&tZ|Mj|>os_lS|YMV#J zw1%5rsML1s8+)j6uP@&9qT6rt0+p%%o(}r&TxdnP;B^^a_1T){%C<_s2ld~2-URJ# zaF1%&xW^Jxr#pLkv-0wtHb0{Q91yepXp3?K1iF;W0NBK%)}MKtz~ch<*uvwLJZ6G@ zDo|_TQ9`1l8h{crKd=Kec8yDOqwwz(2>>;Bk3i)w`VvcWxjJ~tEp>n9jvTZ8J0Ye1 z%&rhx->4cPL6Vj{pg4|u)~P0VJ&aP1<pF>^;?TEv6Hw|s_b5tjagQY?UMEWFwCyCU zT0M}3^R=aB5gBOye&s`0w!rwot|GbhU5qquV?5en%nE=>M{ET9Ba{)yD}v5lw4DVx zcs&ecjlaR2`?wl)gY#+kD3I5=#}YHG7SV921x?N1)eb-uT;2NR;9Bh-6TDsP9!t!8 z?reiGxO8kFH$N#pe=!+AcL_<B{ThS(_1W_XnYV%`f8Kq#`lFQ}R)Cnxezc?<39BxO z5rWs(X#Gc$hF5)`CM%`MMyXwhMU2|uMXZe%`VdGaMe#jMN1JmS*v@O~gLeZBDqErm zLG<Gb&r1lOj>}l?W>hgwQfYsZmYK`AHv7f-e$A@o2{Np>i>ltep<_=!wJNe4KY!7R z)%H!!$<9IOsS@3#O&uL;y?#`_vaEG$+sD2}4dkNiSE1Gr{4d=20$(zWZ*{>sswJ)B zRZ(V9avq5YaqUPt-es}9?!8Q=+@Ss^xeEK;O}Cm>8^B4Ef~MONbLO|V4%oE_Z%uVK z>!fZB2{3cyM<a4^XKp+ZMvTK%FwII6M;J+#Y1(^^d6Z{61)hbIbV(C$>9b}*dCVqz zatQMmXNTsp-AFdgLuc<x@6n6T9<i0PV1#rKj*|C>Qgh`NI&Jlb=w2--qN`B3Z)6o; z5+8?^>ao54ea4ozW=W}SJl^>s%?&)BE71{@c(kBIH6{E58^l;^7^7Wx^3BYgPBoEa z=6*Z!Oornvgs^3oUSTv<8ETR`Hps-8ogMX<Aw)m=OlKRlQ)D{WsOXF!ovD-xcr`0{ zl?u{1K|0r_Zt9*0()5PL?{wk6V9Un}n>$U<%Q!qGJVAu*cD(Ms#O^kanlpFflXd=9 za(|=UP%?8n11;n`SC3}`%|J&qU`3#_Rf-`j;FQy@Mvb8pXpSOsBx6TUFwHt_iJm(1 z@Nn!vig|L_atb5oz3T`iFq<F@OqAoI_#ruP0hQSGZ53Y3VAcCe$V6H=FfSBd>+9`Z zc(?Iwx>%6ZQZG07&!)i;QbBnQ=f3&7+QYwDq68I_VQoIZ$?8%|MHt+Qiq)?!u{~#g zM4m#hZa&rG*0-HH*&=Z9VJ_$4$_b+Pz5(+EF}>$~M4M>8ecOq11SWosbLj(H@<paV zD>kY+ejJb*EF$wk4?0HC0B<6n>U?#;62p#Nve=QkoZ(gU?)54m2}h-pU1qJ;T?00s zi+pC0EEgZ`BN;RlB+Drm6%;CO(*UR$-=#?%K$!Qx1uMFH8bmd~+>q6Px>h6CT^xWe zs=hb3^Fal9wtR8b8~i>{`2fxi`R5ZT+l(H2lN6o%RRJD!ZuMrV2IP!<2pYwVx9m>H ze?G^yI;my_x!`?Ga0mFVL-J%7vd{sV%KJ3bQ<aQQi`yOrw7HGEAt<eYlAQzBnSW_N z&j2-0EOD<ZK1`n|EvV)PRAZKYAzoA%KSDTeX%LEAL0;ljv5f?5f%t<emF8LaG6dob zT(_YJ+)XqS8Bc@GecOp_LBEJ}j)U~VTuve7`x_%5O&oqcJ|hrlsnPOXGCyT^1hs<s zg3gItE1?&h`^Rr*U++?3?Q3TrYGqll@YR~v=e!wgbsA=`q@i;xdk^28o0oWu?#XU7 z`NEC20V_nA!%?B#JaX;QS`telxBJ*qX?rY`V1*#i1mj(E_#!Tm#;<+wf9JQ~X?JLf zdl&K(0+vvl`O@pwN-z3|PA{4!E4{D40L{#fc`)o6IryXi2dd}$pMov&N4*oFr1D(2 z)mk~Vj(25(%H)(Xt~pR9XcK8UsZ37MMkc3BP%YDHu52Ssm~*$s_GG|l8!h+SGo#s7 z>8>|-WPh^TXG-H!yuk3C;eeSTV7?Xr^WMi6m??Q+rcs@MX(tsh(@6!4)>#G2Oi}?e zi&Vg*NE2pbv=ErH3V=BkV8lbeKs~>3wYtjNViy+!Iy0oD#@J=JO2#A5<woD(%FXOR zAI#BEos9n{%l1M$eqM8#W2=Hf;V?XsLSccgQ^3p`;})Es-9~{U3JSc3FU1@l6u5I6 z1sVzp^r*lX3gk?0`w*P3v4$8Pk3K(;43hUf=9_xLQ&qf<5F2gbw~BV9nYsc0MlbGP zd&zh4yDIfV@@6I#_m14p*D|r@y%NnCS}~5Aqxg!%$2(B`cwO)8eY{m;-{FGu%8p}u zp&Dw;m8!BnY37rrSBD|B&^OT}CZ_u)yEG@kUUi7g<h6MNp<)i)$&qgHHVSMgD6m`w zA{3AqfH5L{MG1^eTsCAPadSWeBc!OP=fuh6V2wVtyI-~95o%wq&+p!FGAp+1eK@73 zI=BaGxc~oT;^6v5stm>LPMbfz%FuLSgG3mGZ+~mw+Qw}-fXkb<Z({<<xwmZ%SKS(+ z1}V@`3a=gUUh+Vd`7?={B%-ft)8Obtv}ENCia2PvT3X@)#9sk6bwJ+@cGm4pjal)! zP*nX~{<VvSgYLUU%Gm{C#R#yQXQVQz{0FW)Y!WpiZ?q9dj|8jEqdvA(+fRn-2}Zgz z(->2!M8T&=-KWd-{)g_psdLcurRJGW4@9oRV9#g`S8N3n_L{Z(SpU?TId&2I=R3xW z>P+fvs)&_S1!;~?zAxM(Ny{gz-W{PBe+5UF-B@DQfpT91x$JKI$=O?~<!Ogrt`=<T zTrG2{CCh!zb`m}^XpZleo=R2y75hh|#WW^TTvZzHe1Pl^K=Pvgw5o3!0^|&p4uIT4 z)lUYX(BEjgSN4WoFcK~9Lz5RB`b^bJR?V`vO+?H)crRECu`3X}J<1nG)M5YBh)P(i zz{PhEKlM}EUp|UPgY^in7dvc+w1OP7Kf4`5Gw=lGxkKO#7Dp^GJKj;nE);UmdZy#Y zdH`+{uo=;|&)oAU^cKk~X|^cdc^cF}#yobT?MSQ}IYTJZ%DF)>9S}s!Po4&pV4X&# zq;gV&9Va64@ekuJ+)|u6Ua;O+0BiLoW!p|X?x<QlVAgQ?RY;uQ0*os7r&=F?U=V88 z^-lD-a1tQVWMuZ)-pWADB2y?~!8#;p_8V&UzG2O7Kd9MbX}163%uKuEEQFj%Bx*{6 zYR*<Qj}NP6r$N<>rkd=bkkakv`ei|Op&Eo{*p7MOtvsSjACW_~eo#CLs8kBI1uwxx z3KgO}abl3;=MOo0ep3)_Eoj2gbLTunW;TsvZ-=W@o3g8aNbP*6>4QqmuV0s@oxO-` z1^Slw<HC)Pkl#Oa0&17P$U4SwgKX5h1=c0RjQbwHx(3jY*7E=x=;Zb$rWC0fEvY&* zs4e=yoJ-~nE|0x1fjkKiD-HT<;MogTtF<sp2$tZNyfCTE{m$W~3$3PEHDRuK;6Z@y z$v8iwXbaX>0yPo;4z{x#c2b6<Pe}iehf?~7Je1`CGfyQb$z!K`l&9+w_b8w4rS36d z9w({;8}&MV>mQ%=$eYC^c1m)_CcpIdHWJNAfR)f!8W9|`_#OH!SQWA02H;5z5_n=@ zffq9mu#kzucp1W4^~91}2P-n{;S5KO`PILft(*zXTY)EQnm0>H0`QjU3;%d~KS=;y zNdTS>)tRTSP>4inxrNZN2w(pLh3>#2fhUwJsEV;P1xrvnI%R-sMlfqpp2)Sp<(f}o z&C}rPE&4h+M#oF>qD-xMwvS$3sf_~slKy--pJ>3c)OTavcS`$?D47ds^zC52g@rkS z*!+&dSnaiVQi_QrR(PJ`Hp1fn6YD#&WHM#FBeigrYxDamrZ^4Gg0lhg@y>a!*am_1 z-55=_tC*@jLPbR>Q#rh~I*NJ!6Z1|lrKRcWK$q8|wzW5CW`qr(k9R%~2YXXu-W;~| zl*~{A?%-=GM;~0LF)A9?M-X+^5g5}KdddxEjpVhjlFQo9wPxdU$PLtjyVTBEvQ2G8 zUHlBO?J=|YW$7#Woh|@`Ua2M?u$<{Ywv=HR#~h`qw4T!kLA7-t-Z@TXPKou6=V~#^ zj4w&$%a|{!_R;=%QJp@vk>-Wo452q?2zuXoHbn2Fkybw(hMTmX>?;nvJ`)d+dv;Ag z#4YB9_v}<35$qaCOt#3%-8gtda4NvjderVF+h9QxtPc`T8`4E6Vse@9s&@Sl137#z zqaMa+E!|3=P7@kOmS!JNbmzoq_EgePA0Ud}I*1E@vjm<0PX5aZf1el4{;BXc<#n!D zt~~kY6#kwR%~q>jQf-NIvvI9?Zylou2(!0yl1G6&=UwDl3G$)#^HZhPezs>5R`|zP zz+@V)=HpNByEaz#HCBjmLLGP^)%P`4>Q%<6A34c;G*Jz-!U_3RBqd&B4N0ljSW8mo zHP+k3-<<wdFuyFa^8(eiO40?QDN;`p;%+tNMUwvgcH+tWG-g&RER4?05`+eX>fe7W zlhZrR{>AoYh_2^&_dz4x0ro%JEsM0!PK`N$zo^p@aANX)7APxFYdWa{xpX;}e1^Il ztK6TYGvL|aD3>RDmTU+YCr1JmFB0ZX!j-^L#<Ubb8Pk&YQ%E)MOe592Gs^=DHysU^ z_m6HTd4K*`U7f`!AG6h7G{Vgh(?RkB7!f48UT3uRk8x_82rz+fO4ok^Av%-mMTF<f z{%{d!+Ns8G6clV45fB_>*-nz+L|#iPz|1r@sJXcH8hfl8D(EA#AiOHx>T&bL<<?BB zH<wGNWhh?u435IwoROnwABzkA#3>L|Y5?0frjf9Xqn(7E9@A-yr*f2td4kog2id8` ztq0l3*R8u;>M|tEB*#__j;)#;TTO6m)dE{dD?E-FkV-Y*d5x6-X6F{$Sj4Q_1cSS| zTD|`Zp##nn`x)K2r8H?LnwOxDCc`V;qZTq3xyN!I7rRGk4A;3wX$&{HM`;YVxkoKD zt=A*XB)8C$+^FYfW4$^4?_yiq&HH>5cJt4+hTRO;)u)=7Cby~vxqV95zwiP&Tu^D? z37Se-C&^sQl|mcE3<pqC*n>6#J#r-&n`v)YbVVYl5YF<JNko;IdLKzH6>-EcPKU5e zlUvaiTK5Ym7{`?DL46DCVDd%`g#&-)p!nQ?%`V}f7M-)6?unU8aay9ym8We;?x(mV z2gk!<EKl&Alc=0jP9lvSIf*JrrPNhs0^_BKdL;z{N9PP+H1|IRr}p40*!>e+(t~$m z%z}%lqpfe`47uGJ8~DMtrzR4%J*nAtjx;CXTPuxJd34)(xC(hyMZ+59HKZElwWJ#5 znld!X%RM{Fll+YEvw}2AT1gr+uiJo)^Cc0hpn9wf*hq8kDSuEeB+R`yT4-N&nvef& z+b{PTr%*iUHBKX`@EY4mDm~8MCu)Rj3mk5(2!gT90O{2e6zt*bk&X1On$wI<8kv`G z&a}`JnH3>w{jW|wYZQh-&^e~Bf)4_wui-IZ`dS|C0E8CtF6pPdkRnRYbS*-x1V2#< zr`WY59IR99j>Q>#EHZz=(1D>A^9-$KX5_WB0ybh6y90g#=e(#b>WkW<emSYAFZO66 z71?Edi0pE7#z+UrX2V$!cE0R2<Mx&hQCJ2Ga=G~lXe}s^^zAIH1So6F5C3N4D|+Ic z92CN)cXXhRSbv4}PiczWGd(9UqT@Y(R>_K4bnWsOxv<$^?Q1BV>$*B(wJG$nda9DH z)@zP@g6es*!vl7Nie$(DZP&5Z{Ut+qL_4DbY;~Q86wqMQiVz}*2qQKvF|%KxYGlI8 zk7EaNf1O%1Px6C8Q>fSMCe(WSFM%5p<)2#ah*i5Z$0Zu_K_g~wDl|X-a18rdy{Cv6 z)0RHhN$iSovttPfQLv?UYTUd5EWzz$+8jRr;}3&q&Hlky_lJ9b^Ln@g><fVyU{_MQ zCtCN3qMJbhbRuR74MXt_>71J@zdpn}Hcq(>GU^ZfrH>Mk^h}2P;CsBcahv+J97onA zRcV#B4K_yOX%Ey`)!Lhj*8#T@RLotEK@q6574JOVQ0X1Xjxl#+RHokA->>Kkmj;an zu*zhn=5g~lZxq4E$tT^#R7`Z_IS+}X>jIKqGK8eK2}IJxyf#na(J*^%8KV)IXx~Nw zQ&8X!DzNE;F@x_5CYC^5E~-;etaxDXQ2)N`MBC!`sK6cgT%aFv-|RD!yvGzZT22MI zDZK_;F@4xb_S=m9ta{JP*Q@3O&P$k2URH+(+g0rNQ1PgC1FCis4JmUNXm}%6Zutr% z%VoFn2mjaZ;9&h<a(t!sTd~KW-v_MtTH)`GJ@JZN{5w`l?%G?m^Xt3(%8h5c8JL%C z$^w7b`*qVB8;~<qC?dnob_F`0Eq~^{XBd@QkKa*)l9MVp=0U>@o0Pk{z4KzJuWRZ# zUkHJi$7H<(-voTUM|yPw-i#pLkweKMnMvFAKN-MhuO+UeyU;7eeCU<3leHOJ>@K}> z`9Iw<a@~-=oJw0E_bimuWCG~_wR&glkeqD=InN+xb$3=FxWb<SA-L1z@Dmq)w3f8v z%Q_5B5aHaTbN;c`;&CAS-!oqjsfp=Bn)ofkI|L?bn^1N)-^?G9cX2*1w5l}gUJQW0 zN;MxdBzLe@W?A+QasvEM1ib5C=@(7fZgwq@;|XFO07NOQHrxc&A|f2Vj%7*rNi-(u zzzRRbIdQs`Py$l=ybf!xPkjd|@IA^#sZ6d1TXuV$YGs#`opGg(*TkcVMRHaXizc3g ziLbZInReq+0H3|v8mJEJzs~Y=_2&K;1>DjCEUP#3Ch|z0DyH`Z{E&Cs@d6Ob9wBr3 zqtUZR`;mo3+nqH1-Te6_!e1Qfj<<Je{Mvg!*53Y!EOJwzy~hj1ztzdmgqi*_64@Rp zkYp=V??WgUHjEQoA}}p6#SQj8?4jos=Drs>{a~Bl8zP@yzJWMt_;1_gIdbYVzAILW z0SFjX^wnNm1<c;Qqf5LAIv~+MzRa5t^;)@sr!p9Co{d0pVvH%#+{O+J3YYc2;P4$* zU%Bc_+WMH*D*sb`_5Z29D%DqG>#OyTum4Z=#fH@9{PQyzT2o+2yst8o%tdSIuQ?HX zQ)|N5Y>jb=^VheI{V=_9%F67BcW?DhYCwOvgb!SH!IM>RnkVpN4Ws53o)*}zQf~*z z`%W}*=v3}COUq?Dv1EFM*DS58(rYdon!hcVzsluT7m;5&F8S++=8pvV{i#t-j8l=W z=e_2nD^%eMRd#%}|0n7568PUrQ#;)EG^4<jSx*kTn^TQCVo0|*l-Mwm75Z#vh(}kf z<I%pfOC|OBD)hnp!&$k_k&Xwzf1dEima5+5At!Ff!cMQAnct?m;)OwVmFMfy2a^fv zipIOnL@4#&v10w8{9nuG*9UV_kUtjhI+Xm`^Z2u3Lt&A4=U;$mg&F+rV1&bpjf38G z>FAEk#L~>9ge7hysqf|xT7Z0X+%`L+RpN#Ui-hr1wtkR*kY>#9DF`(6wHyXzesdLB z{bor$HfTubaY?XbUd()%)mf?bI;%f>+fa~%nz>1*ynH?{RTY9{{liXo74v<ziPfC2 zAeA_fN*zdL7NkoE$Ph@+qu*!kO~Zv$5@pS<Igl*x4dXm0+E576fpSW_Knj5*`$7Xk z!c|m~eF2rqJyFRjseZFF`I?=@_r4Z00cnCj;>P)$KW~WqCI*uQF1n>=4GroBiBycb zBZzJD1?)IRf_`!uB#AwnQ}YiOURc#QVKV=a=vUL^QPbqn6h|I=P?Kh<A1M#&#arfZ zyr6+izTj!D7;9`((;kocso~buh#CZO;2(AJNH%ARJ7>%T&{6t>l_zVgCFBCC?t2R| z_wP7gyKm#2np&`imTxbndlpm3$U^dGm8QmcZ`rJ-k;8@+JDjp~|B%wc`M^zMit65q zcV4f8fh80vI%$ykdT)VJoWZFgwS5h@3JFH~P{x;(&8W0ZU05dC<lS%st@X-S@Yc+L zi_@#8*(E4dP&1^#I|~{tqrv`6f&I}d-J@lm&Hx1d2cE~sqQP$oe)_17b}Gy@8)d-o zSQGD*oj3Na-pFXFPhY1c^Wa3L=3aZE3a`qSyHLjvNb|qCLso|f&hqH2dfc`nx0{3i zf@v{@Kd%%r#nP+VsJ#R(u0V?suZU~uu?UaSTT)!=kqeQs6-|09I65=sw4O$;wh<-I zyTeklLXBOsO4@vmFf~cQ%{EIJ%f;uRj!1gj@!TM!DYmp<=%(7{5fzo0Qk<G7itMM4 zn1oZ^$Gz)%QeUm>`DyLgb-c}G09x}~jLl4IF?`hgTza+Lw32U+!%y5RiX={U9TgjD zXW<vkDW_-P5Hk0?5t>bQy}lg<YL>R8EFfdy&?oA(N*HX$VY6hOoJ4k<l`QGhGh=_r zCGMeY$))Z=;-rBuVzH)x*pd=b5+x-P<`)P|Hz@JI*6^xCR|QFq;KY;|k>o>;IKiiS z^i`dv&oOh$n^u%u@-zel)<MGj*#8rplKHA%yrTN2sD9FEqzUs10Z5!Lt7i!q3#SAN za7wWJM>t1VIL~jVV`9G_GJ?hy=(^A0_gJ<a$fQ@d%T7}Mt|9rqR*?S|@{`pTQGU#A zk1k3hRAI8?`~#37NBQUJfT4(-!r#bR?)x^sOBf#s)&Ihf`u8uW|7gLZaEq+2<b)h4 zs{ILi3fhK{PK7qb69%Jol|8hvvq4!IfXjYN&2UoFIyG}!K{J%nO-PZ$XbO9!nTi<Q zvT8(O{-@02ct@6vRLgH8f$Umk>f1Eje?0{g=eWv-F}LpM3u-c#QG@x%>tkdjX}w?f zb83c}>AR)dba$KC;T;i*2J7RUKS3tqY?Dr@D-(~8aUqecBMu!w$&Pm(K%l>8?%T8Y zr0M-}Yri;oz7OL>@?71PljodQ{u(c=c|~PA+q!Dwo%Zzc&Efjm&l0-8QO6AW&35hZ z4IaU-ibQE;kX9(|AE$XD-gzrHu2>2bPOEzcKfvBA?kfDv{oC@nCAe1!(5rIxzCHcn zV81m`5^tl7r{XsbuCC)wTl@)sN~ucFS(P0RS^JBF8;}l_0KIS(9lNl*b5-hKAGrXV z?GHQDAg&-L>kI#~UMcO}taVWb+z)2o;gP0S1N-Vs8_4v&I+%<g94i?ycs^^(ODigt znjtB{`qJMRkggxu@ySt}yp@)%gGXX*R8p<=o}9nVqnf{H&I_1>;AGWuhH8;4kvzW% z8P6<r&@HUjxSAOuy5j)*Pf|xq9P_Ax%)xg}mqE@!pUnYi0%*>5(u9iCQIWksSYn&@ zm*o4y;@_!BgDfbMB?9E4*DUQ`@jFV*eTog{-LKj0AaUDcTKRe?Rb3Fj_(c!`uBaW{ z%pQj#@Ps}vDz$bysnE8w%g^d<WLICjbB;<<?ZoEo)WO6s*=+*Uv0M!yD2}*kyO0WQ zM{R|I!Kx_dGmmoDXh{1~AZW<_D&v=ot4^Bq8ze7fV7Xu73>jJOm!xNF?w5pUTkcmC zzoz7Vsl%t4_MbzE9=w$wY;;;yGq7lyI)Sc*0#=k+Ou@Vm>)mg#p+WJk`HUOJW2+n_ zX^mM<2m+ZlhDekqY^?S-!pzSoGnh$Xo9;4C;CEAD=1+pmou^3ZKzK8Rd1p~Dltx95 zKv=eQ4*Z48oc9Yl*$WZVya17+>dn~;_@%M5Vp%wrIR&U|4t1EupWB{8AmCMF`1mIw zfa9I4v2tGpEj#&8owu*vqzdy1@%s369oL$d2^XfX*Q6%PR*ZMr<p=CV>MvTM{MKH) zf5qEsT`#S@_*A}5eK0o<s?&FM0zk(t_K<n&F24K1h}Ao<;%E+WiwCFuO3z{6#~^n_ z_Ezu})ova_wbKfy_7J|9>>AkJlFszcE2yPJotCRJp;ivD8o1XJ?_v!@i-VTe<|O(W z5+GERP4HGtt{u|k83j$As3y7n%4WQDNXAnOGVZ60V}pz-h(paef%ENxjN6ehge51d zvd6L5Cx=*DrYU(sb~eP&uO@yqXD=5kv?RH=BHpR#SW)xe5Jw_>gDJj23+%Yn&j^h5 zD*aZV@}#JVT+dihm~%t|?O(TAv0!;5%YB^|v6dn5-Y*soyzeJG2x4yn9-SxMHFiIl zEuZDk+e&skb@@5llv9YjwiQx4b7kKU9=r_Xb9O3Ln<}g>Xx%yd?k#Bl?>Ka_XVX4e z6JK*#ht2eVE+}vv1<ac-+vNfafCV=8?yy!81-){%S~<$`VB$j8&%;`2FDP)BTJc;f zvA-AAtsxjG&S$OOY`#Ed-a4Waf@J;6ZvF5PI1zT(KqBdKJ!%CJfgAOcZoXVU@3)bJ z3K6<kKksr8g$Up|`q^nSt4(V+!1q&uim^?5E<V~@2^&rLW-cyKl`}plxt=Fe!j2TO z%l<;3{EJs~(gb=_OW?em!_OAdxun`1J<sLP?r04tle!yOwuX;$xIElzmYO_Q9;*Zm zD6br3E-OAVZq}o#oW2ygr>y3|0!F;+X0it&rlVxVu_Fs)PrS1pk^+Vm?M;!v11z{Q z#CpQ7>$TIk6+Y`0W1<C70dJVoHx$}qyx&55P%cKIG)fC<LULri9y#xIfu(jqKvZtN zUhy5lCvh#=81ItY&&x-BG~R2Lw9Qds$D{^J)OJPmbdsH|_MtT7vY_rOP(?)TJ8)Fg z$sC_e#$0zZNzZ)Ib~n@ZLxM$}J;i%&>_31$z{6Dk%gvIauO_-e9JR30hGAnDDRmuP zJF}Y3VVX`_VlGF-!yP@TS@7X{%2WM}%;aK`4TQB65LH=1i_CL>)&1BkO(U&lP{S-F zR`V*@x=Ya_AyMBjue<^U0ul$S5XZrU+0zk6dHXfY@rL;m`LkTiI8dOOT9V(&yFAII z1)JUIW8iI$#Je(l%_^4M>6hkV`w2f0t_9xWDYY#^^ck7^Z9t3L!RfANguO2j)S$!T zrS37squj#54%wS{6cJ4M3cF%FgJ*KwrdKEZ2{v5d0(z})gHy*l-PU===*vt=-gq(E zTPky6)H^!{8O@E%4&HbT7&ZRQyX@fhPDx}Ixrm$bioFpq-gt%HSm)CCa-OWSdVCVy zCz?S}BPBK}7d<0m?^AO%OK#v&<&Cc(sqw~FlGJ+Rt4Qj-@ikPT(cq1jGWVW+s%M(@ zUN%jmbh3&ijolWk)owX)hzFF!N}_i7lkI_z+`MDYx&L3*N#dRI1xaX0YD$URN_d9e z>i|+Tn+ktFNjT!6;8~8g$(#@|+yB#LsZ|!VcnEU2n@OCT2y9&Bk(vFRm_FWFN#(ta zyY6DEo->9sLF_TZcxR-9>KO6#h@wKL(TX<VM_zE3<{2>!&*M2-h0K$i36`!jCu_t0 z8fdYeyaJbsia#)~Z&%<{((#fydR$T3S{9V{%h`PCz?U>C^dse@iHSadD=GLHL@B*b zL%h-m5v-G!TJ_+%;OBULX3uxCU+e^AN+_lz0j?%fFzcE-R+4eMAmhd%87m-in6ZnD z!bby`@>cFii236}vt~WN0A*mZ>>2wbaD1JPEXcmitW9^SeYqmd?dxzDofxg_i#L6w zZhoz=z^|9@uwJsM!%n1YU55#PGWF2lPCG2<v}2ykciOB!w@hErAg~HM&HslwEz6aq zR*m@U5TwP8A=2}^q0T4-ZzhP*33gzN2^w3EXCwO$H~q){Fr*?5M9oz+UKME<4A3WH zF5@sgVMalL-6&wb_pA$En6ZrlY#PnA@EW4TR0Re8zKsH3FDP)A3Jg3$3ryMIW4_M> z$T$%TW$y#jV7=A(JM8`{a!Lh;4XVuDx0Ab1tP1zl-iNQdx!4;YUAf*Ke{~RFmroOw zM&Ealk}YQSiwx4uEb4Dc?Zrv&Isc~L@>0Yvd5IgydWy|8WU70yqd!d`irahW?gLBE zX3}rsK+4UjQ!<m)C<7;AUS7_?7==6O5Dw&L`LdGJuOjO*^)CV@cc$9|d=CK@4y|gc zwSr+^esNrtKWg?ff_zV*VGoqIhc?IgnRW+mg}Vf4HFq9V!;_y3IC|(5;3hsb_%pFi zIbA$+o(z&QvGOfAMBP>ByBt!{5$&H=_s!H;Z=F9S#`Oj7Du+=FT`GTe#7!GN&aGeQ z-0leqRWPUW)^aZXIED?al?miSp5=8J=fm8Fqx?>vyc27<2=LJ`{s9hC_Ut5zLuT!b zYl3+8NGnxRuS(AO^S1WyI{fOv&z{{Yyny%_hE)*rn>xuqqf+qgT)cIlc+G{MwBv9( ze?ky>dHds^4BU*WiWKBzWJ+$OB(2W05tp>Q^-p}05Tk~-$ednXZx2M9>OHPV%lQG5 zWzJ|YZ{Gr$R@uTbN=EQBi?AV*Dc+Ix9HKYBg1B{qJGVdSW8R@fRLB>6WXzjX6TfFt zRp*l(r}s8i=|cHS+LGTgrva6S`0rcMDJJS9B|;Y}%;81U*T;u+Pwj<$Ld-0>1$cD; zt%Nmx9MP8S8p!jWX_+nyYv2i4UEcx|oHgF#go}cAgcf*H{bYz(L3~9C)J^)Zorq=~ z;1RRoF^*?(p@v5xR#-&>1`mSmC>(=K@x6G~0mPPNb>`}e_t49O&x^|Kw@z=IhQGZ6 z7M(?dTDmDOC)j~BSw-r7V9%Q<hvJvI*A)l3w5HXi_0m#6xWQbc69oFgL+K;w9<ijN zS?4JSP#&l?F8Q(pon5zU;83yCtKB&vx7%D>2yK-#V)h4gzDKkuviAWB^l%Fy0igo_ z=81M$o`|y^R^q*9Sc~77=%Z1__sR)<4NZEg?zXG*+IiU+xyHesTaSGn{~Ux3sQIYE z(0&@}Ym~B5WbP1g0skDLZV5f&;w^E-jJtJCnk0hTUwYw2=}yE7NH{{$DUh)B2G>s8 zT`p}=eclHgU)d^e5Ps8E61<8nWR9#OlaSBID5AX^9#-5<pdInDl}>0HW&37Ixl5-X z;L@2vC(NRrxzeD_hgI9?jHLpB+Hc}MMtWW5SG}m){sfM7*EzS51)g=+pafT+2r&9h zYAK^YQRH{&(H;09WplCnV#Uu)XcN9t=h57cxRSsR5PS5-5k)TW(>g9sLw@rKmCx=U zJ_VHi`~Abn6!zMx48`s4-?OQmE(RR=EyB0owQr;Dt(vlV8|_=GtfaM5c=&wApxEYq zVcTrH)9Om}-@O1KN?v`s3~o;wh3^+Gnh$Y)e@R@Ui^()`g@=jXwYMM=Q;t+#vB4v* z8WG$)MOADHUZV}ge0r|n(=zwzmSDf|hJsI5*-sr;ute(Wr)=zpu6k>Ts;+9<g`wu~ z+C0K)ZuTVUFfRY_{j{h5l_9}|+Gp1P0mhPt7yu*YNtA$a%V_Vf_<~gX_w{yyEZ9%0 z)sUP#%Mcv}L)21ou$UT!is{6Zn_uQ)X)F+wu#KoB$M6R*y0Z?tZse6es`~ju*Yd#S zxqK0Y8-Ne$vz_8=DDXtnp&E8g)T3MZxRiXH12;2SPrWs&m$XVL(A0XL^jDuYf5k<k z>9-yAj%AB@XBlNy{A$p<CgT=mxYM#o3mrR=dBwS8QHhSfLY%7p7sLHSvLQgZ`8tT$ z1NglWd}!kmY`6nr(Ge*SHRJv^280|soz<EipX0r}j|t~zicvkl=DIM5Shroc{XI;f zPS^i{32I;<H8%LkEl{+;kNLs}Fs^>kp5`U9zzNB}f<tcOZxulLP@EwWRqk?rhe!Ht z_@yN9+#p;#ub<ICO?G2mAH44!xGH<N7%Gf!tMcAtDAgiy2z^ZL;8vJ62n2X@(GbLL z(ffcmtMCEY^Q)Bc-2x`IG>Kf0&szPw8A;|m+N*%8it{q#U3O^?q%5Z1-^CK;K$ra% zf9Q7W_&In85V}qv1mf1a0OBekXz>v!Q-)+;RFHkHvMV+x7*Ei%2CPR3>(p44UOS}p z9}7w!rqWfECNg_e`hvtrSLCfBMI?Vi_;yqg_KaCO+;5Pz7*nG>(pqHq=-`>9g*X@9 z4~hu($Cs+R$36@bF0dPKe$;KS1yHFRTlqy+XXC(w!R&NgpFJb2g*i_bA(e!BNZ)dM zT1vYB*h2syKIji~+`XJ<CGq_3^<<COM_{eO)pb3-{XCzZwwj8a_rx2Wod$N{cyjV# z8l~jZnkBfu%T1yp>=U92sA*6LP$=|G8aLT@n3A;oi)(@`MSfLA6Q3P^F&<^1%4iS5 zH6mt?q!9zO&nuA~QE5Ktvjd~HcU+YnMz617|Ij#2n`Z|$-{YNJ%v<E2RpX7T>>FnV z3nk57_-8ZY8d#Ra8Q0OCT}j*XX~$W_&9<hUZn7OGjfV&?tq%!ubI!vS<Vp|pzOgH^ z)qd8|1@`kkoWkXI#5Ci~UCbEO{gdy*GJgP@1`)m15#79Wx9x~Iyptdkc_N#Xx)DZY zr2y1mt9S7e;++ZnPLN7LC^5GftGdm}PGQ72_yaInAp_ZnZ3zK;X|Y8o75?6HNj|d2 zjUT?4E$@LHbQ?)G*p-)pcqbd51$YzGQL-d=ye5CzPfrIHUdK3Z-F@AUwoErgo3WTj z-b5fsdbPV?^R)TWD#0=~9SV@<w)mV6`r(jShx?=d9=;~7bh%<T2f3LmER8NG$bAdB z&HH`qy%3nh$4ldwWYrXR4^TN$e_yrPJ){;b!-Z{5rxtWZcOxDzr_hr5<<%pK?n^vI zz)_DmfOss3S>88tks@2{b|`imweXJJMy(|5Hfo~^t3VJ8TrgiZK+RVAzRJfe^B8P0 ze)lIZG1x=YQ70GiN|98f4Hqr~g3gt#6mow(zhh<(`Z!$}Kd%B7V~em|zne*GDlKhQ zryE3K+gn;!Qoop*)?;P^9twXhFcXG>s%ZP9-Q~;m$+`miH2skY5)I<Es}N_p)-cpx zBFXn5tJ$FSfWH2vpVw<I71a0M9rW7ay<>*ok2ER0dLA7h)hy65%xD@7Pn2R|??XQ6 zFsVJMufS*+IiHRZzP#4y?^D3lEFwh9cY;fwJ^;mlG&TDCB5oA#Ew}Fq!=PZ_RpZSR zbcCD<A!W<iZu9T5Lw15{3uLF+{ZCedu66QNrjmLq9J(^#oA_N$s-df1)zFnpYbDi? zZX+dLo}JA)<rv#~^;=fLSRiW`!J8ZBImQYH&}~CHOR7i6%vazC$v($4^?ALqeL;cK zC}8ef%@_*(2Y@DKg+-<TT4m;^!XhxzE6hcr>KU~tA7AEm#Uahnjvd{8ue#=F>MQ=4 zC0(03-V+}8lN0`GO}ouP*}3>!=N;NjPZf1E_BI#Eq&El25o<-LyfC7Vm8^+gXuwj) zF^U3h@+Oq{C+HG^o4g|v{nrNkhqjozFEg^kV43nZd;m#mcx^i6ZuzA*v9|v{C+GtE z6w9<%TeeEr>y+-cCeqFLO6MJdg%au5o$XuPy+)%4c}KHvw}eYAMta{#1UX-pR~7e8 zVBXLBy#}XlGbqr%Ce-%#706H2?NSJv%n-2(|LtLG5PrMa`;)MJU=$fV!TlW0_Cc@} z#G4MXXUShH>G6H((azRm!`Gwox*p6cc(&eqjDfTmVi2>0S1sLFQ}<H5^GJq?KN=wX z@exb)@p6tt{qgF9nCanmY1k(wK}Z@E6_pKw-Y9||(Ess3Cyo4)@1Il6rPu0$>5fbM z@d?|MbmoW@8rxKvZED>gTvI1+qp7uT*rvJ^R3?zt2K@|rb~ZRgY0%G$a5^zu+sPN% zB#<HU92c^wcUs+4nbIJQ{2*V}g5=I&(~z9O?*!>g(h}2z5>sFp=hg%LRI;}ENrs6` z@_O$n_*Eoc<HUFKdRuAp29lWHY*Z!CwF;^~-G<O;euP&<{XFjSJ?-+X3-UE6-!GI; zWh|FTxJXz?xJ)6{u+#{ZaFL#%!P7)4;UZxpOj<}2=1=z_T$Dj9R_n!*rs^6yr3GRu zV#+zNfxFV!ruuCt?Xa~IA}+C9yqa?~h`cGs5t?S&JpldHeO6+&^LrM*t+YJJ#U0Q3 zEYcr8jP$7h;5h;qz~_>dm<M0B>PWi<8@+Ap6|@5i1>KP!Zzr5+PpZ-(J(XhcyOK>x zCUZ|*yz@2JqB=iwewkT%IkJfhyL$Z2<TP?=^IB)J-9A~j=`|0~(l}07VbD+E0EZIq zWQDSs*LfcZv3S=T%FltY2sv}|6-<mGxLYEUhF_A{z*)I;3XK+lLIvM7c}Rg0CtCZN z_etKX<H`Y{MOCV+I+LyLQGm6%#~6=O++#wQd~3}HuSv(aP^`wQH(j_|$OpSN>=YlU zT{Sxn7LmbuIaWk|506W~Xwjgu&zXO+=7SuJch&JbhwdzXK>d~s`|>`tv<A|U+Z^{H zQd}kGSTuD^mg%Zc{@<o*yBMhBLV&8)`xqm_wq`DAN*;bje@&({Sx#n#P^PBBZ>rS% z81XN%$0n<pi)!Ia-o^aO>h)AF$8W;ifc@jQRcaAC;$PmRFIwTge1dz5`Iol@xpD28 zIpl`Vn`U1Yzh`FhaKv#fGkuE(Z#}vImOuqwLpq3vp*~kg%%UO0T&f-o<WR{COu?^V z7{%||SF@dGBrHE<P7Z5uj)S>F>UgA}j>qxVWP1yWz%H?;hZK0apujaMa0&(T<Ke`~ z)!pG`kgeE(3f^p&>zKM~u_24h|6rj6y$fOMJI>Tm1ZIP@Q#!v>#&htwV|S6}mft`k zX7;aQccfRh%F8O0<m>~yX|cf!c4;0wYEPK0_$>OD<>4zRS~{d?;6Df^o`hK`AB|v} z5Wv<oolb?TX5kT?E`D^3D1j|ToZ%sa-ZBr7+kUZ%mA;vKS&+?EQP|yQl%&(@ffHHY zV1EDW0$sCX686lw)K%X%@-D0PN2G942TWQ-{ic4I6-HI=t{$%Jk=$Y%tmHIT_LK(m z{H}!4rB^#6DAeE<55ZS@cgQ|}zZNp3X(;iW%N6Sna)*;%a8R2axi^yAymKGwo9-8~ z`h{-m2E0#x1$b^*;vM^_#U-m>WMAPo_qRf`bhn+3v)zXj<?erkOK={3o6qfj1$tg3 zEA!P)l7CiY`JUjuqGTubU2^W8yX#Rq#?z~c)7^=>H#(kYLexCUSfe#jLNk<AbKT;& z#Dyj=^-`+`n9tN&zidy(!LVpKXh-*_deTTOskklKZ1rKy;nqHZh!K^nthJNF3~xkw zb$Ah^-x{?W$(%h1MeOa7{`j)4ZZwb70fp<AnVNN&=cVpa>&NCx-rIUt>v4Q3f~fA4 zve^o&F?ZTm<&J=Mz402}47uOc>Cct)qh=ZOf(E!sml#hlN02*b#dMsb^BcFL%bf)? zAbdwYUSPqf$(OLI@Eh!?N$2M`!TuadzZv%-Yo_i}O?L(NDaw1Q{hn}`oM3-w-{%m2 zHu|!5#N=$g7Dwlt&G$o~2KdFiHmyq#CnqpW#D|q*Y=^|&2nvLJIJuy}S14dkU*?v* zBikr&LP3FlBYR9;P~ab~=3y<&C@AoN3PdRo%40|G7C^2b8+2|*z)gqlGtCp1<>}oU z?|N6?5f<_=DjFp-F4{LPV(DHmo@e5&;}FtOYc<->PeOW}IHQ>vy>aD;nHdVlypoy} zK0AS0sBuQHYW_XiWBd9VZ=95~8C=mht}Nd9j+)hBsczR7*L8l$k9@43>nuPY+fTpO z^I4^t*e5(luoOSa#8z)IOe1!^r#Uk6*is7WdTYemqvof4snbQLTx@$sdUZ?S`RyBL zRowgwK$#V&BU%KthJKst8aI%nasaLd+kLbhbUs{OYL3IVlU*CwkyY`}W&nX6a?G9- zFh9B{V1R8D_+3GPO?X&LZBW2$gJTvH6u4gnMh6A9#WC738iM4jz%zG;`<s~Paq^%H zF6?$UekHQY<-QF6@m+!{>hHkjJ^%PxkL}YDHf4wWX202mK|WOVaNdXR6SKQ2#(0dv zOE1NLt9jLRx?9Vdt(UoVFJ)Uek5T1L(oJi1E2m#u`Q60wavR+;C1S5Ij7d~VJ30It zwpu5FxNh<|YWYn0)50K_A<LAezVuDW*3?mK*>^9F`nlq*xG<(u7ZiigbbkiBBkgL8 zA}=Iv?;cBv3lzEY(7DW?&CmdzvWtQlI7ZykPXDTbFD|hLirx(~uL4KimC7orf*GkO zTtTY2vXZpKy!MooiCq0vs{iqz{^c%4QtyV<-{t1ag8F56ss7ra{(4(~7xiZk2}Ie5 zgyZBdxKy5#A~kqfzB1E>&&6Ex=VAUSw?7s49Adr7pQ6)vGj`Wn#9a7mv=J7e18=}j zd|hD{E9$79civ7#sifbisRKfb0#Uaqm2Ies#Sp0Gm8-RaLv3@33%K68)G_<%7gwsp zl`18nR9RT+HcD}4VlEyhw?0?_2k9V$awff>L{s~4#kWUiJ@TM+wZt+PNi(x`jz+6f z8)n`<u)`=cG69-QyNl2dd6>Y4y#K+i7t(#UdM0bC|DPxq%u)BOux?8bP|VTd257;t zFl2W%EA-)&hd#;e$C^fmDac_CpDTHmAy}nNJ+q|L)n>-cHNRoy3_#6}Gy?bbaKDJ% z7a5hKP`ziB*%zNd9he-Uka$h!)7inpbEOA_$3Civl^{;Rt$&THO>c?BFWynIoZ~Mx z9}z8%ckUPbs@~MqojJeW|4zi;0eM`LI>8@T<40~%T|d9w+SB5-8U(BWjfCy|>uz~H zyj7{4QKDKzUwM4H0S<A&2|j&^y0dC$|5<(;nc5VqqWBzAv2Ds$14RN*vj-hPl*nCn zJ(|xtJD@=r&xL<IAi44?I{@`=*Z`R#>O_(S1Eh&61oQ+_4Zs%C5;OgAt4Gy)J=tS| zVN$V;VRBl&O0(~8876a<I)Q)6HVOnfg<vpSucW|u3IzCs{zeYH(g4A9wBv(eA^`yp zNj}8PuD`cuzT^Tz`^*8<!Cmr=bHTb2h&X=<dsPe35Avh#19$&;@2H}5Z!v?#G%_{0 z#b;Tc8dhpcql&gPs%WdswsrIGSkTe=Caw2f4MxlZbZ-LYjfv=w@QT^HNh_FgeOSJ_ zT+U)W-#U-Vy~erxXrlp>Nx`-0PQ65wo_!H|1hD*&6m``~)86sL>L9gbu3@g?$l+7y zfN;K{$=G5?*PNV6Q(e%f<~E!my`ziz?;k|ZX?_YW;$UF^d>kJ{=*K%>rO@YL{pa6; zwL+GKlx45v7aV&nmo5qPcXokfTe5-gRsK{-6U){A>$vYT#j}*3!Q59P5<?yFxwy}X z=YKtFmk0-qWsz?TVp|}QaTanZ7Ha($X`LJ}mFG)<6^?1_6V97Do0EF#{bP#!BL65n zBk|6IG@R-Ec;~)6p~7|916nD3I|pAWa7a7+nk6>y#TBX6=?GwUC9BMXl(C^xnOm*Q zB-mPvu=L-o3)$GHn0e-Q2B_efX{W{p(3WfsriL=VaW21NetMpJpYR<^$T&)0;@+{1 zSTev$O@SedfusJS0o<&p{Hk3xPe={Eb;I!XJ<rM2OmKD=rH$b1VCm0=dj&DC?Sd8< zGHESNtLCo)vun`d9W;0=mrS~IE3AAJv9#VoJF{qCLqR=nuB#_oms1U+d>6VA52xb8 zKeO5e$B1>^AWsBv!z?1$I@nl6vsZ3gT&<v{!3@(RsA+w$xVoDKSn3?cFfSs;EK)-l z<^)#4v(M0{6iVy>W0S^)&i{|(8#iq@fXp?wB4gHOpR$v&lfO=0X}(JNbBHVz?JD^- zCw@;uw6lB85qjpeKdWA{=rm>}e@__;hw8~GU{{`F`%Nab2R(i?OFXC^x0T$){PSZm ztSZ_!aXK;gRLAz>D87hOvvLT|yC8;J&Ssh@f3i;Mim*CC67?sRlEnOpWz@}6!W?zE zr8k=ZG~n0-Ad8$$0J2i*d&kEJ{4Mj(i3nWTNJ~o8<est>z^!CSDL=X4l;_eVWjymx z##}Dx=@^IMWBFDyZOlx)MnOLDt|<tyCF_6WwsSAp;2uhr823=RWTSidys8qes!qwn zc^B*i%2$gn{{_mE7dn(d%Nt)Vth+XQ<C6~W3WxVj;9VK-+R0Xqnsx%OrGH4+NdHiW z*de&QPP(a68s=*qL*K@0=3uczGe->90*R<=3zX7&_EhJFLttt;pOd-Q%8u5U+mb*P zMei^ot?noGwk?~>Ze|vy1&C`K7`jq2W&wDyGH(y|YGFLeoNJ-eH2k!LB|&B(8o}Qj z2D|T}ShaXpZmq_guriPjl#dhzvH>uJcr<hIV$}$1etJ_doPs5y0Ktp7VOF}>H5cSX zZ!rJ(<E7#OcTzR^<28#zAI;)9`fNd$%N`ie$0;Bpx=4@%xrTF%c-JB*Cam~)p#PWV z&Y6r8BEjAGYN+pPh!mYk2ybcjI&?z~?AC1z>@UDJ;e>e}UKrDRqkLuhm;JIrF!K6s z_V?TkS@`>m!M_9lns_Qnld;yFtt^RjYqA7mk!9KbVi<diF!#esI#_$gW&xeC-*Wf! zrfWxZl%QRtIh-qJ|8f8In?mJ<0F}|M{@mPuAUy*rWxO^^e+eod-w>i=@!@>Ozbo3- zdrU_=&g%qoOV;!y?kVc06=ugfrXy{K<|&a$FVGXPeS$5AKq&`=NKv_am(^fWM7BHy z1oC^oQ4L~4^r^IM;m@}A->AOS9$rTgvzoHljKz<8qeEqf`$E$mUob7>_xwhA3crf% z;d*RR%p6!!Gwx(mAZ38>(4SLn-jRF9Jp4H6_0S~Dy9i$J(<!y#O8aR}SrL|CKG!{I zB6d#+Gn2?jX5+&ApGPTEPyT>h0d(J>#SG`k1wX%Re`*Mu2HdjZhdFbt^OtpDcm9N1 zaju_t=nFWR6ti2In(H4w!9P+Vu|MJ9Eh7$Kz9_<0Sh+qjlA!s7SCaHOvr`KktvV4g z*wqj-53&D_VV|(dn~v0owFf*y1x4z}AQ*9`cxG<KDRUdnLz$a2q3-nP?D=#o=b2AX zc85ivc1O%*4D?L80s~q2%*VZ_lU>8!RDba-pS)DrYy(5u&5v{0%_^^r-=&_A5_KJ^ z|A4x}U#M;%8as5O$#?8GYkn^bh5SCjqEa4&z%@WF0RA|icP`|O*SUzP#Z<tU5Pnpm zX|2Kbw_8w?bXDaNKP{vsW=;>{Yo#BAv%L|VZ-m*+1_r{mG!c##h|Lo+CrQZWrD{F` zZo|(kQ)#u%25(MtYSHcTg~;e;#<$*;VR-p>ZH=z5uUh3El)cy&Go0NpH_1Cpjr3 zh184yshJk3Ygd6(0LA!20j>bSi&0<*4s{5IXjeaI&MtT#$nVSp=Yo3to`veF>|}b> zKc-Di&qHB?Ok{UJtOTMW?^9Y$+Vz7<v1oIvuj@<N@mT@Ibf04fwH?%MTbU``!~`!> zr}r2R?ejCunnufQd2J(Y9s3r)8^~Dh(b0S3=FPNWYP7IEfZ=5k({h3ooMtNto^l;v zrILzFq6oz+q<hE$<hixDXRHo}YAEhK1i6(uplhJxmoTu;C3ls@e5kBzZi`=BhXz38 zzhza>D;Ij%Rs0cuyVt-L@$DscJVpJkoFM561&J6KC>~g3xz@`2B5KmRo8eldWtF#3 zgTYUsj6CVxZHI#NFk6}R@n%$6yz>T{E*3eG*_WU{Rq$NyePGs~XUB8wPma+w_vhw? z<rE6o#9Zk?ieTg+SuEUjTkrsW2u)kZuFTkPq9sB_sF}^o$k3xzKS<k1#c5MW#c9(> z69I<LV~H~?vRpqqkh$A2i)|sR#n$=pd$`<$BdmXr-BlBOmon6C>FDf#I7eC?wVIpn zs2yu9qK31JZ$-`*{GK=D_k8y|(7L19h9SSphx{($_YisXfF!;4r+$ktSKmga`wN2! zv5C0|QIYAglc6(F3nkJM7`lPX4i1P7qHm>{qdOz8iM;9c)`6*$-aS@&W07uKddCRG zwW_vEZ!5k3PVcH`=};@ZcLn0GXa9P!liquuqit}}*}w6dt%0i*de%H@+4~`>Dr$y; zN!viw(=g)tIehA45X|J`B9~9yTTA|&`I{GUccP4jQX|)2)Wc4L$>%yweC0DZQ6_c> z?-<|>8pr_zAQ!t)VrAe5fed`=7u%MBQ}b0?P`4!muVGy`G*BCBEghnHR0|=v`<gs% z<Pgzt=1OWGBstfdAe^IxK|6t-sNo~xl$PtkrHKZJnD-tH;^*&jg>eq9{3mNP5&w$_ zt9Jj#5#-i%|GRQ6%)kvnA83PoyF_U%=!E_qH7Uzr>?-*ZI9Zvgy~XVPdrP+}JNdY& ztBLkw88=4Jt8ItAIUB&N3!>6Yaz)U|;$0_7Y?D<86!(tp;kkui-ljS+cvFXu7-&MY zPGDc>BZRefJ+F+yE#8H{YJi{_5d<k&Qw+>Cb;m~I7w@7``w1hv9SK(7ze}j^x3C}K z!PNh%25>+L;w%Ak+V2ARLvuuQ6H_|beTCpAYoED_j4<RuG~O-<4{>vKQ^$>hPjGt1 zRJhRFrv6`_hJ0amVUhR;*;Nk7CV!zF(}effUR)^kt!@>^Y$2e=>IP^@wP>cx>Uc3H z??$-^_w(hQ1_sRf2Ig~?TZ|B9QeBxE0|l`u`>?`W><H{SUm5ajLzDGl6cIJsCrP+a zg@LPU287JcCcBMScIyc`ubAc_Vm;I)m|%i8NhXt2VDnu(b9p7KU(rv$G4u~niAPBB zBwL^Z1MOU#mwwuQ?(S%Yp>$xrrXz*}UAkJQ8&4rFJLEsNcv0`_sg+5u_UU<-^{VTw zpCvJJ7w0nB%cZ$#=RGP72m4-W%#oSD3s>4Q^5qP<?;@v4HiHE-@u;*7m*lTgBD0_9 zc3bOsDu{PXZ`As3B?Hr3HH($Bq6VNKY6}%8^OyBB;=CvAir<oGz&^lTxxZ{>3|4<; zawdB9snwh9e11$3gQyCpaC(i@iHLv9dy<d-F<VGt{xMs<z-_W~7v*&zwv920Xdu{( zy5CAUS)L_Ln1^VmE|r|saa|C*5Gg9R>}{4_Vj(DZMiQ_jJ!cnb^~;)JysPw_8D{sS z+M;GouAEgEY`H*Ppq$m7Z8@n6dDHDk=5Tc*OmGm7&d(5N^$f#4*ks<;zzN6#4cW?n zi*|1v;iiL7ILBkkN4-{aIc1>?mzFSuKn5ldN9)LPA6z^TzoMHvMB_)U%G<BYRJJF- z9!36yI5eC7BaNL?6xz?Mi|okOIf3y-+ln=pwcpUjYp_zpe5UoQ3c6l(npc_t3U8(a z2NjxkD)>Ekt?HKqgA7>@{mlBPuE_j)NPT}8Uf<!v>l6MKpKH&8V&??$GA+_>mr*O4 z-LvSqJi%q!#uj;7yc(0Qz>YxDdNofSlIC{mH3unjfDf?gS+Hv@tlHF7<n@!O(yjpS zrY6PIXI`NL6)chCO<WigA&#w*fSc$0cL?Sqiu+Ahg}diJITJ;Jkj~k!Q@<5w{k&11 zT9Zv<h}Qc51z3rB!5CjKWQ@llKb>$Jug#%&e9R@6yY-$|woxEaP#~rPCsH7oFM|HZ zc^DH;v|sMQ1I=e4NnJ?v(E#X{g3RGOs*ANmp531xr{Pa2lPo9!mOIa7cgB0b0P&kv zUE9tjUg_0k;YQJL|FN7Q+-IOhsxGvbyfvwCio%flFsiphLo9~wMy`)IU;=W)UP9iG zMuoRPrP&{-<iUSM$v`asVJ2{LxMsXl($?Li*R_VnB{P6T46%|Q{~v2_9~f0}{r@Lq zfmK&_g`iQRO?9<FqY{mp)Mz6K4^`Au5K*yWr4|J%%0{rFMmJHe*H~(?+SayOTWed} zYE{Ii3Is@PYkjV$Rq^?*@d2L@LCx>=K6CHxCcx+O{r!Gl{$O+OojG&n%sFSyoH=ub zDNJnO#=Jb;_c%V2)otTo?narR|5US#>&4eWA-4QoN|PAv$u<vO%7z-G3_@|*MD*gc ziPRjYO=P<@dZ4_MP#KZ^vXrO>W`((SbzWN|`v&#J{i6p9)q{$#haYdHhf^`5vMZb1 zc?09M-ake2Mf*julD1c)E_UvQ7I56SWKyj6DtekamnQg43}mA~t%Yo~9*;<H<YGKm zjHkCYuytlEeM>8pqf@b4Cc8i4w@h_^ByO3;9~#~P@(n-Lqa|8s(blDGAByx>Inuj1 zRL&B|TVH-h-iWrZ8~q^M?%1&*8#akjBIeK1`F9ia{Pj9fqdvU<M{lNn-#8<28$G3V zzjfHgBHmA#--nv8a}EZV{>%HfKsfewjlNw*Rl#2+!Sz3ubZ2T%43#*J#0C6WAq+_n zZ8}0;{ore7^Ea2%qeOQBZL<=7d={`I&lM^$m=f8QF5a-;e7Y6+TSca-kVYF%hnt(L zdYUVR6X+OK?mmkqMO*jyTOMiIN#+eaMEntr2YBo3k@FRRzuS5Y9s)Q6&;Xt_!t)oh z1oc@yn{WVj-ZTHs2H-w(r$R=}->S4`_SWg2D&n$5KM)bZilIIz^gks~r-Dy-xpcle zkIbZRQM|j>k5VABnd@t^9GEJ_wbc$`uyd<>#`1?wIFDk~=|VMKNxO~4XLxhp4l1|$ z;n+xpN+z#g?)^J??Q-wK`hO%ley>k%d|Sl|6_gP|6Mg9HPK!xr(Ml|+Xg4j;L^&H1 zevMyL?^N0erApvHqJ>{+hW<XUjyup=wyCXF-uxb|gsC31sTT%-{OVfU#;jJ6kLJi+ z4D*+^q|=t$_TeKyGdn*%m@v@fu@mAAk0=M4gbf_{pM-$HQA7;l-vzn&*_0NN=Z2ko z>}2AVu7owL%m0=5(9&}Ytb2O5S@$My);;+q)IIqo<kFLGqCEI5)`hn^S1ln6-R&)5 zqd#!qM{f!IjLpE;h2S+Y3w)!2ALqb7f+4^3Nzl$6$zNu_GgcK8lX;k8u;M)HvY{Bi z3A?CrfW9(&WHdD<OKVYT0yWKs=UuDE#t)JZC?mc<m&25fQ6x;sB^RarQz}KyE7dcz zf@DHe^9s|&L?RNmc<{P5>#5e&+Lzr}dcirE^(hJ_u69F`H{iv&kyf5Q&v>s!M<w*W zc0Kuc0Pe?bAPyGXf<J%P%!!(Lf!^!QjlA*JDYm_g8rhYjaWZy$pLINv`EGW@pv*o| zyGsYOdq7dU0p5(>D-7cE{)E`l(K|9p-NGV;32Zj6YyL)I)JC$C9U$5C*76>-+<Q$} zE57tQs`P!U)b>xk<<x6<e0(;a=zG4;hZowm(Va>Axv~(noKa!Dx&ieL8BlMu>iyF# zLk*=L&R|+QyNjtjACCnlq5b<CvwwMx-68`aypP5Cr)qeuTtqGC*JE(=V@8suJ~PIz zz&P8(OhBa@i+NC7@F`ZIB}{h$$7W?_7tS!h+_pyLxJh7TO_+Si`R8kD`%dvT$hU3l zALt+@-Z#C%`1hj$_7aGM-xFK>Zu%W11B`>=;K^`rEAA~xfK%bxgii5gB3~weFT^wl zRNwJ2r;D-p#Kbp2Ty^J#`Od`Q-Dc9?A+B~N11-d9L35&{Uz%3psR_P3_#KYEuz=Kq zLj~B6b(uaB8o{1S8V-TGU1E<1iFPZ*yE}oLLAOZ#LSDPfHdz;-)AuSeW*Gk~#CX*I zfboz14>A6PC=0KQCd_y;$Gn@Sr%a+(qF=%%N*fwhfD#u_=?tPs>w>q%R1`Vo+kLO{ zj^AAR*L0QnF`VDnfXJ_}?!yU(1&uk!{*#N}3-cFIC>buo?xqmjlX464BK|F-Axl`q z4GCJT_pR+`PxSsd+Bk6ZjM}FcX@)fMo1NVh@VSV`7<%l7-7r!XmD?ZXytY2wrwL6r zH=(?lTR2#-qo2xd9Mtv|+aOJ&R9v&!m1(=OEV4IfqugM#JD~Q;cj_<euNDR*Xg^<B zdwTB(J5c1GP#oj>Or7N-+n>c$DnI}00Ko1S?BcD_Cdas#IO&^c3I^p3M=Ji;8M#P| zjK1)!G%_Pt9UMI!1=-!z6a%~b!g>e+V00BDD}I0wF8f^J=D^<VbS6(T?9-Sf?eSw~ z^fZ?*8lj(xWjv|Og;;`~MSuoho<(t9ooTPCv@G#0o1(WSd0lhbVc2iHG(MoGpvmBl z)3$)xEGCYgvX6BT!6An~yE&2C<`}H+ic`9szG_5QwfZNZr;;6KIjso5lHgck2kB?r zr&HjiF5BFXpaxGKkM15DlXb3a_q8wZ)#fcRSnoF@e<Cj*9z%7?jorYOC`*0`dxHI7 zfzzi@)N9o9e|?Lst(J6J+d1imv9Sv-)gS%|>{T^&m0#`;Vx(TaZ)Y0B5c?sOiwv=k z>i?Pfp`B*o+a&vzIrrh)_~X7|RslA=MJN=S*T>@Kj~USXyvt~wJ*dn`O2zowkbL$y zklaw(cD`POdL`uN{@{f~G5Ggdjh@wdpBo9^L4wqIJn*~O0_(sc)Azb_nTgh3;nwL( zw^HGlq6#xq;V)F!%wF*x3y(-or_tE(3NU14+G6)kk&2VicN@~Sjl+nXJxt<}?D#7r zM5wm+KJ?ZEgYoM@l@Stu#oH?+V7g1TfO^#)pRK~L7Ia{YYd1^8awhO>R`BpPn<%zu z$6*Q#m?*Yv$6bOu6Pv3Q8rP^7FHLh+63EDIk=kPxQ$J^fm^7Zhb=&*fo3+{kU`<aG z_|^0z!>&At(`wklBK21AM~CqLd*0TK-;+0kzh&e1HcX2MzUf~@eve5*?>hYT)l4Fz z!~3s6N3*DiBj&8~p!FZFU@Br*27Ol(BqHvQsp{>C^y`#K1pdEMUIa%8y(!NPt&h*J zRgXN(l94>bsX%n9NAV7|?@A|5!{ae0bdWZ}86^;*NxwjDkughLVepls%)F}tSPST- z`JKS8<bPss-0Tq|B7|%kC7G^1AkBd2+{mCdMKM}kE$5WzYzKY&J|q-mHLwaOjlqLx zZz^oD30q$RyuyHIe&^Ra<**SDm8Kvp=Ty-;uI*s#RoEYhO<i+JrE}!C%fLe=Cd(6I z9?=@WTuHkie7oh&U}C5=C1)!{w9KfjgOSeSwmiV(rprWC)x3(*>I-E1wqD&7maG0% z3flZH+D`Koah-8d%Gxi2I@K_z?nkPDTPAa@Gx*N;$BB<d_~WWH<_vQ1_T^@Oew)IQ z#n{~;Cl5b&>+;#X87FU9K3}@o<a34{7M2=~YZU8Gk^$2ano6PK4A=8?h4>aqZX@J! z+fx*i7DK48-jCB&va$pp^ePG>E<31T-^iax#XAyAv9a_-4D(<c_A&gCaz$ZtedT6( zpm4d0SCeB0%Q2P34Hd~p`{8<1qLWi4OHbfWT#?1!;r~AI|3qfYnZYl&fzaI{b3Sn* zCKnsVnc?yP{#c)4f8%^t!=|?PlqC5_Qmq_hlb=xMTr5kPhAG*ht0_VwBX}DyUe5pn z<F^-^Vw=%3^c~IQ<Kth)4ihaOBrek%uXST%&-hf;?sR*6`6AgF<15xd1mMTJ#!EaT z&a+izn==iTc^dyjW9Sodd}oq;pQG<NrVa&Ho`Cl|*<lAM+%#VTmR%<reb;Vl^qnCB z-TQ)gEco?hr23W97TJ{<FCh~5Svn6yNa>S=M)2Hm=7##N+IsP1(;SH=bq5{G*yWdX zr?LSLQOr+$9X=f3O*i4E-e7L2;5pNyaVkL_1g}jIQ%xLbf2)wEj0nLBS0GG)5REqt zCf367#SQBmb<}Vr4fp=4z+YSJKOtVCz)j3@c?#roHvG&*!7S7(K4J}Xr|#-ggXPYM z&iC|)q6YtnD<`)vqV3GQNZ&TXIg^9^hZgbM=_lm*jWdmV>Qn5`=+lN?_^mH9lsq6v z{1Iw!_J9U2Dr)fSG${J~8gSS$1p=CWh7RRWm_ZJ{MFDTs0LDxZcg8+x&sgKgp0Opb zi$59WA`YSRH9?k*19FknKH`rw&wfyv-B6aaQ%edS!utu2$kn1<yaZJ$wJ9z(3S(7= zieL6?HQqT(f8RWH>%8L^b?_wdJ55mKh-0WSR>rdS*@M4KHm;iLxG1+?OaDaYVu+Q~ zu5P%#p4u}u(LM}Osur0pq7Gz=*l6H-Te_hRX{-_r?f??Xs>vrKv6_GQEK{law%OYF zNv8tVP{n%PvX!;5e<Ra7N06ad69p$^SJtsyyyp_7EJjWGj5e=hxz~Oi`6p~H&vj3- z{Vnc;?wQ0L<WFVa8Lilb+e7h5|HSQ*?72%p5Je_+1J9x4L8t`@OtbcjY6!0uF^;7X z!?w8|_e`Uc?+dR~cxOFcgh`{BOG6QzRM*oK7eqN^!jkWA+NhEW{N>;3W}LCy5hv>- zEb!9BvOLTO6)j6c(k6u`B%M8T>m)q~pdsG>BT4IjPA^v5X$$r%z15SvXWfn2GE`#z z<qAwxTdgQ7W~Os2THEHzBSS3S{NC2*%BMENV#{;oUw;M`VZh&%k+R*~wc1x|m1#QF zT!iIaS5^og{E=WMV@X(A1PRCnHScLsYzj^B3&@`aLpEhUi=jVS;X}D8r)C-$`c9=& z!ecPqze*j{o8$Gn-us!J+a@{$a&IFQ1^tH$vvV4s{iEtHTd@uZLd5@;i(uUWD)Af( z4(Zgmg;=m?c!IDE1;4oCCT@PH_BdVgsD_Vcb))O#391hXf<xqzQ59?y?dflAuYPx} zAq0-C1_N=`e}$5^^N+9hhezn#+ri-$`5K8=4y~L{jU36MDH2qlx%JTt{trj*;~QXl z!PDwzVw%Kp8ogZC2os^yPiPKNO3ZP;dCmV$0eo=h=`7hkpYPUqQ@2v#m7)sms_;)L z6xm17ew1{Ou3gt`T~TrX+6y}Jw|VtJvYhW*@-*xCiNsi|9_g33;<lmDO7a3^H*B9d zz{tJaTL)}8$2G&tIiB{))0mlE%yy=cBL9iv-#7Qq&^CNn1wYmZ_;{EW?x<!MWvMtn zNA5`MyU@Qip!`l-EdRmVR-QwIW2!9$m_Xm2F+UhV`O4$P__I&V>$WyDzYAA5nV$LC zNX93g$dk^A74D_I?{ew0I$rGra<(})<N`Rx1zpTKR*;$mbUJ@3<*vzTEO<rCnKfbM z<6QC)7oDJOd512uj;NuI!!4TcC9t!7cM&#wQwtez0=U}w36sA+r!KvlIao8;qj*FK zwP8GhJvcpv-VAo3YnE0;nOLJ8pS=IeboVL-xejJ9eax?mh|{1uI)oh<ZIi9H3g795 zA<530CHAgjJ=mZMxd(`a0Kl36(r*<g&f&dwTVe&`{^|sS&_vBnsYO!GQPHMjeiH(! z<9gyc+OfJVF3Mrm3v`a_MdYT+kJU{A$Mj(@tTIPCL)<@}n<su~cAl>RIJ%y*zqA#n zFLo_9Vj<4~TwER8@e$Jz&&JkA#>Clx3%>cuMstE$3(QYp3uESO>eG~!yAnF*=^G;7 zC`==RH#h@aCRta*W)uD(wYa68zVJL~>YMT_wT6xH=j5=k_Q@oi7Q-7{Je^=RY3RtF zh3MvwxLf)Swwri5ZM%1ynH-Bm14nE@7u0^caM7G!u^1)`cPk#mlNK`Eo!rcpy9$A) zO?A#Daf6p1q3=%;n<zu{v#y*NCAK!i?GBKqO}*O;w;Kz%wS>4$;8*kAM1IS2r^!IO zKog^wC6+5wz+OIn2kkP$i8_U=gImu-NLjFH8D^mb;Ve+HtE1B1U_viu3KI>Hu&m>c zg7u(H!O_5qI8(&xzo+;io2>-tYmxGNa2*?0{AtsRr^emuZxdk1B88cO-5U#wlRSp| zV3<r3;{K6r*U(N)vg5}f;-ew`BgxdW{LNVDYJ7PdQp_$(m2PZUohkS03AKDLxnw?> z4((OjyNeE+)B<PKB(J<uwVRu2``B?hxG;bFXOjgZR=R=l)SNBdUiv;;Pr*TR$wq7_ zG@KW|U>B*h50}3hE7MW=&PUpMl1t8xWmgRDUFjd)L~rmZP*vRuJaZj_^UP%DCRmY| z*6$w?+n2+6*oWz%OLmAEFg5wjZ$ghr<Wy?%E^6_Qiu>m&-ntWaGW5$Qg3QPJ6!Klk zj-E^)Zv{T43NA~yL<hL5HD1AYwKg%Mu_m~W^{Ws=lv{CDx-pZu#CSW^!^Bt<yutXO z&}-40a%aBDMd8w&FKOwk7x&O7spsu~VTKF?7LJ!nEmbK#uEP{}^L!y*F5C~+UNByx zP-A~h7_l{s|KU>DtV-;)W5{}cJk?llLNV)|wi)YbS`_O=Q?pcuWTA%N@?hQ~v7RaY z%CINp!cob!dP$cRnb52c9KX%esF;*Ogeognrodrw-h{Th)yb#6uZhV_Z`k6pZnO2Y zjTN3&DhX9naMVQv={*|hpJ@M61VHVG2nb&BeJr~Gm`|17Eb?j9caawWHT4D&PqmLA zZVaZwTlcMk+@2t(*{ubKv(RcZw8VWD@Rmy`8yH!cvMXyORk=#O7uy>SpGx#W9e9lP z399d!YZ+OuCH~B<WTeFfyIr1B(b-lr;k5C`AN;SYnXu$n-!ERxK%U@-igzPwIJ>ga zkUNeB2KeJO+m}P7v|<C+(s^i5#qbBOjb+~k50=;jb|GW&E8ByKWNWUZHhA?ldfprl z4Vn%J2rb1~5(pJIk1H^Hnp@<x5n%;%e}E!)?j(5_DR+mAL$rTa_P=4pHQ(P99ySk) zjNUIQVq5_1dj=L+H!3Qk_SO8g6bUaNn1_{*k)r^#Zcx!g5!}*Z{c9@puay2prSkKs z^XJ9m|8QOfYFcLm;m#56%y=yPrhcoV`gR@PpnCVBEv?UWUOElUT|yq=`k#8_!D6K) zXrcZ23I|}q{JE9XP==U#4i)%Q>dCL;jqrE$CdK@b%kE;Q52hjTR>WUd4;{2N1L~r4 zHuVL)Tra?N_Lw!i`BD!<VS9gE+_zn6j~K$%7>}No!E-qODrV7^sN3J?{AZ7Nq>-#F zgey&!=t!!j`Lp6emB*<W`FZwcnRPNoG-)>y@SL_pScEhh-(9bvxZAeL!7(u%n)7Qm zkZ?ZJ5$<*kh0Gz@LTMCg=laMRYP*$o(%#WTvdeBvy{@A4QczNd9y7xq%WhFQGDNGy zH)Y7AvO0GzN(TB_GG?|NUXWSak#46kjH7xkDIgil8cSR_K|>eZd>pq_=`Vl~qYP{t z%XP^+k8MqMzQzatYCDBUz9&2vHa#x3lMPGbm25C_>9{-j!L?a8xYGJT;Y!75{S*B1 zWV1LVCYxCtS5OxAF)Bz2IOVE&Uh}?`tt`^=U|SzCbcg^ZhNDSC3;1|&fb_5oDR=0G zQXRr$ak^cF1hm6l`$s+glxeT3L9ip!W^Y`}I7+4Q(bvA9%$k|g$$wFU3)wH%t>3J( zDrA+i?yAt_4Q>^oS2Y#PokG{fVY^l+Zb?PuOjA)+Rnf|9cbzjyQ^8nDH(ZjQcT?B6 zG$;i3>_7qzw!=eJwj;OA^LH=|uTZpva9Y*ow<;#HdQ_<;O|pC>nU?!l39uU<QI=6V zy0xtZ_6|l}=H!&`>K-mY(M?aGw0av+@FOq~C4!-Kz4&rv_NmguOP$Kz*F*k|_Nx`& zLB59ZEX$G|axtOZr$V*$**8A#-ML`zSX512!@RoW6*sHYiK9!OH{)9~XG)7(#?)=v zR`}dcMO#i*{jvIFCtNgeWA!N!9P@2uL!kRLncw<jQoI93IX}Rt;0G9$`~V{bS#|rj z!O$mQ=u;xt#$Y5n2o0c%TuBxA63u_d#h!Y(OoGdL6?*#u%a#YiSiZg~9?y&<q5_wT ze@P|xZe>@bydQk-O%ZHmiZFLOm2*#S*cj!*q&7!ENC?(;1i<Q4-K~9x9b%L0N#Gj% zbw6~|knqC^<9OiZL(Tk-i)9t1A>~bf4?@=XO^k8Bc~?f58%FXIyxEFpqIRZpWt_N` z3hNyQScQ93p@a%<d>0@cp$IS5s6A+hav}Ul@yve0>zPZUsaj`4MC9P|v&5_JP;6oR z{cl35nA94^*DC*b(&uFUMkoEb@h%JyK<&~VrB<m))34Z~L)=UT3Tj&;7p(ps&0#T< zCnIca@^@tx*hKssw|py2%^dkuS_E?FFy4G0dDewS$<99jCbuV=4YZJ&iCtrq!D!Z# z(kCrG`n>d6^?<)7t2KVL43p-O)tU;X9&cJ}v^SJj<oi%b@_ncvmwu|;^iXX0b4Cba zW(Z=offyNr@XsNEhUqdw%=#q`A!!H~k&D=4OR{S}$9v1Zx;vph+1Y$k{Z`$NIgNNK zex?({#Lo=BwZd<z<gb}XMayAWximOC*{SnoU9sWW74e40lg*EV*+dFWP_I#WXsF;w zjv%WJ<tKVQxi`^)c7C`e)UIB0npzXQ=4z|lT*Hs$Sb@pKh|B7jcqR!}!sm3AlpU)I z={_*iw93JD#}1ZB!TrZnYVqZ=-={Y*Bn0V$K#U4Ol_Qdw=R?Dxr%kb!h}_TS=DEpZ zsApdVXM|>w+$nlj&AY5cm@hK_mAWySIlIn|B(@Fj{dy69a+|P4RU(q*s(i|KwH@2` zmTtst+ksS8S)K99?@uzr%g#tF8z6mOrES#dT3!b;2?U{*Ni6mgt(%1KTcsAxVq|Kc zWOf;$r%mh&Fben^?A|}`@vO|I{J+S47UNO+aFhx)&$1k{XW+`OeKNZ&);pqLudOI$ zG1~BUW*oci6(IGu_->Y1_D!0X?O<LWek0#gtR0jE`uNW_LNzm#i}!O^Ru*=oAlm?Z z{`BepYkaEyH++=&1AJD{)&CtI*{89z5<dj5EF|rHEM1N{8a%__Mo4GB<~yA_oPAT+ zjUl*{va)u9-@jtH(6&}a21d|1piFyXKRB9AgVQOaHpAtQi{GRDU@2=t8dKWppfN%$ z9AQQUTLJ#&fd96LJI`^CjGB@E7J0G!!_*(GMkY3B(~$(bBfM5~l=YPSeRl{pD7&%( zhU>n+q=|b8UMuj!g{hLZZI?=%Y#X2bmH$lg{;3?k-%9uw#{6NUo-G^E@Yn@=%Yu^h ziuSjDNB47;a!nvf3zw>Q*a5b`g=w2F)lMnz2%_2eF4Lnqr9Z;NoT^DB&7Yb(o6EZ{ zl9_xc^PoQ|mM>ebA>g1;b9~{T<?mH^A9$;mzn5BgRGIrLzVN6)-UkbhDuqUJ0hN27 z1)~@|iw_{tAaimh5ds|0*>_UP+d(Zx8&w11C*53ecs&cS=$yr99zyz7fgo}fSLb); zwcnhNme|%FZK~=!w5axnJe(Qjho(NgbM>F&19~HR{6}%6hj{46A8!3wh#x&b@uQ&) zR&|;Vs%jpN-VEc7Lthym=Kw5ge)WPrE6SgmhR%mgieF&y^XgcuFe%fl*^ED)$Ry2& z_N1@Z9-^<kZ}z8O7XHZ;@sC>%dH)d$)%d0UKC=IMLD8R-$ZjmV;2SVVg@1Hx)DxvE z8XlcHoiVF0Ul%@JSUs3HeOO89tV9`UlZ~%Nec|mN`VNdg?T)Ol@`+Ya;YLgjBV0vS zI%G-iN5$-v)fJ}*Kb6#o1;J@>FAufLN^_$=^M-{S3eSnzdKVFFfviBsisX{Yp$jVq zaZ0S=@8^FAqgHgqlBGu{Mm-9$6<l7aqp-N6lzEK~`eiu<{q!6eZvqe^sh{AagGIQU zTyHKPjdVVy2jH3_h3oI@lGt`#QsEz4jX$pvhOUP=bujb|)P!5U2S2wpvtjcMe+rXF z=aX&Q^o%n@9kVCLM41>R_ohzCCaARs4p)FAN=G184r=Bk6ZE{+WIZF8?^CN@HoBy= z_Z5FiHAdJo7KzmM@34t|_f-Q1{xgWkeI+`JZQyfC3t!5)JIhEhz<=WA1Len^PM_z{ zU)#*^_wN~^_7Hlz<t5p93r}{auWf;nP<}?qdMOrf#X|bD{OyW`lhfbuRxE!z#UDp_ zE3oBw8|UG0Fsl#dYG-Rhj1z{KFBl@h9`y_X^I1Lf2`@A&=WXG=7-)uP8lQsa@ww2E zn%?6=`+g?9oB;v93Pe0^D>A2KH^$m(YoF}h&+MPsw8yYOg}UG&ZR)I`LS5+)282sx z6gYnJ{nDq|l@q<k(Kx4etNsTRnpyj#BXjR-kw4B=c+6S<f8Te1N)^LDwFrK$O?2ja z?r9hz6hove>|COQ-V}H8RB(to`3c^frPoscS&Akgi^q<}2jnzHu-R_v{zF<V!Z*aH zPYkcMaB4~TVdoQylw7<5*<QRX&Kdjl(35u=3A^s+;P09KtQPZEYGsq`{8(>~Zlda3 zF(`MQD4;_A{^w~5&lnd`V!|zA2S_{JAJe=)E0O)8EO{mF=n_Bnr`T6)9Mix~d+4M4 zPhoappcU}aY)s{u30fUgh&3nGprgGf7N(ZxDi%&C^PX6qOD&u*$a_L#y*w9RIDudW z#cIkx#b>WIh|O*P0B-x?vJ#l83~o<zJ-C)+zJ=>XK`~eMs57xnVZ_XG-(MYv$>>c~ zGTCYnRDs{vH$Xldgw7}L|05-nEl<#5D)>$_s($PsQ)n=5^0?&+L}!Z{_G)Co{T)1~ z(6jS-k>cn$I$_)FMTuCl<0N30ah??dL(EWXL6zCrFSheW^T!;oKG|`Xa72bsfHOz2 z!IM=jG4|@r(IBKbIrvH~nyII!<ThCdinkff^Z1yl)r_OYgD0aa6{B@-oG7aL)y;!T za{+=8@h|*gymE>ch|?F<_T|olP4o7JW;v~~4yJkNflRX2`Un6a|EePrTP%r*-l`A^ z8xf_;wErOEhaEje`)*M4CpCG^ja_y1qc%dpM!UeNZFlh*4Riz34&2R-Xps9tT6tCr zt}f;Ear}!j=MfYmkkh%pQYCnRr`#d=@8QU2wA4)03>Zw^of=8hEk_C=rH_~meHexo zb<NvRT8{0TA-PL|d8X*0P^COQBGUinfCA}rKUee4|0h~=Q;A@e<Svy8Z%%X_T`m<T zocTN>SZJKVu3aad3JNICeD%Y>g12z5z{ty&ZYNYUN4bCwhPGp>MUfsWf6JG#%np9z zJtk1N)z9No?^EjUeSqNC)Z{~20Pql-t=~{r{<+Cq*7}rtRZ=FDXgnK~Hmu7qkO;?c zF`g3+5XfJA@N^Mu16xGP69F3${_yNY@sj%_C`(PQxJHxWiIM?B!Jb`&RdTFy#iW8A zfFcR$X|4i4gg5Pew94VhjL*z)c*_Y6bsBT*jgVu=ggw*Hzh$+W8qn&6o45LNBwRM@ z(QM^~On_9P`K07JX2W7RHZS{vNoew1Z(*Pd@v;iFsDr}LO}1w&n2MAjH-ob)tBDRT z6SW$JNGyFMKN{8GlS8e@i(aKByUO66LrmH$tx9M>7U}nC=#>Qw)_ip9;^k7?E8<U( zpHf3b!c4`HN<ZjtFP6S+#SKD5w!UW8oli9PhVmO{{Px@UlwF}O8g3e|OI~@m-mRRb z1uZ&2xr!gfXNX!=ccfS@n1U8jh99^)+ZXeej;6Kb6$(`1PKCPjSMaeBGT1h?&H7qK z-~#x?G;4c-I<3lnyK1^#*JOhj@427U70UG3M{tqG(j^S0&##&kqVG@-alT?AQfUwk z7h--p&)1vwo2YK{*63u%r4CdEfB3}v4XvE_h4-v~gLc315@0{!r)u~znT@M1reH!x zx8kEd6<%;a4dI@_g(sM~S(EKfm40v-n_QWF?Bw9e<dV6uhA-zH)73n<cU36=OW`ol z(kO}j&ETibbX=Hd3%OB6#1u-b9Z6<6&YIw~$xMlmKHEJwcQLF+p~Ue6DlLJ2QKgp~ zu?i&2y<L$$clLnBLec6vMKGC^Nlf+Y!>RrbiYr1|d;s5jFKW)$F+BfQI-7$25o#h< z!<yu{HJE8t9{Rhy*+zlAOftN;r1wgWZAqtP)wPy+&o8WyS=TzqdtMe@tIifxd2W%z zpW<*0zWh50e$C(sx{p=*mCr?PIL!E9j&={m;zmt&YHuT(chmBh(bW;vDcVr}qW!%p zXfgq$gYEV~#g$wwsx`Hk9_{w##Cw{WiudWR7^U48CZo2mg!3<J2zsyOmhGYy^nJAG zwMB6BxoAD+*6(WG*6&vfvaR34g?np_EybeovGsfZPn)k70jB5(2CynP41gS{XIfws zu9=u$G4j;T6T4DX+(D4l*!5&3T>8iEPT7Nyz^xvamNda4FSzp{=C7(2upf!%F{Zph zx~n2|N-b?C!o0{obmIMb!D{MR+h?M;>?p<3SMxHM!-f)_V@Zx6h2tTAO!)acKHt2M zg6KlK@1XU4((H8bLaonzln24q!xVPI917-)Dr(<Hen2wrPbioFL_UJV7W^kwW`Mi( zc|)}{dVaaS%itjem%wg(>ql?fZ?XH1KwEoOM)cKRV-)+iG+~ZE^l(vc-cg75;V8PG zH5-sG$sCDeR0b<2l{rP*i@3bUC3?n58d+4vxf8voY;85_-cBc0d-xfn+j55r;?f(x z!JypLGqeO*TY4kFdvArU-0K?){6~MQuu~Dr{OV_CYJlxjUI+ihdm%;J0yeZ@>qEpO z@6S}c;$`n>Zt_bJtcAz%m*mlAhkqiZ!N&E2>Bl8IdS$iCE?cRRxI^>pOE6WcW#eGh znu9W_OO9dM;54-&)-*%8bua5q=RX3^#NP+tdnYg>d~3jWsg{ntKX&}cF~5scX=qiU zlf<7?@h)~xQN@pNZuB0$NOX`S+sp*#T)l0X{x+X&Wf2Hf|3y*tyQv<WJEV-Rwmo1v zGna(_7iBlZ@4pm$=MDACJ8#l>g$HA+1_0B}Y1E1D0c`2Ebiz)v(^P7a>vH0*0bT!X zQLS2`u;5t2Ni8zT<@<8_x&}Sngw9q5x`_(Nf6hNBP|gIfo#gM^@LsZGA<e=36Gpw~ z9b_pp7V3?LlD91yrZCCf*`zY*TsD7iOoj;p=amAm^lk6CU>(K`00))s%PP`zDfdf* zJRL~P9MIh(VaTYv^YI)}BjPPA1VC#IC4K1ti3Uv$#AY;5Cie)`et-(*A5(lEmG<Ag ze_!^F=44?au>6`J@f#xuvBbkCfTjvwx+^A`>rQqorg`25v*+6zw~1VrTsU$tWTGf0 zQD+lnAdY1P%r3J7ZV&Bm)&Zt>qdpE{O~j(c!-_uW_X5OuoI$R6m_ze#Z2Pcztj*y4 z7h?#4lqRO(t-^o;9?q*BUvia4gjg+k(><RHFqL7(oG5Hx`k}pFcq=5)*xdIMXa=e+ zPe4-JTcLCuVm<QJQ)iUsus{;Q+4})w75y*>b<mDOeBX4bRfY)ro!<>sUw{^frL%8* z9Q>Tq7@_HuT~)#NnxOtSVtZO3eY;FHFOd#n-y2l&kh~mN2bPdTLViF^3AZ?EAVQyk z`Ab6jm8k<4gA4<(Dl@NNxx#!1$utjY1a0k|J2$jr>gW+K-P%MAi?|=@H`HXq>j-E2 zen|DT*B?JaYOQNttR$z6+-Uyvhp66NVzpR$DL*1ua4U!ltz;*gtbP8Fhr~sqP425< z^PfBB%<Is1i(0<nAWR16%PSmc_iIdYv#F<PjrWOv4XFE8QQc|O?Ojpmzl}6jq~bh4 zG??8cX*Akj(*aCIT?;`8t&;S;3RP4V`NS7zHGZ%!yrJr=G)~jLOMRBdC#WtoMSdqL z2WDs<#v($^xBx=U3_Ck>OSIllg!QeQea;P{^dex6#&v^LJBsjxRlVEkK;8SvY>W6r z7C3`2zb#f`*#(jv?EuMc9NP9ATT^-!OLlBa$?Qg4M9uth|4tO>B14Plb|in(Ir7h% z`xbKajZ9x~#tb$mBx!H++1)*)Twx>kICVzXQKenw$9p6N9oAL;BPbFN{<V)rHrerA z#?@PuI~Eld4V4bM05g)U%dd8_^+q0SMC2mSlrI9G2(|~j1Q9?AQx2Z_rnyUMdi~Iz zS3hnlCZ{-ym$5JP8?x?+_+fH)u}VC1(fvq#Np2&gby}X)_2}Hu;kZntkJQaGVVI}Y zCh`%2aW*j2V%>m(lOb)?*xPtgaz};**A=4{NtFg7D*d2JSGdxt>m4I+rlB)M6?`fL z{}~_6QqlZ0oB4@TQ6Oi_@h~yzv1biobck^5_CB!f&7ejOPZqU3!GYUhSFkL*3xW_- zTB)E?ILg+PVfDTdLqz=wtzU1a7`yykElp+NdCwzvm*vYljlYtfcQrQoJJv2+{??#^ zy!nYiUZTvOIEdw18QVpJ$fI3`J227E)Akz7U0M1vq__-v(zXOlOd+)x3wEeBrO|^6 ziu)m*?fAuROm*X8rQYt$Y++g$iNG6rpMS%pgufZkmDq5)0%UOQJQ!Z3$V1W}Mf*?L z4co~lpcCURIse+-MZGqzCoAuLE8@52a(YTzw%e!u2JbQEM>1;3jb@YJS(^sC34xVe zj|!J0J7j0b8C$E7q;u2HA;^M-`xg~MN`l+w*z6FrPZvRhpN5a;@u>5($&P!0AtL{U zUy&$U_8$-ow#gJo8lqSD9Q^z(4J)}-q#S5r*Q7d;>=29U`2p(iYZOkdGo#TBE|%7P zp{12@mKKR`#O$9BVD_0s=Is~zfih4}_zXy_0>$EHxkU4U0IVJWU{Vo)2SWhm0AO8a zPKmfWzTW-)IXOK9SYmB}gXiBIEa}l&Ao$y^G~eURjC)fP-kelVQ@K`@JtZqK6dCPS z*k&jFisbZPt7k?jxKh4FUb{PECVTa?5IR?c?~McSolt~t0(|>*6gnG~)(oh08kKU- zNYC_J4~Of2$X{(3U<&!OiRD^A%nQD9jg$iM^7eh#k)@V5vog7)lt5q>?!7}wKWcb! z-qGHgQ9;9oxy@a3OOs1>t$(g90ALmC_1MCR>0QMpJXd;jcY2F_lgTB#ZtF&#tGxsH zzh>dKbi`=NbXHk5k;;GHw<VoE49X-g&mtu1D3*{TywjJqom_>g(FR&ME#R5cHCBq@ z)d|*=e@d9jC$|F-7EKatiYn$N;h$8YwSfOkW&V*b-nI_;Ek7mqnn=|zpK2Xq7|H#r z58?FYMD)0RXU09+M$YLW%5P`#TeRNI`yXJaxh(qpDS}zcmAP(M{MgTU-dSWiU2Tj@ zbj8-_se2F2esSf?`F3jF8g`vDNd^mOj6xA2=h$O@>-yV51+Rdu>vOF<xfOmvALe@5 z4lBYB{qbn1KP19`g4(*-@IP_^&5_7r`i>rB<F{~s#)4-P-KPm|#-ifV%jYR2u9aED zZ{98kl5Ec4XFrp5Nu?U*0pvjHa{Za66gnSMbDCNyx5r=<Lu2{@O^`t+i9~Wbq_6fj z3@$5?`8kJ|svR$JDn+I^2eITHH>jzh?)^o=D3<;eKf!}<TODh7b+G#$uH7Nj6wX)g zS(tDih^EKO^)Z~ee<AM*O+S+}v6Jry4`|p8eyW2Pz9*1ySaq`FvHyt_bmX`jY<;;b zSn`=E0PFWYG3$45?J0JD^dSmF-&@uU%`Rzjl$Z0CXSExgZ0k3v<;S7a|3vvaeq@wq zjGoh2gtY(JK8^;zhT-${zAolSygf+dxCtVkfAWFQo=KciL@FAM5$B($(!A<^)S2xx z(x0heqbaVSv`st<imEmBtLEf8-(Jsv_E^E>+Z)=iq6l@u$!4M_ifct}$BL`|%lshG z&DN}M?b1thC8qrg!LVM&0&s7>1sV2{{*cTq95k4Fo1JBu$~e3>vyrwf!tZ-D68!ZD z7k=5el?uANBVw~dRN*ozgz@f;osak#wBW*RfC>uOPYRztZKh-9RYBVs8bpS)#th12 zhXP_W!9S?q^_gTa=`5MM-Vm4Z5OZUS`BV6|zoc!(&)f=BUQInO{>VMcPbf~oXUN;{ z&&INse9F(y^EG#>ROW1`#yTK4x0I=HYogDr{HvcB19rE0!OHa<FnLm1MO&vb0JL8J z<y7Q=KT!11R{F}u`)#iE9=H8QflsFkQYzLvs)*E|??uvLNv=T4pATvV`l%9Uo6zAO zsnYZ*$IqZsG^UQ60Cil1f||Fp$&UZj-i86JhwD8*Qdg@zo=KHx^fY99FVE|L)t@{7 zUn2bS^(RL4bCY1N|E=`y`O>l(DV_T7R=8=OqBepw+;mW*rA>7CE4-%&vC<7zUV?ds zFPJ)2?F)wX?N2^S;-}gd?9QK)`ZBEz-I-~%@3tSYPe!wIxXjOP8g#*s_Df3l&rBD_ z7Z&x8y-bL^smMY(o7M|ex$*VM%st*y4c%?GY1)C4;<6DQf(uN!|MM`ZxHi9ck<k;4 zB!IYKN`f`^Npp;CIWugx@`l7;;(K<NAPHO;70>n#(qwUqRmvQpaqT+l%dVPaLy#Gr zeY>>%;*$Mwq|`2Jc)pEfk2(PAc2AM_aaM^PkmQmer{KWIs#;7}t&4dD7RP}UiS4C( zq9)A7%IBv<I`+XFCujjzxH#>Pc=dR>gC(8Z&Qj|PhDZB|^Q<`Kqwa$JA6MzF_he^O z1osGs$iP^*L%)2$gbyVbDjOI*&?ZzI?LgIQUl}Y3TQ;Aq_G+XljMsyhG#C8lb?2Ww zZmSN>HASN;nm*15MIHUg9-)+lpbPc{B{%cu{;R0wG}V+pH+N>p!FRiMHdCOhi)!sn zt>C-{^r7shv_H+_cN@8jk=QMQaEK?21v+01=gc6LAMj<Ki42D^6JTsE)NN7Tkj!yD zULNNUy;E<TS*plyA`h&>MiPqP-#!F}sprtId-=&p4$7YmiuOMg1WdR2!{U02*B5nr z_1908MGnnrUzIeZ!-YwA4<fu_D+DMns<s!^f;shW28lcPn^CNysKUopRQN_%VQVdX zwWvb3Dh#8-mevO~P`pVqP)Lq9(bLdq48)w^mXul&Cl`K$F$+m57fD3Y-=XpJS^j@- zNG*1Jv{qh(u{{9>_h*&+JB(UY)|_g1X5K7bwqV3b0&Jf98fXzV7LM~a=9cz)+LpRT zHx<UQxX}Z{MrFO&wT2VC>X0>Z7r}c@zf0;F=@xuiwp@+{_aAC5oe6$PDfbp{aI*p! zyJaK;mY7~Nz7I!M;@TpGJMSwR<fxCTQp^(hDxVisX`xE)bvRfYv9$sIZ&8I2R0zI( z$p6d{8;UBtihCs3j|#5i`Tfvvw`Z~2LcB4p*e7&!tn-Do;Y+EHhd12hk-qk~vv-}3 z%n$sIv~A8y<DhwT7a8)l>+u@v`PBrLhTnO)WH@Wx4cmopGDop62C$+Je=X|VSVT~s zV|Nwt<-VXD)}xlFZL(wP1NoD$kOtb;V5o`VT$|zBhhOGxH=&a_Ksi~{$Gp|HN4`i( z6)UG0Yf95E!;fT}JW8V%%zei!NVj<eYcNLz$E{;rH^rBRZi(10Yy*e^<EurjJUE~u zj}~?0JGg`j9no%(+Y<VPTWA*ILn`1$sW?StY7`Piaa%~@UytaYd2jwZz82Vd@>_oz zTl3`Squ*pN57ptpWtpKCCfj=tWWO`gR|4U-<ifI>Z2a1kn7XPT!6h>~|D<?v+)GuW z-X-5;uhhJEE#vr$P+usaQ&>igH$!T`P-g4Pvlq=ElPe`6RR~oSp7`L`_#ED6BX0zQ z01@y&WTvn0F3s!_hV8U%zrH(_Ax7Bc54rzqd*iBG7bqrGA4W#eJulr~<Gv_=U-q@C z%%jnlmDKgt-QUP(f~J+)OFS6kk>C8h{y-73zuQ&FszL1W<h^fe5^ChY4qkUqY)y6y zlHObGm)Ie}8c`;35Q5g)ciBeyedq1U?GZhtU6WI#$$NVm0&m2{<NeqbOjb{`Qx5+K zfr$eU_*0SW?hOJV7dQ_|-oEr$j|3o%%B;b>=WgSxX|VPYyil{#OihG`WN@&6r4xI~ zRd>zfa-Pzz#ASXdU9f>X^+1bRsaiM`TcvS#KFBT$SD3f)F?sK*!&=hm1rNg))@i?_ zp=T~9sf&DUei_?i^nGd(K5aXwNZwoKeKBek7T3OQt8=x+Pd1+ihdecy^Afm3gMWRA zmKuMCmKB#AKWkZ~a-<7p44Aj9Wc$B&<jwlQ4^p}=yW0Fo6~xvBBdF8Rz2H?CY~8uX z%&=$ve*D|~eI?(rHe*BR)b|~sH=92Fq7lCbS4mJ(YcoL{G|C36(e-E;8Jn@Tc&?d7 z(LcEt_V4FEnS}7hVG5lNB&TlN9pX_g>D=kchXeU6(jfQRC+1%ocph4(3*(j{yKShA zINsl>@!CgfpY+R4$?Xn^{_}Gl-jBBouMpoO?vAxW8mRJjI)j^UdT=qj2-1#M(sw{j zcB%lGyD+%+LnIo?Z(OVWey=CfMn$RZU=8jP-r#Zg1itSnSq8KLY3Mp@Y$4YQ6{czq zO%Yz}T@nv|L7qUW5@T%{i)w=Zaux=XX~lQSx4p*|Jk5$v)6OYw#Rt}js|Se2q#~Pp zy9&u>zbfj8Fkg58<2RYVmxDPFOSq5i_H{xa*?BjQXR<MRfLmbXy;Raw!MsUy{UDA~ zft14{FK=DMX^ay)m-LKF>8I=1MDpHeXpUB=1uqg`DDc1H3*J38f0G^0@Hb3Dh)4cx z<OM`WK;$#jxtg!_S3DOKb#DKi!qsK&QOy#}zp8Qj0CLPI)S#W3V8f0^{F<B&5+MF@ zD#aF^iie-|&<i-WbL1v8dq<_;rtgCKG*Clblvjf16d(t`j-ZYKYS4PHvph;1_L~XQ z`9(EnQZu+~zi|C2iPv^tKVF=co*#UGB>4-{3)n5#1??|~`GU^%JtA^RCJrY}Cnh@i zuy`Z8a$>mI!pNHEy(MNmxhmPQN^|a(c=7{$cfg#{GqxlFJBGVP+fmUQE8jG4Y|r|$ zGRmD0_qcct59q#tV?;al<X44~_ddn#0b^5{BhO?zWvtmTJ!5UfVW_q3K*;fs59O?m zaO@ge(RGYsfT*7d?sw@~dfJ}laeD1~XkJ-ZKlvBOyDINdmxCSNHvuetIhgk%cFa&V z!Ti`A!sSG0(3SW^rQq*MDRIa%C-?^HL86-MoX-FQex^!?vON=;H>wJV1n1Ns8uW3w z-?)p#pL6>$M@A74-$^Ko?9(OOFvdv(81&hqq3tS%dYqU4fMD0{Xmb%2`pJ?ZZ42K$ zTG{a$t1Y!^Fst<E+l5=N?@I_{=tEv)W(oz;IH_oyVp{xf)svjcnmY+5PIg?U^2}}8 zHb7U3v7dMmCfEJ6HX%Rtp1H2l9=$(w9L&O2<MD7Z4aBBjsFVqDVx|3<;d;m?5F9UZ z0s9vB#zbiuqEz^D)TdU~zT9+N@t0O2rLuH2&h>ROlAQ`I0GkC~b*_;mOgJAiDD=3f zrK^5KEz;7)l2=OTsWH1R-FY>G5Xygi5v>SqI1-A&6o&JPV~3PjWI3O#NN&FCUVc0@ z_=WP<s{E{?BE5fv4Mp!_b^EY%of><jXw<JCZlhjB4&&TNx?+WLG5%WQ1@;ic^zDRj z*SW2TgG@*S@cJVAW*h+Ns144~T387!rDpKXXfsMu$$MdPOEPiYGFBRul3eET99Qnx z{j;(WI2Qwe7ACbOj}h(~WvX9S&h`+au&Hd`Ay^FA6{QVaA2$<TNiG@G_;tb}__J%m z<L#eqbHVeC`(vzpSvD`BeLr}CdkX$7ewKbI@!MjSQQygXi`&(fYd!@8jHOiQPlX37 z8S{!#|9p;cBs>01U8!J~*&rqyh2I<1=H=3cl|8@6a|08qB%kUjg~X;BNVh*(e+*2w zzq^30epqn|1Jdoc^IEY$mXV)tW7!ldh6nk|=iQE|>kuhNmlWyy0=JrVtjHWiOO=?U zV>sf1JB5z41pg-GA1dU!Wm(q0tdK0+o7>X0KL0Sd!+q^I8o{SP;ao5e;r8XC?3aU* zKhXkg@rrF8&#q%@PzG;h?sgb2<Y&w9<<3Mz=ZUok*(4^Rqb1A*6L1g*r@xP&_1Fd= zQ^er*Z<NTmbnEi`{LG|V`vSd4_KtP&g0^3FLA|!03!7=HVO8eeSC#f9b_2jAg25u& zG>%XY{R824>P<x~EX4LK5{HFJnIJ{|SI6@4tvZ!Enx$OI?n*ce+SPg6QoI{5sRdiH zMVoMuF|}Ew$0)!DnZ4b7yVBvY*?fCsQH2e|sL)IW&J<g^iUcUgAk`Vv7{}JOb(W>_ zFZu`K5MPHE?H&Jum^KQO$Ej~^o}MoD^6C6@KX~OZQ3Nv{!8C{;0`WcM=xv|<tIW0z zsL0~rt@-~B&#>Gk1W5d=e2KjUcrdYT()#hf)8pu~kBZLD>xea!h%GG{MX2+}?TO)x zU01aaLR5%fb@@FMLTsIb_bRbTsvz7*AA!zrjxDnti}Ia9Gd%2d{+KbneFyFg{B0;a znB{HXD-OjM96vdGyb?4=(?%VGQcoL=z#pshaj<DTbC_LElt?b_?tH|1kst46_S`qd zpKALm;CBO`xPKa+fy^G+m6dJ_l3Qc$-dn<A`0(1iRrKFA{$8Hm|JVBWO;Mw`gU_41 z(J@=!_^H0{B#i$3*DLUk&Xwv8BYY+hbC|!2^ew<(zqVAwMUj7^{Rgp<rN~-I+uP<b zkBK{7r=Al({r`byG2g@N%ALHw-huvio?hY?u&hwhz0B}DHkqAZEaPXHqjCg?@^1M8 zGusr#L;P9vUDmHStBUTY>G%QGt5J;WUe43lGtQKr?t#?!mRslLYwkC`=8I7KR(%cr zE;#53Px}ZczrS-*xk)hrJ23SqgKw32FZ$M=xybeJZ~6XBatvch1**VjXF6OB&?hq| zQ2$$o#&(8-IiMD~mfnk6dV`i)QwEeO|7G;6`Ghu=L2X*Kk1dF{?$yn)QUaXhFRySz z9J+l9@=!<1%Iu^$vK|R=Fk~Dhz)IvF(f)(Mjv0t24_TbwkY!jp0^dJU3Td10bHpl7 z<ojF9pXFQNPkjdwkuz-qzdQZfrAMP&(lf@*M{yJGk$taF-x@C(Un51)vs=%@?f@*e z6l25a$+rISao`R=rSH{{8WF!+{ZqR0_(t^;@Qh##GZ;=>UTE7PqGf^qEThgg0CxIj zAiU!Kr?%36x8&+^S-`_A;SvAAzSW>I+W5{~uNyfGTy%V*mq+JC2opc_G@Aj+PLb}% za^r3B>!`^le<<sf7Oq%3z@LYK<*h;xhBF__SX-3{uEDZsc&Y6@ur^Q6H3B}=#$vpU z#b)!r`I9KF)ArJ=b<DE;Y&M?FpzB<=B`le$u+HW&fqG@2GR$K$Fo&1Jo2wHW*>JN* zf)~nrcpd~F8){i5Xq8krViyx2g(uU&?l$Q*n38KU<nbiH9v-u!WAdD<WXo6B$&9`i z!H3?K?*pj{mhNswZFMLbRS0&B`U%y~m<>j(;DGb^PTxen)b;)PoEgy-yC7T!$E=ev z-I?a@+v=Z>g!43(k0e14`<<uZ+2jR{E`@{MA)t~Xh!AMTa?^<Kbe!nUFZ^%i|I6xl zVEG8H;LRQYFQiWu94IpE#=0Slmi*4g44bJwE;l}b2h-Pu^2WUHvV;itv<@sTzgJY= z@O6R1xyNbyf5ZRw0r(ZyFDa@Y^(ms$>*_ab75VGPo(4m;63(<6Ts+xgS2RE3k_v;4 z9F^cBT{SaZru=f5*~{X~lbxR;BD6e1%l}^Y_f!)!F1=9vH5Wf{#<8Y$ed#*?INf|` zgT;Z6Q6G3Q?YY$ilQ?u-mccQ%fn1l#4*APa<n7c{la>v6Iw!BW69TgThr;adkXBfY zNf=0*HtNG<$BTMCE)Jl{sJ$}~snalP<v61eWvQwNuKE!Dp#_Ovtm-Lw9D~dwvlW-> z;M-1wUvbfdLM7G;MphyUbkM6_J$`U$&v;WYxtCc~Kp-PlNF{%KilgP@wI{)W7Za6} z07;szTnQqh{PU4KDcM(aDCW18?Nl9q0+_ig_)pC_&6t~~#fzJd{dpwI&0H0BDtPDv zU`L&p6YFVmu0nUyLQY!|TaeE*6dMhcgMlJl70eS9JBC<tH`M59N);bQ{A?Xxm5Rq* zKa4_4O;;%-bB_DX`|q9x8bBBFI(T&utAhP@8L<CHubjQs6t`n}WEu)3-~B}Mv$W}K z&g_C|m_+wge3Ra+rq#{Wr8)tOYjJc1Z`d<HEd?ESSspIkUBxDWnWMR;-*2+JdbGI} zWqrL7D1cDCU>$#hPZI#Nf0VlE$}sbr^O0y(YD0u}_h7m^?^IeZ+lMdc<AVHX<vf*^ zT9Kpa)Jt~}IgO827&7R=9<<headk<ubE#-PY3W8~2~Z0)U1M9+K)YUn*Hqy(*6Ekq z$erjII5_Wp7#C6D9+K4nuExLZ9h)FKpA;Z|7F0I9usC0U#)Bgt1{`YqvzASLgO@$c zAhNh%woqRy9$#pEO{pFO2|QtGK4Y_|V!`kSHj23;!#<pUgx^wmW@YGEgC+`+m7sl3 z#y~R>jdtj76iNso*8=hdeWUqUzLN=nY4T4?`DH}Jiv(Yc#8XBX*>#dw*5F;WmOC=> zIvfRl+PKQQm&Q3}`&`V{Rsu?8$^o=Yq(o+8!4vnAk2eAw6VAj|gj-DaKx!GS`CLck zzf(RxQ!YP!4^k0-5YF{EPtQ?&tzXtYpE2xM>>B6)k{}rUe}?4aeGDK5h`ULi?!=<* zh^k}u0E3|sf-QRDpk0XXs-J)_x-WdZVk9S#ohs~o7ocUiQbb+!^>>mJ`6CpD^cL_< zArwJ6g+vw{*8();6o)%yOl~2P4Ta#JeZzrQT&ul`2a6vkrC|Y|gN097&MzpYkUt`M z&{eXM2VyuRzhYM;c6Z#j?H5&-__LbakqOFFYupF#2fK*>np+|yu4VXC=P0>+q0fq@ zO?^yH2dIjFjHJWnjepjJHOI<jUlZ2udqP!yNEHog*sb>K9K`t}fQX<*ym{L@Sb0$6 zz<r%o8{>ZSTJ6_GjF$Mav?MrjBwEesV;A4%Jc3GZyGUijvt|6&i$Qv%`ITQ@#$oJ4 zpj%h-31It1zC#jWbEF$z(L>HrxdR_J&Y}xipe)NwrIrE?+5t)LgVVVtFl;e8Xpz~6 zc(?VLV*h^ZkGf)y;!p0osjuOaHZ7%sCB3Csf3w3q4S-xNnEk;YzZhyEf>%+t_j;7j z1j+;xdFq<O;V+j%8s<@-?zjqVVpL89KPxBMFc_OAcnP3Nha19I0^D{r1wMcMHREZU z2MMUdhYmih9$Q_?JrC-!H&&gsieuwlIP$6UOCr(uR_BlIirJ=xUY<loAOg?Ud)=T? z4UiIeOI}i?oqx7>s7{Q1Ngx)Eu&z+EpVgzr%DCe}eO6<@x$_o7DE2_xqcp66<ceHv zsO<wVHlxWY^a_9B-mEU|{R6eCy^ZKGw!xDfJM)1&mmNAe3ryX8(S!gdM4aDfz**(0 zjl;L60~1LMuhSRC!LeYQL6*9p6{AEO=M}0G&cD)a0!L$$0a3}{Qq|&w6u;B>Ee|d{ z5DCz}Lz71fFXYfxh|MJA0!WEx9J`t31W7SxOmhSSYMS$~O=b>NQ@<|4@@u40g#@Az z#Z&99F#ms|N%Lc5yA=lVr@i1W-2aoi1V1N$8vVsaKW|X(-_j83Y{qfQbfE*9bqNST zhEXF_sIW^)jSx+gt&9k<K{z;6LqfEKM3@i~K`~h6L57LKh#;~C{|QQM!{x7TLm>4E zt%?`}C3}Y=LL9ge$-a08=k~m6D;3@^pc9m;!bB<*8!!X+*9Sg3{U{T9zE38faLO6- z&X@9gcg$srg<iOMsP;;8hIgK&jSEKYxf%}jxKB%NP})np{n{iXk9e~4M3$%KD@k_j z%Ab_C6j9JdDm?ft^OYIo>14-0+|FW};_dYZc*`y9bXn<g!DdHG^xKgfp%iC#^J*Fo z8@(BR5L`%Lx<YV|ad1~8JBABtQ#`pO-oZ9R1J&9;I{=2NVV#g%@<{35Id$1&=nw+D z<a5(%P3RZBf@L(SVsnkESX`r;3NERP(k&xejFoUZidodo8#g(Pv-R53H)+Oz%W6m` zqT1!0$Nm{;wxrX7G@ZX?Z0rrP@L?mJbNZUU!%ixtug=3VQ^t+;aqGKg6TuUK4O*w^ znwm6c2%Caa-$a^JCEQ|ssKW__25YjIEgBcW0foc6P_jBaT_1KP*f(FJa05}#HQYcG zb2+tUy+QYT$jCQTllQrC@@WN!{+`as4bUAyd4{n<gbdeJ!KW>Bx?nxb2b@&I9e~QN zoYpV@8VDw?hS7v5WHHA3x_)En7G4L5Pi?MDJiT9`jElhzuS&O4Z{jy8K&E?AhSA*2 z<CaJJj?dr<%2A-&%0r-OUzmDg!pR+uDp_RTc;CW%-qrGsp~?M5-(>$VNK$o)8;kJc zId)!AA0~jEX0|(CFD=O(z~rL}8=S=FJAF`5g`KF78{!J4E_RR;B?DTRSybUoyc<F7 z_D+|ay_E_l6jiuK6-vSiIY<A^S{PGQL7_0gV+q&7iCbwwGj=p^lT_iCVTGoxR2W-S zVGmU}C#+Dhl?u&86+Xa+5j0Yv*q>tlswUK(nSu)aLFjbec67*|!5?P9swOUGN=VBE zL$2SbSwpwRXbRPyXI^x8u2CVRQldZIgBvcm5{}jsXcPIGR~cWJUp1+ynq~!?h@iCM zmypFY6y)yUY+vh~Cg&;B{%fLQ{{nCG9Q%!6MEp-DdmqP<nYVXqmra>uxo0kWN5%@r zh^KO2*G>HC-=4mmAMa(m<UqT?oCjku(SG>f?<V^n9UxEk3%o@Mb?(Av?eG4aXM81= zsj5;@Ofc$ON0@?|U?vsa{n{H}YJR?rqTpvN3*VbUd1oP%SZx}sBW;L>omWQ;o^zK6 zXCN^K&z@_7Gp?c{rs1xKm}<tV$&9#crFvv5z{p=rvmw;@jgCxF28!U7zkJ?TR3r2k zIW$49lGaQ#TSD@NgBp8;HbA%{0_`ZxoATh7xK1p&9@wX@a`iS7i+_j=;qaV8g<$D6 zg*iF&mny+6+iHGU*Bl+IglDuE6bF%FN;3~Rb0Ac(+o6~dneZUClD%h_$;gTYi<k1j zyn9M3oNHSf`uD<ov`-PB*<oj<GIP4dOmqAk3;y;1wIJ%=Ls|D6zD}c_>{Nb5^mK4! z6_jqS<UC2T15=_TdHJ6FPZFDC=Z^eAmlIPC=+B8ax~@JAC4$Rw+60fr@k?DUTUBE4 zSSO6l?>w3AtNiBqdf0fYdwJkw?DC_l)LWFR#Hxa7YQ}_wsox!BWMbIqFyMjqxeC04 zC*Pu6_RCnZ;}}`$4&}}jy!5kL2dkCLSLi97YSiyt_I8~p>RbNcu1O1enu)-rEWQ?+ zmyw&A{xkDIK>Ya;!A|`R$kOr&w9Gi<muMpaYx<qrtX?LDiI$$+J!%Qi(5s|(HDakR zOZg(|UBXL#<06*^5hh7N&|m`V_1q8Of6AYKw+P<xL!NrCkXS1WnX=UsRKF4*n>gs5 zx$*gp$QJ7q{8%~!FY6_3UDotP_js=1w>((0H<+$=bZff?f_AQ?IY+zPv-v-3*XRBr zq};+X)GyAT4n!a3^W}5_sb_ZsAc$rOEatYV+DC{hR(@LW-(vaS^)IhfK}dD3i7Kvq znEzRnzliuWhw24qK$^B=^>VddW+OJ6nROhMx^`pVW%cccpE{%M^zduA(%$=WH;ls+ z>}FD<e9=uWnqC&#Je|+CGfm$P<nq%CbPaAqUj}at9##^(%74**&TKSnJEc&z^=wu% z=1;3dNVDKa8~aQfd&K<~T`tqYvZ$bUC$=5MH3x?a^~}Y7Q#GTSSUNz~4k%!u(F}&m z4FoMV!aWw)&H~z0BYLZYvXOe56T%UZfg7vt2d6yv2M(Lw%Zl`=RhIe=HFJ(!i|+55 zpo_-DN4?jEY@yuF+Vr8TuUzK3>@7mtjT<U+yB!KqT>2&#-(FPy&anJRly}31<&UqF z5ShaMpVlXCBBNWHU~E3SJ^i41_%h8j@!n=NtT_I>L+>%$`SWh~=S2RzNq>Uk5n+>W z{xBMq)#0eP+3?SAVNJ%;QfmO29bEH#VU&m}JPjHGZK*zo^IOeLpZ9evBP9f%P#VG2 zrG!I|w@ok+d$d%_a_5^!$U$WLxxtWFbfXnkvdWb>)syHNUne}@EQ8F8ZD#ZSas$nE zojajtyc75<rOfotJ268UL*~T!{B@JwT`!@a3sMTfW6znf+Qfz9t#-<XeFY5K30|uL zJSKXr<%RpAghkW!V9OE+bsU@l3YQ%rj!bqw1F)!p@^tWb?3Jix9!K5m#{KkTL0Uaj z3i42^!-U31DD$r4GW0(c9Ca{g!nb4gr-8zR9_=SM@`9dDK-GX%qH?sGbfB;?aCmsT z8orwds>+`is=PF>v|y{^w~60q3g^%Ahzle-&*GuU9fWQRb{pg@)(2c0iD$yLqNRqc zp%8v>Gqr+uN(*zj*4eZq$|kh$w`eV;qmAOcJtmDN8L9IZu!k@;)-`v&6vQoZz8-)B zaimkck%MiMb~o@iT^eJ5xZF)w(YKfNZ74L&Zz((klz#Gc;*_rWQ#qjG{fDeUV#veP z&M6r}8%7*9H_<k<H_<RR!DZ~H)DXq<u}WM>iEOm>8tLmay4~GJM&k#ETZE5oXL>$P zj#dK7Z?@So7MwK5rnfkqm(<w${vO_8*HG828g=;cI+#e8{$%#@C&_zcd5%H_eVup* z(<gkq;+w^D`3=v~1()|9*|<tih1&`C{f@vY=po-yeL|@+8zW$!y$!oIPmUhnK1NOD zJ@36kbS>QcZ1+?T;O}Y~m!BYB=4lK2Rr&Z8X+>=`e0mZ+FOD?HUB?@<4~q2H-KM|b zLm908u_<^#5t7=H4%J`hJNzB|elS!f3v%=Pu8Rz*dLhL?jShcj^4rs#F?#d*J{~#A z-5ecG9JQ^D5&-1BGxf6WR>q3%UDLO*FL-XE;7^7^NLPGetw~qRpi$)KIlKKMc0KQP z0~fE>T;aSs(~*j7{h-XOF2qavVgqGVU|ugIb?-JaN}i??+>%yN$qH(kU%6BysWM6? z@>?D>V<Z)+gZzBN^^USz&@;6MLN@-Es5M)+_Bt?+W1Zosv(dZIpz}fPg~kBY>7d%G z?(sX_x=FjdZ#6vVqR_${L5CQen<(MYr(31~M%N0>O87@l)+WZc07v_+@|_&a-^CSJ z<)hr(wm+3Gn8xQaSJ?T@pJu;{=jrh2h~kPAzVKr0U9h=)21v~jT^G?W;qaBWjjnpP z8C^MwH-N4g;EJyE`4wFk@LL}AR`#Q7IHY5lCKfgiu3eT}C=<^SDK;l;_jfsKSA^TF z-B&kjSL3R7XNK+0wsz<CZ#O@l<Kww*n#?~>iRFG*^b9JaMS{CS)~a-<=-p<hJiZw! zbs;LwMTXnVPziR$zP`!Xqrh(!{Q9t~4+hp%z1s}_OPj%;9KxT<uSl%5Sb4Be@MXLL zBvk_9{3eFE-@O0kz5=k|L>xWAuQzQkj!aG4N(CJP3I!+FTNTcug7RA_Kh1x<9%dCj zSHZ5qTTh@M$o$pn!8FfvbDfUb9Mt9R<=h1YCq01v%XVvGwoQOVcXBT5(oJxlc9Ulj z_<{mUSUFiXsFe>}koH0#Wqv+$`6qRuc?~zt`2;G%)5Ef#m1X8;KZ`kkO8enexC%-# zbu=3M^mXh5qPIjVQRa3?&#%oF{6?AKq#=UCUo$aj$#%<(P$DCjT&poHiU-#Ox>Cr6 zJiBR6?ue;7xb+pJkWi)sTy)WdVijY-Cpd=e$gIj&Z=t;E7L{M6@;Wl>{NoG44&gzO zedXVnmJychyact$;zSyuf<Q<0rs^OkySH5Cl;(EyQ<1I7&Ln4E(OoKZk_u@N)ofv1 z^Q<gUd-W{+P997#LP)gGy@psXl_B&(UIN6_xd~?GZ3cynR5R>opIGph&$h>_p6vJ? z)5z+U^fyW+*fQvx;;rU47M#u8YOePhiX2gr?0AGmgw*FC6(aOzyF=dEC)h68xlY}1 zXN^w^;5J%>ae`yYzK~;{$o(?V78KLTu3I;SP~K2o+ZC9=UlfX?Jq?<3w+GiR;1NaN z)Bbhvnd}NhDtj_zIVs)#^#cTc^ux?#b!k=#rMeQO6+1$DJdVA}J~C{(YZh2K$p@$1 z^rUSR#oHgEk}OecuRhp`qZ$CAUR|(h5aOa0GNN-S=D)T(DqX=?@Y1}Eq{}y6W>GIh zGDo#9NPnZ`{v1ra^ke=@j$OeJj0Tpn_1SHQYPzwmz~qcgrEmv&UZN-Cun8@}pW@hb zww{<uc>M0);PHT-d>oSnJ5b+z`=&L4Wa}a778ygkV|LIP?y@c~wu#{RH20D7rOqSQ z0CT9g<i~J{Gsq4M`^dRHlunU#7LL!SL~KYn!pGnn6uR48h$vVj22UkBx&fDm!|IkO z02D(Ngc03?rx;Im2|^HUJoQk)Cg>&+=XD6y<$$W2>DNpzYwu0I8FQ$p*uDj=s9~os zE&Oh7PJBEPt@pfLHUc=+OdO2N1=;SZpx%PsMn|~Z$L)yGw6Kc`(fn^;b<@JY=0|VV z{FbMLHZ^bS=UDLj^{j`r_W>0i{Z!7~1-4E%`_Kk}b1%@V3u_~!maOC8N03=kEQzTR zsU)wZxo@$DD94anPy68&v*7%}FjMq-J-cCmp8Y`)`#tlb_(qDWb3D|D#;xOcm4Qvv z9KZGY<(>ybJ$z$`7~`Av$dxedNx4%b@!KMv=Q&2^f;_*^P=hc834@vK^X<J<RDIci z>f}7hSKrI3=l-JNOe0Z?9RsSQimH70Uv)8++mAX$^lFMLtU1~7Qw1Y7#oCv4sAtK} zgQz;VobGe)QBl0Y;6;3GUpj}WfI`H@av4Nv!#~>I%1s5pnTu?Ia`-pHs7?Cak9fJ8 zAa5w>ci<r%_}!?;OQUOUl)^XNh-zr;x|73{$!W3%J+#sefJgr(*%70D{<1OZbU<uo zzZ_DaMkp&YLRsl=s{MU9jDs%Ctp%vRov3rrfcDhXkNz(-bt+9^RoAFF+0-?~N@E$+ zS3^s;p%8%#5=tkemY67*)5v%HmJ&I$*h6J9fv}pc=Bh}Z&-xgpebGdQOUc_&&bHC_ zJjXO2UJvUnut{$)pR_=NZM$rOWl<Xem@tuQY8zZ?z$Fq`?dL(~>X#6#+;<82gsmu7 zjhfRnIMw$tk(NCCEMGZ!)+y(?O6xgyD5Xu_d1JGGIMH5wp(fhQ@0t1Ae#87~A@@Ho z@MYUW0s+{P+-dN!`6v7F7oSZubM*?Kb@=cu@n0r$e)Hz%--JypT85>9r*RGChJaPn z(GhVoqGIPb4ajwaqS*FO%&y<c+v~7uM5jC0h+W-0vBb_<hyI&LGA95=?F)5&W7>d^ ztl6n@ONrl-r~(m?0*Ton!r*BYemMZ)J*h-FN6rAWcu3W`N}Czmj}|HiZ?D02K6sro zw$n~wY*yj%q6+t^LM*JXwH8(tRamGBPrdJ2NNuHsFbR}dxhJZ^ufqykYr!vSVQ*D9 zj|wLDxq7LzDBepR8)c+ufd!ion+bL#rD0NKW>3GV6(a#2j|EQ;#pEdpB5WbOl=wN+ z#Qv;`wwCM{nD3S@2s^5bWrGIpk0C$gxM6c$@Wn@r7<a&OgH_T$TE?rl&L0t+sn=z_ zKO}!3liY1<F!<$tGr=mi8+{V(0~jJv=pJQLK{IZh+z+&$L*Sq0iFy1j)ak)P(ssek z6J$XsO-tCP={T1G-jouP<;GJ!^2gV}RV~n>$>$~;-6A?CuCp`APNgx|ItjS`IHyO( zX)%}Z$Az0@so=inP(Q!aw1CqrC0FIAc>bi1Z&vLquI7I_9_)ah#=l~r%E``g4&mB& z1Mf7I(t9sleGHw>o1bVVQE1E``Sq_Tq5rJ;=lEAVsP~ck3d(OY3Dxw=WxTy?^;-Tn zJ4)#X`zFP*-SLKx+TNwH7Oc%C1_+{Pon~vI+!61)P17@1Ld@eK$ReX4K+7+MM1y!E zv3cB$#b#1)k8JpuDT&~&XJEN6-*HU6WGfZ!E~;?3Dm+Sse*Q?eep1}D;`t||(yRO_ z3IDXXf3D7M#QZ6`ygBYq(JoxVpHd-~;<RS)(X&vO((M-y##uJnpMp`_%8N9vD}JiI z=BfPDc+J!NaaCUPbblOQ@L2I-Cil*JN6+z^XZzzYcr!T1CN1!q=V!E#lF8UAN3`0r zU3Z3Z30$Ae=Nt|@@USQw;jj2n!iTx4(cM<gfZ61sWtoj~ylb4i4YA<saDV@!Kko9> zQFK*P-fj%M@SuHLXa4|ycu#Yc8tWktoPVtGBmiCdb4QLzUFw12Ts*4Ioc)kTMlrV2 zA=s)Lg0so!K@US#n?06F`KMt#wX;ZdN9!`@b2=ErYy2sB|7%!nWCPS5mtQUqVUFo> z`8`6{Z(0sr1Sc%t$!ZH6rW(3skWnHv84}8}&E5MB;Sx?iQN8Q?RqDWBOR+M-8T%)_ z@M-90xSzs?SF%${jC!vTkEnl}oaPC34mp8$o0&K>3)4zCwo-Rm4rp}bqLHal9=yRc zZUva~!!8V`-P~2oK>hf&u>Y8K5}G+Y8<hHU7kKt;fa%N|CBT!zL=5G=bYx$L8oY>6 z$a>r~SeGvAsA9qX)OogqzsO)e**1tfXHRA?#dZ$78}wGp@3))wpyVmJ7fwMNpr}K8 z-{J?V08)oYjrMIzA@2X!>6T1wsLtCa(957nNCKoQD;48VRl!JqJ}!qUd))xyV_nwL zQRV(n%5o^bz5pHNh%Uz@f&Pg!JjZWb<E}9}D8_HBU{+j=C#pAFgfIT8XGPPA(L{58 z%s)9!b2T(u&FS9GKhSBB)o)VT=3ySxJ@hD$>};nE_d(wMll)^8ky?Z3#{FX^^ONw8 zQI77Ee~jF4IxWLfd9d+Q#prpRQs9|A1+L-^vp1^S=MOF+@uYpBKho%&3DHKfQ1DfO zxq?))V`7}Rv;)4wZ)<NG=B>)EeL4GRRra$%$(B|Aa9XSH$}Xl-*B=*CiRVTMkFH6j zxsyf%hez9=mM4yP*L?`X8}m!&m=EZVf8&As;w>a4yG%gXHG`t%{3(E`{GcU}hdSQq ziX?u-T{QwZs8-WP^12n?Gs%uOs1=QUO}O`6RQ3>1>M?u-UYS_}TY@rQEB+x2gjqRY za2FH?H~0;?oO^HOygW!0Rhc%R$`q=AWJNTKoI|x}<T><5cpxL4>_{MXbhw-+TRAQo z0Ok=U{0PK8fXKao#S^ZV=d1Ide2F{5k@o8!Kw9JS+eEsMy6yM69giE|w6DZ;ETB-H zczeCBb$CPuf9!OC`eSEUk+C!RiTh(`3u^H55h%Vc@dn}9hmD<+?D`kDcw^^SA&rG1 zw?OIDdCahP$TBP5?+)XATEciAc%F1tezqNWFm(doNi3b&C-^OgM-a=P>vKc5+RrY9 zy#QTBGwH0|9iAHvvji_tvbT_rAex_;TTuwD*gI2o%uDh#)Ncwmz2aSVydoC7M^v)j z=gq>0zJQKj@lQ-}sq^yJEWX!ro_9@}DtSWQf{jG4`Ankx-O!Vn0@i2xQ)?PtZX42j z68zJRk#qvnBKJpp<d0`Qw!NCY@Z(Aaz4!pXn1uJ>X$C1x+10RHzuDp>hRAAWXfo)f zx!#ptckf@3hD5`m{g*NO%gY*b7RnA-`N6c;orUtT<Dkt<n%#;jti=Wo_N79RenK@> zuOAaHWd*lTYJe0=r+SO@S5^mh7x@dNl(U}=nK!cQq|#7DFJAaM<7WjxGPS@Vxmnw@ zinw@&+WyOH4%x|DsW7vs!a=HV2^GSLH1B_}eb-t1Mf+{A6q~s<xju2#yKUda?a?*i z^XzA(^G?=HyO!J$CAO;6-&GNhYbfTNhVMVT6jbipo)_Ngk8aJZxKEm$94f1LZK+j~ z*Df2iJo&drpo^}3#$$BpknBaNK}v@lWeV}<>fV4#@$X0wZeK8@Z!YOcU($=3Crj~L z)%V$KvA+SAuxw8`yXL2on>cyfHNSK<4Z|@<|A*b^4Skuf@c_qE1}k3Oo)<${$5U3( zh}jL>WRB9+t9Cd=jm*0b6*1fFf0!ddnc!*Uhp~w<cqKH*H69<nWV1k}H!E&OnQOum zk`lC%<X`>{AoU{n2X?If?g^>@%e4#14&9uf_LpW~+O_$tPXmVO)7<jUzOsDd@KOKh zitQ*ob2p*Wmg-aQUzawGNtTdKh-v$T6Yom_f6AnXABChu<w3+&e@=Nw+!dpqNd7Iy zm~H1vf{$bN(bd4=DL3l7RCw>&2)n3pH*zo3KB*bQd#1Mmh)j@ek1#A{+$TZORtOxU z7b4?bXDt&>U|8V>e^<KeK-}Qsl2$+bq78QD-iO~3Gi)b{!3=GWDGXGOF9A+=Dqpci z8hRh_it({!r8ZJQ>1wL6&gP43*H3upYAyA8Z0W}Rpr%YJgHP6KFw0OTmC5m|yw%KY z(g!wqqjZBmVLzz;XApDLCz;c;Ul5FV1HiIh47z^?zeZs)bSM8pP0)EL>|HgGoGNDM z1nG<r(qDj-{0pHZWwY_ryqo;tC%nl0l>cl#vC;3nGk>1W3s9ljCDS@#G9-?13=MjA zjDc**r8kB%-B#Jzw=RdN&bd3a|B$#TcP`Il8C`lN`DciJWv?t9&CW+Cr9|6z{N`5W zgb?Ua8x*ckEkbG<%X_2X-r%7I=@~oY>DrTd2(=R*GgSQM4Y69<jTGaC9#rTJd`<0C zZ>2WVOa~Q}{s*OlkuS5iD1I&2zl#5`aE-5mmR8}xGR7FZ8Lx0wQrO%@m|N-+j-b-E zS8T2N0<NQVffk#+kGuIv{)q_?*4E_h7nLiWRNL8pa}~3Rw!^V)COdiOJ_im8X{9mC ztegbk!-@V|Ipz>HGPB(>R}(DE>0)f%-I!5JUgA^HdYJDm=qFo@?6a1`3eci%E3~+_ zu!IQyhF2um=B4cm=PQN3_iyAj96umeBdV>*&c8Cy{!cVJ)V|yGODP(bYExXO7uNxB z$c@cQVYqe)rU(cJDPf6<yA21WUijk{s6RsP3Xsco%N~-6Vw+Jbp555j@MpoF_Xqz9 zo0|{}Eee6*e|tf2x&sq;AAzK4KVQ8Yu7V`_h}APFjae@$YgS*$rUd+4LzPPBi~wD= zU*Qh|p~PfItvr8qphQCcqEISWj04PFI6iK{|HIn*fX7u-|NonI3kxjl0s#U>2(Unq z0I38>X@JnAZL|e~El{OEk&0C+RM@nYR!G^TbiFKAK|n>MRulyh1!_y7q)nSpMJOmz z{#yPBcL_)ZEPsmT_j;eXcXzX;-_PgsJik6qbMM}nIdkTmGiT16IWt54m>N)8{e2sa zBZcZ;eV6Kyuh3p$Lp<`(4k@R2++TKHtn*v)&)A$dBM*zT!0kK(x~Ip{RnX71{?5W& zi=N;rQ&iagybRk>BcKvfgRn=uhCjqJu--ZI)#nZY9W&gp$sOTXZ$Z>T)mzjD*psH9 z$f(+<UIN!0Bz}Tq_c_RUV%hi@QGko?2H`tuILgR&)yn6YHABv%B6t1IVP+^5^(&DI zw4&V8v;d~m`fopHOsO@W^*&x^Q9uW+mxgpWE^N28kCN4+hH8R~XnWZ1fA*@~0z+e` zpv{IDUY(~}PEtjzTECe|3VUk3=0=fd7{5ZHw+45#gcx=Fj_a;B`aO7I9W9jqN$ha% zG#U8D^xRp|tS@K414GuUl(P*{Ea%`~%Q*PCG7hF_Nq#=0R?UX(7;4`#K2{+}>3Jb} z>P41NEGCzcCS5|BzpQ~Y6!lJtXZn*u>tD<X#2s}J=!#rLJ0C^4eDPVnLpnZ~zk|er zr{m9XEU22Rk;%|Qm6~gmk^1(hfT4Mlgc9J3$}qdC1hY|K#znXEvI>`L8}+Rafsn<! zklR1&nb7UVeETVlIYG=UQ*8vy^UTM{x(>HxMLdm^wD-Wxu;E-WEaiPW>SZ=b4iq|z ziYF?|t+U|ql7Dov*P==G6t86(k7-_uIy(*3RB49SGLy$luVogGS<Dr9q=Q*4;Ye=k zH9zO%kj67qw~>WuP~exa(dFt11tHI_?wFwduicGco65$;k*NRo|A6tSvD}%Oa52Q3 zuQfcS)0zyfPu{I%b9gU_B~xaUs=vX_6sv<CA$A0(+s!(m*oVlfiFow=qQ>)o(c^?g zkq{RngaOOFu~F|EvGi%)53Gw})ObIT!iM{WsqG!5pxs7;=x<9vPXP2lyr6G@=XDFl z$iduCY*6V*pH>)D`YQl!gG#gJx6smG$uNOr*(mZRbuo&7y=-94Y?$wiim2c51cS*# zf;;E;UUxW{OckzTM7QB@21wNZ8UZ5t+p%$^uLE7j6<E;tfPX?`1`W9}d#ON-6sh*6 zUZr2!Yg?@qwOd%QPeco{D$05x?_JzqoZpf*dFm$ftn^2t-iN52^hp9;iLhD+lGYEn z)=)xPp|N|hD*rteyo$Q%xVMH1&Y>)P<sUPj0=^uT-Aq?gJ$J3a`f%U2aW?K+gl|;C z?ZZ<|XbzgtYE78?Z#;{QhzWp`@zI}bg2^xr`|x;>^}qkruIwk^eEGgf*~euvCh<dQ z3NHqYiFuuypm@m7Lk`liWHS4qOfAfud{kN%eleeI1fkZ>xlxAGRTK$`+1DJc@Txj4 zg=gkny&SyM;FYV5XX0alXZH_jsCZUmShUjBT!U+Q7QL(2$P!s?ba>W3fre++HU{^t zxUeOnQOteV;D`|eEt{SFdPqe{|0K-k{FkKV!}BeK;>~v|KpBYGFV23Lh&?$S+hLk_ zam>3s>g59c*3GPkTjKDur;md&ANb$qh|ZDg8JfFuN*O0=&hWZ7Q9n{7T{ayzklBeZ zv!w_BmhSQB+JVgSn`iS32&qKZMf&aHfD+xm67o@7c9nAV*W<y=YRXUx1yaE^5I@J( zqpOHcZX|j9)ag02F>4(duKtL>nm9*khpbp5NOohUr$+6qB{6WjpIZjzwm;GBfst8L zjq%{G`U^Ro1rhU3neRrfs6U?GZZ|p59`OvfD3!#Qmr?)Kq0}c^t^Xhn8x4#3{osP! zz^pG*HhM=OF4sP6{X^fj=^r~5hb5Y=2~>lc&$E%I#6|t3(w`z{=xVv&V3E;&T;bHK z><1jI+RyRPNQ^fjM*dX(YIG6xCA%E{+YE<Wi|z0~et@nt{>g&dB$$7M3R}yhZdtI+ zyFAu$3br%cWEL`mnrt~{mruc6`$~fOu0HhTE3D(T#}M7K)!FVl)G}Z-2g3bc8F|MR z(NgpM3qWn)IyK~wrcc%h!Nr!gMtqDKa^(|+h79%pPqpm?^<FyFXh#%Q1r6-@CQ7nC z@Z?Xs1K$giOeX$YM9xXEMArh44)Uh!kfchX22SxA4yQub{8JHo|CcyI&^-RzI3UHi znt&2{qV~m^cyn3do|3{}SK%U3fBI#?BiwP2_0eZuA7l$n$Bqu`-jVAEelleJp@8Bo zWwks}QcILt2JVsmL<82)t=#&^gi1xT+(M(h(VWJEMtJTqcZz}B_d1PdN|qkCH$ipY zB)bHCg1(PW<HsZ*<otAQUR99i3*@1#Mj$4}p(g$@ea(%}48n9kvP2ilwudbK{u>|| zdxmki@H+-Xf^d7(3pmf{K}|R81`wNPcU%U7-f;f}Ly$$f3Gq>F@kDnP<a6yZNt~9@ zGO4%`!ujJ$X2>jy7ks_$lqi1~0oeLp@by0Ny2as!(lO>2)}G|vZ1E8f%LA6rDe;{C zg6&QIzaDem%ZBX~IIpBYhYIur1$Ny|fy$Bstt#-{pumRh^pD+33hb!@=TTs&e-!Q) z&I@e*lblH%_|rHSFzm0kxq}n&T5cx*!s2BZWEou-L1xZpbpDT4^f)_p*h7MFWLMaN zQXhNt(DCSsF|v?JnDrWzXD11-_iMVV7(ckg*sy6e^M+F%=Np`+ltx^~J@WpL?<@;y z-0m&Zr@c10%crQ9WkK7Ul;#-cCv{L}9cMvuX0h!teT*a(<rKvs=ZDr&M;pV<L{zud zsTKDivt2s3RlS@vEqYh6cpVO1SgZbS%t%S9%+?b=uIyyVUYyKw0yfFGNi||}pX{Vc zH?+iZfpFbl6$%#(nxW&F#u*)c6Ii1`q&Y(!Esx%|0dnl|XX^{id}xE#5zs66Xcj*9 z(V#oEB;a2SU4_G3ldz7)maLzGWlU%5MgxB8_b94(fZ=K|ag(kwN{m@k+&@S<7q1T< zw74XHd3pVgm8Hjn-vxXS2{4a8?_@dJ!&A%#OTYGPG1L%U?Dl%qDytgF)A8NOK`INm zJ~vI-tKIpzp+7|CFKORkO5@3BsAgx_g)CBXCMZYn<l3VHhnRov;Xx{1;SNB@VSkjJ zwVqicMpx-#KX2HIeW>?gU-;q0P299P`&i=ptF!Mm{;6XP?hSKzYS4A{Q_d=$%t4h@ zD`7R+ZvBjg#cXf-QQZcmmeQ1{K}AHjoC%sBDbI+Sh|Y{;LI1yPK+$f0=RGZf_ujdr zK&wZWAaSZgPG3sQ|GbD%f>qgmE9mLpu`izGzZ}Y+>+1Nk??L>zfg82_?~XSL7bxBS zl)D%JY&sEh9ufb!Hrvk>*G@*ES`*|+9%fdY<@p17{4qGbDWqU;{}*pdH&>$%GH=HH zja1{m`#JL5eIRe6gv4af$*hg%tHG`Gyq$u){2%03@)yb*v@!XP1whNs>v8Le;F;Q; zaVm}Z`NmICWLze(n)9aAnn-_V4QcwvJ$<i#eE5e8Rx9)B{IGZLl#ZhCtdrSmao`MG za)htIg}>qVq-%@CAuD@v@a0+>mD<L%t}w(Y&!$aoe9L7Xr50s5c74exs4Sf?gjqHP zS@s}HE|UZkrSnl5AePI#7o`9GZX^VA7|E!~xCPGxzV=c1d6CSI`f<o=epJs|Nk`|r zRHWlfsm(9^-6WWm-g?HzAjsp}GLZRzN~>jufg@0MQeAMWFC8q*`R;hj8Jzmt*OIF6 zT6B72;0}uVFN1$(Z9QG5H=IM&oaE+EbM7;vxQ2#pV-(Mzc~HDTSzW(K@sv@lZmxbS z{~!C`WLx#+>tuGj1>}<WqxoJ}>NWv_a+d>1ctiD*Pj}lia`NifHjT&i=JuGZay8Zl zMS~)7D*_xM0t_CJJ}iHAaRYm>N8=&h2t{vDT^j`hgM;7onsxwM^}fzD4a6IQ3u9*d zgr8Vk**?~SPa8SNW!{DO5wg{Lb;|`z$M$4d3*Nootr4LKB7M}#?ulIGi<zDZ20Aak zf)y6-2jGmf`Kg9EJz%d8i%gFyhER3>*Vj^;`|90bRLQp2^ClxN+ujg1*TnKxj5CJ9 zT5bb_#vl=oBl$c{V+pBX-Ne{46C?e>yRlaB(Wht=t!^9H<5tO@e)rCt<}nJ|N;7es z%HA)|iv%g4v>yjleop3nW;!vI^B;do#SY2b6ivt*QGVbc{VMY>#<Q8H<e-&j(to9g zV4a54$SwY_ZgJGb(%5$~>Gj-t!*v{42!9<(T&B`6$Jcj#nXk+tjZ7#$Bgdxu0+z86 z)<sp56CwJB&~OLJ3BqTvQGr&c_e=1y7NVU^3Tc&151vO7L^p)Pr0_tP7l^gL=r_#T zKhGp><a3-Ep_ick+!PxhmlrYWYfe>Y7#JbPbeHi=Pyt$w*5!T7VYT{5dh%LVd;C{r zSR_lZ7zP&pscW5$y1fGXmK1p6E(%mrptQfqcbY>2(Jz&v$j7+nupwhuUD#X~Ee;gs zy4B#{B4aQva!UUkgjq)%1fTW^KV2$k5&;pw`Rk9IIt_emXOdD>eeeG&RE^5|tzWyL zatTFTwQ}qf*8g=L!kf^G9XL|f>_w9>=Qw;7u{{;M=!7SV#;3?{y&5XZ?Z>Qo^+$t) zedC}%`MQOFAw}0=Em$j{W*Br{iB5fppv&BiQqCOd@6CwmV6uY+$em)icW5u2!g^fA zs420;LO?2hD*M9fe?%+Z$ZqiVz<@m;t&6+x2Wz^XO#g)=*W_$#1gKUVI1gU^NoAy4 z*Z`)v4cBOz@=p32Ad6O5-U4uDl~5VRMFgkS4}7PnU(C<-gEa%U<>ay!Zcy;12ci48 zdd}?j&WKh##nBpa>TuMduK$5Kbsk8J;+eQc(PubbdMn=FF#MF*>Q|x_f6*98CY_l$ zQP6&f%fsH)Z-DA_;N{M5Hc`9|DM{w}bmIWmMEA?0-a-v|xyAAaW<I(wvGCVwyaR8Z z$7bmcO8#D+7w+5*sugAYEAO#^Wg<k|W?=anaE1;na-_y-+GL&@STqBu^xt6p)2w?N z%O~DkWc)J-#a;4*zNV-p=g$xc^P@Egx!+;$R3z=tmOi<L4tf_Qp-B*^3}uGq`R^+5 zU)T;flxEy<I9AX=CYQAQ=0AZULb(|?Xg&?Z5~&qF{*FTO6d^g;X-~A0osNA8r!3P@ zn^5zVMwMojMin92cxtD&vGHooJ}L-BK8BV`EE_9E*X7?Tw%^&~)f&ziI2x(GKF8Vj z^zU~V^f1bg(h&CA-@y1;Os)_7i#aJ<$;W^^CS$=z1ZMJ|nSJsoCdh)`O=3KYjYTp9 zM#{~91X{_V4n8#%<}2zM5H)|HgEtgE3jhu9`vRq$H6-Ij^lTQEqKH{UEMNl1znIGY z2a71k`O-<2Gq8x%#?z^S{*MQtT8bi{pn`4fb%{(ZRy0pD^AJ)xS;YU|^kCjoYA<u% z_K<kFa(maccRn!Y%Vz!b&!molJQ0WyPA3;lsfW|03TNHA(FD0_9^>XPi7uUAg#jcj zu!~;zT!E`H^6+cwdViy*)s{?@-f8?}qWcFVBW&$i7izs{bHNVMks~qxANSFX82AP8 zx4^PPvo=v^<Q6->=}cPg;uWQq3gh=<c%2x(+im<dseF(xlBoOiL}^cL1HHi51Dqxq z^TWHOY&`~KX@2}oP#2-Y@t8OfX@mRJB8AVtce{f-HGmr}hdb~K!%wglmBAt)J%r`o z1)PCpMSV-7rHyKZnr9ZsN7uWW-qDj5{D|37&;p_x>l0lk(Ea(KC>~*~l44oFFevQb z)EqKOw@9O4I~(Ec0y28XJbVtcH+I3J?pyV(04qL?G{Ka7@r-^=&wvUts{Z+Nhtm#4 zoX|ehI2L3BB;A~VcGW7Oj)Wq~FIrqu+4NI}lKjhMl`WvMf$vfMwP596&a_NBqtjDa z0vY)vC!2BwSj7g}l++_3;<c4$)Q>Gu)<pLtiDt2JH<vZ8qpZH&sn1|DL$3$E2=Fpx z=&4qfy1qYgoLP5L6q;|e)6NF2Sz?gjO>X%qJf%OUCb~R`FTK&ek^mU<WX7p-2-E!M ze}tJTYubiKRk>AFLb-SDgVvOO<9pUMBqh-*NCrB}?yni^FyXsNEgz=|8=lhxTxJBg z%*@F{KzXQPW<B7SHd6fB)XzaETR}eSJy%kfWbV+hP%hx$*ZBqqi+&CgTC+g-)&rP& z6W#F-n;e~J3323noX9igCw>R&^m?stZV)rrJ;dQ|Q#tRdVDEq##`vhsiG{xd6>sYO zhQOzRJ*xk*mxxZNP93gDNnO213;c`kG3Iu?s@%XEc&LQM|C2}^g}TePXhaOx!+<=| zOUjK$$2~ca5I~#wkJGcD1c)a=uv8##+egiwC+L#qB)T3YD<hWHnFpf6%WHio!mLY# zs%3qc*;o6V*Hu_w_T~%kM#i1pyQJ9v?{}g9W}Sa^BTFLrOTe_Gbqzs>343RE5j`OR zd6ND_hoULcn@D#gcek5EY6**qmkGm-#~}>C`B=m9ABjNd&{<#;VmaNt8<tae&p!!* zB&s<BPXRW$mm^;MGXW7pO?pxhOaJcMm?C`mhh2?|YVfWlRaBHz@$c)X;`<EII+X*q z*J=C<#=U0}(&G60^snF_YQ@tr-1Z4k#W*|iCkB4Cs^#fb4BWcm0>5?H_)3=O<^|0R zFBNvJmi^AKwi^tiLA<$w_wc1`&RiU=Nbiy{cZ%I_q4n5c4)PL*ka_c1axjCp0dFf~ zd#U?n!$Ti&9v>Y^&8qZ5n2FUb(Thg*oG28yFR$RTVS+T!8Ti9*XR={n;U9FE_682% zk<0nkkP=HFv9Z+8@hzC+ID2zw{9yq#rU<3=<o9As3CCCGFAMEgpnsA-Em@XcRrb5G z>~~Gs@9MJOslbSF_(B?5DQ)Smyp}G}%gr!ia7!!~-LiU9R80Mu5_E@B;J$b5b@q+j z_vq#(+=LoY_N5v%xdR5vpD*6I(QG`Gi}r}90!TCc<T3<PbDQ)RIq<(gk7||@D&7ra zwU~_p?RE`>7Jvg@VTNnLm%_UdQbV4>-Ln?vg%ViMr&ZBW-;T_=N7*ysi7V+tBY9nR zSvDWl{?o~<IiMgIW+u{w+Yy#2qlV2si^KnS^ggfay5{Gqd&tqo6l?gGqDY#}6|yMr z&)v^(<7ZcPQs<&f7k|lTPU*Log7v*Z)8QT>f(Ruab;>3FR@tZ=bl>P0#^AScj`%0s z=Uf8Ke4*er1x^M$%(DWkRA46x6!fiT+iQhVS85{<P9JPy;{Ci((lim${%Ge&q>HQK z&_~koi&|4hXE!I7Z6;ljgPP)2k+w-iv=Vbe>OuD!=k>4dHOlJ-y;i3DU)#(CC=1rA z;=)RgyFV(l|FOcMaf7$x=p7Q*?2L*`T)jJg;X?y=tBpE4mbgX}=ET)o`70}RxKbHz zy|bgphj(=+-$!NiH*xhJ_4gXHrJv$J(^=i?AD9lc60Lt^ShPl-d9V5Gx^E{ZXJsKZ z`+J@-h78^h?5#32$Xp*gMnE-29-mlf@to9}tKQ;W8rAgrh2hk0Sw>s!bJ{OEN78KM zM2WXpO&upEmf5D8#4?kJQLC@2oqvprQ}Wo8VQuQ3j4XDqUv9W|pTUp(H2&DgkHR%y z2G8Yu8?+you|#FRTI%n~-wC<5k>_e;xB*$Nx9;VQji$$pe9rVuuHm`WuVI(e3kR`( z>mmjn;=pdGx9+5SPVq5d)?o_`vh#Q>dv=NAi_BT4+<zuFlh?uw>LGp)ng8VHfousr zrQ?O9cdnD-=vR0e+2}xbG)ak;u0Pd~)n%d1eMi|D1AArHupV&2u#VwG6G0ZY{sTSU zEv1J?LG)+odYOI~*4u3VBJ7WOZ10YpGq{P#N$HJA{UbL0ciMDl6LIjD=x2A&m4{5y z9mQ3Pz35LOgVTsoGfU%E8awLK%5v3f8tvZgl|D^bA;i0$f(;{|3(9!R49wf+?GOan zB#0#dmj=r(GH<-<FPRT^PHQRL|17XALHiIIx>aj-FIAPXczP(5><U!E)9zWAOdSFG zsDwB9?B9vQ#NYB;r$cI6oDL~3aAZk=D^y?|1x#MT{;IwzdBUfFPCPLr3$5dNW-vD* zTzSZlrUv8m;VjhSf_x@O8yGgS2NBYZzV%1|+cw=~{L2XPVq33jv&xI(3v<#pn{wC| z)IJ%rKz<>a?<t;97~U?))P6>4Nw64a5oN*pVD8(|Y<^@<KL$4cg5{(xUTrzau3zl8 z-kjvyMI2n28><B-8B?kS=vK?%UbV9?Wcy1Tc1`6Yp3_9v)nv*MP6#Wa4?|hdpyR~+ z2>9ECx`zy1&n3FA;W=`P!2;84x0!inDSeywBF6OZuIJKEDI+lB?T%XowtgNk;5JiL z!F_+jjZD~nMTw=#y`(Jn>BZdsFUV=p$BTu#a<3`NJ-L|MV5e204H2Y3-H99?gMuB& z&ulbhX7}J;HAavqG#i#bkQCPo&pylMx|3EtO9hH#k^euLeVY9^4NQz}B1!#b6x%FM z8Xut2IKIx)2trCi{}JEKf4`{=-!B*O^&k0xh*)E8hH`t;-6u5U1YSJOKc_U!tV4)2 zf0Hmt7ByeHO-XR+nD0Aza&fqY{ieBj(d;wG6VZ>KAWmAk?zdq<?#_!iLQz7_r1GJ= ztOG_5;j=2#w|`+BxU<LJuduPLo*TrkZb9@ouf8e!z7RURA7VLwvn&qAmkWV}6Th#u zsY#kx!m3&Yv_wb~T}$~W;^!_gP1U4gcxM428O?t5{*%E3?;~smN%PNK0gfrCq8t|{ zCAv2Ai9$MObBKT+05B8q-9VfJY3d@0?(3D8@#!s9DgyrOY7=uY*T0eXA%ra0Cp5wM zdsypG=fncQ1+wn@_%sH7;p8jKKc+0dx>%ThIr;OKOC&8mMk|5w`DOWkSj-RUl75%U zoJ<+loUR65Rqni!a_(M^8;T|U(^P5~vKHDy>zjh^@(R*S<MBC0A|>6WWmx_hQUZG% zR+ey((k6$cob0}Y+)5BS<z%|9h>SJkA*9xhVkdL5!r>m@qofUdk6uwM<X=kx|LI>L z98TXB`tJ=C`oH$y?=nZ-PXE2742NHq;1C0c?e|~PCudDs^^hUtEOqU~8kX%Z@p=*- zlAdQu$MP#JefBCfqWJq5kw{crQ-;j)5@hC?`z72Ox)^zrldCx}-Sf|jsb$|dd1%nT z{tiaW!g<QkY_braqWN5@J!12_lK3C9Pqr5?;mnRDt&IK*J=KesH1o!t_kjWO5VAMw z(@LH54@*Me{MxICj2oehw2L<->+O@~<2L^@@YpLgxoCHkjL<1sfcD0fn0&oU1x~IK z%iB?f+D>IFGpu?q75HEdJUgQ6Xv6g<Vy(dDAP9r_;w`YELrd6w!m_OD91fhuiOOsR zmo^6TT?bmswonbTwF<4U8#{mi3@iDq)vIJk5~(&2_p`8w3C+52w#75>K%)<2&;0*f z-{IS>ZySFJDA#6sjV$;6Mm`d`1!U}|q$I?j{4R_NCH6D%QPF6AZ+$fXSKuGPnPB{K zB;LnH5=EfuGL2quo+35Hg->vbth~!@WDC|~!Khpw?e{kEWP!hc{Qr0Rx}-fSZ{~Mw z@B-a0zrFiPkDLb2yWhI<<ZM4CX0o7PB@YAX!@Y)|bdo`qbds^u`2Nk?HOK3C0fREI z0D;eskz3BmZdSmU&<Ok$imH_j0_n{Zk@-PX4tB`8?9+aKt@Gz+cS!H)Mf@3bGT|Hw zlqUUYt}~!5%~-K<0cj2vj7E($JJA36tv32KhZW$q55)894)_injvn!MHP9Wm7uu)% z>Z`!D0~edf4O)IQs4q+}!rL#%@iM#9g%K&i{*q>JQGP56H8eU)Pr}NCBK^l-j7NtP zln((1l9SIntr+*qwBuKb#r$(A;@`1UlLI$il&^O!F~0R&SznwliBW;N(w3D`pH`Nu zUh5yBC$ODfD*g-?)GU6;=2O`G^&<KlD$aaxz?_*fPPD{@GFc(YXP@PqfXkVT+%c@< z(|1(ps&3nJJUfzD7Ts@Abl>9dKkRo$#YNeD?T+E}#(}?QSC4!$^U}v&!=9Nn(d_S= zfHvxnmu=2{M{p~i9k^4Znc*n84QY-qA<Y;M(&T>TCR)q4Q$VI%zyg1F6_`qa()nv3 zpWd+|j;F(kw_JG)vv_8ab9LW4lPJ+sbIF3>&jkkZIZ}P&UF3i3&grv|Hou+W*!ZCt zWL>w)W%m-?P>|KMH@Ac7m=a9C`W-O+{Sw!-rg3f#SuQ56B?XRCfdv$B{^HhDjeju6 zSU{$Hb)2UmOTop)IzbBb5!2^J*xigpUd<TO%G!oP$EyG?8J1bC{=n|d&&nZADh6r| z!XXu4mhD7b#}iqknuv;=XbU6SkE-b5I{!SXwOE2GA#o4$WO_`s-rt)e8>G>KbxqM0 z@u>}PY1j@ffT;JmJ5>8+1XsGm=hDuSn#PsX^c}0IHV6x5<on-%A1m;XL8yNC8HYA3 zkHSd>KAVxf0Dr!I2b$VFLjQ}p&ju|0fanE%lixaf$as@K;x+^lMH#d|e*{oVeh2$A zAJ6uIIg(rnKm5ah(J#(K!o~L9AV9IdIqp7ddTmNb1D#rNu%;b@S<d*rIL6^f<KxfF zPwg+Yl=wqyYX9eWVXUuwZhZ8<_=_K2L_)Q`y}16FnY<BF%yWOE2m$Q0?Y$pkrJPT^ zb$BdBpr5jrvkX!AHe3746klI65DVrL95|6=)Og=*f-&8ToJFgUE-K|XgSfE$2Tb!O zM6-Wf{l)<me|+L2?k4?d547B7eM9ln2;{&{Vf|~oF%JHiC~ysaW{uoHac|7W*-AHb zEi{=>yl#k}+EhcE%K25E4(dbp2Uu&|k^N7g*JWM^&3t8tW8=W80I`6-TJMRb9ziMi z-=jL-r_;avbs)5~#}vj|QyA5ORxZiEfc#68$J<MJ!q!19>j6)83VX^8>ED5V3+lv% zarPdei2fPdz%$uF45Ts)=0CATN3KWkcN<N_aBs(m(KBM{so7_;ZxG3H0fUP}Mbypq z8g5`^qGwPv$ivLJ*vBP}3)?@^$X$>Xhqm(H{6prS&$#|%_A&xw=9d<uNMC+A!cp8& z^R;TlCC|e60uRp9yGHw4!e0+Q36d>s;m=RM!9pOLYl6J{6OEm7n==k3dd_iAr&OFt z73Pl%_@DC7sb=C)f7@qlvC1*}2y&M6SH%M=7_h+`qe?}Nxq$)?dZe>|T4~YMcc^d5 z&o(B>qb@gQmbGAGRtJ34I3$xf4ro!wpaf4@nrh{HNLyxYgS`D^{I>J{pO(Imq^VN> z=|8ZOM|z8s`?bi#8|NI#;|zY9fJFTF4uvq<2p=x@4SoS-=X~O&<E66?C=XBSb^6(p z+-O~|a9f51!tnrTea?{lsR)H96R>!&u@Lg#zSpAblZyhH{N6naCR1>U!6WJu7i1XJ z?)uTt@p?#q1Xy{0&3}rICHz2ZKA?q1HGXqqb$fKd%XkL{ohAp_<j32=WFu6OqzaR# zai{nPfr;Y#>)2>#1A>DG0c=zdto_Hkp}M?Pn@V7Lg7vo_hOO$nVrHacht4a$5lKh2 zZN>ZiM2=4Sw{7c{JRnLnS!6D{Q1?a^Hof(=e8b{mzk$x_T=@*}BZ;n+{Ow#R#PJVl z$;n$O3G2(~6F%*ffA_kN1`qG=9=!4!q0M@#L)nCqCPZJ9ksdUA(*h|RuJ+E&6ANue z$E=-Co9-q6aeo$PV#^-)GO8wby{eSZs@o$5eoY(qTxk6d!12*#6+K^4(Htro_(3jn zk729U2wM}OyLP7zgP&QeZG^UY`6dPn(YtOt^nSVo_NRdDUvzUwZ{#P5=vEQ*dP;6m z)Ej2bqbrXM?d#kkNeflSHz$6#a|Z)lQkFwu{8ma(h_!>YNiAoT_79Cmty)N*!9u!v zP;cSNEV&MwqmWNN>&c=W^d@r+O>un&KHtT6l?w4W`z%{e2km-K%9{<Th;hk+`krv6 zl}^^2vAqVi9wcU=<#O}dLo)sVpCxSb&&74yId3NNA#)y`Qq$KmvjPO7bD*UJ?YWGF zND3)4{&<GQVDw|k1i}ICQX^tgoTp-ik~|fpQR)A3nKjPsU*t>FKl9I0!xI@v>^2+F z@-O4M&Hk2&Z?F2zi^A++Fw55mQ=^Nv!`Kgs2>4?dRs7tIA!CE_)#mH<B9q6qw%p~S zfd5t2D%5J%6X+@OUaIkG_;-VbzkKz!8{2<X6eOBaMFVSiZolDo->;=Jvb3c~tK!oX zO((|y4SZR{rD9AW@(ws79KWQM?Ncv)0=;8ktOKq1Esg|*j>$fQkoNv~hGo}V0BrQV ze>W)ptm`NY&9m7bt@<CsUrO||Gq7!b=j;I&ugZcMGoD6m^_|B;Y<e$i8(TmN!{t%0 zfE1fvZN=w6fN=zqHz}2EPwDR%cHISOUr}0N(B)tp+q{*SN%NT)y?!Uyu{{GZmAkbu z7+CV(y>Xj(P=}xH7f*Y3zj$@-;`XdfH@I(uh;+fb2?r+UmZ1dAldk1x|H4D4!|vih zb7(Rz4RrTm8t$t?D*c_G(AJH>$^(h!Rk{oLZi2pugd7Yq9A#(Aeopq#W5o}Wr4}?f za-Eg33C1_r%_UM;d%_5S<ca#fxSIhNo?i!_Rd}sr3}7l8dI!GBOQ>mQ&xcUt|L3oD z6ur9V2C5S}l!%UOb6vB!(<F2*->QX<(tciqBJ7Z$W}cGJR-WpbZK{~3e0P<8{9Z?b z-GcI3SIHug4GOlQ0EQG`lg(7gGiJ#_qfX&6MBvO-_WO}m(&MKKwV+`kO1~<i<o{$I z4b$mfm6AyH1jx2AU}HV5-|*X7z5zTHQt*a7)I+A)GQ6>qa?P~?b-G^01vqezhIz^~ z_qR9=)#4OZ)D#z3)%pLOK@F?3Q!4wLt3-FVD~-^-Y}`zr+Y+c_PA^c){UzUb;F-PF zCc2lCeRC$BQiw!z_5&K*#Fq%8!la2EUz0?V&3{YL+(EM{)C4|Sfz2dGGpnnp$eYmS ze}%(`0@5DlNbBZlfjoq*e(|c02lFq<<sHWFQE&3i?P$YHk<c`t$*;cxjX3XnM5Dx0 z{`E8+;@DjV63OciF#Xaj?#&@Be*^j`Jpa6j{x+H1I&-_-yS!4w%U#m0zNYzTW?t2B z!Ahr9dfz*Y_sK6i-m_Uf=wKXa?F`s`Xa;4XY0mDRDDr4~Z*^+q`s@cIpYy-?Z`ubt ze+Nxe!{O9`W-ulB5Rv;7XlIR9tk3`XtIUyFs$`?OV}ir^Kn<!r(>qIWvc%GXUCL<* z&ZC)6=R;<D{l`hkd~*C0{lN>yQ`+1H-`Y)aS8=})mC-S4dBDVKf5k<>=Y=yn)@A2L za|9K%eVknbjjEkI1xM^G-UVT*lmdwRXD&uF3^LfUidZuJc<cqHDvZk2DgRzkfiC|i z4jRd2I#t=&8ZYy6dr4(y)X=2r?49=8I-vTpW&-S~c2urVJJq+A3lyVWCOE-vBOn)t z(*kPKCT(iEfY08Yw^2dv`cD2rKAKfE>Zy+12YSN%-ZyGSJ(d35s8eGd@8!l8&3Px| zqKDdt2~*`Sn1?>#1M*%q&>z(2_yac(T$@=SSv63)R+97G{gA;Vyw*j78c9<eSp$R4 zId5=NP#%EVd@cnRrM4KqlRTq5<M{))HlQrNF&xhrT|CAz_(sbjR9Nr7^lRudqn4(# z(>1`xk2@4}@2(q+n5cyloxx3J-&1uxC^QgFhbg`b20quJ7Hs@kLH8}U@z)hQqyJ0% zGyXd{=fC^Ob_(>B6qv07t0}Np>kqN~IPSc5qc*=|rN7O-k!;w0OKU4j-n6&TZF%%3 z?5p#TBKL5e8oRL-o|zQKAb<^fBE)kgH9!A5n=MlwmNXzmY=+I)DHE{7=~vD>m{_n! z#TQQAF8p@%*L}uaqWdi=>}Sr+;j{^h*9&&D9r_izc)!<`Qp{71Q=J>LblhpT!=U4H z^HYQp*r})Q-pNiAR{JCxwU{M5>NMvUL+}e}*2%OV141eX#qTbRXvHYuSDV+OzBiF= zc04$TOt$D`ZOTQj$=KtmTU~{Mr?E4>VFVqvWbh)flSI=+Nb3?r1)b1`DaWtg+uexw z8>jV#4CNIJli^T)XIeUEW*8HLQAE%HwZuZ`z&h+x*gemhe?jzwRt0)8zvNTB*z^b0 zMDFaK!Xv$_u0-o-B&dUa-b;q$<J*y}gG$h;1|9#ao)g7Q+bM8xNr3_U8UAq;aPsHk zIl^;jT`Z6=oUGdd-v>QHe0*J{fm3Kr)<6717pdWbG9YGT!D<PHMgMSHo5c&+pdR*j zSWH`-Nfr2umSddIU>iB80piv9(_hjeBi*vDBb9mW<MLV#e-~u@oSn(;Hm(zv9}Xgo zdzr129QL_So}MR5n*ZiyH2?VT(ER(@u^(~%%T^SX)Y#%qzQBaf!0g=s=3n_O<QnWz z=rqDO=I^|hEEnf$=lo0<_(){y;K0U^o{A8?1vvB-*%%rNULV1e5uE=~>n55AtK_O3 zZDEZ1(}yBI_IW;eNV;$bK#;Itt$;a_s=vBiUu&+s4Jr;FvG}hnKlCIwbLRj^YyQM} z5{v`$t+v|i+{$dfIg$BxpSuFPUVU@=!<w+MbeJ8_nKIHCR94&HY>e{z*vJKl+U)o? zpo+o%_2)whca($mSjF~)&G-YRMvkrtjoQeo&Nop{+N<q$Z9K6e+_{;qr-UURGPbje zlWj2CWw8!c3BCKN4W-wXdoa~0K!N#inoK8>Z&WgsXx-{N;w}}L0UxX$hNkK?tz|*X zEyHQgRNB*$1Z}A>eQhs5akJKv7X5q2puonA-<frzcIGz94LSFqK5hyIqq;`$nirX) z5@ccrJ5h{M!m2v+GSu)nNu9R+8`0WsK3mG$$hZ1hQ^%_TjXi(G7D6}FoMsKG^J&<? z_=l$es&K$ZqU&PX_VDbX-w1n*JbZ(`9i;kn%tzNNeB;pBQAZ>eF4V_2R@Cx%xSm|A zUycsPHNviD1s#+g3c_Buj_V+-y6oiX<Oc$;Q|SL!@r>yc&$xcW)OHCp*;8u$XOlL= zkXCNwe?8x8)wT+6N)jxtxq?Cj105epbZIX3%s-#;pIJ|)MhV&rTp7oI4F&SA)brF_ zN5G=l4@QLIa@635gV_&)IqAqQ6M`n$V9Hm*zSkgpNykwT1sHCaN&zbKcFB&9c~`|{ zckn$|`4G+0Dz98yF@OEST_gDqnc@cHqm;ERtn$>2B%efysfIv6iQ0rwqCkNN6v)p) zbmjk}!N8drP*NM(KMCH9Qg|CR`4^!AiW<C{0z5HmZUArocHpH;;Vp9Tq~?u725*D< z@a)J7BbFl}FO2Bn?=$P|XlwV0N<L9S3t2~k5c}g=V);t~_gw-Q6pNReQYXQF)QY)Y zr+x!{{L3yZBlpjpclb13JaT9b<?nY6iigW=rK?(^9s9eX!5bHYb%Rgi?ar7BPsebe z9|KnZ<4drb^`+rt%2g`rJmT#p?uzIB>(n>!P+@$2;I;$WrVn(Nt_NrZ)Zd&hEUFgf zYtT$*A!)={_le~PI8jg)2mUG2qYrEXUS9FW!TC|0C%(#pP6Q29gHlU%d<o4vdR+AK zJuDR64CK(wKj$<?#!smgs%Qsen;PMd24{RnPpaXqj8~?FYpiU3pPf-WZam|If^&-Y z#@b4Yf45JdnZFpcO7IQmTW<ZuY8oZl0p4aMQU8r$NFSKHs;WsW^*5E%W8m%pk)i8h zNP@qb?gvxfgcM6-kqcNmkMr06I_p|UNfe<_vQM&q)>Uq;i}TwuZ)ym#ubq5_I%i-} zRt4v9ysL16S{2nt|G(IwK@||G&OZv+OH`L<b(yBX;DCRAMkcG~XXdJFLwd}M#&tuE zkVEjd>Yu<Xm(c=T>3ViBKM5*@!}b0%pjld})LKyKi_?qvv4rFA27XXb-uJlZt+5}z z`)6GUa<uv=B#<=Y#X6<>j{*TC3h}e9e$DUOO@0GJ{K?x#;)^9n^k<*)vt$K{$%X`z zslcA~pZKzo`$QpfyKf;oBMlky^eLBrGLR@ah0Y>D^^dj=GbCQzk^%7Z*Juf>QbpF^ z{5|AERND&RdT2HCKwSW!?H@@h7OUv8alewZkh6V!tu_8$0!v08DKSbP7q<KXzEO*& zpamJeQS=Pz65<Q_oqqy_wV0fB-mwyqpuCBu$}ctPoC&lLl1ff2gVe-ta!-*Z(g{HN z_munx(#=kc9Dj7)ee=LE=+_X-N{6LRELRw^k#92u53$7H@i*~1%-{9x?Fv=4n2r6b zfAd$66_i>5Wk+WK3h*(%;sS^zYb+oH-#f1KCr}!qyW9nW$NYE69aN56M3EQ_&HjII zWR5;olu2|ee4To#y(2$?d{vHoM}kY(L^WyGvL^nAS~9_QvVuPTnY3jPcH!-;18|8t z+D*Gk?^Z{j^7qcI=g!$VvFy3Q)K8vAvt)ZSulzkTa7yRaeP<_fQ#N#N-D%F}LVdWp zBD?dz!v+1FST=RH3J&<-0w@2JrV(>Kn^@Mm+pydhhjEVOOMlPgPwD({#OxC?etpwU zvyU-Nn%VSr)6pHrX9UQipfdyYs^R5NC^@H(Y0}R5Q>9}a|BK4k{bv2Rx8jePH(Q}x zI~%oYOu`#dhd*LGI(H_kGsHV!HP>eyH~49G3C~(G$9d|Y&ZPgl>9&$1^F;UDM#v9P zO^2gAWrNAfqDe>G-|Hr}Y4`C{16z<oPvuZolJiN%R?`2|3<tHCPY{()5S335lm1fj zW!AQ89&7_|VSPsDaj~jdPZR8NF6s8k6WmnyMf@Q25IHUVkLKgZoNr+%$%<Zb#lK80 zo&^tju#08}pZx~Zwc&^^xp@*}P>Y4(|K|%%zEnw#qXF2}`TqvEviC)+>?!a+Dg%EE z`H^sew-!C&v{_x2DvqU!OmMi@knzCv=c$;HX?l%Z^{s#*EN(~1=TEUan@-@m5}s_q zeDa~Uu7WQm;(4qlIhT@}@sDWQZT5k-S-Sfk%@6<5wLU#+F?(~?P7T8?(}zY9OV?fg zERwcQMea)#MByfyPFSVkE`4bB*@4?HT1@9^?ONaQ$cm+EhK@MC0_8KXJoNXm+NUh( z=Q3-C(TnzJI-2`_0MONg47Kt<mFSu#tWS1$(V$wScaW!!9vf^rIMH=H=@2uOn^7^a zyD}aMfTn|UXI7+-;j*!1(W6<pew`748$$;>4)5Yn^kXTy;yzG%KtRCiRm@8cgE~OJ zT*ma%NOG%iqOL||<JqKV)4{xH!+^eM$#5{y^*#~~vubF%KjRFTE@7U9$5|WfecWk- z*&X;&oBas3h=oe_uj4zvQ`vD*68Iv2^tY6GoRetfZVGcxvjmBFgMm>GR3U%7B~){! zrPTZr%*%8jMK|&i-ip{i&Xy>$oBPMv%2Huz!?iWh^}2?Hu@wZ@wKAS*exq*G3T5^q z6wR(aswW1MR#IatNsUluM^S$_s*`N(peLk#7D__7#uY2X@eep4Y!T??*E##WbN&It zj!y3@#zMRytjsqGhnC^y+E!<W_^k&F7wjhLb!H96pRCEe{C4L@N2gnx4o)|-Zxck0 zHwMeEn}*3up#~G(S5Zdze4dI|{JMnIAJQOL-N5&Y7E{IX6}htzUBreG1c&~2F#SW| z)Cw+7S)R3sBajnaGs%L4b$6?gGdXtp5#h{bpiy(cY*v%efjM_esDH_&XoYc=fziMD zG~{Aj6(7W=`=AOZ&#}Ldf3!BmRdrs|&8Q{$DWdNP6k37bZ8Aa7JN^LzXKn@MXQ~c^ z`Q1i~IsWgoBqwp!{c!eF{T$|<R+XzX*xn2xi+7*>X&sao@uGJyX9ivW9k3Z?2Pvf5 z=J<ReoYa3oC}MR!rNr|p6W2^dx{E!Y`O{fdxwwJtkM1nY2iE1rgkmF2EYXqJyuwO~ ziA_VtF=7K}GHNt#UGXpt8@WXxsvr25uw<3LlN6_CP-+Ce<{u5Rb~f!O!Zff~30eur zmCCxtKv24#(lGL3J}U776+?cDg2y~}Fh9{jlR(wxH^H|Ds72M}lrWR?x)VUp>Wqb< z;`lh}pYZw5<VHp$AyQF^uDbvi%1Zum2?o-i=MqpETLme~-%kp4B;TX`Jmb%~XJIt? zC13(|@4t2)v(AyT86zZPX+WvuBikvdP>QhRT`Kv02SXRQW&e^N4+$vSN*1;GoBSlD zHvcrO&@`)PpHC(vWm@Ox2s^{&zSixQkgSf=gZareuUW}~U09!3S221fU+cW+-DtL4 z({BWsj8Xq3YGnraf-7F-MOkOJRkU87!Hx_yW4DQ)On`%=uH1O%|KnVmQ4c^j|HBUH z-jeA0E>(FuaKtR)d(1?2t*BmW?KP&?Pupu;uY1@ltw>wXir%b`|Cyjt;1+JEd6N$a z`kd$Keai5>%b?dM?A4-$`*?-nHExc%oL`0U%g)&goC7?{<Kq{w?mT!^qU%mj4{hx) z#kdB*ZVJ0jw0kVuf7uD#7v|b03e^M@s&~(Vh+IZ?DAdMhzn9snzgv1&=ke=rvDFn= zYf)0oM}>~Rlv*-A%@lbZhk^Z!fQeqC&h%?p`<RIV?&dPK__^6GX|P+U3e7NoViCH< z5INwS=g=Xr1HUYtZwKo`I*v@?9gGu*l!rI(idgy>9gx4-&!aLmD1P(vSny=Hf#z_H z512@Igx9(rd?`MI*^$2CQdS`CAM_oY=c|3mZ&8H2aTN>P04?8;+q(uwbT|RFcoXoU zJ63v3*RYAIyvw+{Yr5AqgMji2z{49i0~@bON1SOwr<~1EU=-E^9nU7BQfEYI(R6@J z<Mt=~m+(SXFz7_@1)Us`jgY$f{DRTzq5*IelG8j0>VyINKwbm96sE>=nXXBm8gnas z|9dV*0<*@-F|bAiJ9!fn!046%S()WsKrD=sx2S&xo!hy8#nU<)kZwEL34-5x84hDv z=5Db#`G_beYrR;$Vx}l)mrE4m%~(GwyLaM*@31ylI4?EqpSC~&En**toAk?I$~_gf z;3mR91CA-ze?B0-H0(cNpV&)reh|170ym@e+T=%a@to0Vt`V_JkCFIWv{U4GDaTE2 zZLv<B$Jk4I$zJV$e2ulUIy<J(s%=B8?CNnXE1GD-+LCxAh^|v&Gjq98bNIWxi&<gN zFq!Fzi@Ny}4<_WL)SqJVtq4Au1vMaBo0&&Zt@8Sv)J-W?4kt=kxCU#7R{l_^AAo6z z)0<R9D7eqk>x%2&Aw6{eoT$N$ki;?~X0PPFu5TTbxhlr}f_JDi8LVk!2pX2JiF`D8 zN35fX8@)Dp!*gfr^w;X__=!#^D&@X0?a*Ey2*uH}0%Gks@Y`TMh&*`h)oB0h`01|P z*)wuyYagB!ji~Pf39&VDzeO)q5mnS)EllsINpzi$&dXoHpNkgvk9YL!kBdX{5WR6A zQJE)_X!B{e-pHz=g64PNz=vRM@xW8vAW^OY-=*!L3hX%>6}Zc#td%j473X(PD+Kya z&O=*6c7Nkol)edAc1kQaB~B29n2U(2^UgYwCLwA5fwTp(N~1`SDH-v90);ZcX+$Ol zlJ_V=qZOe_udUvj)yVzOUc~8n{JED$(>sx#^e>}{nYB@yqnGv<3MOG~C6>LG65<pO z3LnGgDgoG;NabTFPBG11OXcr>kk?#InY@Co0)iSSS5J*X)&zE^4A;fx&tr57#L<ll z)_w(9IEPB5-vmIzln=nDv|@)*ERYx1|LNLv37uFi5kOMonJefO$6J5zMIN^xkC!!O z#{{y7&JISZf-EjYQDl#C1^UN0p<&+y^8}|f?md8(&5jiMpLwd){}4^nHVC(`do2+% zeM?E_IM(HN{LhC&@m23+ivQd9S+41I{EpTmahZ3SO+4q{^d8?O322$;wtNU12@%0% zjhI1C?I%egJpL^Do3h+NtzA84R;CYvNVSNMmIkD}O^nElz(xJv5~9WQg~izoVbrdo z<jH-T6ZcqqgGKvAgVWxn`Tg~8Y?TQYpZ3XlG)nlllSjT^?2n=?qBo~cT)ZXcxFBJT zI?@1b_2k#+6_Y0G@J&KYJ|%iQd^Pxiv#wI3w+iLw;|fYUB+_w^*U}`{zw+Hw$k!C+ zTRWSgKz$ylP@iyni`~!PLe^4!tN4<d{BZ<;xv#=+!JCiL2JgX?&qHS+ur&QDuNtd3 zyhkhjl=8Y#oAeQazy5dF3?2z<LM=WEce`a*YO`{*aF?|1L%}#`sRux|MW<}PX-R}` z(2PX4;0Md1zaqxVR9$XTGh8=4xA=Ic=QLtMdVj>ljtq3Ax{fP=+}Cml=YKbWVkH@> zREvi29R&cP6~^%rjPHL3@__L}G<?BYHJ4%G++Nt4+!ScKcLMfmY~XwJem$e9*l8Gh zf5VOBANX|_MR6uyBoE~U9xN$vy9#Xnnk#V1b_%R0DUeoyhbd4N-{kstFx&+MyP1GA zX=~Rlbj1cdxezKk5z)vgCF=Lc>@2LzT-{v3{skwGF5ZuWMH%0w1oAir0Ftys7nUt2 z*Fxb)`ZDCpuk8fRI&V^Azi1QbA0v^cvfBQZTD?h5s87}UZ+@KtX;PC(G)3PcWS8$q zbW@mPKVgNWewO;cZZgtZh}77Po@{5*e%pyj*Dz4=eHPoZbP2JPa2^{T3<W{<_hXg` z9ChQW&QaEV&BdZnB8h|r08vo3o%O5$(|1@D>u+hY1`zca%$4##hPc?3H4=f#V4P^% zKiP~*ecQ&Uycqz2m{<j^=q4eG8nWs!7I{|s*ULCrmtTg_3z+2e?a0IpMR5MKc4Xqt zuR0;>-cEsEloU8x1+Jh#alCW<)){NE?q;B{r+MeHr${mbUbX%N9H*Qx^mWMUpL``a z_IWLh{h~^^xv+%MGHlHk67`3FO_s;x@MkK<PpRIP$to(UouL&p?p>1s8`!n^BbkJY z!HKSW$pxLweh=w<{-o_2?_Uu@t~-MF_Ko)=7SaaV*5`lo+q^03Sh-Yqi~6@>x|aO> zsr{5Tw$z%}J|wl!!k6Sf=O;}WcOvUSufn>;-UKbr$K}EhpztoWu>~M2_xO(n>^cq| zZE5th9(kb7%Tt%68X_9~oodKI+L=+p3iG!H0`bG`@ON&p-Tvu#h5R3VrIf!K4<XAG za{05GAb4+o<Q_of+>H-MviyYB0OhDqR$KOCiA6&oyIO2~8rgH!B)hX9^XAl?j0lC@ z&rGGWf49ZcMwRo|wV@nNeB?ew6*5f%UW(87IIk2`L}&UK=CeS*>lKE2j0Up`Ae8Bb zYMC2JfAQ(ICAp7yN^)L?u!)q%pKf!>B=2T*@QfY`R9f``4e`HpDy^c1C+ES=>Xd)N zVv{t?k{~)<LjX~Zg4N@QXmfGFsVRZ82XOLdpkRg!(Ad9ZOg4dp0G#BW1w`5$fXRIJ zpTMEvS5Gg5A{d;)L_M&7%YPT`CI1XKZEop;$wZ6&foJ#{m{9%xu0N8|nzU=~Y}v%h zH)HWkfiLZf5Bd=(v6x*?*D@{tnO*>x1l!0NYX{YZ|AY(DJTBhJVxMSUNS8Wgl1O?) zu80>~Uc}()=a+G2$_dtSqaqBIX*4u*3TV>v{-UQ?G+-*hJ3-cOyetE)8F^yrzgT&1 zDI?;sj);$lh}Yt~8Q4&&pGxF!Ci2%v7+NO<yt`Z+mXkun4=Fr(T&WaJbke6==bt4N zn#k~rPFGA9<I80?;$G;o;4~pik~Lq=y=K#gCVG@2EEPg1CfTTGg%PrD@k&iZbl3Si z(nN{g!#N@`-%3wVe5Y>)gwA{J5|o+D90DP%g1BLALP&j+Iw}!pBS99wOMV=JD0>zf zD(`$(Cb}zm{V6+YU*pW|x^wJC<X$o)&vF^!Uk!kVR>~JC5CX0Tus`pDAp#o6_gz8p zyUU6PN1UzYv;VKpQM_qraotY^_!-dDU(FUo%*y<SY_2b?m*$VCA9A5lx%~g{&TDT9 zE{s@9Yr39Xo;u^)>8on^lW5(%vX*Dp`sH={Ikp!<)}eSan?5FxyfWqPf?&!lqYp=d zY@fJ4X95D+A7pEH`6^`<dhJy%U$x~sUHJr36G3$r@vstd$Lpz0d@-d7`FW4Zp9L-2 zNHTpWAv^MTx(bqU2v6@DQOV+Ya5gX|?0z^V!++t7!p;*##0Zxt65%d&sA{eVssXZk zS#)Vh6<<c?z077XP(LHlZ=Nd#1P5&d`iAx5A@Dmc2yPs?94ihZG2sdn_!Xeh@zq>$ z19j~41Ru5#hHSpp6Rco*7kQ@WD-(`$Eo|W#zzUGhl_4)@YDk~k$0OsKfup6YrMH!3 z?k>qZSD9z3Lj?27ngB~rE=;KeqE$OOvMb+%7+&U8kp#?E<NowAYv~F4b+7$;B=~hZ zzdBbws9uujzJtHso_IbVr&oI!LD2$`&f|vP^$@<1SM|}*`FZHHaMpxSREBMMu&fQE zFhauy-)E}HSnTjjbbX<u`A?J;6-r^zZ&B0^g)uiuMr-vU$IqLJujUlN3HJj9F4n?t z!Uga!gu-PeC+&&9QC1(z%!T@PqP|S8+%Nu7L~CVmL=^pvL*XfqK=UhO;np&kT7?SR zaKBtUPFUf^H60REz`FSc9(ItN8Zvc$YCg)nlhTRqPm33WX)VpBvpb?&qkUr|75tjz z&5d=luDg$z{qKQf=&#h=@o7~|htS|8Ba9l?H6W#Z-j31>ZEnLzn=Vg}d2LlZxFtqC zUctuA%Ko=YFzqa}1^nsUWXr2xcB72Ts|8;F*UGDM3<YR$UR!y}8Pmp7nqwl*8lIYO zXh@Y;SqAFRfQU6`Vj-!ab2ZpFXi@(`7L~oLqBOPpK=@oRYC?W{!#ICoF!6)ciDm7Y zRLt`K$P$t*dvX-(hHyStq^%v;NynL%=-veFD1vJ|`oMu-V8rJPLHjZ_>sYnX-&Nxr z^R&Ir)sX{p`&(u~(@0-ST2!SOb^g|=q+~wU*UYO*B*A~pKBj@zpP9*D{p-uj(3_I` zNwyh%Uq(2P^beQgH9hD~Hr7U_F~>(%a~WS>DR;m*^k}>Wqx-Fsx-xG%2tDe{eVK>d zW0iZ@l4@UOwSM)RDo~mJjMRX8ld^DckMa!)U)7(P#W(l%*C3xNA2S6J+Sr%bz_*GA zMnNy1Tm8VNo`tx~M!u$Z$lk0HLh*c)jY}w_g)zcbA`e_65^v1j>+{3c>auQAH68jo zj?&Imjy$(2Inn)Bkm_7z)ajVzEfkte6_Qy)z2ANd?E;7>H8H9L%Xmfm30YE%Sm9>+ zI7rYpV%BEFQG^dWX>tsTW`G%3&N!J{B?jg^2}Sl<X^pUuo^VDhB6Wdj$!oiRv>L^W zSw@g7f$;V%v_{zd<wC0^Et5aDN)i*o7A&`GE$%Ipyf~ohEA9TXTBuzpo{Y+fM~Tzy zk+r|2wJkYcwHX!jtC3st2eJ(PAsxb-Q-^+ko45Xq2&{h(oM8;{52u1qL4MX7=X&ut z&57bO%BXb!MFVOHXaB`!WI|zb^jKHYaLy80d{#{fJBt2q#^b-}?2XE7ocoViUk6Ss zknms_U;o9A2KzGV3Kc=eaE=^n59j@?3r@_V6E~0g{l}n`xS@As!=M4cOYD(pwJ z^oQmvg_L;sBeS(4oydfTvEQdj6_YqOMm?S#=r~vw%!B|(R%=YbMg7CUFD$hf1}Gp! zH+RZ(GUMph5~_(z(#4#z5K_*+<7907rOv;YdBE6_K07$kf}7H^kFz#FIh(yaI>i)E zIN&|RPw#pa;i~%0{wlVJLQH;E6#1I5^#B~L8ZSE^F#XW6x$o+?l&$<cTG>art0j!G z!ZemywP&i@jO0J8xrHyCE7kcU>0`a?t)E-3$CY(*_G<NiI_M7B#Y%BnBC_Jwk}z$- z+{+M^9;$$u`n2Lf(pX2>%H~Wq6r55&&?9`|@8iy9bGv{7esqj?mJC&Vd*oXyK0PUb z`w(*8xzhAo$4*w$5wZs0TQ94HZVN*&6>;>I*j2fO6w%oD^+XB3#H*3GwL_ioF`f-} z))v+i1-cQ?ohwacXHBUly7hy>Gu4-o=C$~hm(PM#cZyZ6o9n{27nRL?yPvF3a%1O$ zlsikB@ny6B0{f>0H{`-Y0-BTh)`@{10j~2QLnOU-=R-DnbnMFEL!12@g7^t<c<0=B zq@%HOr40}qMw5~JL&rlrFR%>_m*|_~)n@<46zsP=0FNww2>c^?4>CLYb*{8p65Vn| z+7<4b{aT9T|EnyJ$wsv8w9X0CkOqE?V3aoSd8`2MdQ<m!%}=5d$9PnV--GWoYv!$) zgT;hjDq(fDTXe|}1c*F%m>S^rLm=ACfg~lm4;M=U59UM(5}-#kn-L?Ww~YrgS~O$D z9D2M|<hCBnCs;&P0y77|B+myl&lsf(ooN44=tT2s8Q*j~u{Wu{ucemNjYL-$KjpMo zOo`~FLJB#Xb+RE<&$n%m+HD)8WL0guR^J3t!eTcn5Nxg3sKL|cU`kA?hiaQG{ta(1 zv!MkzD&(dp%6nqj7=;n3Me*Z;76HOwRSdzQ(%*nzB>yv!pN?FZe--C;C~Qqv8d!}E zW<8x{5Kk#W^sfe5FvsdYonc05<S2j#-}Y=Ld6Gu8eczE?m{JDx$u9gVso(rVh53@U z?{eM}NHiw8m(YwLLgykX04}{^KcgbMH=M^PN7M~e^Y1@VjH`^Kag<kO$JJ<O?YNY- zp{1ol%$!h0v2CYGkXDDdr9Uf5pD;r|iF|aYpdG=_>^lt0U&hc-_1ML3(vojBER^&0 zfxiapmu9;Jj*}mhQEQ(PYE2#m?T@0nl&z0A|MvVq_`R;wVzv4{yFH9$tXud628|@h zv!3YIlu)Ob$}S_J$)A8vHS9XeCdJZwY*|y0=spBF+CoHZ_s7aVdU=wFcFgeB54xUA zESjQk3#D8%jnwHQqQkJS+IHb}#4)mKGXbnEYlyiCVRzq4Yh-Fady#b`mLk|ltyzgo z3iG?&bH+#9F*qrfc{!Orx=`-(LAjrmmeZO-q1;@`6|&p(k!mgvvkSO9S)h128L6yE z@At~BdY6%l+ppxz%Fm)m0nT`9q>aQ(engb62t@IA=$u;{NneVBX-6=kb0<3m^YhWx zm-TI%zWn{-cmvu}Fq3(zFHhkqD|0H(N`Drn2)6dRME5HCfukVReqS7&%*mYSkyA(T z4nDaV(OmniTw6M^tT|2WXm<xx>Re^>fkgKVekfPxavM1lUFWD6n8zcDu2Fi2_7jP7 zNqP%pa*i4^BXQc88J#O^sL9&5zJ&r-!GW{@8u?b|ayKq?<$*2KvQK0;Y{>Wc!!j>b zFeW6rU!;`^gWQj2c0=}w9)EaGo{I)E{~+-u``F`;Aa|nsd;FrzB5bQfx5tl>Z{<fj zwXWX(j@Q;mt&RTUjE<@+f4LGZ41xY)PAU-&TE|C0|FDCKAJc&rj_ozLZ1M@ZAr^VT zMc#bo&;sw36nOhs3OuX{Lcty&+;6>2JteJi|I{}FjQnu?-C>1B&@fBHKO)GX-qW>) zTmug-e}s;`WlhbBdw3>VAK9`-GxX*a>%*U#cDJs0nxEM}ulT2Z^;N$05ioDtvL^b_ z4m2~->StcAc%af=H!MFwk~f+C{(E;`5sy6ZS^eZJQcB2JHR4R>TPbm}#kMBKZV+Pw z|3)3}t&p^qr)Kpjo|@HH`Oo86Fcxf9gJ(OXurEypt3+2Ne97J_6Wuue#t6rB(1h<V zRV*R~6!wpFSIlJJ;7;2evbV}|CzhW#neA+OZPm>3R+%j*?q+=a+<uE<(fvHAo35RB zW>zXM(yOU5(zq(HQjQW<3-vK<Cs-F0!}+H&(^#mi75S*czf=^WWuov_kv#sZ#~=#b z%$!OKtSzJGD<uW)Re@^F<xE51lULyl>L8mc7#fU9>_>Pad#mO#57VefPkwmz&-4`N zmXAU-XcbT`Z?3u@n<>YI9y_D>1Nq<DxG{0{N20q=(D^h7xi@6pL(KF##R++co+Z6= z)vHv2%Kx+dF!M0c-NTQ*h3e-ObUIBKvm2;WJ=1l_4R3H=%F~(GEAkV`y14VoG$6ji z>%a|N>jPdtlIYg<gZz$y>?Tx%qyrPJI8D9qE(s$__PXOtE9%=eTJhE*@!*-X;&h(U ziZgghE6(Iu>3@lZR#x9>9|Py!dUh^1J(b=mP)g}3vc10wz4P5f28Gi9{W5O-q*$Rp z;<Iq;G*R{LkA?S*nw96So5A12GMi)Pf1znLYL^-tvw8pEe?fwqN~%wE{hJ(lPP8$T zWg=7j>&%rvEEhr(1Nm06w}viyu9VJ3)v+4=*Vz-BXOh9ZUjvM(Q`(ik5$v}a-?RP9 zm;RP{bEbE-*xR|nyt;JtI!1Bg*1W1j_b-I~ufn14kugT~y1q_jtr%!xlL75uCkO3m zWejF+F?J1IKYn;G_%wm3x=b@qu|WzT>1SHD4ib@lF)Y=7fEctg>(^T-EL_#jh>H5Z ztaoRKVbMth1TgkV`Myg&nGEuEXAzIb&of&|*8;x^d8u2Ak<Qp+Ghy!LpM!t4I^{2< zpi%>2^E#ysghP96c0Z=8+>S`W_y=Vj`ap7p?hGtaKT$6)ZBRC>$!iXLJnYZ>9QJ{= zFZ&M3(YmwPDzF|*LGZ%2LD1C`ooe45B+ODvZy~+kU?WeFeuJVn7P4%mER1iY6_71= zhcQb#Ca>VE<@{KB5;Z1gxfaA<3R*$~%oI-)TjGE2Xx6E280W$cOXt%MlDW_w-$mLx zSDK$N(KU`A-t|(vG9vcm>E?}z?z_Y?HsQ!JOSVB}^O36Y@-EXf|Lgl>D8bYvt=NEW zo?5x2P4A2kOD4LP>Lu;&rDn-w_Yz$)#l6IqOm#2uCDYtX(qDEmHR*2ZVMt+&-eOLP zdsv5&_Bu!A%QkqtjIZ4ANC}Ghk}8+fI*3(E>fB59l6v=2v!ubjM3*$Wm)Mdf_Yz;y z>|T=oQJ;uMt>K}%65SEQMU->1e1uMXf;QaUE{_oIa{L`4n7%<q$|=fxxQ~nn4SRhY zvx{K;OBaIaNQT0yO8ePE2kFP)h)5e+F<&|o55=cL|Gy?6H{&J_zzNBY-xx^sxr`9C zzFF-k6!p&;hfLdd;kby(@GP0kZuY;6t<rC4)*h2yl<e6BA=)2ss_{^2RJ#hDN1Y~c z=Y6DmYOSa$*gT|yqpSiOx<#;z8=ulO$dxkJObM{r>_;u9(j6)qBS9t1*<Q@~EXuP# zqjZ<k#>k%Zkp-kR{|_p7uvl!V6;o#YTd_qcnsS~)#X~(z>-nNaU+^V)nAE9U2X<kw zX!H^%&<m{ya+wooKXs}9l@q8HG(lnGKNyE(fCUs?E}#V`kd$iR1Y)ZpR!rasN_2mQ zA23typzb#qQTEgCU@pHH6$Ob+mx|Qi2TCYWu_GA#HZfdc&y`AI7c?m?^Il1rzkWul zQ{>CvhOR2Czm=9>TPDfRmz2MO^7-GH?_K`#|Ahl7AkNBHhZ5(<Euy$NkXUR!Ohy*G z>YjptI@gg-!Y|tIN}Qp@?ni|Cy@8&+$B}0nJu72AB-2X>l3#a<3qOmvwrx{Dc3fEC z9u?Ty>=bk0A93-e*CIrLe0p7}JNU&4;B9&o?gne>NVC{MWH<=_;UtKC?^+OcesTq< z9fx$Vm+_XfY0I;?b$nmvEh=}O+}ZmKoV)YNCbLV)2pK$EP@yM{L)QHBiluvHYxHP; ztW6bm{o+vGpG4(hyEfLsyYm^d1rLRTBkA{^Ei>3w$=0A>KbiOeMnqy6Qyc0#7Rz)b zyCt9SzOVkTac40q65M_NFy?igtDF(HYiP@N{Svo<XB}HM!g48I&lJXbqMG;AB!`W7 zd<|Tk9lLg}d=(P%^;+e{v{5CyAo6<8T{buO9i=CheP0h|65W@OFB}uQFDNOrXeSaL z2qw#ef-pSj<ThvS-oPhr)|3t1)x)%PLV8warRkDHSFg$j%Dv$Dy0(m*^Ge8>J<RqU z0g`&GOBF9y`AswKyn=VOkD4mj`ojcCcMr6NhVSm~M=&GbDtwJ@uvmS4EtO-oh|<5| zSc#&tG<nbv0e|-CTxn~GOcrD*%#)dax=0d^0>?2kYmVShPGiHGIYX%f*}wk|aKD0A ze_IaTD-L?5kk_-@%3RawBODxAzOCM3W9XB3vjZD`*Mei=J@XpfD_+@d%r1<zkk^Us zTSk<ic4|S_M=2DlEF1Ug+z1@?FFe^CqtTvo*biiFGLoQheg7sDZqZf?B%*`kn#Jw( zXSNxqQbmGJwW7sw${LHfz5srGCLk5yWA;IAlD5Cwq9UjTYk`_jG}mV<ac7EEk^wUq zeE-S6V_=f(8qkCykNS5@*&&J|O2mocXv!31_$d7dCtxF>MbI}AUGG4=0xQGNgGBc% z(EMb29dlASy|T}0%79FX-)P|gc9C#&JY$g=nH^k=?Ho*VtZHL)4?Q=4Va*jGfwm9O z`pp<nyTU%7K5b-Ap)rpkrAS_rTOq7Kh9=O_cSX0a*gDmQZr{JnkaE4Yn*etyM&I8V z4&`6vS7xO|J<@S!NQaJ}2A#I!W`Q2~wfcioEZv*~Km%P%_K^PYes8R0ahro2G+RM@ ze6h^h@T@=S71(9HuGkV8ubt#pzm4R-r?EO@&e@>C7%%@|G%YHijb|}>(JS<Ao7wRt z<PY?(8D87-88%_05CIiU<vHILgdEuu-5TheuRfTP5C4*@bnBtppOSmqR63o?x1Eyr zvqBoQEZdjpzK3FrPJRUUYA`l^g_BD2<H13aKPl?s7K%N?t-1eA7IYd%Q)oq7OA9wy zz{^$7L;AkJtiAqG>ak8<nQfl|k0z?CsGD5VT(GYdy5YRs!swEAFe*2U%|ws-V@5lH zzYD^+8nXWadlUEB9J|-OrDz%_y8Z!mLuPg*G=C*hE*w1H1Vq@Y#9$F596Wz~AcN<N zqQvzQDDX{r*K0)Nt;WsCc&qlVmqiP%1)ysY^AIRGss#8zRCNe=i~v6)lP?&;zld0c z1(f+4C0OjG%=0n7!ZviblZx<}FMRyzA(@0?aWp#M1io)Bjz=2#@;^kt)j`xB{9QMR z&uq0vwr8o*gHX57(7z#NVy17~$aZfLF=LKmpPZO!byS|8`67fr4Qr(+W?es&C%1$^ zO;lCdUKw~HaSo}Wy)$HP-s^%qWOOE$U9U&}Upln91W<Ju`xch~dY+Jo`~f9|>-wP- zO+fOl5+14b!%Fz`GnJH+C(OLK4BuEu<_<DDHI+YCMM{KgRvC6W6)|k)NvdN{(Ir5r zypG39GVfljV?7*mO6qoKQQ+puFT%~yq~Tpk(jFVTa@U(ziwF?4&=fYSM^7+15N&F` zrHT;l{2y89HF*j!`Jk+|?-emI=4Nm!<mU<XH6}^DF976YVY6podKrRd_H`f3_rx;K z?638UCZ;ANy6010ewR}07YM?;WoR^%ap*r~Xnc%UA>UUZ$9J_{UAo_~Jf8RLvqts= z+XdEkvZ6bMknI}IDVk!N1>`@B_%~OXr(&jsfR##UvYG8UQLF=Vp2Yp5kEMUvE>JTD zL;Cv1vqcqJ*62h0+;gWdolXfpq?XQbFSSc&x|h18vv{HN*#g=Du3RH9p>fpMA?@dU zd(z{rd{6pMk8|)*kxS*SG0<|?@KU=}?iya|mdahji^BM#Je^yw9M($qMY=Xb_W)J@ z$J($N;9e=*<u>9&YN>oiywon0&xn`0rSchpds`NTaiJ^MR>WNk5W>Bkr*PMzS<?Sh z3GQ<7kdRs`7Y{GBOXcF>rEaNQJiN%48RhxOum<-p;C_H`|2u6VbB*XCFB9*nrE)Rx zQoB?xCSK~6%Ejd0i|;b?W+!v4aD%Mv_b;r++FlW+cUpGE7Iq7>bW@8+siU@jS|@Sg z8C^oZ3i`A)@}f_%ZH41qgH!yn@0)Z@G3h#CZ<DU6AxLQVIwy!wPB*)0caDK|JP8AP zqkKkRTCL5OsjZoNJ}fBL{&b4;cqYIKqztR8i&*)8#j62^4J7%ooeJ-44)}=bNU0%( z-4NIEOIIt6jb=gYZd{dWADxa!)iA>P=A&rc*jWGANRMh9ZhwPZDm7Q>+*4fg=_^(w z**7*$aAv%Mq}VMETZ64qdsHiuN@^?i>$0TxKZO|$eX{4)WiPJlA6pMP9IJ1Sz*Vnv zZx^cxwjaS1pG3#MHUeo;Y4|y`_XFs0)V4KhIkounmm)%iy&x|_RC4(@PE`omeA^Sk zJ)lmZxbq+;1w75XIaxb4P#?7=`;5-5H0CxfQI8M0!V-0Qkcll(r{^WUM4g_Oq<<nS zPR`@%y8Qpk>AJh}syBvk)gcY8I;6o>hcvkV_!N1~gBrm7e>hQBD6hIp2v<GE;Ht+M zT=f`(n<FpT{0<z7nYEM8VaLqSfB(~d3GMfSl__tEZr6b*Z1^?>#j~2I-o&yV3B$T3 z1WxHS8Qn&=>?Evj<AUp-I&ZMeV`A-be1W!%dvju3<2mV$So(NYpmS%{m`z4_!ng)^ z3IP+gU<7Qw%!Tdx-#i+}XW{Gtgrp5YXhoiyGr>g!iHF%xH#~P%RM0qisT|be5Y(Xp zMIND&-80`IU(0=mN=n21?b?=B1J)@f;YX;2*W-4jeYM)(Svc%LSGS!|Z;qe9|J2vg zSTXQ86P=QH9mQ~O1Fxk3Pd0fCpo5L?Z-85|d|ylT5P0yT7H|#X2ik|DEI_cvYp&w) zdEvRsXgZahn|dH`nYFcq@b=P;l9BUF8^!l_PnpElttRLhP1W()KM!5!|LRERg6rB& zfr%vrj#PoU6bPjXq++A!$PY+&G8c{Q+cRonDw-I-#>G#TkMGJ)+oSnOQIrt(`MUe8 zXpIF5kzAuzbsuhffqJz+NZ&}`OW*%PtXzhD@CE-ULF#Xp_J0@On!Bta`?Su8u#^6# zR8i=IXrk*aaAYDnfA7rJVOM@Dvo(5^PBXN?k0m5^o;csO&>ZhwRi{ogYj3+uF7BU? z%?(B6i-od<QRPx+>r5lruiOg*Q)9RGhiki?ozId?O|znLe>%?NKy0-pC=cFZacM1u zdB)q^v%saVm%v_*((;GbIWFC{odVNK3S6TCPafe4)NH4~`6UI;Qh_BDSX|gon4<gE zfN8CFc~$3?QzIScWad>y2~~v)bH>n}CREyjD@%8an0?Xic&1mAD*~Ad3w|fj(=x&F z8m_;UB#unur5INS;k8Z19J7yIZjewacC5<LY|k!Rugy<50acSO#K(al=f)^@FP3lL z$A%%Dj~v%GEqzJUmcz$zeFyo_dhcIycXlGNNSE64{#hRl4$n;EgLWs&>h{wz9mUJK z)PmmWN`Xl*Dw_P!Y3$ek45?+OD}DbNsa!i1p(OsVgq|E0W;DJ227#;OehQ8*(=1rO z^)G!;UuM4EsaR*Jgk)IGMyC*e{LN%Qdj1NHm`;Cyfs{Y2sL!1KorpG@j_#d7kDTe9 zH@Sb@WL41pT*ra=U-MGbH{Q6(+}b)kd*0;i)<l=KSaI~SH~K(-)FU0QVDHqc&7YGL zvmh=8Lz}9-?VhMvBvlJtWsz$Wt)jjFr8I=pizhtA8=03HMKt%6nOo_<+Ggri8K%+P zXm)EB$h#dugqCe@PIMz3I?o$nqGlR=G+AdU(}#E-X;+=#nRTH(HDm(|gGQDcp;(yx zBeG|LV~>jG6QsGigR==rX_KykETb+?dZW3&cHCqm3bfhUF#vQBI1GqWg}_`O24+o3 z#qCPk)m3cS7FfkiS}iE*D@a<?KNg}nvWc<*RoAevLh95~svf=#RW)#kXepkeYOSci zQ_ZjRuNz;WYP(StlpZ+zqrtqwNrL!)jd)E6;$&o`-MdEO)Hi-=1r3yKM}^2A#a_8) z>tN?q=i}^Q)g{t-)imBt=FJ;l=bb;<yL3wbc$2CA@!EeXiHw7Stus&IRC#Z_M$&{J zeGU_@e|$>0to7uYqGtCuDD_W!7UnbCI5H}RG=KZezKJzha8G_M(6+q0uwiF7`mb{b z8?hFr!(ReRz0pv-U+Ac#A$iJfzpyN?t(63JY-FogN@~VC7gJi+eVD@<`GP-P`QGZ- zlnIW&3;Sp8np%j2jjDY9i(Ew}()EppkX_nTlDnq4Bz+a>edDJ^^1mR-_#^J5utVJO zYLh0j<kGzm<h&Lg@!Wlvy(UGtJ^rJwg)8BDZ^stOOa(Y}k14}}?2FFXc@~Dt)k(Bt z3-|xI)Pu1Wyq5M-zAZ-k>UJB-uDghNNMxyLW5R27wd&74Hjz!vg~-rjn-Qzmxm#>B z++jDylQRx+1JEtoDX_Mrz*D<YpoRkZdHgBS@90l$?yDybb0YCrvvhgb`>O|&@Mv;k z**O)RTa$^dUqY46tqkzD^1`~<NvQsUpYH=#ePLu>4v7Lyg}?1+|4US@0G^`<c0@in z%eFe>4&F6>@NRpe!t?PBauEL4QwI5-GRTnv<lhwR71bUY_(|b6<I&UFuc1B}>t-b` zSG`_)@>ahRt<W&ixx9-46`3a@BQ$*))!XqF#E&kTiJpz8M!x0matTaA4=kVd;5pMr zK9_k!R(YMb1B|^O`$6{Y?7D#+b&>r3v%ipwKDT;Pbokf+Xr$wHM#?(CRRWnUo0|3| z^-3eFyhWXQbK0g>Q?N{b1*+Ia#~Z11)c$ks_NX}Q0ipfB;y}vLq^Gm&BVvGk_s-6F z6C-J^NpNFh;t$-9{5OPbaIc!#7fw$sV+rofXy=E~^s${ECObAhz*VBe_o#L$gp0C! zdlwJ$=I!83*x8%3+eO)N!?KsevRB5lrzNvzRSw*-0y`$iFXS)E?&eJzX4%e)4tz)U zbN6~WRDJru_j~c?4q`TI#}%e3&9qr`?P0Rb*iNeUw_Whb;=M?<xB<>TY!{^UvV)v> z&)80ZY)OGFJ5%5k3fO*1$89-YIBXu&rWnV@&^6s*quv!0y;$zjiqRZN*t8=1^@;BO z$HcPnbb&;d00*XOqFZrw+K14P%JlDxJZrN-)c@Pp>B-!nNf5q%{(p>}dtg-6wf{3P zz#yYD>L^iTjki+`HLXb-+eD)V@*u@jqadQ7Ql*wwT2Ur|Ks7iM<#-&Wx70^#ty*7K zZM82HpW$Jm*0zXMQL9C5>luR;p&}18zt4B?b7m&N-23AX&g7iE*Is+Q_F8Md&Ny0y zlJYsC)l^=RtTZBD!BR2RZ!`zi_V5!-ijAH3!_O-QGlu&19jpxP4!E7Sci0Op8Agcg zHCY;rlt~H(C)S}0I|26o4qEEuO~pMRYYGPWGKUCtYlPy5VzG$f-BV=GoGtEH?@QQ8 zdZLNwR_d9asNMF`-iER*9VgF<WgY>z?NOK3^NXjq4#A>76uH2YNxFEql<!?a4})Eh z*#F)MZNMwZT`t?L@nEt%qUcf!F&_%}GdnVVJ`>_z2#7K)6}joE{Cg8`x|3^60a$VB zM@pIN``ty~EwPW`n=ut;>k#BoquqlVy{CXa<mLPm(8>J<SpQp}Z!A>u&ZUBP?_pMs z|2hPbep6K8%c^iG74r6L;CQ77b#g-7*-yg6K+^U#-y<npiazdeWNLC1``*rH8;Go4 zEOVz}TE+iJL0N_4SB@#KbW)`|xzzCA?hkFmv9QN;x|7SD38lRg4C8%`==gGxEdAv> zlBF6<;pq^_AIDz(aDe}7Nn3lK(fT|;H-b;WosE0Pj3N@b)A$cbb?d1wVa2Zzom*|q zJ%+=-6(D#Yjf89yK4<AXlrTPCRG~)|_Vp_a#hB-dD*QwhHXUk?1=hZFxpL9}`0@e+ zjgPLKB!LN=r3w#FVNiT!*V8c6m$-{sAzBj#q)i*;?*fW@2KTYYGNF-Jg6*7bEqxf} zylPhHbL6gf3VHteQ2LF24LIk97rX@)cBsMtq>>HZIbz5~Vc^zlN%3j$*^XQ91tV8$ zZY^y?Xg{Bl?m0+6zQRkai1(*8(GrgTnE?bFW}`>{Gsbw3dZ*0GOrDBAX7N<+U^dV4 z+o~>{p%>xXYV425ZMF7C^tO8YLx!u#fwz|uE*cpAnQ|;L1O+=rn(L_S7zu%KXXj8- zj%mGWUQYLH*XJ*CM`=BTTXQ3;$G*-q3TNm4gX6dxVpo2O-$Ng`!q59N1na!46xTX| z;2Us&+40}TosHguXfgMUkkNi#H1{jg$6H9Eh%6&HHWMUTb4`FTt#loQ?<~BeEdREi zR#cQtCFgi|Z{^z(lJ;wff$H6f31_%FG0Ig&L^Z~PKM*5Kn{oJ~*gRU?{z7sj?nG&% zci0W2W698oaH`3xw(r8>iG)kB%nB+8T6wH!Z^|jArd-pvrJCXVYhHzZW>3MX1G}Z` zB!V_{vi*-vIp3-%?~OE{SmZulKip(r+E_N(_Y<1o2cB&#vkqFRwIgVars{L=VjTlC z=v24^pepcBe`NCLu_yywn)p6PjX4u5p@A|1!q!_f3s^k>nZw!tAJFe6063oWiP!m_ z`W~Sa#~N0Wsw?i@SJ}6Q^2w#~j{E?qoF8L+slC2{g<JxB25V$WShX{dd6#fKq_ZI5 zTvSTS-W})BDyJ=_dlN1ThE&0A&aV-D>3mu){CT(j?3kjH1H=S%MxE;W;swjIEs5;O zTt;A!Y|$lGhQ~C@Z1cIA?pr{;)J(Q(Pn<$8M4VFE*3XtE_bLS#dbfhn%xA9CQk%Mm z?_eICGHak6^(WN*v_RZ@FT@bF5Fv$rZSLG@Lh)BZ(dLTV`aYNLF+w3~Ky+`j+U_vr zx>RnY(>zT*1%;*G(sa8?+38J7O-e`Y7|Yi=2#uqQWaWFHK>5Dw$sx44<4xe~j&Eh* zgF2A$r7W<S?-#U9z`aUp`;Epj$1%NXI?`Y|e~;fPcp3@Ss_^1LWJ?L1A4MG+iZ35x z+|V+Gz(_wy1#hoXJ8r}+W_t`YTFDbsxK<Tj8EY$?I7Ef#iz=M03itRGb_{{iVMP@x zRbhc&VfGLebdF<y((Zl)zJ&@wd|=MwIuH^q-CQYcyE)m!!>o~i-~FA(hi&&sEPl(c zEZ0gJn`MI1P0JPHszl&Wo_wsynJ7bVtj`nd5|llh%F{22pzNq6mGS5_AeE#phhK7M zd6;Ppo&)Axy$dT9LF>+S-Lv7kPg6@CiuQH|jPIH%#3zO^F<nQ~SA^Ajfm5scI&@xF z10RFr%O~gbv&LEdG`5U<*8kD`k}sO(dt#Z%Xi4Y7@r(_J(nP-L8ETI%{;o<3;?yY} zXQL!r*zc1aj*w;kZjjIhI6;c<hakn`82}Y{dv1ip9x&#ZO@23x;5W}!9wk(7&!(@j zZ`%AfahrrRP5Rvh^wx!BGqJgQ16Trn+6A8-NL_;W5D3Q`<S@K(2Nd~}P*wOW`}ROP zQeCK|9(i{v`5|v4wWNBxJ1V=v?8J4$4|<E)=#tHtKLHf+Q4TY<CLOTc?BIOrH!(bS zi>R$%4Qi`)KwAl~PHp+sf8J*pU$<q!)vVI}TELaeF00kij|ah;QGn%rz>t=Eo`MRd zb!j)~9QtLgc#U=8lM=L;2=I3jA3j|%4z9y0XK`z9qal5)Yd;NNKFMG8+O<TZAAs4* zS|x%r0e1X5$mt^<|HZCb4p1LM=f^Vv+i|K*Fo!g|aoUVxSpQ%<MeYv27s)}r_(D-H zj#4kQuEgpy?xC@`&keG;2NhM>v70JaNZwcv51tR>JUeT0m~ZyKSp&{`WL$r7W8I*( z#}@&5K!C2Z1><vU!9DEZ(M1(5qk{L$e#P>IuFy;z0*T7-^|Q^utV(+*a}p_*#8D@o zLHbrv3uQuyi^_3kw2nfj7#sbEf#YYQz>8-x5#BB-jAgX@KASe52bO$j9cjSEnI*ZX zO4vZLXg;x!4>a*rtBNA|%5cf@`EkvEpQU^`8n~jnwsFS1w|vTW9BQ+C4U(mf=a@3s z;*I?eYtvVo{1z|_|K?h4&3l>4iuzc~IT?McM75#Dplgas??q|v^nJ;7C_b?9#Af>M zo|V+`lDlO`7a`U!r1oFBP9KbA4DtzhRukefBVqhk-Ex$vlp}k!Z-&hhYUcIZL~F^? z=6(f}We+1umn&C#4dD4!aoeqU^`Kly1NLfFT=?7Wu&#dTZTHw8Ww+gLf0Q%pLFs5e zqm@`~YSCfc`Ryk!HeAWrVrE|unl}F}KgD*L+#u<pY);$@e+*s&(y{-27<Bp4p<rWP zXVcHo2*aM{3aC=$eXx?jEUn1XzNzv4&KuoGjxhb_a9&#v)ams`e%_#o_ix^M+pC1z zKllqoW)yIn>Ekwwr-lQ?LUC{QZahn9w+SfzbXOP7X7;3oDuzUur6KLVU>-i2B$%xA z{uQG)c4BP0O8)p7HC$BqL5IQ#Wt-}~RTO@G#EoPq?eGmf%lx~AOZ~fr4dS|Um#)1& z;#P|4@?GyQS82_R@#yT(#t8RA^^w^i9`28g6cB+fVi07V2Q(>h-se_#$k%J{RYq7! z9D5i8C;9P*WN8V-!NSCC;xaN~50zE|kVPjMb1}6cW+vIqNAC-ln8B=T9yNhpgTbVt zthoTq<e}#*Jt4#FY+8cMuQ}QD7W-?i_rX--9p=yT^{0%2(bE^JM=!Q59ZO68IZn1M ze;A$#xB+c>H(9tkBsV{9)AS&?=Ucd$8+~&*)NuR>?F7T|DckA#Pxr=G%g5jOp}thA z;2VpI?+hHB9|r~)=mb)e{vQRLobJkIKQ^w)jde_~HkRdP`Ka78glF(j5i08#5xp3w z(98JKLsYo1sKSp`;f<)R;0;k>PEm#PRN+^Cg)z2AdkiMuFRD<j3QPP7LybObiYk<- z!byIG*+aDO*P;r4`41Hi_A3m<u)h^mxJ4CmV{E5~s_=eMh3~7v!&C_Dt?aWsQLM~8 zt-Nc)WuxpI(UDendm5|EVNBm<<2MO>jUF=BIbv2jU!?)A;{~{!z3=x3s(1g_#p`nP z1vB+NPNr`*k_TdQ&~e1Xgt(io#b6NEUNZ)BV#dUt#+e~hBx+(|UpY>Agt<$mRQvP! zMrJHzY{Q+4s!CGBwyn(_C%=M$#vd>3{I}*eb)d24cxMoj%LrT{3!;hKSmre_4IGcI zpYjK0$omS&BEYrk#g%XJZf&r>G~BrqWQ9Dv0)Ox2y)cI@taU5X1q4btHI}<q+PSw_ zriX?E@M0!1oJP4Av)M(s)oDzay9z2vnN6>88kM8cB&|uh&@k<mc(1>sg}58j>+1cr zZBi@ws#5lU3{txvg$t^?LMfe=N^|RTzH2cs0dkul|8A4I#JskDQ_67Np%BL1Cha4< zE{r=DRymD!l;DO1)2kX4;-ZC!GriSmY{-(tWo-qxSduXCsiRMihPUTTseY~VvMNmV ziEza9ZL4<+eq!$EV*cTW7ten$r%U#}ueI#<r&c+@l_Qbfm-^4}vO-6phxl*!z_WtC z<2+3i?_I~FtY1JQodTkE2LvC2U%7j%J@RQ;Ioq1Bpox16O?a)OXL9Q(4i52%Ex3ne zxTUDVSSonuMfUdZKd>j}RvHogO6Q`pIh40^k!I2#pfwYHWq!i1p2o9noQR2hv0V#g z%>6}cjidH2tA8k#I^rF}6*4|sb$-p2R7V)IkKW1;ZyA++HG6!&fogW^El4gy{TCuq zvkK&)r}5m75=mw>@}a-H68c;Wo3PjN58q)6LhfwyclHWZ3eea``gm+HKZ7A5HHe=7 zDI(8~_YDMZ`By<MH*R&;GnaiS$Wh-hsNRmEdfn8^9YAaFA-Zl*!QDj#Z&1O_hQC(- z=cFGqr+bIl2HFXUNHS!2#B_@>J3oyZL5krb{biQp$aTC|e;MCQGV=n`hcntKt2XA! z2Tkq2^S|$r;DaiLG(PCUgD6@r2f_F?-fZ?AIc8N40+{r@HhxN2CA<<=>6uo@#JyKP zfGXHe&eifxJ{U+J;n|F#CHxu#B>QM5m;t?phsN0kpV{l<gP1+vGP`yp@0VDcVXBZw z^T+W@D^4xnwN8fzz;tkcf?2=Gxl_Cwb7eRG$GWr;$G!5e=FNKZ<`byQaiZqUCi6z; z#kp6?|6!hG3~4khY}ZS??0nStZXN6~(~pojRJO3fNlWCs*SV@VpJVBg2qJ)<w-Qew zM-sE&_z$(BuU?<{s<gzO_W(WcWIsE_&`>nuEq)IT>EYmW5t~ZUvEQ|tkH00NhG!NP zKAFM-Jk(J7t)jC3CBWYYunmO$@yD$9(n3<RfWxSAqubb&?hd7QjEG(JOB(G@cFh6@ zTP;}673+GPPo0Yy)%NdPEMuYkm(j*EnI!0GJV&;|5BJI$gLAjHne|b4Wk~CXY>U(L z=hyA*Us~IFJV9%3tm{!g5ZLHL(<yTBS!>ip|BPXk=0X#ljbyC4vJ%LlckI_hWHq7n z2YLK5M6;lAc1Sb>t{LK<IG?jM^dUb!TO$+Li#PtD!1mk{bK8{&JCvUl9|hrk@9`OO zEM8)`b!sXsxAri<W@D;f;YL+>dzf)st^V8lknCx7+z6!ATL;otj^8$G5OUW;J4=5W zt*0~IidX2-Q_kE{e|T)B+BBzGi+?_A$a`@Z3wvOebK$g9)Q4*BQ?O2wR^^?YyOsQm zogd}G&_E=*Hi#fLNWWyi0#CKX<}Z`-8SRb(1Il-N%}BxTwh*(g&+jK+;!CmgTO4@< zo&*G3_Ac>y_y0!jH;YQ2MQQKOP*J?DJKJV3Wst(sEMXnDzvM8MQ4p4QE{uF4SqINl z*!rCCFa`NxWaEl^io#hh#a}iclQdrNdHv-_N@0#nR~;G0^bY$g%1%rDG6NLnnQVsK zk1kPXJK~I!qKF}J7Tw6EXYnBrxeI@nFPeHW7*dPl8Ph76pP*5i_Zy{o(<ny5ThV81 zXc;FXnO-qmCcv=NHIW{)jovYc13xR|KqwgZhUGvC6ZgHBHLRE+2gCR*hEbduDt`E7 zk%j5TJbPnGtRf6m;f6x9-gT<*YClt?`S{K1!xCgT>Fx(!+?>P`2}QM`Y+{4+7gid* z6%MV*>u<2$=#_rE-e^t7dtJ|9B5FBfQ?<BXOyUM3I3^65d+s;Te#WwFcxCl=|03jx zFBx{$xJ|Tb=J)>vhfF>wJL5g(jJ3LHqiu>oxrC4I@@oJ|R;xm^t@++S8|@!0WrE9l z-=XxV&_)_nR=17vCTk_R+K0QJ7=Et3M-aIc52UiuD{x|Unp3898BI{F0=!HDiRxyh z=H2fZ-?Ks>#{8SADsE?)=Q#WFYo;?k?wqP?5NA23YJKr+=Twd0ZK~nCD1<=6nAOn6 z>^UKKnVRBNoQH1lNeoy{Rb@PfH+UZvfL2Hduq1cy)>Xu=dPM{3l4Nb&N3pJ7QyrSu z;9e-}1;pt3#pVvG$b<73?eRdon?_;#QIxe_KO?p4CqJ0j#khp&Zj@Kcg@zgYBi^{Z z_^k=dDxivr-jSF?-~7{pp{BQXF|)A(K&@V{V>E5Z-9ezw{2|jYs_i=yXP%@1V~JUc zY_B|vTK4T>wC^YJ5*Vqs|B0-A`ID%jQfi0_w-;6Tttx!-v8}Luh+)A$3epJ5QdM}4 z3jP57q<G=`hd6{jhr;V<+kGtA$wy5{!;giTon|IuJp!Mu<&aLzXSs7D?ty{wWTP86 zdbE1O>Nmro)q%>q>Z{Dts0>Q>-&CTrHzJDO*IqEv5Ppfauqd{fef?&>LMPq0JkT@M zU7rD(KK9uY>4ZINcoAC};RMKx@ao)oG&)@wTfxEo&xD>9+NUxM1~Ec&93ic=Q%6oB z>HXwNWQx;Po#q7BcM3E3zTiT7ZgJ^Kn;UCtA%Z?>NYt}|q5X0d_5Y6ePx7Swm#fXk z>4Vd(yV1fc3edi8p*5LX4*i)ViXdecn*V+eXcrl1<)~#l#UsB5q98xYlg1F$N-uh) z5xz>^o7D*_2Zc?4Qmjlc@^1UIbUv39G1uK(>TGeIl?m{!eF;i7w|mzg2g$j#SgXjJ zrS`0pR4#C<_Z*20l%rX$V)!p=m<B+|EP?w4;}lxJNeq@X5mz55==}k+?KGPyYZrh% z<DR4$qcucepI>AUH*n5i>5kiM)-nAG+`X~Pi2Hup$6>}DbT->OOA(r|Sbj5#4z0hn z3kY`G-b^k3^ws&;2@HYFn$*Y>Ok7fpbN``RBlC9&DNVwk)$jTD{^)PoGG1}g(mGGe zQ;Qt3+P6R#amxLca30bK^osTBLTS*`=1Y--O07p-%!j_K!6rV<g51LjoKXb&^*8B$ z#ZIf#u^}pav#7%Ts_@YcTj5_rn2kwA6&9;Pk6&Ty5EV`;sxV0venJH^UKxMB3KQHa zRv23$*Qmu9ic>meC{iOZ5~*X|c}Y!Mv$Is5x*=*9Hi<9jn-S2bi^l4=H!1Y0lAG<G z)T-M^(Ci;jnLMj<RN7EQGucz@Vhtt?C8sVr=~dwLm~}y{tyD}I)>|><lsf9@w=6Y( zKd^wT!QyjDI<6P;02FY2c<BQ!xNmIo|9Y4U==F9cYU>9NoI3G6$`f{&xxynb1ipao zX73MeO7t5B1r(%)G}Nj00S51lBal-FALJWRrE($jD!fjwHQMmZ+e2r5))gq`H!3rr zp?6^B=O;=p+7AsHwP+&#fiKb+Rih1W8f`EXFZf4hax9k7I7|IJCA(Nil|3WO=BDWz z=sF7xSt`FFcI~-}YZuQXJUiX|(oFhE8m~q5SG^}T(p{ajtM-RVbH7yRllM9&+Itn- ztvC-A>-@8*!u_i7(TBFeP}6Y_6jfNP3O!V?qo9#zbH6qDBkx+rnEk-QdY3V@BhY6# zYaTYzvRBtL9s6>p`jaxnt5A}XZFec&iA!vaei%-e35zISCFRDdi<aINp!;R>{w04K z&;lU)GkAaC!*em>Mf;~%K+Yhlm)^zjgx{JT@_xd0I@*eE@;5hD-DjMl;9gxJ?_E64 z-kIwU|Mool&%Qrb`QjPGJnh&s@20<eVut@80mMNqZu+zS<{*~L1H56zu3Wv7C-fv= zOv>6MfA$!URtVGG7hxHtkK~Sfy>I@JyBRfCNP31h>Vj|upcG0|hhcAY1?sI}oEkk| z-#ihq-o`s?m;YatpF2{{SiRFT-PxjzN3;;{wq_{$#vpUVashcL|KYVa<!?~z7u%wP z*MqWtzEy3qkJ=>lg`kJTGagJsm#ZAcPDV~IbBr-PGf+O|hvUA<Guv?ZJDh<Ql=U|M zK;3CIcSC9q>11~==Z{Wg_3pzydc~O*-V)j?xH&m%{59IwNsV%?y)DmJGioSCyKB8) zllV)oGj~n;)8;A<BZaH?VBu?C{^(11OS&P#<_eqdYD4MmoI;fM(GVLz4#{lj80Fvp z!MlXnh~ejV_&Xlzdm|6e`jeFm5Dhfjv?bjb3GrVvgky!!5ER5Re*k&fEp->_9;VC_ z{-4#aaS{yKZs)1K1M={)jiK~Y@wy$UBe*yYvGMPp`u5f+>9vkG)6J1k`t&HBwz=Zv z>9xby%$i#Cun3M>3w76Rykr;KJS0jqS|*}@^fU;xfxwwzCzPEWGMh_?XNVfSL*9g_ zAWd~=cyFW8;s82?mo|F~sINl@=!41RSiB!D=Ud+m_7T|k$xuO}9L-LSc!ycb7|%|Q zdi&eoiR|RKr*n-(knH4yw_831u9#4b_cj_&v*^As<xjNYv7AMT8g{E+!#;h!V85M> zEV$LKmXRPuS3mA$lgv5c1@Ev@kU!t!PsmuF)(zjezw?**wKh-hVtKihj2=YBzLg?` zzdwTR1tEcUj3e5>VYmB@fC=_LTmILB{xobzyITdGi@_5tQ>>8Y+Qz<CXCoR=TK=1p zXIVt!Jq&^&)TYek&Mo|W-_e^n7q1T25myURS9qI_(&C_0nU)lv6P}->k-~krU(mOX zJJ9uDw}O#p{toOb2P4cc+TRZLZWSPssD^~YdoyW3><vW(!rF6*#HRP7BAU5jU5HrX zZDl>u1$KY1z_ilc2A5gkusf!%H5|L*I;e%fwDa&<daS0FTx1<+ycG=Vauz?RKVtV@ z?*7?DA?G-!=10C4Wc88umuXj44G`QjqN^VMzHy<VXZ>KHEA@5TTAbI6%T3Qiw77R2 zsTQ-9%Lge#)a?V<WuJLp>?;KT-Wk;MZvS_b{^_>z44>RgaK(c{XSYhWPIk=n$Ph5% zb(a|ewz-ps#*;-KqKfcTzY4g%O^(Fix^$h|3+SJ235W7;;Gb{*wot@dz7CJ9^9p{J z^l(Sc+Mb4x*8a(#igfZ)T+KEPbCCPJ=?t=}OLzyaCjwqA_!xM%0uLw#VyLHc86ZM| zf9Bg*?_=CXwSkS~avsrwOQmkLk9+LnVLhDmjXWq>;r#e!e)X7)7iBl<E0-(r=zNes zCVdCL^6MoM+;_v@U>?t=*V|uQ*w$@-MY8D!?JwDf26gOarl!*CYSpp4f4;8M{e5x; z1wnqAm~<<OM1(JF`Ewc%*#>^jFh7|N;rC4a<~hrM&eqd=4820Kb!?8>(>UyHd<_Sc zQ#YM4P@#!*m@!vOh|18lF=v`>96`YdhkmoJzg%o^h`BFD+$m6wDw#M=Sn+KR@1%fp zdCG}R@sz$V<f$2<B{V(9p{vzK#Z#lxn>)>9@LG_K&#`(C9W2hKuU5{yWu$?;7y3*Z zFtBf(j~cm2?PC*|f`6Mr-N2@;TLby<$Ih6#bTic@|C@Ly61ho#uHg7N^Y$M+n5)u0 zvk2IlG31QBc}I?$i7OdR=jCnp=`;9-yJZ2eDJu>#x<88}2uW>~q-qetnHE%o_t0uU zPa&S*c-GbFcRqIFv?nPVw{zT|)2nB$&JA<gXKcH3={liiCno&yIJR;{(x8+{{*!NJ zQ6Yq^d1NTVaW|!Wg`{&$Yv@DVn@WDh0<Z4&9aA5E@%Ymij6a7J#vkr_3Ezl;7C}4d zhQ^*gJN8`6pM|mKeEy=E9exV+HGVAJycwjRxDuhF_+p+=K!Y-G6}T~w<S7pITjhPe zIfl>35WOj<zVi`XspW-)NduCEsez|56iwdmx;d5EaEEP~@W&TQ!ynG7$Rwr4?Y~7s zZ%#hOPw%a<;#e%h)<uni42+XIA4>v-Rn+yM^)x@E0-5A<=9kipMuXX5ok@yOTJexc z$^dA!Lniq*^Q+9R`t#Q}_!;8^x+yd~Tcj;Q3;`;qjuvzYB|g_8umQ4j8BiU_US|<C z7vsw9`-b%{h86)V?*I{C0fL0!RI)O;a~bF*Q-<i7<On)%_WlL_jT*QS&s20BQpOm& zKC6K(kSAyE`9jfr`3n3;b_V%;^hN`obYHV3p30mFVfXBab5_JXJL;Sjb<d7FXT{yK z6V6!)_v}*VtWx)zWzM8BO8b<&5ckskrhM8mEY+~owCdOTq6K+#htW*Ch{?_*%6P}A zyc!zm4s)Y7;%~BNDSK%cnMM<l<dECa=8SK%s@RSyZo9MY?C^q>IEl`BO~MQ~f61QL zB3m0#D-c$uyWD|KJKvEH%gh&ZWEgMjU-|Q;Q@B{FEm_0xn7NH=%7w`6bRJvM@y*UU zg6s@`xlmz3)V(y~UL397UA<-W##q-KDzzwHlA79iY20p^OeNg$iMk1iM_^@t>=)e} zSrltqleSZu0OPD*pj;dkxJx5-Tb3Mkd9-f#C12pz|J3cCe<vja7i#VD*vj!tIB7QY zqmA;X9v0BP-^vuP8p0HhMP_^p<9+gHG^zDpHe6pfM1{kPDm<qOW2xZN$I6H1Gpq1| zYdFOqiigP=E8)7vaB5#|$hF(5gJHhKSY?j)63K5t6;Rw)+{Hv5oRW5w`!&SD><8a% z&LlHTa>KV+KK;Bzl}@E~+}Bt8ZdZT7t)%a#1%DZCMyj7-Wo~NJcUvP`XkNXcb0G{! zxYH7kq~AEC(b=eI?%mb9_8a$VHasYv%S}g<1LxVqe+(3`UMZb;?}P}gl{gck&R))> zaBSt7!<grp5RW}^=5YN;z`g0QpLB~6dHvCT5(GHmP6~^;=V#AEQNo><a?<d5aE}wK zE)H{qz}r=wyQ`enQ<pfs>36m`yE}K6$1<1GT6$A=eWy;tF5xzCbLmSsJs}ce88Yqf z6WZou@QoN*_6dnVG6Jc04-Sw%3w%!+HhfalnFPYqhlgHqCJ}U?AF-8}?wx+8N^Mqk zbb`|`_mcRy9%oDS_P(F-=ZM$?Tl%_+@-t!Boxlqzb?1ehEwPpHx?LS(H~}G)-W02k zbQ~fhG#oj^EZ6mP{5`!c?4MDf@g*FfXpa7ZHcE?W28xwW?zC{%_H1H|(;iMGIBg(a zjdmo4FH4MMfkNHtj;(&(J>w&?e+bgytUP&S=EeBjX6S5Gs6^96{Gc_X{1O|`lw9@i zPoOeZPVx^_(|GHXZIE@r^7MrSv_<h&U=JC(81oJzGzvS&q~fm(IhfQ%v6VBDhh<({ zsGDk<oKjh#Ek#x+{r2Tgj-qY8HUyPxP32TgY~>Un?&LzAO_#s0Y4qC6hD#qw_l`>U zf4*bA%0s1wM;3r1CvVygjt9-k>g|3m#rj8hR8?H)99wy6h$}zej&<&i#LRjw=cT3p z>Za+A=^StH_w>K2oNeZGidT7;eyhCWJZD$uu2HefIB4Tu98t2Ebz=kpOe{9U)4Rg4 zv{D1ifgT=PxexbKEsLba#vW=r@Y4&Nw)m%gV@$sOgU+3u_=Gld%zmQQIIw#~?vhlF zyD}Ji{Es$2*AT~FD0NG*9M7UQoOVr&Pr4b|!7qb95#!^g%oc_)e^+E#=#3Y_aRbO3 zy3sKzYhwQjR)(47Khq-|B!vApsZ_T;(KD<hR}PJZpSurEoLo4R`oNFD`{Qvtve9AV zdd$FK_NST-gZ8fQylNTzDyq_3mQBVoNq%3@+qCbejFhGPUhcNX-SH8R>=Ik&)W)S@ z+gS>ItWG;yXl>li(DQ2GzTDebJU`*bFj}Jcsg~T8ZW6KXDyp-L7y^+TK^#G*VWU?; z9jVlV_WgT(|0>uQe|%!JM}N#^@yd@LcTQyfL2gU2F0@2ti_Nkbe3Za7?mv)*4soXz z%l=e^%9Inm#+}2#81^p{zb`$Z{PB}#rEW>@jx*sKpKpS@xcaG#Add8f5P=|iMY=Ce znFX6nWB#{O_?BBBD&_5Cus>e`Y#CiJ(^cy1k6}1)suBD$obJ`3OTHIdIW?4itGjbo zXR3nV;kxJN*GS>-DN=ZKlBFv7@mt@oAMl;z7(xZu;FwhJVL4>D7&Kqo6F#t{?=jW7 zYGAE<EY}9$3m|1d&3Z&|JzcmS-w!bs)N+PKPbhZ9L;NAf!D!?2={LKj9gEX%#X5J5 zX1rqwKy2k{;kuXRPxQw}wfyjamIw6*5}CfQPqnIS?|`y>8`OtoBh^C$uUnHNLehJY zELPtiq+ff|Lxbx8dfcPJ%l4#!S%NueKR#VH`AIA`y@~dgNIZHQOq$MVkE}iYjOzF7 zea_ksPzE{VCLb-NsM_veJ6U}%PPfYZ9qr_*`?>AvUzf-3{OE;$ZC_oU3bWvF`{-1% zZ1ipn;?e1+Mx{S#>3Br78G_me8pMf4%Il56wf02^Ny&X2>zo@V`D9IT!M`o$XQ{9f zKPOrl{&K*d&Rvnzk)6B3sf#;z4NG0txhte&BBPJIJ%IR@QDT5Q17RYc>6{aG_8G)K zr8x;jDOR>@uh`1xtDhbHQfi%`eOLsIN;c;uFhO~oj%WM+QvBuuXRp{p&-XoA&?h@S z)q_Dhbgl?`)PaaY<B5QpB8gLvnp_2K?=uROuI@jK?xDhEvCP%5h;GI*nqN>?>p!cj zmXO$YEoA3fEU>D8!cHttW9vWbyOWDO@xii~&P6&51j?#Etll;H-P9v{b~>Lc%-aXx zPIJZuKxvPomM?I=9DDLZ1Fr9ZLGl=k&s-!((@n;zaEBt*+ImKo^lIoW>222k#`hPu z$L$bpIu39rN4hq2jNohw84*8!EqodA-gTZ&zcp%gZn*Q!5@&4i6|!6Tk@>{~=FX~E zCJShWw6aT%OYaz#nxbWuT{rL!@z2jTnC5AkI~T|n727Ma4`n5n_NlOOQS8i&cYx6m z^6RFsdIjcUu6Ln5yI~djV3s-fp!pW@{;oS-enClrlk3V;j%11V6kjYXF=5mt#U7KD zJl`G_>&F25tb?|Vecqn~kS2$nsbT2nOpV}2Ia76PWm(<S$h>laKd1=&VEassaoqT7 zyM<a>{<T5P*@)*%ya2A&3_*RF&IWt_5H>WHNz)CE(mIS&3LfD^W8dRzj#h6-uWJhe zKlXFNx2p7;*jwD?58RqR+)7#eA&48hQl`3dS9vUR{V@Hg>iBJJCF?E{ojXS@Lji7( zBgFPLh$nBvtY--KzvQgxyEz|ksQLW(QoX@xX7J26Pk-Ebaa<0j<C~H=w05f(H@eIM z{GGI}pU8~1WW=tR$^UwRz$mVV%SVWD;uwuTX`ZrBB<sDf5n8*O8P=Cluu7&E9o7Q4 zdg@5PYxt&hfu;l01!k4Q(N+htzxA)!gyp&xXO+gk$#K7f@<jSyQZLp_ch;NunT4wQ zs9fV_#s(bSHIR^6*p8Xb>o6<Px1Sv!VSKHerX(HE(C?Bas851H*ti;-T-8{!YBF4a zbn;?XL$h3~a54VbWZbn-?)z9^`#1E>i>IM)u1x5jgt)=c@nIdDnm(J>@O$>XXBfU- ztg8xk+7j~3ZbDLXHB=IO5%oz*EAv(6eCqt&=>xe^=P6&_MR4<3jy)QBvk`NcMZa19 z*7?K!l9;0$9m9M2(=i=?$+>(f*x!I@(l#;8JOiekB1~F@Nx{AudcdU`r&%Lny{K`l zKwA50Wo5-0&L4ALj$OaT*;)Q<tn0sl?k-NmR>qEP9dXG7D7mWI*8xM$oj6aHADmnH zk;a<b%N9+V@K@%9y$1YA<ls396TFF_@IH|}H57Z`>ET3V%f_-?B9bdn%|&4?GLr=v zX53miwY#!W0yOK_X2q1o1U_LPDv&kdJ#Ji9iOU6Y;8~|hR5u+Y67UCQJ9hktd2N!S zWjfMr4svvGY-Mu^p35>4Jw}#NXHit;PLpG<WXS_-hNG2Cj9SS;S~1^GOR}mrh?2-- ztxwIa*Pv%ClLL*e?ngu;QmR&rUgVuz4mCTouNSX=7+$><o7_73Y~@ekKl~$lcTbBt ztzoA<Y8D3M<9k`iC9XdmV=t733JnNSttFVRj7AHTj$FZOh!gg1eIJr=4m#9ONt7Y; zI8Q|AXher1I>1L+QoF!QRSv~&E9rR!<v=UHLh{?JzSchdPwe}|aeP}~W_+Dj`x4N} zo2SN@9;kaEmN^m$=i+xiTz@mRau|&y1h0-KzvHnh52Xx(V~?&No4dc?vi7Edw7EQ$ z!RqLeSmtS71^F_7G(mryxw#=V`|-bpScgZr*|C?}?>sh?eyv|St<$vNyt?|`5sa^; z$a!slM`ap+Bg*gk{*H330xn6veb}mUp5tD56qC^ZLSNmC6|D80DC|y;t~y^*ZzA^7 zqkYY&mD=Cl5UT1p2w`hY?>uoq+<Dey4QPm<x@m<{&^6ey{DC>F0x`5ZLN-U^(~_ci zT|^Os)OemaS1F3)OS^k|L^N_0z7fH8)Z}#8E-h<;k#;JZQ3ECFU(Z<iOBJ6Uan=*- zE~=wOtSh48V_Z%*?Rduh1`8-dG!iEv#&{zEZ^KAg{!epom4BcUe3;R+uV>pxc#g72 z10vzs$jvmJlMfdDxE1kkXT-?OS2s+{*COG$LulR*CpVH0vX9076X*Dl<A}SL*>jh$ zhX1zCMvdD-wk6dVTiHUxRrTfEnZ=B&1_&#-5$_*Tcb#&{Tok^5qlAiesra*%bxXrJ z2cz$q<?;^}`KD_PQ&pUo{Zes!Onj^11uB=iT9dMoHIPpu?DVV@`X*>oi+ys+4+#H) zzd}06bRV?+^Q{zb8SZ;m0s)L`9h+g`r-?f~T_-&lYk6k{du`xDUK1-&Pot?fcAF%K zW6$NR<NG_$a+!1N{#QcJ_u)~-fLMd?eireEfElfN_M;8XfzGS^Kh=M2d+o>bIFmsm z4jo{1tQz>5AO-IGF?j6Uz=duYZ~d3%M<{iIC^|SWF#&uK4;8`_>#zGC?RY~AB6O`p zEcV1!h5&i()my7~j($G1Qm_YxDdje^SMZ05>JxLl?7T$vz9&EPd+f=r7f?nG^!+>- z?>1M`ae1=V?~&>Csk|>13?l3$)GSF6skMXre+nx*6zN-O>4|Z!5G4gL7>fgd-NrVh zw1B=Q&pOK|4%@W#3-D}Gc+Y(0Gk(5u|LShUgmmS|Wr^WRS3X@xR~F<4cmw0*_0Q+y z<=zG*Qc4sy=jkPROCVF_NKJ)SNE3NZj)t}#H#st&#SQUCHWieIi2%D&f)1IbzK9Nn zDQt|-fuVV*V2~d!<VPmQS8dK4(a8caK;DCRlI2vOJ|(@YWWk8^j?3qtQT<Hc2)gCu zoE{bq9G3kq0>6IL>UT$_|J(`Nw~g*yHY0jO$KOppl&q)zVxZShb_5K{NB@T)+Cg{+ zJYX587yDk)_X6=Ae1kV8xgaN{K9oAFepsruKAdW*kEGh&@$pAK%#&a|{s`&pVT|z9 zqwiYq8P0uO#?8ui>>)n(y_u&kXW4G(+fc-xVeV<+zSV{A|9kt*pVj^o!)_YTyz)!I z_!xU~*iC(J7Pog3NgLDXA7#JJm`ac1^jIMj4xZ`p7wPdy^!R*w{DVDPWJWlTZ%mE% z;40qH8w&MwZCLmPjG(z007^tLlt+P#kWisekBW6|xb!t=$44)HwBG6Md)@`VCyMbC zJqqUo8~NAbeVODa_mI92yJKxAw3?R8xsJvr^M%z+tK~yE8$Ws;z-#;7vihXGTXNCz z;jps?mY1!5H?nL>@=#~ZYOmCYlX(~C-RFE^F^2Zv*k>ty5q^Qb-&N3e(*XG>(}q#{ z7o62VEyW~9oEHFEwyZ6Akh7Y<<NV#0JeZEGr|H#w5x@1)Wiyh8#_oT<VCP?0-500m zA$<6pgV8_F;F32KzCTFY#{T5yN#=|{LP#3BW6ki@n}(0}g)(=SMk|v~HTGWgOv3Z> zz$qKO;0zqy{$y9#yt8LLIs#p=LLE&8kk%sH5jhy%Sq2Xcf+7pkXMcTEj#J;CjJ<!< zC{mF;qc5WX>dzmb@2HHaYxScLf6s!!Gx3dQb16xP46Gl3Ukhv{F^?el{x7$s7+MRU zh#QUf6v(@?rl%=+6lvR-$R1m{!L9$vCfa8?#!-yjiP#g1hlk$pTs)lFtz9Otzn2E& zRK#PMfADku+4bc%R<5t=xGuJGc<rdvS+o+&BAvaKDdFttVJu@VpovqHl+Ekd=uVBV zny20x7jY`Rwb&KpM^5wCV3m&hR7%14Y^1Sgp(b*)zsNV4E&o02P4utN9Vq4+{<+^T zp(+>O9+gwpaCvOyD4ouR(6X@dbl!+olOW-Uy59K{M6c<2>Wf~vKhjX=iFnbhs_oDH zkpEPuX<#88zi!*B?pKB=yx^;S-!c5%12-Y9Y#&YPMC{O0b<ESnGTPS{^lcf6sbV?- zrHHwm9lvG%F7098LksTK!cN4s?{-LzIjspKkNbqV{0#$+J&Aa)`%%GgACx8lhsQE6 zLdkl(6HP5S5~EZy0TAUHXEPF4@><GS<v(lmbYA4mfRM?L*DH||OMem<gnA@q=z!_p zQ=w2V$BCB0X<t~;q*{%68t)BMJUj%?tML&%i>mI(YI%8OINb;IO&mn1+bHlEMD5sU zZUKb<rP)N6Aoty9|9Hy$;Y#*s)TGy-me(kETlUHyczpX{^u3CjtptgsVBJ8JBtrA5 zNo4h|=I%*k_lvo^0K8nE)E|MI2{as_A1JQ6!<33;mQqN42`q=;R1ixj8X4R7qW0se zu5kg5A^0Hl=yvyaC!jAKZ@Z@vaVQLA7A^G!#T>RJHR^38J_e6Jrh^majl5~9t*FqS zDAaccMFMpk?2qZ(csdJZOzxj&x#-0+=|3y{rxA)`O2`j%FtpDgTfW~{L021`z3>-; zWrM!`^c^I?8m{BP+S3p4osTs!O9xYuzNJGTbzZz#KFUi)57(2J@y8FajpA=<6D9d2 z&7*2sTLfbDN2-DJ1xaeH`xw&~$BcB=4`Zc)arZ9S2KGv!m?NsD+w<e76J3Q;E7p-b z6W_dITe9oN!5_n~$@DlamzsGZraxkun;o4x6|45GrEhgZB4*h&$Nr6Q_L5NDpBIeP z<PN?zP3B{uEfC6`7=Pr7yz!VA825a>NjVf#hq~(dW7L6ar9Kl(BBJlt1^XEIf4YlA z%j{G5-pnmf#qbl+;%B*P8>K;j`TH|j>xGQjG2u|9BTv)LA<*>->R4^XVI_$4uKduj z{BLr2W0@O)?w%A4?L6+J$o$Xk>GbAj4WKW5E0Z9j_OjZr8Q4a|_)@Me@OL0;Vek8> zlq=7g!50U)?jwi9BD?NVW4oSt_<HCVYkIo6+c_zo;~)r)=laQpw!A+l+XO_b_DEYB zN7v;JSJ~emA*#@#M2Q)6Ma=txM8ur*5{!>5<5+dC&#%=iB^iAGS#B{5Dq4>sc%%rz zcJa^+-O7heSX1!-2JcrPd{9VQF1<yUj%U(2z0R(?HRD$hUnHRd$@;hmCo7bgpv`=V z;Lj1}&uH-H_VH%(ZMlgSauqCv%J*kdDJpWVJ1Nd%+8I-w9*%EHZ;oq8)1opbYM~!E ziTa%6lyB}%0QNST@F$RkqPs(G;IjJOMkAwEVYT_e(%0Aj6#ml^I?$5Pl5Y;^^KW~> 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Π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�WacJutHkMVuV|ItI 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%0AVRjC8l5KCtL;|-|~ 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	*w%DLlic%gF;Mg}NAs1=xn0kXBGOGNKropg(3} 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%0D% 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 KwBv>K)&B#P`DSYX literal 0 HcmV?d00001 diff --git a/grpc_c.64.ruby b/grpc_c.64.ruby new file mode 100644 index 0000000000000000000000000000000000000000..9a3875dccc53a384a8fd8b854caaaaec6f8dd955 GIT binary patch literal 2190421 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≻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�G2Iz=tdLKxB*ym$-ge)FLVJOX$S<Uf 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	Vc;sdj-f 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Μ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¸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%0AoX$W}Zk&d}NE$s`Q?VNH(NF5@8 z8w86S_jWlS;VePj0Em4JA`{!tZdn6r{iDOsYP}NV&wEg+>YOqz#6l3eFTjT-HVS=< z<{g8Pg%DX|p0tyNFMYqNGMzv@o&GS>gkbinTPNXfKK~Is#g0e}t!YO#ez1MdruZ5O z3|a5TSI({{jm|m=xq+fqR=hl-u@%I=CG1z-2v=AiscWBmSfkVJ6>usJe6?=m*nf$9 z?BD0Y(i1zvlX&+qYZeF>KRvna&sbL4yszBe&IKR#hf|DY(LC;CorXWl-tu{qtQ7%% zqsAj^Z#~Uanr`miW9c$l<P3uXrRdww>683Mqq8xxkxLa<8Lht~k!21=aDjbTFdm%m zaC?p>&*2wZD){`Od0WL&jA2P3!%NVVj8^(&Jwz!{9alzHWLMEOkv&_j_1hJV*QGEu zBV=%Tz|5sciEJJ_!-w@jTV|+VuGlu3tqzN__=RtIHH>I5zM?OeW20a{rWW%qvyxAJ zvOXz%Vqh!rzdGW*hZ!w0PZpho>|nGAw>OrEJO$IU7sR<Drd61pmRy|41f`Y(u6XZk zd)~szvzsM*>;L0#7%vp4iQV`266dP(P|0ZZ9ba<$P+-l9O_Uw&kZ{5rC3~aRyC{S6 zmvhmmuE}LW{LbV`Rf(>EY<@qNa&-cd*l(50Le)#L+=t{B$eo!*2@@OIkZf30vy}e+ zY>_5n-C?%N(xA2WUulr3U?WZYt-AF`Lpl9vCTAWx5G>FK(+qj@eh8W*VqGOXyMmH^ zBl;E$<xq_;OuUNpn~Dy+OUS0@yPW^_jd*L`(7dxxKN0gQ>5M&=5YhGtVAmd#w0>c& z4COaBmy@8kbsM+Gx4{yQH>Prn(FSGgEN8`<U-|wGTwNCtxKs{FIi2noAMe8+y$>_8 zo%Di*)ZZ_-x6>3bf-+^Z`&%*{k{;-PB28eUUFl3-w>a<aTWEpPy3aU1oI6q(W9j;v z#}BdzV2;gL-MjV(jX3{!<_D^#MejJ9s$2q2>SmztQDdW)b|Sy_Z~xp(`^WuX?H4Qm zp#3{O`da(-{#eJ`J)N-YY9yhvBNQRThWP^*5D%&_g}BK4p?T@|6+fY!Iq`Pmd;9Fe z6qC{YRaYVB?63XxjdRuHkbnFPkBv9n$hLjz^oP6Hj?i}aD`zp7;tqZz=R7(jufK+| zNDNp&vCMdKiH6GUO(rYtVSYyVG#db3IiC8e;W_K2>aTK7c@eB|s2$<7o2lcTJ|Cr1 z*JQQasX~6wb@wvsvt<4j^M}HPsCkwi3ja|4s{1<)Rf%Q^Tnl=b+zm#(_z=>{MJMwK z-mp%dFP2+F?VI_F@m-29?gR5s-d&jGM<iX(l_Mk>_sUe{{W|*!{?0L4m-4Q{nB2`Q zi8v*yZRrst7K^*ezLMB2gj&@@Ot+@Vt~fDyRQhwZZ+17|1_u1knf@lu9fiEx`VpXo ztKC}dGZb{W0jTu9&Bgng$zZSGLGgzYw*_G7Un>3L1Mc&@z?L3pXM>q;rApyZs}xA! z?CvNARP28xaB2}Y14hg7w10O8lAx>~@)-jn!Igy(T|FlPTOSk`twQ<2zH7y0;z5Ne z`Yv~hbU`FX*$`UJ<e;?*6P{R7#kV2%07Vx^9h@BD08QZB0-W?R=6M)_V}dJ3u<)b_ zUZG}2nx4sjm7m{~{C8#Y|31hsv1&8;(=|(cJfENWT^QA`3%f7Hd9appaz0r?lBff> z&_8qewfsdLD8`klSx*q`Uz8Lo_*j6D7azz)$m0S{Lh1wTSyGgyLq(?$uv>xT{x49N zN*hQe)ARh$G0BTxfPdHN9pY_=<mIj<FPY|&D&=J$Oclu4Z<bp|2A0J?fdJ(nU9LEx z#KK0<RNNs;ztMzQEv8(X-QU}4tgwaQCC2f$&I;#Cugm7w`dp>qS)Z7~+JrT7Tq#>M zKBI~AsvDcy_4)dV8l>FnSfb37MJY>A_G-6*6sGKU`tj$V9Ey=&2}UkL@j>c6q)IO( zl1Beto<;_}I?0j{tS13KiJ%2_R#C;#QKoi;Fu2_AqXyr-g}y<P=ljaW{_?Ws57kQ2 zf7887&>+i5Cx;-(A?MQ=_dD+d?9pg>msW8Tk_No;I^Kj!*1i{TNwGYVaO|D;AKJ$m z<aKXaq(=R1QpvQIA4XmBvOzm^)Hjm1Z^SKgkuPf5uao~4G74&D0?J%|Gk<*o;J(rk z0@?Rr6J1-z|B7;TemS9JbNP+^%DuA?QmxOyr_AEV=VInLR(<sKeNdt-7!!fSf>HK% zfD!wMh`OOOgNl>i4N##L4CMLbfD%e&)(d}qm_sYPJTl8-A$asY2hFS>rn<XDzFse1 z-_c*Q{V~;bCYkjAd_BE{a+&mBe?5I*Zu*Z&4@61z+wcCt8Tjd<iXvLqI<!11iYOU% zK4$+F6@LTqvY2kP9FE|R>)AQUlk!D#b;ghGlVN4{He&2n?EQp7#<C*ZK94O&BJDBS zw->UfE-Z>~GvfOPimv2Hd<Ms~aaEkrBI=CzenVryXptx|uvTc<Z35{~aa$dqfJaE; zXmVOl^S<w|JVk1l+`*khNHuXn9E9TgOWVT3YjNI*8ZD;^3^6gT`%+&*7=^1=qhDzi z=Wd>-tEs|spL@(!h7ayG&0IbRs5H8&oIjO}zw8Ohob|L?HM!j@jBl04!H3iGF*>~z z-9`ETl?SUofl*AJWB;!_#~+FzGAm<#rJ52vok(pbfD-qjErO5vCkrA}k36{)dugyN z3C?KwapmrJR7S(;B3X%YGqPLGRZCSK{#4wdDa%WeO<6me%ZI7)mN1*v9sG$5a^HPR zRk~d8S+j-77$pnNvR@jlVy+JTwr+_HS8N9^nOhNqDsxx<soI=Pw+&BE!v7H%?Dpcl z2E0BxuR7j4&|ex2rV5|s-p8rQa2{7shzTY=zg#t9!D{amhD;nw_%152;?8hk?H%Fd z<ox91kUS4^Pf=M7=Q?tFeF{I?-)QkC%1S;-@IWDt<W<BoC#H<NMDfh|IlrO-C1|hn zCJb+-?BH1^Br>Yyx?2XoP)!GFOwxUhv_$v4@LE&0txcO`J^AYmJ|o2^K=P>T<Iv+^ zsmlIOfII>a4Do>?j;5`fg>Q)K=LB~%Wo3oMv0ECcM+*kh3>=EQCHXIr{NJ1oaIM7a z8?ow!p(xDS)v6);GUo#DknVyfewobWr6z!b#q`Am{xXyPtuO>NmR+XWJ+aMHP4Ja6 zU1qtw(z2ZWyuY4c>MAyzSTAxZcevstyV5-kdC6)zpWWkHaZx#mM)r-^e3NW|_ByNF z&t<5#EHtuAT<!P3Wfi6eENmZ%jPz@ArQgnx=X2I)7JR_E>k6cv^Q0b-rK;*1u|U<c zi+U2ep6vQe4P7c23f2WM|8u2=Z5jDV?Wd8MSs;y;-_qShTsTYE5|PG4qMaCa%#1`U zd*^+#xDR&U?AQrv17oy2L&k63%{G&QK7@%vxnMmP`F>y`g3ucavx63S*_U|xZ=r+y znXR->AHm#HAj9l`FDm0$e5Ajb=$c$Em8SoY=^yrcm1;vQ$gAiZ(F4h-?XV!OBHg7W zj&kTm%R9OIwaGdAwWIZZt-OClL2J|oty!wJnq=SmBWg*%CX$Hif6o4m^>RfbXT1#e zYp<~UK1>34O#k9FXkUbsRrV17s_T?%D|Zud4O0tmW=+e{x6kLS!g)ciEvWAb(IF<> z%W6#%9hTD-A<BiE=CQnqzgIVng=49}c<|D`5pP^Slv$6faO>mJ54cXP4AvrR@q*H3 z`Qp5I+YwgcN{-jJ*t4z0x2v!7K8+-QTufvc_Jv&yWP=xUHO!aaK&k09Yo#Wk+%WBB zXObYX!6~f3v^H@rx9?0I+&5y4uDu}-e^x0g)jtP!$m<(%21!aQka3FZFaNClf4(p# z4ERin=s<DXVqEdQ3$LBEtpoCWBj*nHs@wP~Du^sF%o57!fSZ~nG5#l)dNaUXK!5O( z*}%_8_m;F>PBz^;fv=jWF4PY4qfe<tcsPkj_A(MDtz0;>u(@x<iaCN@y+fn&+RS|5 z0V>YQKVt7`E+1H`JmJ6tFecEi2{0FE3z+IWmX7v~I9tI~Bxpp?paK_r&Py^D)|HW_ zn~M|I;RC|y+iU29>%RQ)5XXf^oG&2;t7&KQl8}>z?Nog(L1o9V!$-$NGZjm3OjJ}j zHxUG3mz6lRF~M;}>Z1bX8{)Yq3>HB*dPZI}^brN@MRJ_;s5CKAgvkJ*jR~Q10owX@ zF*HI6ZXcJvMD>(ow&F;l9tD3#F*!3iCiTX~v9|X3XN~cx#i6dLV8K^OX)RN*u;+|F zc1~QtZPmSEcSDvhu{t6I$XQ;no+O52r!pMV_V!S;u06IR{Wzuy>7NJVm4mO^#1+L2 zi5cJv{W%d~Ry*&7t3Ec`N@Q(p+USN*cPQ+*w2EtEBY10Bi5vKTxW2QeA$e5=wR1Sz z=)6t9w@`XC_swr;tXpFmKkX2OZ(|krNffHaMCw-Am1rEJiNX#T((1g}YeC-oJNoB~ zZ8|4e_+hc2m(!6@O7xWHV(!z#$|QKi0t<YmisL)Le7&?W>X^N;N?db#oNJ1^rYJlL z^ZzeH9Pq5n3F@lWzJ;5xx3M=yo4Pm(EpVUyUz7{0)p#lXmCY*q=U?2d*Va<-lG#7A zD6#*U>l=1w3k3SR#E(kN@$*YzNy`733x4jV1T8#8E#{luN6?)i?~PNA^N10i`vc?| z_M?re34wl&+eBD%{W3SHG7DZ}d!@d3?#Zf*{gUcrSA#SW6zPLIrW*Qv`9cDJvk7h| z)(Os!Wi##9li6Pd?Pn4t&Y}5o-8)?IJ7!{9sk%{*)n{zb=DqHZwOPasIc+xa>!2H# z(rg-^xU{$qj{>e}YUGDm_k@V#Od;^1+<bn;5P^pYL7(=zm$UCD!(VjM^`ywOwC2<F zVwK?Blx=>tJ>OPkjh5?SY0M|-yvpret$3UtPe#cyFUF2gNr28>uVH4D?sw6CGLP9z zRK{*ZH(e^1tSEgL7H82!LA*B<Nfg`Pg^F$)WmT=0S#EM75OJ(t5|s8p7LyN1<2T|I z$9}?e2-mHNCDOwwHSdR+6r(jp+c0-2_N3J!ZQhLrQ`nMda5XFyg`(0urDvZgYbrgt z07lVk*JPjAH@h`5(ik7|<B85lrCU|&B2H=WS;ANJ*B4~QJGdb(riU48zkoR0N=0@? z>%%}!+*sQBY3y>VX(1MQ=`nI%id>c)-eDCSZQQSBy5$^ApP!L-*#EBUTJ&~ZSL})8 zWg#Y{5Wt^ByTJJVT6pIaxw&vuZ#oh1CruUp6n4*pyea0ab{|z_qVKp)T#6YE$3YLY zb7!4*A$`hOPXZS;McCfiP+LZJkOwV))N56Y>=W36h^vTu`uD|c1aBnp|MZni7HIf1 zSz(EXAli*paZ!oIctNsOv;USG{n=j+pJuW(lZMp5{caQ|QsVq3dAU-*#74=>H3Aso zxlJjl>LqD@C~v`ak~T@wWJ^N)3LX_rql8SkBMDGNYqZlpqvBWBBGpODs%V)sR4k>< z<u~v*XyL0jC`H=kYSeXp$#?=;)a3y1)Bh76$6b@f#~-io@j-3R+^K65YU_`WAE?^0 z4QwWd#)lNwJ!|AK+p~%8H})*|{MV<?>1yw>p0RR|M#Z7R7_>et@KH)s`=cqgSKHk` zpSz!Qxo=>I;kWf%GMdY8<8OeOr>;jV66tcftg-#p*IllKYU1&MvBSlj%X0@Qc=kVJ zJ-Lw-nlB1R&%G}#4Y7YF`<UY!q*6Pfs2*`V!%u02vsh!SUbP};e9&{9+`k?8_aP6h zkeu#W-`D!gOK@M)bG%Etv1Kfk#k3xWUbUAaQ@MUUN&i&ppKARxPXE-(552ZTsW--N z*J8e9TwH{*MNLb*3?g5ulj`&<Ir}qTerJL+BKAzq9m?I_YiKF=P9cy?v6BC8X69%2 zBk}Qha;wT__gLBD##fbDb)UyPD}fX3;x=+x&eURenS${BVnA5V=-5h7N-IV3_kJZw z`k6VF*H3;i$04LM)&mn4)XEtXGLJKP9J#aWapIQB#O&(vx13}jZ6y|zb8{*CF6X4D z`(?s*_RJN{^xR#2wZG5rvZqHAbGU!7oX;XHA0h2<ZZ8izO(!L8tqkrP4JRvZGuM9- zCh|dQYrfl>EnlX}BYQh3v9}`1u6sVI>3@Ox#};Xl_zl3#<u-o<!W?xSR}@Yj7xKQV zCT(6ux~)!JFs^2|^mjvyAbhoS`z-co<IPd_l{|CDP>Im%xy1?zWeAYT!g?z?E`@EO z(ehWS5CVRgL5NSThUv<lAaE>&p1I5uRalG%M~}+6#p$QO_ll*Ak^8r+6j~(6%1kTy zxQsA5WqO7_bU~T><{J!c-3~@Aw!>n;F-k6t$dv=+lYbFZF;d1J6?Gn#k5Q+ol>f!? z$)if+oG7a;NbpgDw0s1T7B2)zlWPTraIL@b+aFguXTjcftMH5&dP|t&z{UcOnk}N3 zvF17^5iAGa$uR+|?`=_zw97DrHO1hds$JG($1J1gT;0p@!Waq_%ff%Z?&1Z-_R+BG zaI*fOJ#^*av>?7+?w&OfJ7X_#4^(xRspb@<srjp_aa{HW%|q-1rzieW(GD23)w9q{ zJ<N;gd`Udj$9ZCXL}nrcn&X)pKa@xrlJ3sir1@maCFo}32MUaP|G{TAwNeJV(3q9b z7Y9X}zEr!GL>V6>k>*5_*RLwh;76kAF8K_cG9}f%j+4Y_q9ooCGHdpUP;DkB^_hD% zgvWHJ+|kyaP0=xHA|>r+-Rm*pvlSra7h9pvqZlnd6;$d6JAxXVn~UAs(YFM0m13?L zqs3(7!Hpj!r}T~K-Po7BOhOw~IK6wiIiij4361GSnkPsQl@jqR{$)N@oAECSxOG~c z8ezU^#y<(gcOD!=EFqqEeHGt%pkd6`)Q-_(R{OohI&*aDQvqP@dC%JOPGry9teZ<N zVk$K@eH!H!V^qksY%V?pHF**CcLE!mB8@#2#RAqIRsorO^sysl$HBLHbw;(ZC)(sH zo&Lt2Nb19aXj5+lLsjP3lAi-}si<yiYqns*3d+NIdFLjF9~nvHpPL+flyw}ETQo7~ z+~mb0u&k7Q%&;ht_)rN)#_YAmY;PRX6Rz1DE#W$5G~XrN*f4sbJsYAW?PJ7Z*xIw% z8nebKSrx8(H}*$i&DA2IT2@G+9yw)f`LGqEp{fT)%T=;B*lpZ9o9=VZ_bYN#p@*;0 zncT||8m<3DT=vG1kK?u|KVP$F1vd{Vdn=_nMWF9$lpW1xSNw_O_bRaylPxcbQ6Wlk z%Q)Vu+oSh8#Py8$@y$~1(6O>cYWrWy!OLW`dx{U`NP(gygu{Zz)ovb-_@{D@10g<z zWPxpnGs+;j=5hc@v9Pej&2ACf5cxew3B}ngS=KX@7wj!k?mH)|HniTMxGUpB$PljO z+Ah3tD7=yOwJlV$W0z~9mogKVRELw}hM9GpVI#V;p)NKq?Ci8}i6k4!RD)%uoP{Zr z)ILpmBR#wh2w^e2OvzBxx|iWSCf_Bhca(9fjU*ch%_P)F{5Q`%QArX;%W0|{D~80J zt97gCjpW8Qa-0enWYFq{L<1r#u=l$4H5#nMe{7^dU|XGAd+uXZI^|tb8pg&bupNuy z24|-`*e~+}DW<P+pd7*B6c#*pj$c%4C6&+5XQH28jXSCIKu!}(xUmvQo-bs;{pj(p zy{VBWDph8(ZL5fj*fDQ)9lz`alvTSKF>Y>AD%w~|*>ec;jsS_QFWyn)k_^Xfgy%V` z^7&dpXtWrlkykNKcNp0A2J%I#H03yiMdOb7dSw+O)QlIl64yKahoixlA^1SwUbBIf zqJYf=mXsBxi7BNDu6cR`AEuUikCOF}`9Mrvz%muE`oiRp*?{SVJ92{(NLR;*y|&9e zOi>Ya7_IGaYd1~fRa`S7%u=`?U5Y*f9>0_CvK6U!kCC`Z{uejYn|+C3QnZUi;?onE z&64#LL}Qmg*A&U^r7l5Z^i|N7oD6X)+N*ZQ^C59wDPwjsCCKv`k0No%qB>uGWo!GP zUwnvQT?YD3@<C2w++VJjf!O7q#&1v*^1M0fw-b3-g?{qf(*G(NXt{y1A~NmNG|{?= z_r(W(%U|Q(XX)$W13ReJxK}P@iXS-Nxc3e9aFlWHmpo8MHJN}wyiS@Ut@#$;lMQ|G zPbCuA1ehLvG{o~!v>ZE@IWj?V$qflImG`=xK9xTpUkEO0D%Ay{g{rYZ{52nmq%?u6 zIP~ZLhUTAXJ}-5qi@Bgo%(hO{Gi;%PV;@d*v~bm~2It_$592R~OfEwRj|W(6J<DnA zR9Qb{4Ang9QP%rgW#X5+e}hJ)Wpcrc#Fc5N`*Pv>^#{l(ip3@j#J6&h><i6Q9RSe< zV}8M7Rl&|sxQYfFZ8ClQ-V@ozeGd)+_}1g#3qkp>H=@di^#-*BsJaC}$OhmFINYZU z2HpD<G<%r}R2j%K?ysO9H8H$eCWOS>u9kD-e$}~(38?U9<?c!*GFzcJR8<{KK3maD z?xdw<f{i_KH=lFluHy6=dVLhtd<J(SD@z!T@<`$+cdmwW9Kp?t8|!u$Eoth{OpXsY zM1oKw>>gszum}W`<}3VSWgcAnlFWm1%iJq@@I+0e>mv%ATiLCM++Jh)dIqi&molaP z_kU=@|J^J5;1#>vy8n-~bAgYtxcYyV1PuyqP*kk9P@@tr73!s=-m<XKXLW;k$66~b zO0`AnWmm9XAZ{Yrce_e2_N}e9wr_3i-PVdxsV3Y4S~WnmpjJU!eb#`27a*YI|NWhL zp50Ao|DX5&`Sa22^UQN*=FFKhXU?2CbB5n?#<vS5L;BEzP8{6`R6&*;QD`V_F04f& z=|xh~qDne4YR`^2?EMUUIRuU_980?dCn;6<IhjJnEc}=+rbU$2lLPkiYq{;)Omr*U zSrh*?c1<`?5^YuZ%|ye-=In-O>k6JVDE^4ZWzIx#kG6haY2wVheZ&&S{4CKy&)ufQ zZTvZn`U0U;ZGT2wrt>=*lm|d2z%Gh$t*Whe=j>O|IWNN$%_Y|Gn%hqcr+)4;IYNw@ zI!wlyf<N{%_Vzb?ElhaWEb+mom6(2-oknmyk?ytixz>QeL~iy>ee~5zrV1IkFx?2J z3!%Q+)Am);dY>%OtGQu=vqb&M#$|yucYOeR&*I+i4LrZovf(Pmg;bs%ev|0xYxp&J z&vF+Nxyk!%Ae2T*_JYm<aF`1^+p2p_#7P%zc3gOx?P4)2YdRnAUQlQJBlM_XyA*B; z=QNHr>B6Y*byhE;5tM9Ueih%9_^t9!ZiK=WcxRB3yRb%kfX)Og*A36V(E3Emr#Jfu zM1a{?nDf~z(C3>lw5Yca0Y3vuvL8ZEOtz_u&Hf;Lnn@4e)P*4H(TB<o<nAYkwd|A> zw-Siw$|EUGmfrwgFocA;dqSF5!1-YAK|@wH7oqPG0rb|MZII~2XnQko{_hCp8P>T- z)BZxNSgI~XrWlI_Zj6-7zkrrqAYyMYB{E%ybh$uqM*(N5R-eBz&@WG;U`3|Az@)nZ z)8i2`vu*<P_7MNG^qHV`7Z3`?&G@V_W`EvYV%fV#jJH_klm67$xSLD9X~k*|*c`84 z-<17u^;?<e0YNCAoT~HE&oc##N4T`AgP@IVSeasnN`>1-pYI*)+VlY5nFQhu|GIt6 z%AE$O(6-Z2K>JV&mrOH-&_BSyIZvEfg51BN?t<B;1+7QqZ#c?{{Nv#Be^=M57=;*V z69W3QebM?$B%sL?9I0KTMn7ht&a7C(U!t$k*!2blf`ylVy~$~zz0I;5OB0a%)Sk=w z)Vcnxbf7KwdNFy$X@7o1-?dH!ONc)@uA<R_al?u|`4aOtoPf8323u)($7Dm*4X=Zf z3lBXjSE_)%4EE}<&cb9-!8p8iG}vk#!bm|wN*!6!`4comtTM((#&8HOFPaNxxabB$ zixp4>0OD6Szm@ut;JLWpt@7s{=n7hcjE26P>YZ6P%{WbW-mnB?KzrHu226HdKE9OY z<42OZqK_y#me?eQ>zOzn{8>n7A>ifqXDvXmM#<uRgQ~8fDq{JvuG^aCiei}BQ%GT! zPlaDIrwLn|YnqJ^eSY(DC&Ry-%<Y!QMH578;;hFfO!N`!rQ7%64x~<RD{Bw8N7%4* z&c+zqp5oKaXPCm~QEZb;Mm<bE%uyHU($*n`TZ7uFK)3KZSV1p?FeSn?hztC4#u{_B zPA4nD*K$D~23$qqH{`M5rU*nU_~Pc{!2ayzoT7kzE16|BLte^@frZOU{sG8q*iFi) zEuPW`n&d;O26-}O5-*&~oH4(6ltaBy>j3@z(SR^_HNtH07`;%MA1(|HG(x0hLx*}J z|J%B``pxF`13q@VXbCG{KhLyi#%J>%W(dS`>1u!fWnt<j<;(m<wgXtJ$=7eRb$2*Q z0i2oN_BK@st!s<_Q^?KESG_-Bv2_|ce(K6(F8=^|Z1rT;|0iuPC`FL-tt~r#1u3I< z3(1xpS}aEI{vsWc*>Oqq?n>&&?AX7fnvYK~@+zXqMcJmF=>2k%#@{NEZCX<J7U@*Y zjUPS};rxBoy3Kw&^)uP#uawy|Tr^+iD8+cL|GFE`U!n2=<Jtelg?KEZ#1{O0Z4UHu zMlsg@fcjrvy1n1o!+%zycXv}yBS>^NEzu~;HTC3AIVrlJc}YWeG`TIiY4y5DH|CU< z{{B7Hx}7v6e`X^w4>O&da#**?pLz384o@y&Siu~bb)9@@^s-Isyy@LGq?(pT+txr6 zh`)vkn0IdLLBhKI{B@PxO~?sVzfC{c^g-G5$K6e}dg*S`UwXZ-yQxkD>~2y_HqLqd zVYye?ye^TswSuWDKZ?QB%pkq6Cfcr>XZ*q<^u+u%n}V)O=A1)GmiesUZ*W1&TR)_? zynIv5Kp=^Ksk}`c{^9`eSpXZ-+vJ7Nv?)5dc^eTVj=>H@tkiYM{P0hNBc2w^WzvI_ zy_~!bkT82BBhP5V|J{c4Xv<tfX3omo&hq5Kbrdilv$oN9&ClVk^t+kcmM}~1Ps_Yq z+XK`_{*Iu1;%i!EYZUzH{A>4f5^=wOgY;4Vq28JSC<j&cR7USI8#TDX6dpW~y^JX) z-Q(r%ceOq^pUPv|50m+Cj?Va8LK9zv@q}sgwhj}nt$Z%xTsF};Z2iSBI}_uKc*B)k z?eK=9?uFa1o*sft7mD^E1K*!tLe7h9H{=qTW!1@sE$Ij2*|&1wluP#{bA}B59OD@{ z_invyN!zOIg+0-%bfLnhAcmlfzNoVdHve#ZFE!K-?qsOvn%A*^LJU)+AVga3zx_vT zwKT8sf8T_s^7T$Qy7uJHX~Yf2Kb8-Uzt`YYYx$bic+>G;F(v!9<)yJ8c3S8EElx@O z0Qz5B!suRHIFM)N*I-82`G1)amd)9iO>ZkqMu>BNQBzMXjbgmoJaaash!<!&U-+OQ z3=uBttmmLN_g_T%okAW*od+m_v36Tz&CNcP<MrsvdU8!m2+_L^tFMeZ@{p|c|L(hG z@(aunc-FN4oN~RKNl`c;mVG^b^leMVZ!!JD@gz$J6OpL6LI1u<pfJtyIm(D^F(jza zUpQt*KhC2KJJL(3*_?aQ9YP>?VUOyTJ~K6_ehOIwo)4EMrSdaD`A0h(volPaFku~x zcp1=~07SO_lMV-+dlnZy79ETGf&ME|+9pM%2{jwTrf!(0fCp%@3SjQPx5l;Pe9c-} zqe9^+7Q?}KZKAKYRo_@oA<@=-Wi6#O%iz0VJgdLRuKudxr|=_{kt0j)wsjtg3De{5 zCi-yLa9(N!mH=h=75AH_ls3m-V0GCn*V(oH#)a^&TP?rQWs}~rR8qD8jnU@pdb1d^ z$m^4c7^@Et@WJGT|7{jM+BCvHlTyq~t0O~-^k1S6^UdQ|xcTOnv>?_ICx5s()<2o~ z<|(+i1RqY{#eL$Oi>p7L)j!d)S-aue#Kkhr@?G8RA1nOjy!AJs1$yFPS+bV%Yr5AL zvC+#~y51rEDl0iA{H5t5wEFlGTR<viH#I;W5(9TQ%$_%}OzGNG)2Zsv^2U<e6`TnQ zPW@8V3k@_@XFKvA8z~Mzi_L{7BF~CTWx`_GsM&0M(ipvGscoOR`M|$r1oYZy90qsE zPek>r{4nahc<e+Pq8d0G1%yYG^!MOv{3FWtSD^!rbl5tz_QjpfpZkVDiRb;M{UUY! z%k<cW4W5YfD^-V>QnX|VDMJ0_DN}8nnrr;M*8f$Q_5g52XRVjJLr<2?{#IkHX#0l% zsI_bT2T@Tdx^0scz1bg%P}3k<o4VcabKfk!NT~I1_K$x>9Y?q>aqDJ($$@5bK%s;? zH~aTk4LAQ>`=Hs^K)?6im;ziGY{&j?jU~TLXO8#<%`|g_d6h^-LOYtv=L-K8tKH>H z9pQh`>Pi2gcUdq$tG=~<lO;#nZiCvrzwu9U*!;|}S?eF^UcbxYu&|f)M}Spfr=$&c zOJ8oOvW6pDuKJ53D#AtS|F`kru}kkxa$7fYq0kae#QV!oS!A;4PF+rse)p5XE8&Qo z_)arVp_^X8aQxbr-Ee%L*2X%%&fj1-a^sSJ&DlF}UBVl0@WJ=udJX+CC}5)%a8;=Q z|2T5@cFK15FsXj+I+!VZsa#)r5x<Y~H<x{uJ$!xHJNr-mO1<07C0v!r94tQn#}krQ z1^-G&Cf2-6bF;#$Z1z8GqJXr7&DU3Gv0=8PVc`dvp^KXx%5ta^c^FH%4W5rIWqKQA zC1a)T-(Vk8gpXKb%wO=Qy(kupw)!+KNILZZw?dMA4lP85e#&)z2OgHG^SLVqEkw!F zjS17S!mj}>$vfsdj>Mc2@he?*dz;kIH05vpn{oVYCcX;(s?o;r*P6Z9Ecp+A%2F1x zcEw(<!>TN)<QI-L{Tcs#HsMG;O?!&tgh7OH3J;vlL>pj#x2xemEyDmYJb&XF+4d@& zYVt4W%p2*A!g}UDri1{aDK7h~R<8-$XZ)E#_WQ}+i}!(c9F}w0HA|&qV7`rCg87I( zfuLZrzD6Aqo)pun(%<OW{p-E$h9uor@IU`|NA(*R8nMi6H5CC<7yNO?1heZTaK&(r zbVxLD^7${S(pdDKZaX+>vdTVef80i!eL2L2Te*MIp!sLEbBu8dMn;;JqZ6pABHH>L zG-}<pgriEcR@+0wnv!A5Qu~^^x=sg*;Mo=I7}5MIMT`kxcJHI&VeW6SUyZfd1FR;- z&$_N*3XI#<dGpUSr2lE1mpV>?4rT@$jqXaTK7S300u}tG_kP7MV9ws^KWgA<9ISK^ zqmHUo_}_k&@r3NU`5*SHA$F~M#K7WD4^!jpTU}Io@%%*TWr}}Fm}8kgUXL0Nv*|`L zSmR?fj7B#4%b>Boe969GG%NU-4kJ&r^(;$!L!<Z`VcJQg>DbLw*#J60Huf|<gDL3e zHq&(n{;t?drpR8>n9N;K=k;DG{tWh9OIw@2wk16Qlqu7uS<H4;+m~_r7E*nbZ`{g^ zR`3rrCJxRIXZ_gL*OS?eiR?$oEIV^MQR#&I7VC-BcgUbiJEqFKAvBXYhoJv22XH3$ z;SjCF+<@4Cq*L|@q*E*0LFMf~BA4S1+ob68e`6-w)aTSQQ7CF-jFGbVQYWSx#b)JW zMEyzAD*P^d)aEPO8ag)ETd44#{8PY&-6<vuxV3QcCuW>!B@a{<`n@Y?e}LF4t8I9- zC82lk9|NRbTHrdXO<Hm9k3i>y0G;ns^#JEG|MQ?xIDtA$pB=EDF@^n%aJFI@!v-s+ z(dYcJFusf~5GQ}-Xodo)_^XX&W)pjD#PTn=rZ2L(%4R6$%D=_~N54STj9nJ{63%a^ zhT_0OXgtALf?es&{_n94AOk-wwaZC}f~j3vsW_$UR*qZJO-EDhxk0thTeT8Lp`Lm% zm8$sH|H#>+mas6?W0O*1Z&%nk?C?_EBOye>?&&hY8bFM&>Qdi!c9h?+A06JW1^z@5 ze9o*>e`9CDe`AdsuFtHsVJ5jU#@qqA{Le{pP|-*;3`v%Jw8})l80S9G{c_+o5jupG z<{P0lm!{c<0#-^EMs9d0Cn~=G<Xb8UEp%D$pBZ2O8NZ1Een;(!-+%vkFn$*f!0*Wa z5Bv_?P{L38?Z9|K6JojRYUPKeHkz8d1ZTj5yJOY7JJ)gKt?XhYZ<2Wan3EXTiRmx; zuerhFLixv-6~~Tms?j|*38W73KQF6@H7t$Z{Yy9mBNWq2+m?9tn(Ai65!wdew_lpf zpRiPQvDd+OuEJbg4Wlqj>APg~4|{Tdlm8h0b!X*<A5Z8gyhb8~4(mEATXlT&o<+%F z+c_ytVnbK-yF`*&T%8=VD%sG>1f*qdN^3CJIJn9`E=2bXAr$niw!7wn0EPsX$GC8D zfetYlSv3N3;N*NAx~R6R{Rjt7ll9xY{Oo@73tQ)ndEFb<o!MCxz3XENi05zL;pNY) z20YgF-Vj}W+4aUyTC_hai8lg$IhmWfEy?XQna<i|&hvvXLpYxC+K5l$qFS$eq7)`( zh)dS-ERCP%a{--bE7xQ;fh>w`OEfG^|B-N9f6+p>;U#bSqT4^EcuS+Yv28ErYK<kz zNkx%{WpmJA3jVrBV6%W6{%T&#BwjcW)dOYS$-5>*dVMDm0CX@!r?*-s@tLTti#Y-{ z=Xi`N#|yl;p2rOS3bJhcs>02PK6l?mt;v(e8>!wu<%Ga+vzSoDOzyw^9XM!T`hWBg zY;l&Yf6LF~9p?Wyguch1xz-P-*g`vKg!o!YS$;b|IhK%NSkf_`r;hPIj}X$}Kheuy zG}@{j8>AfO<<5W&CynEG0>AvfhVoeBl*M~{rMFNX?=Dzp1Il`uN?!8!K=wnYwm*s5 zh?cL}JBRtWsd=+M^AApTN81+Zd;S~9Zx&ev|9>7fv|OA)Ad%JUn7VkvBY2$GeWs~R z{=(mH@6TUQal6geeVI4r`g<U0sqdb}hO7<Evi2jF3m3TQ;Ez-|&|dxYX~AURa><?q z{Nn-q?+pHG{swX!l=1^}pfBOi9l$?o@Yf80zwF<@UlPDSY4Gt9ynh_fg%ia$MSd#D zPZy)Yw)bUy@o)J3$8hgyn!vkxG~Sg*oV!0Iu%l>xN3I;>Um@tsX>#~Dh6|p8)N4sq z3cVbPdjBlg7qtb05QVWoTxZIDpRWrgV4FR>;70e}C(x9w?5X5XDZLMs%}2Gx`N(1) zF7eMpgbUfvqc8+|?uo&C^h-KbEO|J*U=<epE3iU2<Iv|(u*^6VZ2d3BMept6_$;?i zlq46nDU=1sWWI@OR=S!yg@MzszkqvkYLcmUh=T1JiFXXK^-iPVz!GIW8uV+J+1z9% z%pV4G!=$w8pKq%>%m1CB%Af88y;Y_D(|JhkTw$8-^3S1bA+@_XOs7xg6VD_UiJ54y zBbo^@h5pU;as<Faeq}kY^Rl<nC+3v5_2mT8e9X)2KN6=rF@AY+%u1qoCL>)54EpKS z#McVX@1OxN;<GRMy}yxM>GL!E;<}6$aI2OTYyDMw8oqm#9o1sKHuJHWDBkF{{$AJc z?hT*q^@{RE#9HfL$!KLQ$ZB(2V6%9{f&Y<x@P?04jA|?7lijV76}|Tc^4_tj2^G#+ zxcRqZYz-qbIJoKm@N(PHiODkz0deZD&n13H_p%93s1u(<#-Oa#CRYD5mVGhNO{J_T zaRiPT`C?YQZPXY1^}|hh8)v%G6Vk_e_nSW>TlFOikJYlHf;l~PT=cO~mrMTa^Bi=- zt1|r$2-31dC|z1U%Ln-53eXt6OYSl;I}@w-=6r1D?dLiKTs;RC`IDI};<fZyT_?n; z?40OhRg=fB;*zDr*7phX7@75IbHnq|J5IKSbg{eY3Y_zY%xy%(pR8zgpm)VH>WygY z<$&q^&%fH<A8+uZZIvXrdFu?G=BK_yR0U=HIvniPqcty2G%QO-&)ifvTUnXK9imT) zAk4hIdzYj5ZBRVuoaTnrH_j`=^8*gZrPmZLpa7Mf%x+8n+UWyqC-?OJIC$>;miYDD zYJ$jO4s-J->)&h-q3Tlm5x1tAxP5p^_OCCE4@137UJug8a8qy&@?vHU={OFS?Y|UD zqYy3f|G_*6S?-cgiEapOmLdaxeq_@O?@S@YQoh>DpE%<jMWs3X(#wZcxK292_76nV zJ;;@8cq{ek=wtg4`eKMmsKm*@@k4AO?d~tgoH=8@ZcjcCwH<B@u8xZJUs#RoS{vB+ z@XpD;8+H48%y(aW4%w(n%Lwbv>#5Jv2eL^m0VfTSF8|l`q=erkWu~P!1v^r(+08O- z?dBe(B2Mu8DALO4mcYcufj?DH#=gasOPviz!vE1U*8mmyu2sJ=jZTI?^Ivt$a2*0^ z>Htoc73=L{|7F+O4d?zOh<@rmZ2Cm!{YV-R>Ea;&Xr-UaV{{&ll9pbj^nH|`h5XTZ zUk}pBT;cEd1?h)d`uRb+c7FXgmEHxm(Rn8a>563IKdW@zvl*RtSdcDV+<!#rGT%k# z?HQyGQ~HmTezc{3U^Cg;r;!5{en#n9x<}_pK@<M$yj1vKS9-UlFLvqvR3&MMAJCt9 zdswD>Zwo!;`ZriHN%I;&wZbGg5&7w#%|NAhv<2C=g90u5Dt+YSnZMz;rvG3hNe!3h z!whhb$+5>7{|+{Jnc|`=Y(38SryH9+|B6Zp(rD{A;Qe2I6x0#dEujaKWXmyQr>_%2 zU4TbI0!GAL$MB2mLsDiB54Wer-m&80{ovtjc!QM~*j?3#Cu;-1?!^|KoWEu3UEh14 zNWfox{@=J4O^KSX?C62>W7nueJex;RpIZ?AnsuHazYV19T-%w5WNTg$ZM%^%6jU<m z*EW#tnlL<*yx!A;@ucF+;DH&2m2#hdmKoSnO?v*lm6aYH6!HSYKvf+`xwviV^b!pg zuYdHcD7KM%FU+F&ix26T3U#*t-1zAId+-9m2oa`ShpxbSL1gtZd+Q+ibd@e8T|<VJ z?HU_s!Pys^WTkLBNYT6Rw{JE+?tXxhTefRV#1?9d%t^Iu*GPyh)X11Kqh-7JKekZg zVb0W+?c(~_LXCnsXSHk>ug4aO_vf6_vRxb=TPTj7^O=_I;_KK#@%fzEmhIx^*g|pl zoW0?(mhCoOMekd3X8wwQ?v3})9Jzm+^|W_%Y#|unc0D8=$IT~oy1vL87{zu|LPuP` z%IBhmf1{r}UKW1sbzL<;YJ~eAXCrv<A+{l~IE7bXmp^qmghr$`Le4;N&Bl9s{HpA4 z>pCbs`yz5JS$1EsY(5}Ep41%wQ$g+_$}Rqqf$<}k=mes#7c=yuci=y~oHAAKx`>UL zw$U_4^>3mCp~mCCTw(sHU|TpAb_wNOY@wuDVFP2z>{0%YfKZN1sgg&iLwIw5#;G0B zuWqDAk>dXyZXR+9TBb!5BuvNtg@HjcO;yh5qdY(9ESuE1X<8$!g8c!SU)-dVzSZYH z`m}@8;(!n;-=9hhuB_uc`TyrnZ1=)x?Nd5X9KEweg)}e|{h5d2yw>L*%}$xkYikNV zjl{UmeyxN}*ce|<MH)pb_-vzEI{=MAdvrXd9kZ(d9s<Df3aU|i2G0j*DjuQwGicBm zprDS?t1>kDO`PRX5m)X~#IsMimY!{2>?Bj4zu*&B<4Gi%2og=s?Q)P~1eqUt$Hk%v zfu1}<W=%lSO_k*QqVY>eD+qP@nPO^nvOE;A2W;z4dALDGTcvQqM$y(s^w5y1Ya}2Z zkElfWsV?IlgvVGbAl2US-(tUvU#4-f#v0xdnUDL^e^S*`3iA;xAwLDIB78?8wN?Dh zk~<8wy>;#3rtCZY7ga0yD<s48>EkT0kx9KZa!euT+sJhAjJBQz46tqYg1$Bf-A$q< z7C+b-$UYS_eq&g_3e%7#1G@d1BJsW#7TJpj2Yma-e+MWLtNFz0UgQAVg*svJKs=r; z1i1f#Z|*$9ztVYkxT0_mY2sox8jXwJTj<bFf@9%pe4jDDh)~9{PTL{+HkofwHWaS@ zNy|uFZX5xtS|0zrAj994;ow~>yTeu1dKKAh$T2;x^=G=&w)d5**-E6#m<6WBF~WT@ ztWls{OmPM2DCPDJix;H{?<zB>tVFeK<`NQ^dYU+`)<4;LIdvq1kRI;r7N@~wE~Z3d zg}WZK^ltj^K%jW}{$6qYNdNe+Gi{NzeEk@#_dK`HlzlNZj<cwQTZ`OuVoWF;r_RrS z0`hzshKE?kL|#I}^iv#vv-O`RS&q_<&vsuVI&TLsx-_@~_Rn9oSC%WnxvM7AxqDn1 zXf(m?J(b>cJoAZLQX3ewmTBjZn~?yFw*E_vHvQIeS~h>2uR))>4cT9Uy|?R~gCm4s z-MzjCgyHdb$STyMZ4wvER?)jOp^5F^<9F`l$XsIpryu0KNJl@(tJiJq8AAzuk@nr9 ztqVvAm!_M2U+V?(-y_#Y!)mjd;m`dRZdOe59!(JLkk-*bG;61bf)0^s0RG~>(jnH6 zRILCQS%;nP>`VX6>%gsz%a5^m3-?h<I35l4Y}e{H_SnzGrChL|?JtJk=Oz#7kJy*6 zef_ptu?$h9zs*Xe^;1DQX4!fCLHdaYms&`29aixBe`+$~E?qoEv!0qRjGv;=e*X$Q zgV4$1`Kxxu^RqvJhhmwJBarEo^pwIWzz6d?Y{;=elS^y;In*uD^()FTE74m2KC5E( zK4w%|>!137)!4oi2#!)kTmQ;K;7C9IV|`2iPKIG<{Au_4W9?77TEt!lSrw_Xg7P;0 zM0sX^C+u9}X*_Q7t3Ckus{usYuc1*Tppy(J+IBIiC4LWGTNV5uj+H^(F8pF0Gx-~i zkssn=PiT{8Tz}Yj?fnZcrT!1HzHC`<EX#Vi%X+sOGX004efc(!DCWm&5?k>Zk}}q_ zz3*yOTI$~c{n@f%EHf$F0@|UtPLrxkuHUPh%_IFQtKh5m!t2<ymBhj^uU95w0awT= zM>9wG-M`#=C(RtW*?;9A8^>r9Ofv{AZ~8a5Ui)8_Ugnc&(Rq)mvNmo__;cMlN=VO4 zW<Tnf#uKh**+tRJD|}}o`}!@5hAeBsta25$t89GVoxPVsTc4G;XnPQB6zeE6s4`Fa zCv(13TcnGrU!EhFUMOpTYKbSjISsHs2ar|k)noeT0dVUpHvAQkbQ%*z{=T|KF*nss z1-pvO`rTJ=gNqxzJSmdU<MhPFBJROk1U5xra`AqE-}JeKuao_WMxLAV$)SV*tj?~C zX5Ql60!IIXuf*{=fXi%}Dz<bDX=+DK?Ibbe2kdfQ15Rxe9KG|<uq^TSXWw)x&lgA( zLwpC%dh@M_nUA)Tj>7}gy|LC&!XcJ0joMk^C}9K%npEf0blZ1Z>u;x=SVto;!4Qzk zzDc=)|C#?%9pEA(dp-L>+Z&_v4uSvd_5@wQOarZ<wDOKm=|ip=$;p1vFwP3);v=>- zXXC@RVd1h1OPcGubir10{j=PDlIi2Zli@03Jr|y!?jl0DnJY%nfU|Q|`@|YnoSm(z zxnYA4m{3lac~U$BdBR;#+Kz7x*!lffZ4(VE_$U0#$?VoOY8YCS7+Q=gPWInIS|NDa z7waSbFH<80MZVJfmF+J44w(`52kdusvtz$wA$+Xkda{H=`)Q7$6(qz;<1LPXtSK8| zej4#{6HWiPa1;g02KOG^vhOx>R}d>=d}r4?mD!cV5-fa^{HTcW5j$rn!_Gn<2~_)j z(p76mHalWv)q1K{mm)KgZ58Scn-)Hj5)=8T@DRVwI=svNBrN=VD9^db;st;B{h|ar zxirq$s@F)9x;Qjc_%AzJwLT`kLwCDO2h9uqBU>Qw^d5%3{5=l;fyv@ZZ8@6z)&S#1 znSD-K$1)pI=LwX?>3tPT;$bBA{(ioH%Xh5fbV$GL1lB|*t@`{FdROnyWgjf~+YF<0 zr$)soX4dWV>z=fk)<&qmf9b{Z_i!&VgY`RL0X6#XmtH3L|I&+F0^Vh4-DT{8_mFw+ zt}$hOtA9H?U7E1I3fKNc6zi=-jh1U7@xni{R=p>UqjfIXSrdnD9cE;UeBWA@x->i{ z>Xy#EpS3lfTmt;tE31%*{kIa0CE9unQq=Sqt-uo4cvvHx=ZfZO-{`zL02su|_#kC7 z7e1P7*cmLmpiKp&EG&fm;HJNw<+w>wE!J^EiJPFWzx6N}Dh{Ck$^0VqTkjx2<jykl z(9=@pPqS*GZKG8v?~}hx4b_5^lb0>cSS0wf*nd|Gu7yl)trXZ9U)$t9TxgPlRiUzY zm}f$gm|qMBZTu53E~*HH*;e5Iakz7h+FH-9vpy;Km{n;<bIiuW`sx|~>Y$T08D6Xw zjko>t{^Uy3F<LD+J;Rx7Dr16`;eRH``e=}Kf~`yi<4*rP;|~uYz8f@pg2-^>_l#=M z*4x5-A-3E7TY?N<2{IU!CiqwUw`)W#!&r0MPv9oH=~y$FTwCfM|56;^3x|{0|MK0X zzIlrwF1$<Z>A%4yn8-2&*uv!$8%D7*=DXrO_f@vbkl02SnSaj=Nb?jQT~DgHMp3rL z`}|)9n+G~STsR1_gJ}kXfe;@F;<1i$t>ss^$QNz|l&$jgi@3p>b#1f1{#}QHw);w5 zMg`_=I4P*(^L$k=?_(0h>4vJO))8np)ehia|MRM@id=${YhUjgC!t2Z4|7hk%GUZz zU~FlH<2&6snyO$i{j3NnBRKIA?-72pkI39o!%Q)B)gyaq#p^|zhCarlL$kj}B>p~` zl;iTC6Hn&7aDz&sOB!je|6oAwnS#V^g2c`KxB$EcBm?GiJiXaJ-0efOo)Q+~S32Of z0}L1r^*1w|Rr_dzk!8aT9+lyb3N|cu>~L6k;#|0+#JT4M{INEGFy0;jF)o033<!C+ zxzXuogF!z+q%0qb>-`@GIoinK4!p`&aH<nV->@^SimEPuv{H|+GnuvC@3J<hpDUbc z^-0N+6d5=okHKuFMkAq&x)c0&tebG7gU`jBXE7`aYuRYE9$N4J(1|ci(A$|<>p#Mf z+qUs`VoW+(BQDqbZw2Ij4iLWgz9!ze1xgoYi?~JZcc>Qp{Q`I<ONT`nh(yj7v&u96 zgYPVx!U4q6m&2OR_^TaA+d~?j7Xs(>^#S@hvD(<5&z)D3&@8=-kc4f2RrfQye29p_ zXN^fw3MR8|bM{03^haoQ!w1m9rTK^aS=i(8u+-njJ?eCLHIG=ROf|O+E-lUDWYG!n z){~W2B-Q~yRdsKk!w4+g{Au4}j}SJ(op%vbi>>tijlse1F8~Y8PN8EfdPgR+zFtVf zv5{yL-5P*cpzHt#b7#T7=jV=hr9*`-0R{ii-?+}*-)hz&34i7W2UtZCMk3Qu3;s=S zxzu;5!8|u?z&;RUmx?DexvQ*(M>9TNEh!~~f5Gqjwq<U=Nb`kk3I+cym(->`IT5f; z1v`D1>2T^@CTQ_N>+X#)a4nRF{|3}B)y5X^<!is$lbk4A2F?Q)@IOAtSqK);QN4=- z|Byrg{$~R(_xHg6oeaJAj_>bX5$Lx_+5-akmkpjdzo>tnF6f_V^>sKBTp<j$N_yr; zyfx8b^sZ$opH7C8r6A(4pL2?x^9VIX_Z!AbU!7!`GgjWdwWy5#(k-H4>Uv3)u?Yg& z>khda6<!Y+R4cQ2B|Mah;o)Q{>HXQD_Og}!F;TOPjFs65KOposc1F7Vd-mE55m;%( zS%%&h+<1_(U#rDHWiRHWMsd2o<^z_#)Y#wq_<RHQUn09p`Q<?L2m0d?Uq{pekr!D3 zY~q;>mL_ciV`OUCu1)pmJh83TbkmZo0X?~L#&uMQB@Y5LKT$S}357Z2we>Z!Jf3;$ z^_Z?Skaa7O-Jmh^BD*Xm8@+~}^f0ZC+HO?2eEKgwX?U%oh%NEDc&)olkal7-Ux7QG z<2$OU^-rUbg8hY|TJR5{<$Bi!jI`ZrRgDsK9-&!h);1YO_xV5PJ_<VEIz@r-&^vVu zT(Q~O&ZbBW;y4#DXWpt!eTLtbw>tS8ZQF-Z;@t4Q{?JU{p{d|rhSlqSHM-{3FGbrT ze4Vd(U>rjRB>e}r88&TuQe?P3GG_--dBBRhv>p-#I@plnmn}{IejaVFQ3A!k+qf#) zHj)A{ktjZ(;M)bC*~S%9pXY;8W+)}U@9B-2{LzL1>+&xdZui!-?JIPiV*D4b55PYs zaLrV6Z>{N{OF&#?uIL>&c?2Yv^HHt;EF%VrwkZ-7&Uc>?Dq9LeRi@6v8r5E>mkRF# zp!=fcGH`TZVnLo0<>#BG>iX(!Vk(SgoDyrwF1ZQE#L_;m?4$BN!GtgqPuHIg6(nTo z7QZ$6Exen_iN)e(86@ib(@2WRAX2pVXgpk{jN*bnKnZ+&Lp#-G|Ho7g7fch)CJG87 z;Jnw99x4xvsf^XSEnT&#C$@BTruPrJJ!&Q?FX;C4nacYT3optU-Nd-SUBlKld(&JI z>YJia=YV!8%VM%vbw=~__pDUm9vJ}YDjP_Ya(h)^kG={|Knb7IF-xJdK~VoY&>x&W z1^rL2ApEVn@Y0o6ynXa4vqOu%jY8@)AtmqVMgH`6#k^?@iv@ok+L<-MfjhlWDgg8Z z-kSRe3J2Bo7;&+k5Z`{Y$-t+q%HHq%+xdHTJoodub(F$=&0Oyc-W+smVx1i~DWE$= zWrSAmB4F0~_an|3*g|m8Mnmurjq|ra*7ite4;WS<|1`;KYHcjDyw*4e<BY!qmIqz2 zj_;{ZUd{#{9{`gOoBf|ThzC^d5mxP5DF=J<NVGOEP{p61GmEok(a9?66D@-wTZcMh ztkhwEI)YW)c>vi0$@-m%(w4-&HmD`W0dJ}>cf{~!1Mm*)Q2T;Rc4=WWB@7hc^70|z z`>ZeE*VYX6>K8Mm;JRBqIX{XSdSoij{hAmDL;1t?;oJ|6aj7#BAGW-?VNrTxvSH1v z1Do?zLlX6vI4+Spk(ZrVZQYj4?yak-5jL;6{&VpnI7UyjeTA%E?nUE&OW;;@Q&TcG zn)`bW%&uji%tbz)045}y9ZBsLUGPCHJFa!b?DKGb8lvkv_Dpm~B$$%9DV*+JdDH&E z{B3MjLoWvRHG<ckiTY=fS-`T+Av{TZ>+D(83=@Nsu%41xKPS3iGm$}4jhQ!VQzy5s zNPkY%j4Z3hu>46Pe>Qh-zcWN7dRYqnR4^naRtulrxy|{BJChB|qVpsjlemR*!F6SH z-gMp+S5i&7^}r!9h$z3d*syKf{5b0!c2MR-?>r5l=z<mTY<CNrrTvF?t*>1Do|HyA z<;k8VvxgViY?u1&20$V^UIZv?m#j4T>FCShU#a&ZFt@NQBOs~NixZ&rnq;1}O=;}C z?0?OTbHahMg?a+luVvg#fUdkY=d70E9E?`&T!8_F8&=L*OJH&@vZrf%_WbJJ<qqD< zqMgR7i~eNX??#Sf!=hPHFETPw-xIJ!tXfwLH^R6PZm}$zzkpv{_8$628mr5tHn)el z)OPz5cSEHKcH#ngM6i0v-92q6k9DFcx0mm^FxBWdsl9QPrrUNegCHXP3#Ix4|Ld?K zw&_ws{l5>D_C(<nb~dUpBb3650llfI*k1Pkh!Ltb!@a2*i|Xqisr(Fcx1p6;GPdNO z?cfuF=UUpK5PvK;)Nyz8a{s5-n*rKxNwjp+XNzSY1nG1~gUFp^TP>L#7F|%$KEw!I zyuaDu0t-fNA~>!xz`2%z-(k_mDrR(bR?o<WxzIm^yY6Ja>9fR@1)e)JFec|?#9EDv zU%_<|ToyLWxVH-tz{J#7neHtXP|RN$=C2C!SN+HQRlDRD?e+!TiI|%!`rC(inX9WK z#fFv7Uy@&<-SSxn1CPC%;{~DY@&c@qNTUw|dEor>)yP-4l#KupvkvrfBa<8%P@l%C z&G{7B2X#iK_cj-GZo?_@2j_K=_q$buUt)$;;ZYWtHvXKtRCuuTj=ZlZu!eTuRe$54 zF}T`?r!@J&F6D#lCfpbZdb5~u#%QyOJcgP}4CEcf6-TqrUYgr)F5w$~N4Ko-=j{63 zsc40z%)W*{b914?URudv%6#VL>Wb8!P#5-U=s^=>SGLISw!a?ed4Z<5+Ey_>cWbCk z$J*2s4pb80TNXLd1$!XQQP*J11Ch4-&;4ekVm9|%(>ktmK$y7tky|y=RYUoXBFZ6? z2*D3@+fVuhPn^hDT(E~XY&l|v=kzO%R92AdZ#99y%uU(loT;*g#2UKN`#HRQVlD~O zeJxw>5O5$8`hMBUuoy8wh>wGLr}*yVZKL#pap+DGvp9~vgbv`hAfPGsJm!~Un9`37 zG$^n8475f~^Zh9uIXWi0dstDU=B<#Js8SW$210!}(jiFCE96{isZq&*-F;xaoBjhn zEWWzRQF=Gf=>n8K?JCZmW-O&S6Meh*Z2S;lu&>LwUY~^nToA%ZDwX)HIR8Korkz3c zU+aoFJ*a<gtKX`hqNba^g_Sxaftc3XZ*KjBp|=olx=)zOEysL^P8tVHCOjClmA#cy za0+*aj$Lo9DpOr`O-wny3K&jt?1dhj#IqmmW^Ui^vqrYAu&gP4Lpezo<p&TK)VMiO z!7w9ji;4qcF4$H`o^w4T*AV+Zb^SjUu4C5k@+)H~P0c4ytiEwyB1*@zE4Hp=yAu&t zRk3;-_ukSb?xkKZa6XJKh(*fhL*9oBdao>h_qs(iCPsGxZn2F|ZgMxb^k>-ytw2_$ z>!mdyj|o!9VP=HRv{=8Q>FyqmQyV)r-{eOmKI@Ddx~eMHF`K{a#}VeQ!at592@t5< z9fq>5vI2F6g1+mYQq%j3viaQMllf*f9s6u*ZxoTMC<(GL>I*t=fi-2#cvs<3e28`2 z%HOcUr}o&TLgUgB|GDv=Lj!$QD)}D$Q%0BYV;~3onaqv!a;+Bi#HkYm0#1_ffU1lx zIBy6y7e()Qfw!~JgT02;H{9f5(&!+;_D#7zQ2BqryMmozL`9=#0W6@01E8^jm~SuI zd66ZIB~PsXJnr2z?m|`Bi_Nd}`JU5XN^D(fPa;3+fJ8&jjV*}=A_vWO1bS@TFi0XL zPKRaPZh-5N`w1eWO~c=@=$BD&t)KgNXhrXji}C^T-b`-gond*?{0+%_Ik^j8qmEMj z;dl;c1F_V^hsY#p2hq^`lMRb+JhM4pbpY|JZamFvSd(g?n!SriwhTgYTeTsXzJAws zqkoK4KZwwxv1l6-S_GZ|8AWi+?e2uHAc}<6mqzOfN9eI7Lf<c{++CzfdIwaQD|xev z{z;^+M(zOTK5wso9rCbr7l2kynZB>2rrmyEOP|h!reZC9ztL}fOW*(K_awkGeMhGn zGJVIS4&cuD^t**UyoxgUSUCFx)Pb8$CCxauu;X~%f5D&N{bW8BmYo^CUkp>^Z>}y5 z>lQJT{sp(ywRDLGT__;QZ`)&fTxo?C+BpAW4G0Jn4hU}1m_qATrH1ye!XU`4P#)JK z`G<d%F5$t;--48Vdz=5y?VRcfwd+i=()u0woC;?@y->++y793D*QG&ZJ~#f{{qg(w zx5G;?ApjhE{5C}*uX!xfrvm++$sBIw^w;XZ<t6j^ifHTI)Z~9&W#lS7uI)3^!fV!Y zmbzZf@bc>Wy!z*hbnvom!uA92LC<Y09iJK&=WIS}yYvlP&e*pmy;q1d22z~pSdwAW zc|vot<kdyGnd2XXpX1%+l7kB8e;E7fW8L_<jqgR*Ba?@R?q=f2Ot0pi*N8ofb6tJ@ zv3-zJ8fH^X>JU~@>^LAWy8KVJ4XqGTZi~Bcog3e~Q$vV>GjMCXwo_j?QXl2;8rHMV z0Y7j)8??W{iY=16ukHagg*A=Ez{TxoOXI%Wrrt?vW=BQzF53^7e(n_rq|4hbxsEL_ zm^s$XXAE+=Yp;uq`A59Im)k(m-F8b($HubGtTvnbr;L^LLXeR|&HO1>wRra0D+bWG zXuO{>Kc2g;sww+Xtp3G#L+`C$Zl3;$HbvS#qJ-w@FR@&XQ*yJ5dpj13h}Dp~S|Mx4 zf<trU<9POS$;gX^E3D}i4jY4-Jt@$ndgqnoS8}=x8fez}<bH7(RdZX1R^%?aBC^^r z%zo(#CwmKWu0b9^RGrHz%1dVVfDmZCb_sQ{{SLLgvWHqp1v&c>Zw<Q>V{eF+7KiG1 zUFIjpo2M^Dk{{%cp!R|bwc_+!!^@)gzu|A%0+Zx+D|~>K6!Kf_A}4{_J!E0MEVgB$ zdhSl@h~>UemDv$V?Xx8|raGQWT#-7=ZaK^ItxVxzz=?y2nqcxKmR-|SzdYXX>`h0+ z^Otfm-~}%qZ-_T#Uu&v=esVtfxu!&9MZ6vHqWcGzr$3Bwcsw7AGi}k;sXt~3<5()N z5qA;o@#<@KkuLR`eYc}4=dwaDhRjJvxgj%6eAV$aFbo-a1E)Blx%P@2eiwxY3z1uh z{zz_NFo$B|<^Bo<lyKa82c=~C;ohA*hz8L%U0x8+T|G0Nn^pxkruJ>h{)@vi(Kaz? zbL3s;>Fl-&gTN4)BA2rVN!#k=L3z{exk*>>GOK%%oC;;rw+5wli${)d=P1TWY&e!) zJU=;|7+by@2kjC(+1(7D=9j}2`H6TZf*Sa_a0VDS`5&)8f|?-{Hp{b9-t_%+s3`Kj z|F;ieoNquSFMqDPn_;uxsWe%J1~BQsq8B?>fW#94oH5_*8>lIffU8**IdW>obySqg zA)}P&;L$q|29sP2f<)Woqs#3(Gj(yXd634jZJmKS904EQ@#wDh7B@7!fBV4&`BBZ7 z-;}=uZ|=3geer-)Q^U*AHgmg#yP6sn%~>C>f2nQD?FYy6li`8{XD`uE<B?Rny^1xz z<G_vC<Bg)ddrQ)Z(d`vpPh$;~2QVUBOh_jLJm?!lcAwxg4EX4gjsce&1KvVYLI(Ug zCmT%hQbF!~cmS(y$brmy`T$ttSF5Rz5^e1r4Mg{!*8ZK$)O#vr6|b?dIbuh@T>*HC z^BJBW!mk9r_j&xSn5p}xjV<y^oI8D4+UVxZ^ghyc3NMRSI11t9M`2IahGqIS_YX6F z4J(W?8PZr$c#>s!*>}nxWN(Y)D$3?#jkw0D(t4NcmUe+}9A5hFVM-aW{@^_6fOnNQ zDzmOrStJjG_tV37>=$Y?L+)x6FZ6)U)XDulIAxhJY=V4!w;k>}ZyW~JqCct;^Y<L0 zu+Gy3wR7oJ(R@V!ew2Y<Ro2&Y47~T30R21wvh!S_f0mW`1qXD8!#DKTN8Oa(qh*D} z&~xVcK8j8wCWxY^$UQZC^Fh&8^VQa+X?sev+{S5)>@5f7Cf9h`<8@JoeGWq9VT$aY zR7<H9*-4{wXN=mige^E76x*^SlD;Xk?)1#Iq0xEbB=+JC17UA^)g3ry_OC1TfA=Ic z5P9O{3hh6;E>(-dGhEZ&c)dztm&}prD!*wcdUaR$eI!EWge2Y)Y0_Q)AU3BF+*A6s z2`by2>A$F!(hl`<$LG$d>Yj9kstg1qYvAmp>ueaf;fCS^EppJJ?L(N5JiJCNh#GAy z)G}1IoH1%{>QP;4%ehl(rqjLbq?%~kJ7l19cCVBEBg2_3R372CxX*8Wv;g08j6!!I zUu@{RrOv~)wWxTOpgF3rfWpu>1HuG^ine|V1cLTQTSxE`(nqxLXTFC_-D-npuIdMy zn-3d+O(&_vIC{cHL)fnaBgW||mX}O%GD!|BHR!<q&v4(qL%0_dE0v$+{0y*v+jwAi zoXlhCc{q+z{Iq<5m{AwYo+n#}edlxV{lf4&Vq!!~qE@@2)+dWwzFgbCH8^t4NLK!a zb4RDnWC=h3xyY8rQH`k)PF|in+NuEiJ3sBP*FmsYN8rz3*q>t98(c~L*{d5bh!=Xb z#Gkns!lX?8NL&njN0<!w9tsO5-*PeDO<1`1i%l(PTZN4!b@abq8A%|#y^Uo-aZSKN zMI^Jh4&14r=?cFz2<+<|64;N^>SeBx6Z)v%M0)>jafhg0YLDor?}GJhJ|6hp5xoTO z)<gMyZyf^@v8y`s3wEYvDkJ(DOIqt+;*yB(vhP=dq%&O7J|ulHNIKq<xU43lwbY5n z1^yB4bvIrE`D&lHG!)<S`yLvUu$jpHjN;oUbaasPnoIfuNh5=#XI;`)N!lYw>TpS4 zBB?S+de9|ZNYcl(Y8n3VmXzjPs1R&DTnIKw(c$eP-pcV?P`B&5gFFRD_w*-VOt!OL zEbUniSl_g4c!+L@=dMTp{cYW7`iz}1owe9RvMqL6>*O?|<Gt1TMVVC3(t+kl70)7= z#*iQrgXPKN7+_};lKCs-hqX4>I2=Yf#vk>vT_Q79{SNa4o7Shj>b7q`pbYIJGEK9K zANX+DiGWuFh@X>BGS&Gae$UVm)fNWd#odxsLbpP9U4G9VOJ@zfYk;ZCZS7@6|J0>4 z6M-UPk@;th>%FeL?r9F-m{Jzqe+q`5BIpMmHK~cEmZV;>-Eg9z2&;?MZts7hQ7Ex? z9d@x@LEo}O#4hQ+?!E_|fV_p4W8rq|Ko)AJj9(FNc;6jB7e2>`yb@;IH{66#2gMG3 zFgbi$yxrp%BDgS#qz;HRyp$TnRFHn9m^PHO^grV20o|FUGGf{1d#9AfmsQu<TN~;_ zgsb38yp<knKSwUHTz?QrH8w0t?afLv{d$;Eg_p*9td+;0N1i4mIhHV%4XsVlwu6w# zAxGq{t1f6(;v$`b9A6BI5d7x(McSKuYv@TmrQ1bR3UFa-?PANa)r_n#cqim$S0x)> zn01nuySgTU?IKIe9)k3S`ViKV$PTRTa=VM{?7wH5^}?EDy`N}Ua^pIaFANad-P9rk z!PQtMZwHJI{2LRwh=LYAY^A)I(6)Q_g=QHg;&rvMsEwVQtUGS5l!dQYSUow+)N;`0 z$r`et57Tv88n6_{l_1tnsJcFAP#a;7?6_ooVRAlxER5S%<3%SuJHB&1#?w(1vCod$ zE!IBDRCpqrrQb<Jp5qFrS$_g?)a-Ee1P9rCgcks3B-rvKqF7CH?%NszvP>Tq&rLlD zZsC?#YK(JMcr0e>kOETqv>upp5V|qBL@3=QGM4)#!aV+SFGbuuNX^OsszGu7cU~O$ zNh45WaD(@s@Ht+^Pe|scT%`vt$C?r^7H2j4r{Oag;^!HDWr+P>bAE`LSISx9?|+9+ z*ivC|)gTOhyKz7{rFet2Uhevu%=XbtLW$|Pg*+FXXYso7BQ7~`SVeXfy5+YCP1nCJ zcb5(;DZYILzq#+LHZAVnr&n^5SY1Th-sX|*t7Ps@ox4a*zpI^}RIPFIJ6x4njdjca z^jky2PXVBpze`;!_n8-8k5qKusi<=#R1~K1H<%x=^ko*G(0!+>)jtQNCq%KA{jqAa zP1^1|zr`a%vcLOIVXS}IJB3NGH*0*hIDaO`p`+1x$5TZ-Hyvi-==c%#@?#ayq=5Ch z{~*&}?d2!MqZwVr*SMt{GmE^1<bBaa(a{Cx$4MO$Yai)u%FOn2h-kvj8L@1<VQ1mT z0)ZdH>Xz^xQ0s9Xi-n(3Ec_@dJT;OLGg1Y&pC6C5#YoIPCA_SSh4B(OEbv>G7>1R% ze<Np2tlyT|w)^d0@p5;$9(Wri9x?C#?w><x<@p*C(KdZ@v>~%AZ~$rC__6M0HJut2 z&l%OVz;9E0b$uWI%7844*TpAz4b}_Ixi4e4JcqKq=}(F7nk?cVfDBLQhC`B4Ps1nH zlrVO{_mv!2Kl|TA*`6#7xVWBe>%aY5nf{vFPdwR*yq)c1Yoe=nEzTHcsfOt<_%D;$ z77oUQT+RupvX;q_ZVM{$jQLNBK??8a+4R+bS$E~gN&kq@*WUE+t0mF9{z>~A{vN&i zReqDx5tluIkAOob+Lol<9WwTLk(GG#M7CM*;m-WUk=9l17euykA(+Rs7HjQEuPcl! ztKa$$c^hq=X7h~eLDpcK-+&sr#nsC!J;B<LAmE0`RXD1cKf%UTW^ocffNdN(%)GfR zkxP!ml$@+V<6Yy`FO9I32y<}M@6Tl7nXnxzGmENm92-&5uqc_W+Vh5Y3qRnS(L?81 zI}3+Fq;UM5kH^<Y%Fa<_B1_?kJd;M|4a$Ep@*W2{QLbU<=pDaN`EPHNPwjHf5Khhw zuW0C-oE<)d^6w7I&lx>&KJ_ZCq4nICwaS0#SLWK%_9ei^zf!oDA9pcJ!S7v9w+4Og zI-_t8G>PR#X3yv3ag64EOlv<byol<aBZ;YbWG+78V~xX)3;R(NP|?SdBX`aKZfD_l z1MDS%e-E<oiMirj*7M?MCz<?1xS$}cykRZgLN?JB{tiyX^})dSicY`JT~hso8v$$m zmzyag-1E5Ka+b}{CHPHNJ@<2!!(a2C;ibSzH~VHe{HcTCt$nNzFR9VyT(&cw%Sn>T zGThq2Lp+y})Rmr^X7r@yu<;UY-9l0>aZoas`2p;P4xP_QFsH{GpLXz7TWf4=b9@=~ z0GB{HILv*MA%lm9#n{8htoc=n1fk4!1-@~;fYYm=(ts@Hn4i1;Aglvz_o#~L87GiC zXTOY<6R&VX!mt0ARkN(yFbA-rHxIMA`FapaBVHA3v`rrOz25_$LEo<-K#0C4`0m`7 zT_w&(+P{nWTc3~8X9<+~Wr)N&q!JNja4HCO8?H(yp%obJ<IH76c~%x5xn;w{>Oy$M zW3@8Y#Ngjh2%`%!8suKYkKXY)ATYZ}=gFTu(8nH82R=Sd37n@L4X7<7ltr7NTiNQ; zX{S5ZL~I2yfe#hYwjc199kSU1ldzEyMfqwiAN^xdYG>BfS|OYL)y&9(n+qI9SVM^| zi(^#uSN|Dd{tK{NYHCU%dyVdTQ;SLp9V>Z^2iNc8j0c~olJVfHlo#4s``<CMO}Fq6 znp)+^sHZyiS?fseL3K<!{}bBtiYSAsp-huGe-U()`Uv@T13%Qfb#GU5z13X4v)yJj z7tR7svs$Tt-0n&(Y->&u%hG!@Akxkt!sxH1ahS6@HK0=I92S!NlNuT3ncLO%My3Dt zKUGQ>O6{G@5A7#T4dm23m_qTy?&Wpch=K+csZ?@$PC~+X&46A2$gvMaI`ywRqu$nQ zSbNS=7&;d)K$IU`(^pw1l=60GLKP^?7SJ#ET@81X>7RPJM~uzb2fxQyKbQ{<r(mo( z)cntZSMUAy-OJ@H7dqRyud-)8&r(bD8?fGJ*{~eULk{<>t$#1$aN-}%lYKLheK%3R zOkot~+5E~{n^pHfJ{Nz8PsAU_qHi0YbKVTST_2|E0}M1pfE;dE1=3>RUeT_M@n6@w z1X94k9OF>-#;{zXE^;9=+~q&)ghQ*sV}wJ%&JSq%f&kMHVJw1*pDMo>ltR2R&eTb8 z{En>6*|h7+-otG?e7VMP<z>5!hxgt#^L5J-k*ze0SQi!Ln`})NkrD1bfN}=zCH%qi zbEA$Mn_;tPp;4^VvYUdzb%YyS`BML>{8^N5E+TOTY-#_kWy2;T<q$7-U)>Zilssxw z#GR|u%UVWq83}v#sCouC5jWAvtS?*Z+TA-w@4$+jo5;c=Frnur*6R5I2g4?B;D?i& z$ibJut0OmYf}S<=c)5v<dhT@3tj=0pjH28`T>8VSaVAdH^BM;;P0#Dx^Hnw=TkCvY zli5w}H7uBLAAE-^8JDLwCkZ4m*S@?T268C)R~`9rzghw~-99Ks2xjNUPXkgsI2D4# zI)+<8oVQng)Mj_k_EWrd{1d|0ugNaTym5Nls#vziodtrKI4~#Q!CL==BV19_D2idI zgLLai3J!w|Rgt->x>!dom00g`%EA#of!(1<b-fhHu9qU+^-?6fUW%00OOf<?Dbijq zMdItFNPWE&$*-3p{q<7p0KL!yj{JT!Y*3$n0*~{VK*VAt&R;yA_!h|b8xutDNFPsh zlJrOd>2jD06_De8g=hGcQLt;sjBISDeR_<f-Zw*iAaH-nbXAc#wYYaxX59p7s4LJ= z8@kT!uG)(VD{go<8QI+XBlH95W7m}}_`hX*$*4#QPF*v_<86w)@i0{nNs?uNw;kf< z+{h-Jkafll&$o7oZy5uoVTxq`g;du4NrJY?e39f&tzC@CCX8S6OvD^wt}F8|r36X; zfzYmmV!q`xl7-k3@|D*2(^%i5SOjCk96h27zVEB7hDFhNAA*)w--B-95msj2;Y!Ec zr~x)S^%<nglY2TTb;D4x^39}&vv%T5lTw)_(_BX_mNZ4hbVE{x(ncvJJ*px9{c1{1 z=I@-XABjz|7N8I7tE8}AY?$&=>*v{>gqsnmcN(gQ)J`BJ&wn;iA~k(&m|N0K-|UPv zM~2KfjQCx2zfFc-_E2aN;#lMdYMDWkXyMvD2FuTHyfLU{_-_Dz3-Ij4Mzvo_zMqm$ z$=4WV%JrG!cFkXm|4n~fO@G`M#8YD$ToPT-W{r%jxnZjJ1QMY?N_%iFoRy$oW~GW9 z5^XhoI6vZupz6uHbjqLC4?;cEm+~Vv4|Dj&EmOG`G-q%oo1eM@_{1*lJ7-t;f7=_F zqmg2o9IR6n52XYba>hN5Gup%%VsC`Ztr9!dkAv9aCLDf4YQY1a@*<0^j}zI0>IQVO z;u*1WJT%*N<KYigrIV~aR!0}?Mx>wiA?c|>5xt$I`HmwTUjCcr<Hntvct_{rdtnWW z@4@nRdwzJ0SO1cEwmsOpD7Ra7NOpNHxf|=vAs+{2ndX#T&iZmUtuKe{4AU=BcM{L0 zG=Cykq6=Cynl(mh18v?;%016<MX?m!UxDZEDG^=kcmPXbcCNUCCSF$;%Qb>z_in6e z>xQ=@HEd2`x>(<D7CG$!LcI7t7{-euUc>9@m(2xQ&h?&`Z?0+PveHEMLQHW@=<at4 z4Xf#ZRRrO0S)_OW55GiT%?%xWgCZ}qseeqW6b-cK^X2VXGM959hcfZIE%4}_KOsjV z-`L~*>OHl-t&4ZWUbO8D9{!@%J+4)*mV*=gqgD;oN`zC>I>R<0+Iqj`p1KYeU_r?} z6Lm!9{<H0j<VXEOr1AH12+q2mco6xjLt^c}t<wlfbhp+?&g!4{#7V)w1ar9)JMShH z5y|cSh_ck*m=HmEz#`sQqlYOxFgYTr^)@w;Z>sg|OcySZ*(sxg@ih1NlN^E9q(9Wc zW8ooT^d<{`u-QNPQ0DE9F9!cq)HF!WQn_gy|4*2E($|PZNe6w9{!oV+Z!OQSgdHRp zZzr=~rN=kSEt?Ise$DjNM(<R76eQ99ySb75G74L)BSq^&8U5ftoH!Viz0m~Mvw%zf z4VC<p*Ke5X8~-ks_;MvVdjCqE2g##^byj1nEbsA_xA$8nB}?OL(0afIJFDGw^qMqB zV+YL`3;-!k>P@@ak*IgwEDPZ8MCPqce$$!=>1aVj6j<;7oi{J*XVyj2bGW3*1)dNb zApR5f5vx};+V;E{B9Cp}t<}kEA<?*vRvJFzg|iEO)-te+T<>3tUOc{&EsNd8jl%AX zVwl-BJpJC>>CrjpCbL1V)EmM5=9FIB9N8(k6OLd#*v23Xg1sS{`6Fnswf0a|YIr;s zAv{&A1Nv1wG$ggx8HALN%s4YUilbPaLmrBxhUox6WKw$-Ks5jft+&|>DD1<KV!z(i z_tAf-4==WrH(vAqQ`ar3OI`@EY!`|WvB8`<@0{GI-Qo=^CTB+txq&!x!?~Y$bKyvE z+6C?cOwIw|1_xL$CvxMA;{I35hO3MRxZYF0793tzH)fXA-0(F|dPs$u?=>u*b*X2u z2B_;$uL0E&_*rKrwOSmntf(!^`5m5`0fSamItIOo1Fi$rmhZ4*i>f&AK6<$mtsLUA z%(N`!^W)|JA<GqYQ%w6%?WlSts^m)=#rH}RT_+!;0*T9|_`}#eN+O;uDqkUySz;2$ z6d|=nQli#h$ux=0-nhBY?-mg%ZK@!GA_(7WrMQ#8F5dwxCdy=ew#qr6BFYX$!lh-F z5vfDYRg+(fxF%n3O)ghqX0p?}E0s#)IkYF@6@NYR$tp}Bcu?e~j$%H-{E>O{^!y|? zSR%8AY6~IefAOc9QubZ?^*w2&o2l~qKK5`Wj>bc@5yExcO)J|v`KB4jywztP$n_W* z3s*5?zW?llRzQjZ2-_%o(io6;ryb5GORVDxN^z$h{;&q*R~2*1vJ?7iot3XzIu{PI z*@|GA&wIbp;fY{{&Ytg0Pl??gmqEqNPyh8S^HY|i%67l(ZG5zO3K`8MMN4^A*ZQ|U z0D5_|sbcW4`3Xztoovr^fE->+W^ogAW4p7rWG_do2Z2gw%txNr+?1tNXIHo`8D^5T zT$Zo>yOZTX9$*g*U@Hu^T!Q~@Anc6rK9LE7+rKz$|Buv=tzDY1Q^!#D;{Ixr@Jmhm zE63y9ux#f6Z+-Q6HLdiIG*T@SskWqE3npu`9Togbf1>^yy5wpYAhV;^%g(CSR!G*i zmWqnV&S5?6rjt0TS?}XGX8k=rz(`Tn2hLYdzZ6g=^vQ3m7&PCA@im4t61DHGVQANa zb!+x9$&;VDDcSIBbe`RJWN`s>1fFr2KZaNU+mrcOHU3Gs?G=Zj?zlnDu7MMhSicF< zQq*+sTIb+wT0;P6a2ur7CmOgm<&1UXcKtSu_f41-_!x}$Q05EXfA~aO@x&5=OZlLI z9QzVe5Ir_>r|Yqw?=qNw@}lU|%PGVW8$NMBj~dXGbb2`Hf71c|%&l*V>lG7D^6*I5 zmYE4(+-2sHqE(Eu==|0>5+a;_K)MM0fPOieG%v$LB7egscO#C?WDT!H=iNs#d@wxC zg@?}Oqe~twH-S*+>udJ6u5?_Z=NfeAIbAr^sXetpTkf;AlrK$x|F?i40$*$Vv049o z?3zB`z{}<PoWbC3{S(0d_b#M5XIFRvmuHbjY<0APE7<3UHVk?%Fj~vM-#h3%G3dPy zelLgr)u8uF2E7j(^!_;fP@ezlLGK3)dS3xK%i(Vx^j<&ceJ%7UhtCdrZy5Am*f9|P z-tzas=c(L&9PTe3QIDS99I42>8BOnjz{J6YN)Z6273BB*E>zP>flW^PSojXWtWSb# zh&=QQM7c(Jr~Ten*CWxMN7pomF7B3+oUcV;az-=@1N2-;bz3hruF?9G2QPe>5<X1T zgMZ&6mCP4!VB%NN<NRY7`nEJ<1o!!hW}~TlIaRwU+dq(`ME-(0%v$ScPh<NyXMlVc z17uGc4fhRaQB?M)Rag;rt}1NDCsX#yUIX9kU>ySfe89~St<S#_V#u5(8Wbmf&4<PD zeVyq|lsKGQd8B?JCD-s8ZCk-#8IPh1&Zy-;eDn@q2~Ru?;-~Y(>BH!}p^~Rrqz~jY zO-CU0L@IFh*U&bDY?IE->K?&|QmpS*nkhU}7|u%RRA#8uqtc}^BU<~^5mZ8hq#K>6 zT@|wnol)yy6cVU3<NP>hXMd1)H+5t$D_gYM_^%J-<14@nR0-$w1mfa4M<eDNs;yn8 z!jT*B{XqNrIlICGr}3j~+GvP%l*^YxcZC<=Cjb`h>*4*MrT&n3RZqBk*P?Awle~_Q z{3yiHc`qpmdlFHMYrV*t=pDaRe`udjF`9R!shh4!G%d|oucC^Dy;AH*4Ao(`xURz{ zbF1vb>WUwtrdqw)-?&YP3^c|RX=(aC^!ZgFPk#yQK>GJT|8ME9nV5XnlW!nBU)U91 z>mX<Exe$BLt=jOJ38RKKABUmPEhy%x$@c>Sd=?r$<;w3jb}j#ZZy);MVEYhtu7|@1 z8iz>yD~V!*$Ed$B%CIWw*Cl^|T0U!k|A)tx`43#yCC`Jh{Yt?%nwRUdsZmlUXB~`D zrZ#mZ%2-ChBJ>t}TtYLwp?AFI!vm1Ns{c~b2GaK%#A6Ke1@?}|#{gwkYnevI`KeB` z+N2(kVQHLBc4PV71INu;g5P*K!sui@{nmK7^RT8&(mRWtDWgNh4wTCMyO}Qw+nFCi zk6xNHp=f@WGoO3_5qY7{AO3v)Lw^qkJ9;9MLizqJ`Qg(Zj`33~=P8LW7}m^T`a>&9 z{vJBItmt3w`)dHgQazWJdik@f{pIdm3liRI{EqTM>{L*xzryk^p*o^GFi>9h+b#ch zU3rtM{n_r_%0sQYdQfo#`m;EHg{O3NNE2Hzhj3&QK0b+;C~>2)4Ayt6<?-C)gS`9& z2QyC$KZt8G`~#5<92x|kafu!9#(xysUz`Za{Oh5YSERRSEt-e)9+$|Qy)sVM(<?}1 z60BJ!2{s{7!@|A5Uv+@~t-j<ePZsm092<f*oQ32nwjr7Si|CTfKdN$P%+H;1kPb#B z^2vi?yIZx#&xGKsZoh*11~jeY`x!RPbmBq$wW4pJ{&Dl5_xeHaYqt%A&+0woPd9&J z#o-`>U7!|y>?k<tDb^;$`s#{h7Zcf`hW~owCjZ8Bi}<2U|B%M$_m;)j?VE8%<?!<| z%Z4^9(7L@=o!6XQ6g(fq^UL-;v9jvC=wnC6vWuFsuVQhmj%{5P8?&To%%U0b%1PUs zB5yQBR`N9#Da?qi>}neGOj88V<*}_jO=H#obLq!TksiXi&xmz(4k24p<mD!i+qyb7 zX7P;5NjsY&tDCZm_`0~VY0S&9$f9_5&DNgynC0<E4>5p->b3`qHJ5phhZ7M~gs7@% ziaxf&{k+mNY<YYbH{3+Bv8rJDgp;-2cGP(a*G0`?$@~{?k3ROb+n+3wXi-R_Q;09} zN;11DvvWxFdy7SmqpL0^GDT+bP`$*D9>v=;?y>4(LZrFJ;TPl2b#y$tYDU-cp@~dy z_10DKG0)WNn!@;)Rr*~;)9Sg)9f)TtV`CP@>q&V=#EW$;AHv&=*wN=>OJ7BdIAvZH zQ!Z$=a>bZMJkMx4dQw$(kv{Rd(#qwR<g<rldZEWH(8DNn%0R+^*eVD!jM757Na~d2 z#h~#qm3el#=)}^h)9A(ic^FT@?UHd1t7f%IMhU<V1C)#AF0P8_r)|S`mE)k%_M2n} z=-NOy&p*2m7MkDrGC6<B(rPkH&d)qG@Tbi+RVhS1E``KwTUI@OQG9$Cdy<Wea86pA z_&NZWIplgH0zM8ywNKs_Yrp8@F26d~enww*IlRroc0G*dVMn&defmTX`m|FIqZ17q zdG1f&CGA33CnF0Dx!BfM&&bEuZ6d<iHhj?FlEn1RSf;a@gxwSQ_|WR;yrrZvQ=PM= zy5gMaRV~et<*|OW<#>?<@!an5+&Li;;@P*N?K8+DBG__VCp#XZQZ72tEm9|Nr<<3r zdQrqkC?2q*HkVN*^K}R)_8-iwhWxn=k$NSusjvrQsO!d7v$PsH)Tm<O{=v{je*KNd z6Nj{E{H9oTCtTOmex~l)#)%--KI`LHR{_FY+{XtPeRS75HGJPe%J%I026FKyIE`fA z;sc30y^{$>*~Hm|bcW-}y2a=OS@XDYA@qX?c1r^mfqoP7sdbw&J0ah1)W+PE6}fAw zI61Bjx0i)zBi8M>e;t}yoL+2<bFEdJ3(KWhiYjz`)A;wB#`k7+?(XH|l~DXL77AW| z#3vsTh-LbyKYEd8`k~y*a#;n>_L?|TCHE$D6{<O-;pHdx$J@WaY4KHF-s|srXLS1% zUV3nj>xT#0W4v(B>qG-T3(zT8i8nT7-->59HD%v#%Jzz7$QJAB9o>E=mnUwDw||bD z@%D==<L%$5YCm%bXRG7wm+uZ>`<X*|QMqR-0M^t2vYwq{@BvHRT+#JLjlC!HjYzBY z)lI`zvK`e=gfjjN>*CuKwoUZyjnU2dsqTY`wPA|@n#96vlEfStdz6Q8X5+i!<Dbz0 zG4i@m^0L2${YY^^NYG?J*pThAi`px(i__cf=SOhw$S!h>&_1a$+eOBB`}sqVK7b)+ zmKjr=KQy}<uy>d{M#r+N;S7#UoVh!qr#%`MjoL3B(tb{5WBaVC_REJtn%&wj-rerG zYvKYL#Y<(=Owqdb;8DMO6_W&@gN+FyUg>z`DvM3vPD+{r$|%pS$iAdb$#ycZ3!^oX zvx{tKXBYGHj!Riw(3JvB+2<Hfg<BX4iR{M0@vs@Xmfd88j4o7YS;y~7e5VrJ@#K=> z7@)A7#Pa!hkUaD_KU|Y&fxH^1Y%Ds<63PRIVr-n=G{?(dS0%*+Uw<!u^9jwmW}15n z+5eounen_VOt>co_Lx}i;)B?R(fXy9wPmbB9}_Lh^h0l=E575kEY+L;Wvus!hS$=6 z)jg8qnxc>Wa|V|Ux{qGuw`QbDL^cx1J9TU<cjiIO`OB$%omQ?tpibn4xpPQWu>njF zzAAq>g%)+B0i5gXZK1wjqw_79?Ukv$Y_9`8=a?HahvkiD*^E*G_V8O4_4jj?{eWm> zW%}Ge{qd5Tr{;nh>R0Y$KSs_|^_t92s#-Rwsv>&MvNmnsMDLOlUQ55s$sJ}>esT_A z(Q~%N^B3>F_4Ul#yT`h=S7!U3rdKLBqQAPoseZLL{au3pvAcVh!Wb9n9bGWID%L)n z8HS@)4PA5IZJxfKusEuB5@-2qIlF-RUh%kUV5*PTuRzcrvALT2dS+Hf<`3bJ&?3%j zDJ*7HWMX^#)AY%UY3|5g+W6_)xC^*3x}e*>wKr9y8WPi=ZOXpVJbe{PBci$xN!G7z z&L31=^p~6X*($uY-zk>ZK9MjMFH>GVcLx{{oPdZ06>~5G>GyVo#xT?Xw&Rc~pt5al z`n9n8N=K|>W)dC0(daRLOYDic6je|#HQMrpP1O~JW`+q3cP+Nz7ObaO@ASPlP`~_@ z-b4M;)-SmP`tfpeRbJ%(5NF#W3X2D<H~ecmH3T;)cI;Yzb2*?{%a|{zZv_Yy%Mbip z%_mcPZj7C^{^uwL7jCv~Zo+2<_jg=pN^vV{VOv<Sl{SiC#)*mzXY=uZ@!PUtxj;60 z`Fk}YG<rwF8yqidX2S)gWSk5}Q&i<BA|g^D+eS;JAT$ETsd)@hn91Mv^2cl(s{$nb zS*b=BI0&A{_&?;*D@^ZRN4U?=oJaUSMIR!!fA&x9NaNlt8q6%ldh37eC?j_*Z}#(K zrU`ghQv87782ZbA%s7y-IJuksV=ZrL2}>+Ob#*XF(yGn=elGcUGLr~($$$y^<=b{{ zKEmzf+q!FOF7S4yl2*O%S6HrStFFz}F?!li^b?=~G#m#unvtqpwmWxv;S#)={Uwza zZ9Sblr6zsf>WH@1i_PqU55dk2Qngboj2!K^=~G+qX`9Jr-U$t9OjXb=E#>m#;xZ2p zcb?Wck}WiI9NYBBTf97TUpk0`Qf(vD==@#kZ9hiyyavvQEQ!uLQRxluMd#hB2X<(M z3${i1c<5Ec8WwG{{aeLF?4J{z_eXuh>*I^EL)G#knQi`#S^@g+Kdz`O(bm6EkT?C- zx-XJQ)3A@8TH&9_h}6di>|<QlhHmyE9Mk#4|KVR4mi7N4f@!pMs#U>NW2!>kY@LI& zPogj}7i^Zzw|1Bc$!_;`Hw-;_4vW!aVd8a4JBaxGRMhqbGAFX1v12*C$CmVa1i-x; zoqfgG8?U3VV5?>PEB=Uu1eRU{|49w|cl@XN*Yk~X&ZV4z_Qw~V<c_9JKAjX)@jj5T zj%!L)_`em%{R8kB76AJOTyF2018_k%?UmqF|3+8;$_<0<Z|4a9)Lr1W0pI&P0(9o7 z%*Yq_=bIu4uG`8kO-9yv4c#}?iLgwzp8tEgseu8{^Q^H+&i>$+SpToW)$pJyu7Ri) zDoHPg>E)x~%f5Q?c^SZ+50L8Rh=vwg7{r*Di!oc5fD>_Z{a1g_Sg35ZV-h#q;I+Vs z3}P|dtSc10cVXFgPyXn?S4KFrT4SB~9Q^2YEWg7X^FjXwy{?Pz2W9~M>EffFpa+f) z<t4z`0QfEgF0&5<{K?}1Kd31sekl2SlRpvUpJ(~Y_{o2o+{O<_1R&ovkg_hOiXRFH z*H$OLC2U0jFOSQr4K!Yoc^sa~SYPhqrcepGM$l4f{2Fu_yzho{LQAJIO#T;(OSy3? zXty1qd5LcHzscPjjG||}=?raj->Eok+TO6m|JRWc|6&L7OK-Z3+&(X|)Xy;7nUJ!J zZ@N^OvTKRy5%eR+t&@4@nCorbT)#TI2K_(UmZkCN?<&!iKe4^_ga=5Jldb>3pM-|4 zQ2Z8b<Z6m22v-2?|BPE&Btj0MY4+L1HmK-mOW|TN$=*hPJYH~}FQHewk50ibAoj5x zjF6+nr;?H@#;-D`CGObr_xTOSUs+arg{c}qVSg0ob1|_d#!DZjdKXmBfBjxfb!+{v zlD8NpHWO@xx&AEE_qYX_U<bsb(X?(R+Z3^kzh#SWKTc6*txYs^McekXfwQOoV{UNq z8a7#c#y5P|tS?!!W~e<uSkI}C1!m#mS?v;k7Ats@`=azB!NwHeAGWZ+|M3o9xOL+6 zUz^bwi4bjloup*`cOsq)w8#7b>5SXk60(o)WS~932b@cs4P<hD_>o@r>(Hh^Oe=)7 z_%M;LI>C!Dt%<v4qAtT-+zamlZ33g>9{r)y0-V%V%Jd(Z7I2Q}IgbuP3+SFyO=S%4 z(jj#1r>}k65#kcQ#X7#p-;faJEZBt*iZoO3zyCy_<riL}Xv(-JDB~(CBUV<%o>oTT z_W?gSeGHYz#Sw}V$x^FLzx6(KeYbz#dU{B$W}wZd811OZI3r&akG5!GGtMZX8<A<s z6lrTEdH$cuuM5im>;Jm^@BBZNzXWm{{_p&6@&D}qQ~A2@R^>1Jkv0bZH}qMhW$G^U z(f-3*1NHHH2fZf-z4!gAOrIX4|4PkCG9x9lT4fxvY<(`~rlht}h{i<zF~|9v{ZHS` zZtcmOfgwwD-U*VM4J<P4?IwZdhS&Kc9s+5A+Lhe)S&}swJ;d9d?mV|<H09BZ7M=H+ zN@3&p7sxVGc=9B`If9VtJyQ~YJ}+`?(e*X!jCKASnIqA6kH8SqGx@-0Lfszczw$@- z?PlddKF{Ps0{J{CtfCgX8}qe7Rbm;~5J!_rG2w^mumAbGA{DXvC7Mb!$&o$Y{`0zT ziI?Sy+gdl*9^KdIV~s?g4-X6lX$u<nXm73iFTmp2by^a%*5!EdJDE1Dl_O}SGiNXy zr91GIqPcJOzuXxxx79a-)IhIq`j-3fKO|vwgB*Zs`{bD5gKG2gZp<b5?Qtby*ATZ& z^+y?8Y6h*+r?c|IkJE?Q(ru<{aL)EOk0egYBBrLTtH$(nZ9B9LB5_STxY7(axn!Fv zdJjWf{NkTZ<gBKsSV!3u&y?~q7Z{q#I2!7eR0MNBb^g3-$VDMvrjUX9;!nuhE0K0a zQ2sxy{BQ6#6lu2#<bjgB0Qi6aSdx0+dChYGwwR;?;0td$<O>F0u8bZk_(n~4rSq?I zpN`QEnE6VL_y5D(`@qLtReArJWZEROFtM~)5Fdg&Xd<W$ptf#V@@*${24|pH)Pktp z4YG~!tQAwK(v{StI<w=f^;vuteNb6-)m0RH9u^Ui&7{!3{7G7%Eq~Ku;hUEJ18I{M zn&10#?)N)0X^Y}-)m>gRbHDfRx#!+{?z!ilb1vxX;ximPCWo-t=%4ZLHtUwRl4<C$ z(Mq@90pI6>_V!qN75tQc+wHX1PwrIyt6FCMJ29xx#C}F?1)~|HWeWdXrRi8;sJLSa z2No{&%dLusUqvPyC<!+LR4aqZ#D>)PwN`EC!X!sLjlLdD?_}VYX!0XwvLn}9m~Koe z^EIHkcy?aaf;@tEpZ`PK<1eMULOQ-k0^26_y3L*v^6Rl1V@o?*qTtS<pF_4ZrS&=- zonN}`h(TtC+{N32LtE&g@`;Du`Ith|jvV?8(PQLoW&Ie@l-J;%e?_OnJ%9Uq;0>;8 zn5@@!iq<G3T65i1;-0@yk#5}cPp#ky{s)x+-SWvETYepLKIEw<#Cnv8uKawfn>Wk( zJd%mt{xhcKTakZ}FBjzdtmUg1Z@T_#^4a20XTrsy8GmU|NOOJ6it_(KRj&{EFS0fV zS+BROW0~iVD)YBBP1W&a;X9gE;cTrSHCqBv#Waa3loe4$i~pVFqB4soz%c9Oa`BJi zQ>s9Rch>}J5;Jo5mzAj#x3H$CPMSr3&qZS#5wuOgy@Emfi%a{FyXs&Db2)1_*<Wx8 zUzPIEcRATW9Ty)TuDG756c20ToIO*UfvODob>EiWx*s}%KL?1D?N`KSGViCGT8>Y( z$^z4Ts{g$pTcc&`lyj^R|Dm5!Ci1l7+dr&=A>S^Xq+!~-)IBln%b&pYY+>GL=LGp7 zeEB=$;2Mk6e6F~4JKB%<=UW@%+4bP9cAuHa$SP$DGVEr1)cXEEVRFE;uS%i!JoGGc zpYcsS<K~%~_U_VzD4)mw{#KUGuS6X{%pfq9#x|rx*So!O`AV8#9OcNOay=czzyF`_ zQ(3^jf4rM5-Z>PwyOnnRhj5Uu0sP-|_b7(GiyT$Ql+XS1t^fb!bCvc-Tm;=}CVqBO z;J5*Y!V^vCa8#TWPT~2<@=2i)oM@$Yeur-1$^C2)I{cJF=q%tJtC0K7p9BnYYq%Ei zGh8|%^zwpZctp?>nN^_nmq{APt@Ka*wjB|8B|6sAL{z5m11&Wj5$d5O()HT93~b7K zuQr<US>bNJm|7FxmCk(@rMi7y_GcpCZP}k`qv6<)jO@gPR$I?5(e7j{fnk(8U6}Ak zXT!IFUzXr!v><L*t050z)67gx9-(ov%x&2qtDhgRw(g?#s-Xs^KPcJ$q(jMh#Em^O zyy?fsKuLK&)Xs1hb4tgN3&P__CH7JUbCTpB@t?XGpD-f874)kkXggzVd;ASI_wW3h z+8(-wsT<~ht@FU-6^@@i>ruv8h+;jgpsFL!8(?NS(Zq-6j&Ex9gnadi*Q);xUWpaI z{=g%@zkVUMT)!S9{{8iL2K8U_I_e(_zx?O^{`!CWj}HEu|KR#R|GMhGF{pp$>!^P$ zeolE^^<Ns)|K!HskN>gwx%<%T!A~@(f9W4wKYlD<2mU*uN}50EC;w3R4<fbt{o^}1 zsQ-m0et-RA@sFh8b<}@{Xdm!TEd1{Cs@B)o`rkLEe%&8EKK8u&Z%2GzcEor65#PVu zGPZoj5#J{t@x6BQ*!-V6;=5Vj;r&%U!u@r&T0afkwduDmJB#n^EFNX@YO}MVv0r%O zv$MvbKxJv;31ny0k~kqdtB%Cuva{-O3u}qT5y;M(Kw>OAYa)p!WM>_p_a<862?VmU zVkDlJoz+0%r0lFWaDQxxlL%yIoyf&iqSF6Px-hE|m9*}@C{6<aU}|>OD|rv?7BatT z0oprE05#|AtkK0Asi0E7kn*k4Y3uIey0KUX+c!NsYnWT>VS>}LvqpkoQ+5_Evn;kT zJL^yoRBJ&{?FB)#s9@0KEtUSVk$0PhFuc@)L}6}(E7uw8Vqg9~Yt$=v=vk~sap6?R z<th}s61is*%^TZV)+Jijd-Z&7Bv3qb8uzcdxjnEk_NAr#n#LV!0H!~P|Nq>RQe$cE zZ)<rZ(Xu&FKj`It+t#eG$6f54v(Ihh^hz_&c?TXL_4JkAj2+jmLX!+j<Jg@zghM6j zK>z8^BwNj${zO~zmIUV1CkJdm`8_;Yh4KFHgF{Pg6Fbsg=Ptm5M-kWI<sNI36y+<< z@oB-#gW8(0x_t?qK}w?(kZ3+I!&jNA*zDnq97j!{<cvLb*BI;GK?0k6o8DPu-^NyF zMFJ&>+{4YA6EjvOVi)vs68Bn0TZVZ@v2;}bMs7IKyvD2Fi1Js<FfSo^^&1lPDEQ!; zv^O&6EuH68wG87_R7lAkNSr=g7d>IdtJnRj-kERW1%}UlRIL0W&v?;9ZWD@i0MY$? z1WmdXxnlDcG`KG)^6W29W^!A80xv(!I(y>y(?=35YiDIA@|q+Gm_0ty7J0%O*pZm= z#AkUmb+74{_U-%`-NY>_Mnf<wRrFRiud8kxXX^e!MVa$LL|}+8DYX1iG>O~z2lCF? zqa$lm?2Avs8b~3e%|?TjqWfq6z!wj4bZG57ap`gIxP=1={QPHY?dG@14Knmp+O*_9 zLjJV`VUUKb*M2d4;5Ustr{8|R65q_Pe-qW8r+Rru85^7P{>6eXk5fafoo^E>uKeh@ zuGY}Xe<Q}X#2nEzI21~H_fkid_iKt*-5XW#9{v55m?_vtF*9@h``5vE7skDF{UIHa z&#F}#M&sgeTKPv@tNr$vU}`c^Du-9*ac63KBD|0XyIJ|1m;~B}1lm}VVHFawiA4HD zMm8sK!&p52z=1^bNXv%8S+U~w8cJT7TXWz*Am`%sQ7^ZtWrIcZP@Z*tW%uy-*q0up zhHig+?6zTw%!Ip2B*25TG1REBVugFmT`&WI{@P7~ky~TDKXGLoTYfV+sSFTZ8geIP z`;m18&wv<>IAk;?kxxX{g!b%bW6#d}dDx!(R`>O{C_i&!u9#$NgG%R*qT1y=adaQ9 zldz;e);&W2Z;f`24+hDHm~!J1@1+J)*W%->@S{$5G5Vmkvs$yaMuTvI)7$bBs3}>v z)kG;Ry}xt=w?|I8m&UK0!E?{CFF&l_F#uj+P6Yfc$qhGeZa#D-YHfTiP0%ADry3g9 zUm-ozP;s1GK<|&&7)}GD8Z_a?5Q0Pw)wr2-wTo!z1U+9M({QN(Eopfi6*kBa$r>u} zz+)(wc&D$@fvE-Rx>ss-q@!K}Eg;#;-RGVDm{&XuVR%{J^{W!uYvO0oY?cZVRJwFX zlEn)CAC*ll3Q>ZS+6tF+B?_(R!yRl{)3Ofo%44l957obzd#Ghy%kJXA)9P1ACv}^5 z`i9(#E$iA^28gp5{dv(leIPMo=-QJ(@^q+5Wb@fyF+}IqyhW~vTZ$KCC!Us~+Vl*L zJ&;0Pw>>lw)xO;0u`kJI8mHgnUrG#dcb5o4_ow)q1j0ceEX;e!0U23m(hR5n0Sa0p z(k?`TN|<TGbRi$T77leq!Q??YLHt58@d1t(VPt<=7l=R<y5lXAYwNHXw-LcP@Gjg5 z&y0{s0=JpX49H)yMq*!@r!zh>hHriWPKqHBiLn#hh`+i^cRP|3e3L1l#9OFZbVSp? zYZ@*WnEt#?{98#=Y%P(;W;Ye4mK{V*(#;HKKIL@}p6j1Yw5l=^R_KXKhOG8KPkjDn z_em*HDx#CQsYdVpGXZbtLWl-5<w{W|eiQuYccy-a;xO#p&kdt`l<P(9b;jNcS4RO` zUWj<iVJP&LqFJHEEZl4LNo)^BTa$$gj}Ij0ic&9?6?YcQ{F^Fb&|sX%dc2vabe<P( zyZz(SWRVI6Enk#R*RpCpkB1YSbf&Avh2zZQS&^did18b>FVN4&(KDlwfN<e?Ai^R2 zOYf%_X|`&Cr<YM!^X!RM0+oz$FHxcfXlEQ={M-;OF$|T%)}^l)=KV?k$Wc~^GQlhe z@a~l_ChynB^Y>n4pb&EXHOJE>LcVmw2>HJsbc7s1Y>AL}5f&l0UpJi7l+3~xA)h51 zUcw89&K5__h`#RKW7Ff-Xx9_3YxiiZXteNh*yyj(Y1H(Yu$1}nc6|gCYv^qpa6|Ul zy~o2o&BMm^{&zl)#3O%EU2bLZ*=ql5e6<ADjwO98r$5N;VZPqIP5hSymQw!xJbb*i z^KAbe?yEsxli9WLy?+W(74%1O759Y{wam}E%<rgv1<^r8{;)m2Tcm+?ZFR2t3UwMk zVD==yQb@!brSs7!SxOTaVVEGm7T~e<Pb{Hl+`D4txdyf4A3RitQyN(K$(QW!YwSD; zMcs(|sN;Dw7B8`jcU*O#uePT1%}P|9GVDZ8cdq=3SKC+L3ipb1xqpFtPIv3PR9K(P zPvW)e&U$}lew;+JX9&GQ4qOK>>7s<G_pZ_O8+sENLj6k@WhVh~LDvK9*Lx3?hvF#w zP$5F!B#eup*S0i&1~tlcWNu~Wv%Hh=H$q_H_z93T|EkYQv_(?Q;&qY_ewM7b@sqq5 z`y6L!KNZ~hzjk%#=~IyB<m1f`I@!~8WGFq0qD7?HKHdN3KZ}kLlF&Q!hk(EsLxW9z zVN?RiRsPon4DKm`Z5)6sZjvQ`o!G@QtMF&T`?tpd7XtSu|A9_eznsmzru0n*Xu+WG zd@z~MK&>u?)eLXfbDzOa#Ag3{bP)mCtx0jos{NO${X7YG_+3u5JAVj#ZhpD<0?!F1 zHSc;%=^>;4sq3^JCip*G%x^gNE~IFAydA<Tzu{;9R;|!DuYKd|N4#rE{{r*)-Iem( zW6ocjwz3vxVfOj|rq-#A$z-)9^_=~IU_Tqf51VaOz`O;T%;trcdrb}IqJ`iscRy1K zsb<du+PcJ_XUA1>(35%~o{?Ws9*MZWM{?|5oK>Cox%G8&!@VYU=fG7fnD!s`a_jf^ zwZ?j6HyOM4qDZ=M5$Cc2{O7m#;a?^?$J^h_YiNHh!jGo|(}GL4Z`|pDZ|=KzDI99^ z!8-8;l$@1~PEsu?)5ATgmN$j9Oj4kGu(9(VFLrM#k}7<<)ab1J(K&UUKT%`LKf=sX zb@F;-Kmo0Q7R1XhB60t!Xy?ab_g)Z57CuCdHT$C%1ML0ug}3^4zCCtlb&}`*@)_(r zFNpx7T;s&<_2e(7oc({3-J7v;@j&d}3sE~>4|bMsAdby4va=8B5$pM1!p@x^qM3`T z_eVd><i_jba<JNU@Y-0<$LUSi!N0=^w*~$t)+2Ov9qhbY+JLb{Upn7bmu%k%0A4oQ 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	mi_>rC`Z2LZqbp=w#-pS0XeJ71 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ʧ@|?PJs?Mo7r{bJ?bE?g$HK);>HglTHX)&k4oceN_i+GaL zS;T>ywjzE*oQ8M|aTnq%#8HTs5Emi-L7c;BC8v>yH#lA7^bq%c?)QXX-0x%eY|urq zBOVaD46_D{i+t|bk>?#d@~>k@UUuxr*Nz=|+_59SJ9gxK$BumP*pVk5J3nu5-_IS~ z_wxbwc}5UBo)yH7X9lrz{=fS?1BhM8&L{j#!u!hm$ot0o#QVbgz}xO^_O^N({d~et zB^(!X9L#Yq$GIHWavaNXE61rEmvS7+aVN)_h%XUWBA!GXiTDw5BjQEGiHHvo7a|@+ z9EkW2aUbG6#CeGC5Z57|LmY?r4RIUdHN<I%&k&a(9zz_4_zQ6t;w{8kh^-J)A(q1V z>$r*IB#w(X4&t~6@ebk~#5ag(FfD(6KH$Ee6S(i^1@8N~f&0!saGyMc*g5XvI1BL= z;wr>bSU&L+;wHpPh>;K*AtpjBgyBx#yH6TFcBJ)VN18u&r2S(@9zg8K3y2+g0<j}+ zAa>*t#E!gz*pX)tJMs=<=eUyNNRAshPUN_d<3Nu4IL_m^j^j9v+c-|+xQyd4j=MO{ z;<$?AD2|&rPU5(T;~<WEIL_g?hT|B-FNj+ZuOLoAe1f<H@d)A<(|5N{yPKzxC? z0`Uam2*eMF8xSubPC$HsxB&40;sD(Lx%YG5=bq2~p4?S(RJp@*cjwN|U7hnK|8xF< z`{W_Sj=Y4}k*5$l#}6DQa9qG~0N?w4&-cCF_jupieNXqj-1l(byM530-J1I}_h|0V z+?%;Cb5G`e%)OZVF!x~YzubGd?{d%Oe#^a<`z-fZ?yux#a#tnSlAKEJq})ZhgL3!e z&Pfg<xr*E^uM)l?_sDdA^gYq{!ek%BA94QFfOrvhRF?AWhH^kt7nD_!GtQTT@>vb| zwnomUt_Q4ICuhiQb_VX}(m_stUj;b)YQU0P0n2U!#ncg<=LUhri=XJe7O?hpptJ4) z_w)6j;P>H-eHbU@quBlQq<TUiv7T4gKvO>eI+|zY^8%Ii6!;B*rf&kgdkC=W%>upj zB<QW6X;LoUf5tlCeElz23-3($c|Qxf=G~xWxDI{+{c;R&?ft?*<cjzutOs%te+AI& z*RU=E)&*&?-vG4w2q+M)j*kjY@%OPp$WQzuIScq-fTe$mwesh{aP?e(^XUIzmHZVT z>|X;H<$U@yX4BsbO-Jt7=P|E>%&SvaNnZv$dqgO`M};RzESal|mIuyY){%df^2wH+ zCHLi+b>ubsjLW~Tz?`I}qh|hjm`{s6sCdKg{HX1owjq*zxJdZ9&BrTWFVD~YX8H2_ zrJ#g8Ufy3U-BQAQ<>vF{yZ&B`m3DV-RX47*eEZU}X}a$QtnKXh<>MEX?{(n%&8IH| z8>Ym|29fD_mGn<q=F<Oi36<thfcV($XUVWzu(V>C4}}o<_WHYL?C<V-e`xqU7Ogpq z$*1%5&3rGn(I?*62(6ms!|(cA9G>OJZ?XL1Fo$#b_Qmyn7r0Cwp7#|tez0k{mlfxy ze=9t7Xj%kI&jpftIYmC9Z2o&(A3|1dR~(OV^u*y*5?&PVOMt`qbaDQK)a1x52B+in z{&$>5{I{QdsHGe|{fNUG{|5Q6Z25}wmMuU3S<5cCaM_9#7hQbGvSrIIUAFw$@S@-H z=PY~f%4N@6_T1$cta$zl81TY0^tsEIU+|)3FZK_3<?khzUCuA~>xvaCUV8DB8oYeP z%PzjkW2%3(y-F(lS6a60xvQ34^YV+XwSd*?Tlf_hU1#5=AY{JA-sx$i3s$UH(XxCk z-mkx5*|K#Euv#IYwJgzIzGB7m+m>H&e&+YAi!aRlF1lp#-=*hyt^Z~Iio8DT#xeR= z{j%)j->banQInrN^RT|}v-gwse$4!K`+mgU`^*paz1`kVd`a^unf&hY&t>IOy;aTR z^Ot(xD!SCo+bnX)K`stbgnMpy61PBLlnmEyM?-438HMke!EMZ{$tUY|0g*PB8xByn zv3gW%80k5f8oJ*Ts7(55yQ2uLwbf}!jT^uI(HdA(P9)Kul%%r%IeB*|7@i-gn)W`q zCQK1)+ytRQ3Va_vYz@$B7bRFnqZ*bWsytg8HmNDGu%l}*^z{x52DMcUj*VO~DDR(} znhcw$SOez7<o-7QtK*aElG*^BEF0Q4;<-882!A8qH^RROzN!vurMx?DFxYD%o<9EI z1WdJ#qN3<z4}}@C@%f?g<Q>Wx#;Z^YJu*_A(JboqR=djGiaQdugRQmMiE&u(ltlax z%=We_IS3=rU<e!Pdiz^c-r<IHD{fcg#wK)e)TWbfNzE9Uk&?<JAJq0}@`{`3nH;3H zNq)S0i<jE{6V<?p6kv~UJg9;^dbl-I54<Q7XmC1AjI}~%&d7fG1B#ldDY_LG7)Brz zJl2Z4f7LWx3&Q95>8Wf~8Ub(hZ_ung4TQm~iJ8-iD|ZKnW=HEV=~p{+xRrf{rqc9n zHTr};weHiBFrA>q2Yj+B6av-v!=IZ)Vk&*X?VnlP)#oK3^s+P-Gi_pIt~I%E1Jx(E z*D)~%H4@0Kj;vafzQ(GXZN=C@J0Wy=9}Wj5hQh&v2eTD(K(Ivrk}s$}gcqCtee+j* zQNR291@?Za`OnY2ztG-G=C|bDTkZWu^Ix5Nzb*IPnS0-nd%q+1-kW<Lu=l;@d;7-h z{ebyz$%Vf&_x}Fe`-gMyf0ldyMDG2sa_?Wry?-P3zL0xg`EYi8R^{H?bMGCw_ukz5 zJ-PRh-249A`&90IF8BV%-20nz??0J)e@E{9eYy8v&%J*%_x{P;`)70S59i(=%f0_& z?)}13+5WvU_kK<8{rcSdhTQw++<RB<y)XBEU+(>lx%ao`-rt^kKbm{r+10VFtG^<5 zw<^556}oow9#^Gr&%n-rYhBbl*SV*^pLTFnA>BZ#HV;M(pqoyTG3xgIj$Kfj%3Szr zc|+|klJX;da>WX|=#Xr%ANufM7oh{1@^*C%c0k=+q6Q*?M#mn}{sy~Ee&kQ`k7fEA ze#653oxVSe@`o1g>FCGdpH9LxLj;TNmlgUN9{2LM-~%3nXYzl_!_z8BRpdV;S@~6~ zKmO*=zo&l6{aXR!k@??KSHqwrK7IzKv0noJ%L@z7y%PRc%zwoEubTfg^B*<;G4sEU zdS8Zg&nzt5MjLmJr{5*NAK3SA*!ORm|AhHZnt$5-Gv<HG{BN5N8{LxsckKPU=KrJl z|789@oBx#gPn-We^S^IC?J+(J&r=u>sxo@o{O`d~812J6ZT&;LG!hR!Df91LptfVa zXYs%9=`H;G9&YdCtTH|Om_GZ8K7Z%q;ds$sZa(b*G5iYiX;+Nz92@#CGoO9UcT`h+ zax_phILunlXC4aRC5KSL!+77fc0J?mwDzsC@O$Ai{p-!In7_~bA@hgLA2FZkG}Beh zA2Wa4d@9&x_=NfQnSa0eljcvEKW%=^d@3Je`UlLPHUAm-91m*mV)zg2{rlFgGcf7? z0(^VM-k-TGfY%uyBc%QDgNL+#&>hnMFSqaK+55Hj&avUM+TO1-e~tO<TZU7|7V9x@ zehYktQO^ne>&<5z#=pVd55VWQb@t9SG5jL)TkZQn_>9Mkob(Ty|DgGAF#m_vu4fR5 zHjaK^?f${ly56x)WnF%4;kh_r2;pxQZlgq9c+}n>GyiYx`=`wRwE6#F@Z#_6{j>J| zIrBen{uj*uqWM_=GWQ?0cfbL82OJRp?=8Pm77n-|-@jz<UpD_M=09To=NGQVISJvI zw&Sbz{U7Z8Yxe%A`G7N$?`JLi3zq(IYxn2u`{&Jn%+ft>{ueF&*X{ia7VnGZ1Aa;V z4_my4?fW+@{x{7(W#L~k|CGi1vb{fH@xEl=pS1VW=6~Jl`(+FNiusS2f5zf{)!x5m z{<rM=sfC3VgfU+-{~MOyw`|=!YVp5q@gK8yjN3B8DC`%K9{Yv(*e}HY;=;lOgjo-p zkNrcw1D;F2V7w*$x2>G7SbMR*NIcX_(xYDDW51E_C{Nz8A4oorSh}y8kNrsEVgC^y z`;PBtk`DC~AN3Lco7P_JCsr?A4_~wV9=G;Bn&hwZ>^n*S>wNo$#lw7+c42;rkNrvV z#r`Bd_DQMNcP%~EgS?~NRv&#w|HyZ=TfU=R;-g*SBOmdRUVQ9}(oT$vyd%B%sE_!l zkNB9E{$271z9IW5hN|!<YFsmV`KjHE3PH)AsDdP|mQ4Au=<o&i!nBBMc1z{+n8ru) zc;ts$<{)ID1fz-4RI#cA4ggi;n6CP4I;y$C1$Nv^ug*5hWLAwUsG1#8!mloo1}_yf zdSX<xE;Xr*gl5Yx$U`)zQxT9>xCF|X8pzR+suKb{sa->`qM*7zM_{;M&eV&7yJf$E zY~@=12$?L1R);QMYInj#ed^VOPC8LRTGS-H+aIjwOM}!n04rXtz0;G2ldrDg$5kgL z0dln;1tkjcwSrXfH3il38O;IpbXK??qC&o4JyC8(tw6Mg0s9zPgBaaDFNTM}H&X)# zkw!~!H+1@;OBd7DDvDa6g$()#=Sv6bWzh~ek4^eq(u<N@))E#xvbBuz@qTKeb+uVV zl6ov9J+yWD{ODA@gQf|zG&NBd#?&TEBpP?XToXHC(7(1;RE4B(;3|qD56nVp^0-A5 zd4w)c=E}cSmje`rQaf~MYyv90^pmO{QB4t|x(*qIG<^n0NUX*L)R<?#q};}IqI#-e z9jtDD<sr?pNg#}}CB4v?trk3x(XW-v+a_fu7VY9@ODndEVlUw~ug3a@D$JqT#3&cp zz?#A$G*>6mRCz6`yK&v=g@4WGBiEl^xE5uchv$WOK7GUKg-7sw7thmp{;B2k!k?}^ zy|8Zm>4i)2th@2_!h70JFMJH&`F9Wg4tU<)c6#ACc-X_#eMp5b@&`4YfEf)PDAc1G z>-SARDl`lShs5ql1shJP<9Fn6^N!QuT(Vv~Ev6!NYq$x0|5c|KF5Gl_;Y090is$2a zK7+^gsTIO6sy=q>BzI4Y-YZ(uM(?HOv`ti<CfbxBiMdFu87Rw9qdt&jN$lv1riOIt znM_sdcanlRn`$QV`Zt)$K2dC4l^!XqH$s-WPg_61HV=ErcLylh8X5tUxU{*nUOQfQ zFVT7hl}a!HTEAOAwU*Z33*dq;U>Z-(Ypt5v{}DSeC=7b6s)uu?VWgn-otSHQR^fRu zo=flqKK6rptkpBVrD7%8bmP&=Y8W;e8`)&Ks&5r#uP`xMJ4jVoR8)(g>a1u%h1ND~ z|C?x#0)I#ttxL$qI_w=z&JF2jlF#y6YJYM)U>UG8)%b{6A{iN`%0Aj}Fw;zh12<P` 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	U2w`P3!_eU8}% z?>l)b2A@>K<9Zlrz7}l52>U!v;xJS2H!+n&eBqSL2mvcSAvM6M6odO_ax$o2`y`6X z+d}ywlH+_}QYSnDFb;Bn22qr#0=&3-j;oeZ1g<XG8+cK|pz3f)%FYytciN@E_~9>5 zVc<(}7-hh*Fu?rRT3E{FwIaFsG3=Cq#!_9b1UAW4u5rwS76hb(2^gWwof&q^mc9kE zA!tqHWioGofVla`#Pyk?OpEfPa6~0|egwNlFXiE2iUko8YrzDqmw>R>B~h*@t_~bi ze;;v5m>-E*$O9bts%c^c1ssQcVMZeJoLJ7<2efeh44uN=p9C99b(xURB%HFt1)alA z#(PtIG^zw1BbuxOJVl^X36%hsf)a<{I0|!=soz-_><Lo_>@`yY2K4yYRwZcz0wNO@ z!v(ajm`<#4Ko;6CMFh|BWEZcDd8v>cal~XbLWVHi800JWF#<C>L?|e(pVC_TLQ@(% zWaMWC@M*boMBiYm0mlMX2%N*>xE$gSFO&o}VSuo9N_ZOVXcPv+(J*K?)>RGLQCfxg z+yaS>l2QeP+6OMThj(UjDlFd{woQogI~%JT%}B9=%l3vBGL(Q2?HFNwPWi<<Tx`CE zYbY6m@X!c(_(2+E^A{V<GuRQZP$YXvb{BNkMLr+u&m&dgOQRg2pgKC85;XR13iF|Z zk{8Ouw_EOo52Y<ENV#FRiF$H~8Ig%O-YwO7BSj>1X=J78<TRg94^K*I)|z|P7DI=i z%^p@J#If)Y-Du*f3WGqGx0fauC0$M;sCYuWj{|fdHcZsCF<+36*kMq(h)C!mfSg8w zr?j9O0Xj-^4@1)1fW?HJR^+5TP00!J_V5FF_@GX^J3{EDwjhAg{0b1)ngGIGPn(l; zaX<196qy9oNMB?iiEHBfUOlMWWAqI_=HhYY9P5I_rq4+=_>$LNSUSSA5MW~z`v}<$ zv6)`0NNgV6hiKL07zP#;1b$*I;5gGD3g2K92U`c4DK}4!b{xWw-N``P0?yop`3 z-POU6NzQzUhU6cpc~>%IWi+I&#_HZvaE30*HC(s0hA3)c&@+BpG_~BIF$hO6tPT5J zT3{5Z@II`QI|+%-_Ocu;g*tVtbr7&$s2rdbnWNQ**e$CUzYL*ql-N_c^-Z${Ox7hi z$~VI^qc&7$I>Hg}!Wz}#jw?1P)&}u3HqG(^WzU~yfNNS`wCBgO^tOv<sEeU&Q(Z9% zjk-z;f$RipAOMo7Al)Oo(J8+{f%r?f$t2p{SH~F_+_>H+DHPTMCfS11sgzqO1V{69 z47;W~VgXYOnAi?9A|RF!QCA7W(7EEEvXo<JTAYo@*DO;{v$;|Uj47gnbA-f=B@niD zyqwI3uYJQKxNH|xxW+~~w%nHO${U1<FJYP7aMI?GyhO?=WDahBakF7u=@W=@BIq=v z9wXbgZa+)odwNIVcj-PQK-e|hH)8VQHWog3f!fOzEcuy>tK|?6PO7ogi}~&+KRioi z7lLbmiW`A<RIs;jO_$hX`39y8x%r;yrHuD07E;S{1wn(2Cf|9+$_2ZzkdC~7czR`; zGqPA%h&gHOmUSA<oNvkQZZ*o}k<t6~F4C44MPL=N2wW^kq9x1>?;=I0)J8XCy22wl zclilqt#*Oo1i@p7U8Eth4Gj-G`Biurnd-^MTI{WPkJstH2+g?S6F6vs6ePxq2?{ul zzcd4qBzsbk&3k8Iw@8*w>sSa*{K_6tun4Jau6xQk!<&-WrEn+2zrpdkm~tUSKGS_` zxDV>7+r8$7XF*yMM|O0lJA2qeO~82=jXpP)x?#RwKGN$N_KyoT5}n=cXB`@~tnRaZ zcWchwrQ@zS?<OSp!co`~W!=HA7QjbvirY%Zl(4us*$}9s)VBWPTk6eChCrZl4G-Th z$$F}9YAH;X#e5765p*=0#kI4SDBN!1>E0q5vF+p{Ua1{WQnF#hz`^PQZyK9vZAL_X z*^-zAK0#a&=BABBFt$Y2c*k{dUhxpXwJui^7nYEF2g1m?0-TW$#=^BJH;{S={5HFf zyVvcOy?3%F`-XQJY=>27M4>SzJ(5N=P9Y|Fmk|o9<bb<4vChSO=+a<e25AnbITzdl zJp~FH!_cEC1jT=P7zT-BeGZEzO1@%$V=a#6Te7iAOiyQviPqmUx%Fnec*eymsbW87 zv-UQvK}PasvUZm2TH_F#*PTw?sUeF8GU`V*OXfZFx{uPw19Y;;10-3U`m)LMCo;Ku z=*6nD`7Je4|0E(3qL(trwuk|C^0<_X1)ocw(e940K`KVGAU@+q$THt&KUY;>c|Yf@ zlp^_yaNKt=p7I>hFTVH8!}q}NmZf*5=3F8Ey#IHXaw&YFotR^DZfpu6%2_f)-)!um zVvLxc`7CaCxEEDy+e}(>rjgbLHMv|v3l`FsX37FW?6u_3aB+Q4CU71lcSwK1LIhI= zhqH@00e_zor-s>mh^8#1)^+zan9OjmUL?)E2VAJ`HsE)W)_gym4gG>mV@A_e<T|>X zKgDh|%a`1S`6x2d0PoS{yY4KfQ0TUy7-7Al6^sits7y8Il=>lP)sd{of<;yG=Iqe8 zxFtP0KR>&K%^N<!>@>Xrv3*AH%<<&*-Z?fx5;zd*pcGJ#af5j{8RCehgC|>>=VN?h z*<@MrX3pNl81=h(AL*V}+46g@Zy!c>E=PEs=0q;`>-Hcoj;?IG-sdZ5E0G%1Sq^h~ z;2;uVuksnu=+(9=U|~HNA3`H(@W)LAM8k-n)0po}WTk{B9g5wf^pQLUAxHaoP*|#o za9u=Rdj_7Sm?0e=Ud}s6DJNsCeXF6szDR=~X$W_Y3D-G2^Z;J9@V!m#=)4aO7|chZ zjILE3;vjj}EJ_jF(^(Y*3D=Y!0S)LVq`L@o&=06*6*Ljoz$5u6q?UD`#Bi(XI(0XC zg!|s=_GPG{VDDY1klj~tXax@38O7~eD*ePyc`}ZJPA6=?@t{sdBJ;RKRJB{kL|Sx) zYpls)fy}A;L^7x72xX4$ilxe3s74PSSAp?WOWSe60oYfEqmrmojSdADC`Ntji+^7C zOYbbCpU)T&;m(*$NoWR}-izyK1PkhC*hRfyXjYxE><G}CaPOK8xYh%20AL4VZ*=tF zHLTvK=qE2|&UY=~Pwf@!5<>f%MvQm<xC}i_CAGbT>1Flkj0m>QB3u>^P9Wq6@+c`+ zL3dpth@9QQ6-ZxnQYk!kvzeP)_R^$YI<>09>AJ~7FXfp;Be_0}RN?$296LHMUS4oX z*f$;vxpu~4A*DUk)Za;E9bma0^WGC?=Y7|k!@Q3*N4}tu4+S4dpp!-J=r2aWQ846N zM;NWr*nzb+^m;MAN|v>U-!ha<Ay%v7V|Bml(BG3RD(!wsMt9Ou;wc=g2Nh>L)a@G+ zOJ_S(r*v1ujL2-Sa@7=?BRsz%J(h@a2^T5^$#H4ES7QsZyEK-R_uW__zE@)dQEErG z*K7lHA1&!p-lZ`{eBbQ}^ml2}$xt4?Qg<=0RYmu>%xaGgVvsdgZJ21Hiow81j8Ka5 z$W^VZz6>!?*D0PpI&{q#(~*(A*<r47rmx9Qs$9IdG%>3lW%U_%fnpaiB8aY=-NfTL zx}aq(4rKPMch7u8@D_unIsNnAl+8(x(iXTDwb1bPG(wtJN**_JL1(7q?bVdh1t?<+ z#~&k3a+il<pmr87F>nk8>^<t-rR>(+UJjw_%e!8r9#Fy5Qapczg@x`c_K^{PHynx# zj|O<{7W3Yt4JBPq3p9*{ukV$Mi*+JV`XEj=Xc-oXNv?k#x?{O`98~xSK`V<`ca~I_ z7o(p`sKa$EPQy8Wu?~_pKXVofBFYvuI*zG19Wa_%JtfxyDZH(BWP;<NJN!ApJ;t$@ z*bk<Dc3EC1^zo$jM2_8g>cg0)<sK(f%04)54zPQiOmV0qtqKlJ>zex^<<|aw$PxH! zW!{xK4QhYkesl{87keA}%6f#mzf`_I56f9N3C$7reR_~*E3{pXgjB{LnH+Nu*Od|n zi!gU?Do&m_hN+2rDO_oKWW^sPNZ4<txRgtWCO4qX2b5=2zmV@og{XDrx7L<j5Oxhp z7F`b)2TD4;^r!_z(0?4{%auICoCx~GxJ>63Mj4%1jwZyg!6HQu&f#OUH&=~!#Cu&3 zfY6bsGcNa#;T-P|7MYTWha8J2y@&)_KLN1S$E6o;va!-bF~Didz)p@i$z(-is7%`R zA%_oI%Ga`fq?qQ;Z+{mmEb{S~d;wWF?TdYq*C!XTl1ETh*^am*x=U5>R=;Adf-7%g z!PkkgWH-gL?M&bolTqimY^lA*HYn@6aPCBO$WZuLMHJsdG{vK0Gn~JNnb1q+4ljD~ zensjfSWrTgz!Mr8!E5O_go`nFV?y?FG5jZWQD{>j)%zfwK(QXCPA&9dx!FCWC+G;L z!E#?GXoY@ivowNFEsIuL%pjY#;c7@&aAhs>+t=R9BX&Z~!~M8!#x*)=#F*Dnr2tx3 zI}~6@T0D;L%RqxZ^nIwU<A*4Iy$2I4^b{G{$IWTC9%h;L61)qY(bMm&Djr+thE8tu z?83Zs0u~4TT6tf97oHAxKVP~?c>#o{MhpAg7X(v&VNJWjqn?pdeoS8X4O(-6%f1Gv zRAW+Az_X4=fScU>fOvDQ2=_FM{WG@piy^UiT^xr<T&cs=1Kcm=k-wwRo4dS{#b_Vj zh-a`F?8NOlps(38d|eY;tUSNPJ6ZLDp_-fa8B(8)JsXav?f3vq9|upr=5@l2eG-+8 zGh)3y#_Ep;GjRnB=bEvAxDcp<L)PgK0fW5rEe4EZkW+Z;XAw~@<DSYK4H$C`BhQwh zyAftAqtz&z1P*?t1|!<y1k#KsF}a*YtckxFkh0stSlS_xX;V1DT=;O2wZFE?wx>3V zzz~KRg`-FAvN7nUx1d6!>sC<ajoHVzn&*U3xjK0K^n+hI#W2kPr~CT61>FRQ5z9mq zQ=$(^KfSV#1X(L1luN^biBSejk<J+y)z$|V_{EK)1W0<xDIc=P$vKZTdY?_h)f0T% zSp-^vUfdMI+G1vVB3;|kd1fNS(0f9vV|_eYir^@QGf>R~w>0l*#(Pi-jrvZL=-09a z1QlhelJliIjbjfEIKOzX^m#}VBY+a{IG#&Hm|aax(ph4Pj<>CZ98BR&XS?(eGvP5D z-lOBvEmz~IR3fqq;Xrq8hLRrdenS1lP`w0#K9k4h!;UCoifu@Oqf<3Yv=kC9Jm)I| zDJR;&(((I8u3o5)mm;C12;)+jzSn@n8J=3_6BwuV=5yj2DZ5ljd*?iRC>K|thd7Gc zJ=s$10t1z_duDM$D75B&yq``>8Wk^|p<|)qG|b4YW5P2La%PsquA+%BmG9P+POtUQ zTm3;A7sxCd@BRAEc0e>aZl-wYSA?FFx0^kSoXElzP<q(g=u2~QaSz{u(pP~(^oir6 zO_e9D5t7MmltIuf*~e4dQqL{}jv8KG#uHH_Fz{z<+^Moh@e?A`$t1)B_M&7n$IB&g zQjzR#w#foKqO#KrAkFO&s(cfw;xu%L>k4{<;4i?JL{k^sX9jzog9-`7Fy1s7#fQhc zE&dBTbU*ar!6j_5_+1uU`{X<AzDhmRp_A`HHs-a>1tMqVVisd+y1T@^^2yOf{mpU6 z1qqXh3n91v`?&edue<Qwji5E}nnBl&`yxeA(|F&!k7?F9J+<VB->YI#ll2wgG?Agr zJh2H$!{1~@ix1tQt`R)KiN4A#n!qN!L&g1bya!YwVMT>UAVjjX3@%(ex(iyhw}1|j zb6Qw2&J|ji&V8NMXIvYjfa+^#z-fS3)>pCqQnf`rYMKwGJ>Hkd@+(HXr0F`7RmtIe zPVDzJ>>N=$r-;ONp$1))m#!{0YitjC0wcx>(^|)5ESu3(+-FD=;x6ePbb4NVUo3-h z1<#I!=5%=nnu1{wAr<ohzPMp{Ys!vHs2)-t8@2?9bp4%}_=JlEo!W(hlmLe`$(rja zCQ>bIZEyBP)S~{ZN-!}YMf~Cr?DAv0v=n+;5qL8RAJyUW5Ac*16xgL-^xJtoArEf= ztGmETkqy1YSehdt!|?ku+;dU-#m^G949ZhC5eo@|YWIgB%osw1p&btC;o#F$;o3$R z!c+}AOYyI&2ovRsO-p7D3rZ$_DQYa(5Tl7*X7<!>s2r(NZ$cdOPA*~05Y<i>WxA%* z56-G0bF75y8aW*5F!9K|s>Cqn05><xhZ)pv>O@Dw#midJi-!|_0ReL6IS^PyM^kuU zB(#AXazYyGI3~h}+wfHz5vD*3vrPdoP!Qf99}`GT9E)2a9Fu1I8ADm1Lnn*Da{;kD zuIm%ToF*Mc&i2lP4UQ__&{KymZ}586z5uCjssx|Ic(Nyv1NL<$>k0zJ%ywy4DWY$V z!?BOBDB4Jhw9g$+P7bjm?c!{b{!%=aeA85?VzkzDFRCwvUc68;bNZs0#;~7DkV{s_ z46`sxSyASSYGAU<M|OSDedJ=kc_La<rbsdlc<Kn}f>7c<d>qOWr?dz%dv*_w1qqbD zg~%d(NQ`O@1gt$QA>4E@hYVnJX=bA&?p#0M0?6jALg?Uv4)snEL2x1}uy6+p){GbD zCh36Vg$3;l!P7SZg_`<5gYqV}97ozL^vHNRD?o8kNqivvvEV3|0!(cBDIh;R_@XAp zSI3F#o2$FwbWxiQ@lYJc!xt7&eNE4@XT5zJnh~n%1PknZe~k4mG(RE4Ico(bXg-<= zuFsx>oeAp;5=t%svCbW4;h`o+EMI5FCcVo>zuVm5(aRXePZ%D|$ZoT+w@p)u1>0he z^;SO7nF=Tn^q>|ho7wGi()xk({RuyAl~_Q*%V&?#+5E2D>?Ys(lOaUTgp?D39z>_J zV-^Nd<7hKn`C&yOF4-XEkVg{vVS+}zDGr9<zQtEWp}*C89^7btRtw&*+}N_h48>|c z<J)h1eUVMfq45=j9PC=&gNRF94DZQ^vhK++;>ihh@6XK9v|9Jn*I{*ef`22D(aqpi zOQg=&hjK}@MCix2?K+c?`E4?@b|`oxkhb`aM6cQUBf|xRd9PXtqi1p7dW=s|E?^%F zeOvotxv|;CC(y<1e54GPsz2vTND2i~a=Vwp;fBYQWQR6Y#fZzg7|*0pJ1p|$GNJpj z^dDL;=q@+peY_lcQ5EhY4HDkU4>0!+a8K9AjaOe~B63kx@De}N-*mzqR4)UEU&O<C za8fs0xMF`ZZo}+?sbf2jlu6(@J72+k>IJ7WA15$t(~DM=n2b*JL*~{+>9;PnE28zb z>3G{5O?Twc&G2xy>9m{*lU^SkPuSJqaO$Gg)rz`;hpjIUkNGOsmK~(tAFZ8Cbcyea zV@9-))wcM*ukfx#w;V<GAa<~c#=7HPK$i|V7~$3(5HXndm=Gsnk}P+uLKG*XjUXwh zm1)k|$|ZD!6(Wi5MHP>2?RU<%bkv-D)qHmg=ks!yr$x!<4blcD#1|A`G>XslCG4{; zzjN-_MK00_=9*m~^6Cqc&*SNvugBv9Jn$9no#NS4dA^D+`-MK|lYM?Xy>lX%fr~OF zOe))~S=hkn8S50K5L-@`_x#d<Q43mPvP`8LTnu|&lg6CW8*lar1xksd;Tf{KH))ut zA}q}z@27N1BfO*)!lv?(fvv)kk*nL;kaZD$+<LG@M}`Oq4amr3KlB)6kHH#g7DR+Z zB#6hK`!nnKz%e1y1;8SwoM!iC>#vBi%-gS5Ni;ZOaUHp5)XxUU2<COfrIeep!|bh! zU>7#QJ6(&`aoA<M)5|sm=$F~%yExuDj}O5`G^~r_6h=)wb&|wFj_|o=c#(LeT<?8F zr;nZ(a3{+ND&M%$sWCg0T_r7IV*?1?js6BaygPJAm=n=;b%BUG`QVLEmIYNVh6|8% zPe-SQRjnX(o`bSHY#LPivc-D1q*a;l5b~1gD`+e19OaZf_O9*R?W?$Uz;1aVNb=2Y z>ABz$^QVV?n0R8yW54)vjB*~I-FisbrL=q%A>E;gh(`*-M|ufGhq0aEnSYA8@<@?f zmJT}uOHzeFw}haSEGQZpCxyfUbAsI?9WH^$T+*IsEYgP+6b>5i#W>3m>9v^x0U-=d z$^zr>;+td8_q8*#=pE9v6B9|o%-A)A%IX{W=VWHR%bH-c*7x_M<4WI4i&e-b={*Y1 z6;#oHyVYi4t4{E(5|IL{ebGPciA>7|MxAxIK;$zwAk*p)Aj!WOAS{ySKbB6_vr+NL zyhj6p4pBEFyLlm3hwSIt+YSBAOj<iMDmiHpJNN7z9O2>AyEwVXFs`S32D^Zkba0l5 z*c3OAp@P1(UhzERK59Xk5nnXc@!;39#J}BNF-51E!RM!MFYn?SylT~W?XSeiM5B2e z962NiYYqYj{43Oc;9*{&GQr;TD!|WR37g4CwSz);wQ?Bbd$PdC{apd~%WY(a3Ta4I zih7N>7#*aBi>+f3E%Va6^$|#^8p<Xzl-~1>xD^`QLa@_9NM^u@%Uhj%fhyxC?{$Kh zj<9SN7y~SeIN0O4$P8nn0fc^UoXDIDCjuEQ$~rk)p^M8!FT>*tefn{l@N!-sc0vB& z^`X8AVKKP&aeyNL?4C|XFs003jZ8xplcE66IxHPPbBhod7eP%SXY?=mt2Z5F+%0r4 zZg=2tc>X3$=N!JEFM7!3xxe0#>{dsGGCN6+#YUViC;Ebs_H)s1i84EYi=0B;GZ#|A z!ox`KXJ6A9xGuQBqA0oO#yKv1wa?5a=lEh7p6k8kc6Kbzp>w5^p+t9uxsf9B3I>!B zd}NAOMdiwod>)HyazTesW!Tl&Z>E~NYGfml!_ggjOJG69g*=@xP}F5{ZwY2miL$?i zxy~=ZWi3nywI!qab79!oMn2X@a;n{q4#V*e&d1}kvjr8us@YSnorKHLQCwxhAPavH zgublZUKjeVjLC>7j<z!QEEBxqn#B?4wN+z1e4DJ>TiFocqhO39o}8b<6VA0*6c3(i zl2Aw(@7U&q`gdsk%<mxcri3_Vo-Z>{xrI+g`QGJ(+)!cXm5pOu_AI1<k<4-;kOK32 zNV=ZRJ|bS$i^n8A1aa_saM%glEvxJNnArulc%2aOshcAR^WEvH2#yQ9W2x&7zUvdZ zTLOByaCHI@MD2vg108!Ynj;~NnoBT+!<QZ$4P(g|BHk%QDmM~)s4pvBd*0<@EbWMh zJ9LIL=9TZcZy&OmJ>e8kz&H~kf#ROrR^`}}QL3``fGXyY&T>QDiIa9x(u0#PQZHmK zdl`03bkD$)<dwe=CEe46T=F_aW|Ak^c+ID$|1)#V3ZrW1E=mq*o0fdAc&|jhL~UIP z9h(yr9_gOS6cn~Q_tQe!(@$3Dq2P6~cn}MB;4M=3$p~vxoK6@8_`R~x3UOYP&R#^w zjIBlwO{Om8-9)TG_--_ey76&b$YVVglF#PyMYN&@edKnobQhLg3F%G;(FaMp<Rj_H zJ1-bm!5x}DNrU*~>)@Eg{{5N2zzjTjO;e9WvevukAIrh7oRm@}OX=Po1EpJr3)qL{ z`~=T+@$}YxXHl1o><}e3B?hsuKICHl)4l>S6lZ_wZ%u7=oH~8zaGbSqv*~vEMP<}o zXWkhkhT)AlF}>|xxE#dBXZMMTw<=;Rh)6rXu@!2Hi%PSx?e1Wy;0v@7BTr$#a|hLR zd(0&*%(2XfSAzyyemaK{q81KeBAl)OENI47%p`LV=rV_ACBt^C%wy3h8947v&(1J~ zm6~OCTFK{>N0i;W*;$^1B<G2}qSw<LM|e7c)f(n>rzEoJ$&csBdY~8-j3gs|yaw<* z3yQn7-wpy7bi?fSu&)N^e06nE??6c0UEZwY5d6kR1NufDC-^vs=;bRP<)vM$ykdxs zC1Y%kro%3Lg!|F*DcqDZps>Upb&=tVkIE(&THWAH&c<{^i7(5Ki^uw)CFLYo%mjQD zaZz5wF3hWEwYN`uOJ{3*ZKQR2)>Cwq$9VHfM8_eaf)+3=MA+r&h@$RAJs*WY7=r^x z`^Uh=x-WI28~mC17{_MuK*I9Si^RQdt|$B^N(mLx;)9^!{e}SNcfzgTyH%C1+9tt4 zvItOAE)gypzVu?QV)bj%iA&LWNcK)l$?W^hJ^`E<3BVmuYH<opN0TKK+eNmys0Cy$ z1-)4oeqYv=Hs8f9+A<&19&Zq&$1pW-M+^i|wllbBxYivEaS&-C5z%);gxj`wdS2Dz z?li;{#5@p|TMuDNj9X?_{g4fq+qjFpH=LFjiHZm~JA{i2Go&57^&^8>6$+$&?x{Zd zEbFmA4tNaEiv=i9!<6BpgzsX;XNroZfvVeRly2`HVwQ(+6EX(EzBMGC^?0AGz_}Tk zXOhg&{H_}v%OqKOF4QsYyK<Bl7sbTD83<emBCzTultczwPvDwp*yMOywdb}pZJ&h( zBXDMZ{y&kxNs{VgjP6w(T@vgKO9|KIDP`C}8oP`L(!;2oyVG*_!Usek^|s(;tSkxz z(ZxaisZ0hL)&h;nc|%QC8lqHqmMcV3KorDQFPH|j_p*kyPZWM!b(Np$6s|H^6BJz3 zjiK;3WDeI2$d({%7<m2`9FaLVom44YHg?$mrl@R#j}L<BCTx%3JfYbqGisO7g?Irw zdTcr*t`}yl=9P-2Mg_3=yNvG)SGBtocGe!_!?c3R6u+aVCspDQdxNqAgkBJ37vP}} zy|7Cqz}utAX{<$&AZGXV6NEUN<Q4qzIz5j+{d|>*6||wOAp49cxM!viBK7}=wzn~< z&e*}`Z_+NV2z@85Jbl5h5uVSTDH2;46v{IYMEW}8!W1daaj%DZuEmFuqc3g&wjECp zLl}<*(r82`i;&X&cg?O8-Tcu~lRB}d_s-_f8<QzwMEu|v)*Hy@{Or5A5nYT7tL;&m z4y;7Ig+t$7VE%p>wU~R%&GchnP|y}{y4{u7Pm8QlIZxSz-$y+~V=bhE6QS#VQC07o z63FuXZkH}C4-)mbu-L;F;!)&W6?d8%z7T&eI`e#V`=g8-vtCcOg4Q2tzcEmtw+>)w z?(sYC`bJ|n(#Spfzy(mwMdSwrEc!OwJ8+~iA8m|+EqSC$78z;ZF<S8yUN3w5(t5cd z^eu3x&Q*wRZj3~DAlX%mb}__&#trs@3DL<<!sN$FMawrk82%PaxDw@TzY^8g9m+5G zPCM05bfFwdz7h>Aal!0YOli8@*nZ5l1swbPRZAmIy~Ul(ynf9Yl?>lh7s2)SI#Kzg zOWBf9N=>FWN26*?WPN={nHT3kev=@LYUbZbycUv|HxIZlgqu(*G}<Fwxbubx()9z= zIKE<^W!EJMw*`(~yR_YL2=6g<;Mf@s7G%WU$crBn>?1)>>#MxciRh`45#*pwU<h^R zO}X?XixZ6t>owzJTYU0>iymg3tc7gz3^xYCj;xO+&80r9T`n=cHZmv)YpnYqJagJn zX+|O{#5Y6fa9D${=(*d(njZn#?m=@0%f#Bj^Qz-QKN-*+lftGQb@Wp@m=A?^;CLZi zVP!c?L+qgld~4<5i;`4;L2NvAc(S9+5a84@#amojnMjbivvVB0c;+crcrgSFqo&<s z!PR>4XCKc9r3&_v1m~l$3maO?!>5`8h|-74df5kOHIJV4+VU#8$Y;li-c%H7IIyxk ziRP7^DxVe73*#=M53vzi>>AO1*^7q(p7&Zf49YbpXzfyd@Xc$DW08jC`qin9yUve( zfR3`KaT8N<xbx;2J}0LWwPY+5GKEWwe61w;vl3Hu9Tuf@S*DAzUJu^-M8Lkn<Vc-u zO^6xnrh>(_$j5}U6Gg{LZKCk<BRc@@g0d0DI9c*M%Q?hO*i8n5<WpyUDmNSKtxxP1 zc@;QQ_;kEw>Vg1{6Aoe#l@eV%1Uox$KII48?(1o7I2EwLImFZ7+AR2e^$|b4@89!! zN=b2-XH=lR<*Q}B-|!s)^DX(6DnYa6CUD+!b`r)}kKwi>GHpPL+k`;_v83^qo}2b( zocBZN#_+z#i)zk>;jRM2f#Wti!kW%+vuo_tg`*KZP!?U3<4ePKd1Ym7d%Im-+g{mP z-`rWhwsAqg+Zz|#^^Kji$Je$J;M(PPUR&8gdaqq3!R7Uxc6(=QedF;2OPTijnFHL( z8(>#ABRd1FZCt;)wza&owu&MQ_W0TcKv&kEzqY!wes!&bD0!?eKimPurWwzT>sPKM zMzNuWy|%Km=9+5IO|*Px`SKN4g9s`M++KU$^|g(awRU;qMk;3;Tr<GVBNxk@c@uYT zY`WsEZ>&GHwza){rOb4FXC=>fedn=9OQNUNx7Sg755B(h#I>#Uof{bY$FAA<X>}v! z$+a8nIvAIix7SzNm1`T|u#B$Q7Rr^it)2D9)>klQo7b+audJ^beCtZPy1u>BZeEMD zt4~0U@LZc?ySlyw>AJRc!&L|wHm@w-*jam;Vn>?5ph&hG%O(k{+sm6%94MWSp2SlX zlF38xz{sQrdT<tj^IbS9UEX%{`eiga;4SI-1W;nqZm)Arpu*eBu8C_aNJre-%4Yi5 z4T%BBYwiKDzzk?buC4f5#+1ub)NyTfeRFwh=SJ){^zhoo>e_0Hrnc9&mmgO#v$>YK z*8_B5*SEK?Lj{y$v$3|by|TQy)^2Y;xx6Bs;X&&Pxwf+ofmwS@QrC8#Slfy<+I(_l z`_a@P>%2c52ColiT~VMGWoZ|XpCb5SK`AY9K3j|F{*-hWr;9W}O3&dry8@T7%gRk9 zg#l?d*S6NL>D-g4bt4tanRerO*P#_-O}4H*eWT@U)X6LZysZj;AGIJ>xoE|ckgL3> zY6~V-CzsGPK8Ze3#5~!Qg1$<*r0fh5`Q%XRC;~g&0wBv8fhlLZiKPx=zkF3C7tH*$ zNlDMBm^j<pSK4hXnV}<HI_BDb8j>z8lV7GTuWv)RMcxJV^urH4H~wgsuRMN@EA4(u zxF)rdn%==Od-?i~PD%w`e>&02FfVr?o6GBt=?Y}SW!cgNPnfMhIY-HfkRXo{U|lKc zT%K}}t9hKxLcvtKwz0FN>QrD(y-Ip(?Rlw|NE8(#B&!$!zG7QzPhES`>;+*Mbg?9! zT6WFO_y~^)m2eOpRAZ*rN@j+1U~RAh43lgi0~GedxiXDb#;qQc=vM1BEozbj(8H$( zc+_hY{;o`5%3kLO0S&Rjs2Tgc24|rCe0+4i3O_3xZ+K?Q0iV!&Sw^*vP5PxapqYw^ ztM~+AKwuu@klyla$wf||xRjxu#CNU(V7spt+jma)A_0DHP7t;c0N3#;Vq8Z(jm14> zTZcdZ!~5*cbbNRevtT2PSM97qdN&%W@J?8?ie~_xKk`s}em)uU=TzSqlgJmw-^(*v zeF(kH-jhRJD18VShfWFDxX;+G4nn-ReQ;iX=z+@?uon(L9=oDbf_w+42QJ&oo7eCz zDHPn6d>D0Gwxg^3XmpOiNX&6G+6TOXZ(-bgO7~^63v!Ml@v8qHdv5|KM^*Lx-;e-< zvb2!E$lA!_pomS_Mnr6~;D96)B*1_|I>}5jfh1GR5+=Zd#p(!xEwT*AQkgBCWHM=x zW!Otm91yht#X&$?MHrE#0p%Il{Qu6WTRrDYro;1j-sgQj|L1v`58-xy>)dm1-8yye zx#!-hUJh%uUwJ_^`rd%qCw_PdNARhUw(-Uvc<zZWco2|}(*Adx5D4w#p#;Asi60_@ zD~T^yt;1q1e&Y(CF&X65<z;mT&s#tbK=JDv@YAyN6ymbFLpFxAFvJ^X8mBH%y@5+_ zKE`iu+KD*@=cCEE!I5aaV)PT8%93TMQk`IU8m+$Wps8cYp$7}H99EA-xsu9x&C$;) z3(_)wvG_K6IC>!%9g05bI#?#^AW2jQOY97KR1r?qF2)M&qGC3mt=Q-{erAPV(<1VX zR+x{_b+a$4BO$@q{54{G1&X3a_!%z>*V2k97?$iQViZN(?H)d0-sBUVk-lVj=jC|v zV0_K^7ez~Tj~2MGCcI=JRv7RDj<h`z8#H-Kn8swIiXdpP5uitV_&0^DByUV$^Ok_D z+kU58gv^pHUNV`9h49!EeqYj!0-$(P9rl04VGae+hIQDlv9KYEC5}C|WI0}wu%v~b z6Vlp{u^GKB&Qg{^ltPz?n>USrB)U*CPh{$npsmVQ3dhP<3J1rj6w&c36(3QRvT^zN zys!|5*+3KC*Rzm@5{1V$Da)$!VPd0QDl5g6>*!~JwZ;-g2Zo`Y9)(@*YLSgHjeB*e zU_O9L!Y}qyO5!7K6dl_5*hVM8InZ8Zbm7QGx^NSrA1|FXf5m<eepbGO(M2MNE6y<n z^U#mSc_V8medTv}kAA~D<4Rv}wzPCw`gQDB1GfT}a;0DyIo|Fe<><i*EC2~rJUoax zliAacuq;}#uq1XS`tZ^hvFsSDiIy9As4Jl*81CXP*oB8k-B=5YsJc24qG4@JUbdz2 zc+<*pC_=*<sTkL?xV(}9HQ`0J^}L-%mp&@c*wTnSTV;-pu|K7oAFEf*!AdtidB$Xc zo2(2Al&#D-20U6B98{GdPowncSF^NUnBJ(RG@V0Dy3sYXSe=JuO?B!bSjrc26Nk=e z8aG$d$})MHR*s)zj0xD%$Cc$KA8VXZhSHTEb8W@ZaZbH-4aekau3x&SWIMPH<KErG z%U=^5jrw#w#+9(Tv_!}0KY+*H^gtWk^vxK~H@e;o)hRPk*Nh1s5Zf4zxhS-dJ!XU= z^PtVKcvo1|RW(VAY*}iTg_^K5Fu!^Ef&BcEp>Oe%67XA_R=O>U!GGI`q07QMgOu1Z zJUE1fAesZx!p+#jI6zU@=%F!MUQ?NAT%1R543?GQv6z5MJtXZoGO!#f0u#Z~Ct8Ft z&2Y|nAt9b@mw=jV$15aaw%1H|Wj(#p9us8#!X0tx(>xbH!$se)VvB^GP)f<ILu#iU z^a<|;#Dll+@bQH_wJ3o#qARD*t;;B(rSm8$>2T@yvB3C5IAPCjQ7b0Egd3JD!WrTN zJ=cpAi(su>___5>jRw1%58}t;aM_~I*r|XAC`gtM;j6WYg-cv|*A?07=&{(7XJObA z=E-<Z5-q028gLizFDbGFeu5OQwOZI9i$J5`XTNZT_%(Hr>gZR77A@r|IOmL-jH<*# zb8Ax*{raxTL<b^e)QqvH5}~_CXX3UdS!{yFujR~Jh*PIC#-Ph8&^`0GL$4gB6~Ty- zUq25HNaV7!Afs|k6&>UWpM9utG*9VyOZ&UQ_6R>hJTG!U#?+a2%!-Q??V#mmjL$sU zqA6?0b7g&Y5sF@ZJpCx%OGBq8a07nW2oGA}lHx7@@gduy^A;{xP-4;Eo{h!vn`lvM ziZ`c_9$OJ?bDdYWWbu*~-a3r6Tx^Zy4gl{wq&=f!MB{D%ceFT!mcpJFT({;?$TwVE zPHa0-srHITUwG+xp4+;hq>{JFK;<G9AXkjMPp$|biqD>Vd&bdyLDpBl0{doY$~T5n z4>X><eJVJ576(r)jm>B8RXUHT5PCaGJuDwvJa|LP=$S>w>A7V*YKhJydJ>un#;fkR zQ<uuIc8*=fXfk_#{6k@p0JkQt_<;w}T^ygfeM5Fs3Kxz0n%)f$H4JTLyk5Np+kePv zxIx<R+JN}BiFcPphj}35c8a#x(M7<7n4eVK=sHI}zik96J}Qnzmd1H)6y=V#lrqMn zfpo_7<{^4-9AZEGz$%r6Lx|zw_!zj1-eM@39k%eYL)x{^YH<tjo&t6(_#P2PKaNCX zTG5U=KIO79<LRMyKtwJK7s?yR_?l`}W5mjrIj-Q?g1KuQYiZG4#fNOKOO67c48g^? zHt6w3O_ktipN6{|o<>O;Hy>;h4<|)EDH{o@Mz6coFy4TH9YD4p7}Z&_`cV|$)QHbX zyXJC<jkPF_$d1#w@~*Xob#NQhJ&WNv{*JhhOWPNto|Xr0Y&GUv0&Re2oXO7UMZ4H0 zh2SB7rPth!)-~=y;v1eFLfG+Q?Ek{Hxk$tE`o;K(WAb_CFLk4iftCz65^Ka3pRqT9 zwE{Jg*%vz64W6>M-^gZUe;*x$=|{J5WD5}##-nmrSB=_>_OC<^5!yst0ys^PS4eFo zIW-hVId~k18%RpfQEpQOqf3HrkM;v`-qO#GZzNpmh~o|2rI9r5f~e}Sza@*JQHBR^ z8v~>Yi|^>tF!*p0ibfkNH{x)A__4yVTDX1b;%<~9ZUQ?};8vlxkd2|u^kQuq6YN_q zBlU0y?Q{8~{djXd23lAt{N*vK?EOdfOg%ewcBAGj4q|X=UB*9`LZyfU)G3UUCB89Z z$)@@R)LoRikWo%u17SE~+zeEI8lp;HtSEoC+hI9)${@O4IJf!Odsn)|mRfJaI(5;r zLiXuuaRnov$-Y}4`f(dNM}<qHmZs=nu>X*D*lm=9P9wfvQ6_s2+K!x8Lg>E6hALyD zm#}S2Qsfu3Gyq2BsTkYHYoZq+k-5XpEvJ6ho^QmP`2gH|^5I9v`tfOO@X^RmSxT;S zj8@P_<7fy(9qL*U%Zd)gClvpTm&I5W;UCy>U5x9|cG9R%j4NgZMtjC_53|L&w8|KF zsZpu;6&7^ER3Cm25?y5z{d#e9Fs?j8;|nd~5sdo8(MGa;1%3hwHWy_qRmOhj83T0) z@jI?8=eL866^?t9jaz%1Bf7<7fw<yvG0}^GXi8YR*{n|z)fdwf8YHmua}iusY7Lt+ z>Yhi3of5`&=8c4Hlem~4;%5<PIV;j08SEI$-W7rb@r01QM3R?o7cZ1qNcLJ9+$?M4 z#jkO?Yd&s&kC<Ls#=j6}$5MNYoDK|?><5;Rb(Z)D*WQkJ;zo(=4n5zZNWgZgrK^a> zYHomIOwWmpdXSMU_eQOF6OmOi`aPOAaXsSh1{x#pGs<gkdqtzSCPg(MDb$Kz0Tp|k zgt)hkMR;E~yMZpI*(iW6Jh@T0nz$`XNAO!#^?0LJMA0c>!j5ot^p&UOF{rnzPR(Z- z+V(rYZoW&4XQkGNej+-Gv)8c*1_ms1wZh$jt4!~y<L4V_V{z0S;S{iUw*?jmeWSws z&Nhwg5*lBdGP%YRiI(FQMu(zOFzk|#v{B{dQT}P>=vV4dSPLG9!i%=JLQ!r$K6>68 z9im7Hhj?Ij^lI$!bWp!PwjV6L@Kb7xhE0B@)o76jn^2`}%SE-?q#!*(PG>OYtV%J% z@s8PgkDJdPv%fnxUhY=<AwFt5&M&GSZH69Old)29jF(i4%<wZ{zVxUb^*Q<&b=dSC zUw$-{V;mSI%L&pbfp-s$QNc^RV;D|@-nC{`^CMN`DUB4`w-SET*=gZT+KV`Oo2yLI z*rS_jAuB=+)w&#W`slsKxcSkLJaBD%gE8R}aUZiF6H<YO;oBE26TL}_)F=&+dBquR z>9{E3hD0}vzTuoGpDITkiC%Mqdxl@6Wj#)=&L(f9_;QRk;(s7d^fVWp4Cx-t8sBvD z=)FbpBdf6(pEs|5!~ST7Rw{^(;H1Z``Pfmn)CFv!=H>H@)|~DV>SyCeX{egz%uICx zWrgJ3TvllGrf)?ceSQ<FYF5P2a<OHfnA&4D7R=#nQiOW26>v_;x5Av4KH~mGvVcYo z`mhi?6QU1zD1-vw#PAW_BmKZ$^o?_3trzb!#W8|3bvdh*J|Rv(<2j}g(UB!}E@6rQ zMQOv51&9aFU%rw#)g%f#LWn2j(HMql144_$umUpwkZ8Q;uRJ}$r^bcN2>dNXPuR?w z+=WX>o>v}NBW?$*DRN!yc8f8pEwvjtxU}ZDp7<rbxQUwE@K}gxn|jD02Yv~$6B_l! zH@c~!4inpAc!o79=^jWw3yl7As>o1+2T6Dk$??oeD#y%~=2q0nj%po+cr*$7&c;2` zOs`c!@4~+cB1Q1#pwSF1ja>DZG}DWY>sql2%F&G|jKuSM*vaBXY$j<~rVd%(izjHD zg(p$-cm)W(J&czg4&Woi=vRZNIq<6`C5A72>UeqWxik5PI?kmTG=hWXT#63jwIJs% z<lxh}OP4H|j^GAfta0?x`HPzkfs^eDf%*9Fe?<$_xx1InBiX*Y`R<C{O^aZ)-`U;V z1on8-s9bpY?&j}pyPNLTQFh!FkU4Mkdr2ui+;P6<gZBGNHvPLzC;eL_H`%5K*mRmr zPqyhIn_ghktW9$^z1OC{vgwO9H5XX@HvODUXV~<cHeG5{&!*SdwAZGAO`o&rt2W)@ zTao^qZF+!BkF@Drn>N|>Dw}rN^e&tJ%BH`!Y0;)zc#;0SZF;0lPqXP#n|e0wv}xX^ zflZ&b=_@v!bYY~o(xy{wdZbNf+qA)^=i4-E(|()YWz#2Z`X`&dW7EwpipojYba$Ip z+jOo?7uj@$O|v%bwdqf6`g@zkwpO&?D=v=8+1;l5+w^do9&6JxY`WB@7udAjrX4oz zv}vDB@3rY8Hht2jf3oQ-HvPLzKeXu<m)P^S>CQIY+oma-9%0j?ZR*(cG@CZqw9Td$ z+4ORoUTxExY}#wnewz;1G_dJoHvNrFpR?(UHhtZu@7VN1n{IJwbUxeKbVr-+Zqq88 zrfhn+O=sA2woPkoy1=GOZQ5qj%WRsp>5Vq+wrRgj2W<Kin?7#S-`Mmyo4#bzqD|km z>7>i-`Pj75rhD5oWz)lLI>V;3ZCY#71vXu3(-k)LY<js(ud%6b)3r9e!=|xaKWM){ zZqwh}^i`W~@$IPI+uL+ko9=7VgKav^rpMWIu1y!%w8^HPO|P=)O*UO?)7x!&uT3AZ z>611s*z^^fzGc&QZMqr88Tw1uG(OLd$BC$2J{~8mec1l|<8dNtkB`TRs2x5YC!%)v ze|4OAd$Tz!v0}39Xl(zZ)q&JOhnnroQFV1EbJV-OZf4uUdR|Pc;oay>=43OS_N7H% z&9}{Tjy}&^fsH&z8FRV(eu^<S+V96S()1T=`zXVqorUIhdt^>Mf*1{rP4&oq=U4^} z_gOZ#0R`0=^Ng9n4{A-vlpf23OXr}Xw5;)WGlQ0RXqCa%?OijIUe7sJ&@7#BG<Jl} zZ<!VCAVe9zp76E$mg&)M6(<V!ns8%wOr3dRW7^m>yLH(D1iGFQ$Ku-lW+MhA<~5=- zm#<iY*LEyJ!<~#5e9{{EDQ3IPa3re#F$g<RHR<Hc_Qa3F;#L%AF#FQ?S&g))8cCz| z_8ZG^X0^oVlyFHAZE7~=)R^GgQCI`S4#$<V=3`OEoJ~hgXsvIpuN%EsbFgaE+H5YP zW09#)z07w<zt6=Q{87zEBeX%E%#Cy;I{oR<#sFhFN121T7Ovb%vzi&UOHHS@s2Ve} z*)gcf@mMmRiC+Z5LkRTIyvr2pw0O=6>gsUK8<)q;W!{rV$JoR66OU=0F>U&s<6t$@ zuqrUK&6pjC)h}pWytux}L35z#&8&%#SW&-`m7G5DI4oH$J({-Oo<DIG?KdVha~n^= zTMMV-<tE0Tcs%a`WsP%qT^?7VXQG3LyUH}9d1xYzG_7=^m;TTKIiEhPC)nr+ispS9 zE6rmQPn^G`8K+?HMPrH+PsCk-5L)T>G3H$`dI3?{Th~mObRs<{%Qvero6|SE&nvdo zEhe4VvJ`d__XTr#+s2ker(>-TJ1yf2x-GHe8XM1Qbz@=NYFLgkQ|QRaOPX3*=Px~J zIbLc5Yd?9?oHEv4%SWi|fc4R5Vd3Y~cY8BxJN+IV8DnABkFt`5brU;jc>{M`qa7J6 z6}^JFZPJ{j^i=TeQM!?FO`l`TJ(K3NV*m2;I@?4KO`6LO0;7+Ky9x8tNpqJrAH~5w z^9X&0`Jc>trhiV~P=)B*FDK1yT8UQLxI=nsQrSwHHz(P~M0vcJX5Nko8<H{qoOBAF z=0cCgCW<ch_yuR8OT?Z2UVLN@Rsv#fCT@NTV(6&wMrUlyBtEwBfgLuFjec%p=}s`! zX5PH%yuX`vh4MlPHi8?I2A{VSFZ#t(gD!UE&f~r1$Ai|PnXtr$=ceZ3+mc2+aY@_G z%{TFF8J=)$ZNdUR?$d?%-i+7YV)+0aAa;>M>q;{Z0a>hQP<D(v(X-JlJSt#mz+7vv zo{E9Vm;pmC_ZmHNAHFv=EpIgD6*F%U$GOdG_7k4HMoVooVcz0pbO2AH?mU5)!f>6I znQu*?UkJoHLv+Y^{QWG`jubEOL!Y_NX7~*=uF{t`<BeYC#LcMcXD)NidH96h6FM)X zPffJP_!9oKgnl}~T*aT4^OxH;<GoCfePFYB=xgvexOoJhqKBiN-)!EB=7k)fUS!P6 z^bM=4SZ2VFprDVRXy0aRE}A%h0S&I%iTF*prN(@J;sWdmz%K=uA563XY4loA3wBRj zWZSD};-dOS=<P+yQEan%;-Y9jlUX})(PBJrVs4wb2#bBo&5tH7vemc~pITcMn!7k{ zHup?Kq#FbDy_DiA1QQo=6a8f3q89A$HIGbO#QPeId2}LF;;R3G()#5qjQQ=vCC$98 z+YI3omIGl%&)^dmWuC<+Y)Zgr@Eks2>mH82f=_Kx7W4W<zDQUuAYFf-Xn&^x{ULr2 zk$&F8yvLuY&EMxwc=*D6K%c0)G#}C@Tr=ts<2K%U(%Jj~#CDUgp%i^sViHb{Z}Ocd z@uoqv?p~9cv7WIUEw|4kTwZt{#(b7PQJGcziOT!}eX=ck0DZPL_(l3mTfNLw`m~&k z;-KggDtIV;;vadarce0Kn8WE)OC#*=i0Bh)@s;RP>r(UeNx10TcE?X@#V%NC;}a&W zh%cC_n{>{?W-jmQNw^OelZ`$!DYndA%qeq@nvO9Aubnk!H~wZH#W4HRx39_W`3sgD zk7bml^kiinjU`y?F^AESV;UE>pl&ni^NIBfSD0hz(;VEExbx`~o=>Z9fq!xmf1{^A zsMKpr^uBt!n`vK>G1nP3(&#;Ero)hJVG#?q4=2RjU~rbDueZ=QT5aX!*Dm@-`S@FR z{H+lWu9zOv(1KUOnqE$u%^JL(01MjqnH<-wjXq<e_;Rz(;3-4wtl`?4K0`Z*=z8@V zh&D8v4F-!;u({g}Z8t!49x0c}rQBs~MhePc9pI=LCm-b;bI{ZS&<zrr4EFKAk8Xpn z<J~ngj~i{bDzw|j|Nif{!LsHR3!7RZYdr#O{@?lUlsQx9jb3rOTmA?CC92RjjPrNn z;mpGuqBPMErQ=9`jQ%&YfPXY!?~F|!-*yInPh}(izu^@BpFRg~2eUOAV5A%W%kE%a z-OQK@ztT_oX}`vI{8~TbH~6mK=6im-pY=O@-w*sjKlF$Ef<NpR{Sn`+s#uj+Rk<p; zD!r;^m9wgLRc2MgDtA@eDsNT$s_d$cRsO2ns{E>fRl%ykRpF|kRfSc<tBR{eR+-L< z&O~QrXR@=ZGu2t$neMFVbUJH0Go1~cZf9Gk*V*2g?d<6EJ9C}+&VkOLbFee)9O^7| z4tEwiM><VcMOUJ$vMbqD)s^b1?n-ynbU9tMU74<iF1M?#%j;_I%64^h`CYlLeAhr% z&^6c<b`5nEx`w-oT_atlyP`YMUD=)NuIf&8S9hnoYr388+U`tuL$}-A*6nq-cW1jh zy8Z54cfNa|JLn$l4!eiC3*E!r#qN=A(^Jut=&9^U_Ehzxda8TUJvBW}Pi;@8r=iE~ zY3uQN+IzA+9X)<et|#9!&=d3w_Jln{J%yg(o?_2PkLj)GP4rgwCVQ)TQ@z!_>E4=N zr?<8@)7#MN_O|tUz3si(-i}_sH`kl*9q0{u2YbWbq25C8aBs19q}QyjSe;m1xjMPJ zYISOL_3E0{wW}Lex2^V8x33;p9jqQ)J+!*8dU*B7YLiRms&c7ZbuOK&$vL^&Tqf6+ z>&WGD1GykKm<w}-+;Fa#8_Ah96>Ab}D%T{}RIN#^sa}&_Q?sUaO~abDHSKFU*5uaY z*9@*1S~I*RxwdL;dTq_x%-V*v-rDxH{@UEyVC~@A!rI}rW?jX)<hrVL>2)>hGV2=F zdF$HO`Rj7)f^~!I3hRc~nZAm?WM5TZy04}$)7Q}F^|kl;eYw7%Z?Lb>H{55|SFBI2 zuUem8U$Z{5zG1z$zJ0yFKDRztKe)cIet5m<ujo(qSM{g+Yx*<&4gFq!d%xeG>ks+| z`wRWU{bobOhUA8-4e1Rv8!{UjHh3G_H~1TJ8-fjk8wwkSH^A2Y9nAX^D6N34SFyEc zVCf#L-1l>A;|18afo&&ORk3AfVAUQh+J`j<u;c=)*ua95u--H*Hv_BnV6i@|HGriS zV5J5YnuK+xVVN0Nr3Z`jVT}PSu>dPHu)rj&FAdAf!0J3$oDXXYU}*(dnSq5RVO?oh zRt8q(!J>RvQvgdUz={kkC<*IH!*VjP8V?rZ!&(AZN&!}4U?E9ZM;f+~fo*uO41aZw zZKD9oFu4l0j5MqwlWWL%x%Qk7s|a8d1z3cEH6&pPX;?u9R^Y)3d{{vMD=5GU%-V{z z$^T)NVDdYd$>`@YANMl<sa}R`$w5y;_T<{$CcC<W?J95kozV6?Mechla*15!I6Y89 z&P6XoHkU<TM0QuPz7qGmv%Z$^dv|>s?)~ig4&43u^#i#7hwR;-;QK$tcfZT`f0lcI zJof=1`ha5p2=@b38&VspxhHTo)N*g&ZfN5kp#y!w0Q!WG`h#Ex^BW|_PoOtQ`PJwV zYQ@;+`+4pYhA`?CG3Hg+5ihl>x-{xFpl7JE<5j>TRguT2B#%xGk4qkpNO>NM3Oou$ z;}4A^(HIhqARdnxG*-|kL3cQf3^XRtXb|1qQTw;A&f;z!UY*G$Y@eN8<DkdJxr95I z3=+EMqpK5*3E^rVeJQo4hki5L-@)ya*igxRrfx0jIkOw6rE(kc+**TZuOalJP@I@- zDv{(dGE*OrTI;N>#du(nlg+{4F88Hr_6a;5$$cKj-F0mk5qyjX`E>*9sBh1%H|fcU z%_0u_5gtTx%t&pV$z}%f71xjOsF3Kd?62l=!RfEX$Pk^MkFg=Pj3FK&BHM`0*<>ao z{)<0c`vCp=5cljO);pnIZiM@}O77`WYcm*;T((TAdB=L=PB!ObEXjP_fB*N7<lba+ z1Yf&~O^)Mq&l>BeMz+||X|j_|74k|O87TP>)PMNs9boDHWRu`B$ScN&{A5!@i9dio zp`g6rr1ce?k{9e*k0D?3e+%sWLP0p$?2RM|Pbk$_&EAmHSIZue+t<czX$q6g*08N` zTz|W2mF#~q|I57YG&~*;-cA5d2Vqa#<daPjNg7_K4{vdR{ly{n7>j*4V5V?iKvyKX z+Li3PrB+c7T+KdMt(_Yr;I&8NPHKHM{LE;?fr{i5?z=pAv>oiz4zO1nuJz!<X4iS} zRI_~@?5*ax2FR0|Vrr43dG=9M^MVx53Osma)NkiXK0Nu_<Xa`!(@wFUP5zY&Kbw53 z5I(j^Pl;?>%u>>JhLTh>hKwD@1Nh(J+M%_mj5CG%({Xw)`0MW4L|-L);Hkc-Z;bkR z<jYJk4w9fWQ=-u$8r?JS<lESn@36gh0DpdnJ^B&$=@aa^CoqO5;eDqt?izOrBJsxL z`l8kv><jy%D^|cr9`)Ikb}Tnu)b<9mgVFkpcVE<CB=3MPKeWMQr<exlufS+cSG_Q1 zW?0n~w;1)#F6MOY-Ck){mghNH!Oq4uzP6*aHU1QXAUsZ_ye|`tfz_B5Ww?#otj$ns zQA>r~R`J;x%yH08nB`RSJjYo-1g~YJzZUbAHaatOFjEW`7)%Yu(F)9>bMP+cY-)L? z&}L_+0cHwAJXeV4qdsP0k<||IY^*rW-9lqn8_%mccxIJfkAi|JCO{I6!EtM4dH$Q| z4SBXui8&<A6o%InF)CK9O{}ftk-r-EB#r)LTWz>^vbcM4YxAf_WRb&bi)%;LR;){` ztHiu8g?XW~t`_!0z5v}<9o8F&T4{J)aoxze$OfVwF}mj>+hO~%cWjn@!w`O9VZ8~b zm{(DM>T$FGM^T3mF^0%T8$`TdSi}mVR`ED4kViy-`jMpa+%i1(AKYl3UpbDi9rg}$ zt591|OHe!H;S+`Hq7flF_h=-@b8i>lJ*F_l+(ehGOhljnZ?F<`Hiu_y1L#wVYjU_2 zbQP-5`f*9a>neEcsl_b3o$t+J-$-8#{O<<#5UFL0xK9(9X_G${_7AaVoq)HP!u{>w zPIO_fS=^8L*e@(jF-eSB74W28M2@nE8qrue3@fJbssYz0gqKxB1So;%PaAy09O66V zGgqLeCQrE?bL0?_nhN-P4lJJTT(a}wZt77T#8_N-$OD)KClEhLA$H;*ZbJR*U~d8u zkrbjK4(2E><|kRiL55c+Fat>;{?X1+k0K%+)IurrypD}*q}Eom4ZE=5EbKQA>kZMH zQkx}Ux2bj2Y_&Pu%dvgdpxyEq2k5#K(Q;&)DcsQw@M^<S+g0|r!+#FZKE(|qxU+XO zBe-@|h_H=q8}b`mL>b5jHHa;w5EW}c`-HH_B4!g+7-L*Sw%WOMa@=##+<>A)d7OQS z=ui=np|}ki(0hlNi&Y@{;~?teV!o9{3k>FlFuRY=z80en-K#WuP>(_9OLuA#cWO0a zIF7wjbBNp&VVMnmZeJB<X)bz@93nDqe;dyt^8Ev4?IVZY+9Y-~1)O&R@x>HoSPkgc z$Sy+oHsm*vZG4pfAC!q84#RTDZm4Z?7`qaP>ZK6TBim`<=v`zf4H${zHmbrrHj9}N z%~{(q_YBb{WET}2?HGjLpRyLwfYzx&Z<WRUIfzzB!CQ0SsWq@4Fx;QO-7vhtBzH9D z<NPZ4>>P|p?T94N*%f)lScBMT1`!w^^R)s;<kIL#y_}C|O99?M66I!azxuda3z%^v zc_i`Rg#@@N2G=8vXqvY!zzoJ<u9n7Z*2By!ARjfgqiI9gh9kEb#IYz&TY%3?QP~VE z%16wKY$}OZRR(b?ANN}U@u{SWkcJ{UN^O|5^DSz}cm&Ogh^R^LXbkRkgE(4(<Hl8` z*l_G`r|fmjSpPI@`{wvs7HuRrX`{f7jR3cm;=j~843uJOMcfAo8}*HRuIRdZHnx_> z>^eRVV|}NTjqbLgy*tq218DOhwE76QdlmNsY4n#3?16dc5weJO`W)}1-gA&WGV-R1 zb~c#6$cOXxc4U94Va@0WAB|q|IG@~vcb_eJl5~G?-;mwWEQMO?8(j3AgXlAB&|eO& zsz8LXoqNa{oab;?4Xk>&y9U0@U{4hye>p_^s&KatTN_TWXPHC1cA!-I_ENtVP~H6< z+1JhCz6}sLCGW!^a$05MCFF;YUzoG={$c97@=@PK*E?-j2t3$%fSS_vru#P@f9d*C zAC^YVJ)Zw}@HI4uiPCkW>s4WGEQ7n$#~BrHPBfm<C|W@8Hqw)Xr(4~dL9B`Tv4ZW% zlN`;a9xa2YrCW+0<+)c+B4X(v1`>JH@s$kWQ_~fsD@VSX!_kTccr01#>xbO`4Rdc# zy<dv^z6|bslitbfiY9Z>=Vjq@<Pkjy(Z8Gi{08If#Pi6aAM#8iHD)CuWd97A!=20k z?iISHYS1%ftUua;GtYCxcL--+M9en<ucC@)4i2|O8+)uiuOSTb`azK+zm+@-Nb}g& z!0QEBJIfeEFIV7^pn}&2QXB!M)d3eh5cPUFj?{&AeV_snx+IT}HQc5yN98)uE9P;h zggjc%y%NQks@bz}?V14fSJYb;(PvTHR$C94tj)JRAdM>qs{)bt7mX=x=*zM^lNey{ zxWJ=o1<y=UJR7DS*2O%S?vrS~7xHXxq_1Lq0=_eiwB)N~Fcx_jadWsXbX7)hU6NQI zsD{_#^k@2Mglb2e%ePS=^0bSvb?UbxYj-#@*v8Q=pCer~yC~qE#C0p|WM&{<Og3N1 z(ZMvYj5YA8SQb5Pj#tFu$RN!+Q+y}Xa*yY+H=5)5e`sS%6<GI5^5|Z}y`9T<2=#L` z(vP5DPM~M5f+f{pTyrt1bzt2f&+7(5?2#Jo(a4G#cvh2TD;lt~0kWbBwxSe!OKm)p zjy$FicUBR1Rwd$!DPB3K<@F|yXQyO0!|)&~u(Fhb7gdWmZw_N*!1v!U$8*V6s^Cl2 zz^BNtPeERl&$beI7Bsu19;k|EwhrHkZQQH+wnw6Sku0Xd&LGlu{?LZiB(fWt!wkaz ziv5vFjDIO!QL5#61KCaoW(@<FTZMKGT7h|ElKt5lj-!z6w6pDy_Z-4U8-|Z&*mkPe zb{w{yHrP%F$Cv~7Geek}7GXgN8%rb$YG4bZ7;_%I<siJ^0$Wf8TTlvPu>(&y>M^q% zEge9Q9<l|Y*F@}MC$qG)wwmI;vzAv@v+#~{97zf}mK4R7$%3lUm)2tJcDYCG;5F2M zJ?CK_G0B3e;2+jt%{0U7rR}^{8hO$~JQF56s$@G#!;Ugofg;~A%eFKCKWPZ7P{l49 zB`bNPPg{?PW|w49Im~eevF2Ie^-i*=Bvv}pSdFUXd5*{Hn`Bo3W;{`kU4b=CvaD+O zrL>mm@~Tt^MyNa@*C9MqvM&SsN@8WInpYDt?5VeNoSJNnRxXEE7vUu(;J1^lrP<aR z;J>z`xA$Rd1MI~XY$SzjEd>vX`uzs<OddvX8o#5_k8EuO^Hu8kQ@n0j%X3w-wGKO9 z4q<E2e2jeG6nx(rc)l6T%sk9d$=330YeVn=M-cBwa0I0qYnTpVb}k}zWNSX=0|C}C z$<~T&Yn676Pqx;8@uM9hh|ePk*;;{Ztpc`I)t^G-+TnRt8`d<)+H!1dAzRx>KUrH6 z^R6`3HObmsjL%ujymEFOqW~|ItgX^Cu&pKF4U(r_!)qBXuWok0+VU8$L-?h`94AYl zzp7$ubJ*J2;BR!mU(E9==TH=_<aK(owlrH?1JByB@FK}G8{{?lB6_U~wzd?;ck;%` z+B~+l9DK4tcx7a5BX-nJ@v0~J=Pp}Y2U}af);5eNS_Q^IvbJirwhU%`9>&2AUKt^4 z8)E;!u(egOwK;5UZ8q9Q);7r2R%C0dWNS-fUP#_V8^^VL_WsG*3T$l^Y;7sFwpw@= z<S%AnZ8^5K5FTTZX9$(>*2&sx*xFpSwhp$o0G=Xw8Dwn<wzg`-Mrsiga(SJctSt|Z zegxwo*;y6anZtJ0#&+hjoed&dG>j3E?5q+#WHm-ava<%Zvn<=$0NYuC?W_Vb&nk?F zX^xDLoq23$Ie03A7!}FRM%I&^CE3nu*v?$Gvktbi0JFCOdw~@g8OhG7+0HU-XYFif zd0sCYitH>=Y3g`fBs;5OJ9DsRMt*BM?-U_B8)Q2x!aGc0j|kaWn&v?m8QXYI$RN*k zi|i>@@(h41tQNCg^8d-ga%^ECW-H|RlZ7R*+oJ)aBH304=6eGe7s<AU*|rjxwUEDG z!*dq0t#-^<a_nP~FGjXy*tV+JwjB6aE_Q2>ZTaxA0(jJ9TSfR-2}Bpjw$kviG8iSv zwzBZC@*HUxVjs(3jh$>O1s}^P?ZC+LdguUpvXE_S1at68_Oa3!H_5hKwyh4ft-$WU z7{Tl_!M0V+ww1wr#Ix~<Jp8PX_g;*!r<H^cOSa{(ZME5mHQCl6{Mcd4<H^D*OS5?L zW68p@@VW9BH_5^ZY+)5_VJWt-TDC9`K9|ov*C57Cvak{OT$Su|rP=3dV4sV8VY0A* zEo_)AEWs95%@Lyvd@qlEuN?bcAx6$&o@bDSRk4LR@V#8jHORtz_+9}=c84S1D;f1= zhG&;#V`=za8H}7{V_EoKd5oQ8V+G8z4Q3!@V=1<=TDCC{-j|QDbATfU1&%sZ@SdX- z&rHbDT(-0hwzL2qSOH@vSz3ZEtr|X9Eyhl=w|2I-Jloq4>@A5=lPt~oAMeeRrM0o8 z`S8#Jc=SWUrzcBGv!ylI_^vNJd$P0&<=c~`dH==UJy}|wEp5oI9gw9}{nvQ;sY*O| zxM?4s>?~wE8^Nr+@;~k6lbz);6DCie?93=%pX{uS?aUwJ?<d$ttH!8F*4FS5UVobX z{s!KKmgPM|1L)U6>-$&muCtW#{<DZ7<~EuGBzYE4!}9=__YZaar{)7R8>nXgEW`d8 zMOetv26$F(Fb}A*I|yh7;A4~=g!f;>I9Z8NGR?kN1N&nC9ezJqRhs9H4gY7Jf4b5f zH?H6BaqKtuvFHC^<oT1||DX5zD=<=$$4~yghcS|T{g6GdO?&#o?0fw;`Ss5KU;O(2 z7rpxbh)*A~-}OJ+v&Z}~Q)v$7nErpxuWyIPm50AIgjm;q#IGl>o_zW={4Db7$*2FH z;n9;nPu@KI2CtIWV+S#!)6AE~a5|4X&ZGjdT$*2GF~7(oQZn3A!4X>*vx%Hougq~Q zwhG>S1ELZ%`i-njVGdZq5iO^*-c-Y}P9L*6!~39X5PQm$Vowweh<)gST~ny!y^R&{ zp(77w*v|W7U%AG{nc7xSM5zY;u-{pMo$--(Oa4Z!ou$)E%ICfCQB-KSyB+iKXfB?_ zOsRq6&s97R%5sExWOWkpn+!*726^_J;>dgl`<R26r_dZFUR{gkB?db{YB+W`$TN=` z%ryovfAtXUpcw+%JE-Kn5j2wzIQ|#Sl#^(yXrAnH+&GHHL^Bv;W5#LBkTZ7n;#-fh zU?YA>8-t1FEm<2eMtNZ+$M~ap#1LX4BUq8C<oMg@UUSG5DtVoNuAvK0*|U2g$e%Ih z)4Y!?!Sg7{CO(ZffFP`FW9$WvWJR;TG~!s~k$cul3OK4zwDZ1{^~GHqE2TMK$dOXR zF@+Sb+Geb`M6<o%|9TsRHX=&%x)jGlGd4a&S1hoxP?P*L?`Na=9L1)h*_?~WR5X_h ztcOj}f~1|tWjF##v$#AWQlaft5*$BI+t{bak%GvpE+9@2`P3<nLy<>KkpiFn>Ci?z z$+}b4mv(KmGmll6kYk<3#-7NF&T!<3eCWK5auzu<kmTsO!!ak%Mg;=9?qWE)nc|2* z#;&>eHi}-baZQumo$Vo74Nv>VkG@kZC54$TOyj@hZxTwOJzo<{($Eyhm~HVdoG3{W zBn3g1p|N3{zeB*Xu?!zS4*ySVF7?a@2^7JD;U-lfW$>W8NpB^|l_1%elqvmI$P{83 ze5NOyQTivOo}YpQiu?{Fv$d3&K>D|nBngsKWEx0XkyAl3inJ2Jw$ag6{T_(<lqC0& zj3Tdt1d8m8OOo1N=9&fKEAlN6XR?$TpbN=M^YJzP8|hJGA6(&#BFBPYQCQTu4g|}V zf}96}$+93nAo6KR@*rksNge~qEAj?NsK~akouVQKfFyR2dS-*9VnXdX&fg-)xUmc$ zzYxSzWEDtOk$XUVMV<i3?<Pxs6~y4>Tcg)>0&KaU$o?RyJ*3PTAZbNbfaDcv2T3Gl zt}c+IA_E{PMV<pmEAjz|6O%ISv&R-V_gKcz-%OA|k+VQTMXm=aDDn#sv!|@{haf3M z_S+IQROD2Uj3O6+WEJTG2^4u8#Qlsct4K16?1^5asK~J(>AhsGW)Me_Zjg*3zXS;s zc^4$Px74#2dKyoW<3S3FtOQB#BXivZ;w$nXNdEIuW(dUDUy^r05(h}K9s01OBA*3G zDUt?BD{?xBqsVz6Sw*@?&lhD`zXHiC@>h^_O3GAx5}FmM0tpm36~sSK=K42~%t4k+ zfGv&l*F$<@89x3qkR%>2nPAYfmC5xt$T+bK=bC~(KCj53ASn!4tcPX34w8*Y8O=*6 z*I_c(H6Tv4BzJ(AFG=z&h_A?mZE#J$EM*QLf=3xf>vKGa`HCdxfcT1ZfD{!8KvGA_ zTz>$`C{nR4?j}VJ0`U}?50X`+6U0~K=O9j6mi0E}s*z-KjEc!)B>6OmACofed;nzf zu?%0GnIM58OF>e{O3l}Rq!qabBzuyTDO1*?kO^ZMF6()af+9uIbFwUpT(^QEp8;|3 zewfiK_$3fuk&{5ur%IV+Ab6Qnl&ee)uYyeKbeZdRkjxp9gdqMrN!|h}WF*<{Q@9oj zB>4hJW}zf=LHs&N&I2jbOOhu&izRuE^fXAaJv<bDi6lpY6wZ_+1L7@{!~;n#mt+-4 z&?w2zK+L(4yg<1Wc^@RD$TmCR>YOKY?E&Ir!=|`iAnD5`IUdAQqyZ$W$VDLL3YqI> zkc=XCfF!P#GLMp;n3TEhe}s%5%b*av3koDuWD5Mg%r#Q;7eJirBsmGhzh06?kbH+E z7lH(ebby44+y;`oLFRfKB%{cSAg&_sf#en0ZVGxWMUo(i8>QxhKvIf)9mKgs%49&y zt&+5Wc#2#G;w#b%lI)VX9t24#@&}M~Ov+rHHzDK1GJJJ5hwq$G<TD_yBGW-UMNR|B zD&m6pihLU+ugFaxfg<;VgfS^o=jR|(*dWjSEfABJWWr8p4MnyGac+|``+yV_sRjvd zmomqa%zz}{Bs~vG(g>1O<RXxwBG-c?ACkFxi2PWRJ3!J8OY#VaACoez@ifW&ROb3S zNI{Y9Dp4OrJ`ZAkCUZ>#Nh@+PNa7JGa~4QakxM~*MY=%pirfieelGPq36fCc71E=~ zHlKziC~^QuDwKL^K+=lTfn=VPGUtH!id+SfSELstj7gbxz8f-ykC1r;GKt^H(tiu$ zD)J)fQRMF+>8E9`EqBKCQe;<<<dBrvA0(^DS3rD4YC-VgUNbs6w1PN_d=JD^qzfc? zUgo+Vq@c*tAVo#q21)<H<|@;MlQB1SK0;<M$e2HFTF+F-Bw`te8#4pMRpc}fPm$#y z$v?~Ux)daMQIZ=#{J(6v^t&LFk7c;@Uy~k1MnFPEcE{H1f+9zQ6csre#JsfW(r<=L zB9`IOe+H6N<c}aJMJDWqtE0&7AdVt4L6R@a)>sZwjL8HpY@`2O1{pIfbKMG(P~?8n ztjIGUDMj7|Nh`9;?r3L44hAVIasr6?t1NvXNJ0_%iJz1r_@N);DT1)2$trR?Naj_k z`KKV}O-Wt^ao?5XUqs%M<THCf4<>n|_uvsAc|}eK2^DDtDJXI?h?yw$43Hj0o(2gN zc^@P*N#@!mi5e<$2#B+Vl$i~ZQKX)7DRKdbr^t;U1x0=YQruE%{sl;4D@k4>J&NqG zCvqwBWsvkIWUg<3xQd(yQi#a}Gw$EDkO@91^=ts~@NoL*)p-;oxs4<*Q7%O$B0`hd zR>~wnJVmNO3foDUSs>YjBxizzid;;&6uA*3^C_9@Hjw=Gk~~Iw6!{ZKQ4zBjT7Cza zYgdqzB8P%_iktwFkI95_8<itZK`g@}E08NQS(bGbh(AS=9+32olKhy;Qsg<1<W5rN zA0XbIl5Dd#$Y&+l8zfOBNi|4HkuyMCMOrA=elpjUAcd49T_BmMk~{*E|B57k0LdOH z$?G5{ZAqCn+<G6>FqYvqOo2Fx)Pne5lbV--gf)^}Ml#1pauY~ikv@>bEGhF-kdz`% zgE+IL%*!A}N0RqJ%n6cA-WQq`sRAh~@>LLLj?7gHl2K$Sh^vSPk~&T1>Hx_qk_R#0 zkTQ>hq!oD$B%{cOAVEyZT%FxM3(en@nvVo=6*&>aQ=|nXtH_NYeoV@gwGJ{tEW?)Y z07&X|TY8yXPeI0uWjI%n%2H(WD%?%W<XP+k5-M^8NI{X4K+;Vz*I6L0B3F_gMb?8j z%`(@cAX!CTq+E(r?1vh*$Xxq^xGN;70SOezfTUMSnP!ksk?(=f3vNdH`A*WK$o)hv zkTTDM6g^2c`y6C0mSi^&bEzZ;gJcw$3F0bpI_Xj59FT${mw`B!NzK=T_=?;~dK7sI zq^QW7AenDVJ?8VsrAQ@6s$I&YKoZ}PWHyMS$WjnrkqbZyid+Lyyj<$(0`abp<YAEP zm6ALIl2_yn5C_YTqgU_)kYrYpt@lSRMfLzmd|%2`gZPTjN<~qT42W~J%+*M_6!Ab( z*GQS~fdq=&3R1XM%G?E#xK5HMK(dOw0b;I~GMj$^rQaaQt{{mUC7BB1C~`VTsE7w* zekgO@NVycbAH-MWDUjsNGS?d*p(39+02Y3$l=&=3u}hK}Af{WA29Sgz-v>$dN|_&l zWEBZPf}E6j1*D+J7GK0!tdTNFkZ`Rehl6DLBsm47xL%UwAc=lSE(S>}@&k}Sk=sGM zyv+3|NM4a=Dc7A+=0lKzB2!Xm)w`uk3M7vQaQQAMGZxUgRxy@AlVgwu3GSDAmXgc^ zl3W1dJSfSPAgPBWxfR4y<aUsJOv=>f8Ojw%J^uj7Dzf8&xb8oeGW&zLip&HlC~`VT z{wFfmxgf#AlH5qS6uBG3{8Y;P4kY|{NnWE|ihKx?p0HWe^4zMsO+}qIljLBKlp?c0 z(u#Zo#8Kod5Hm^YIUgic<a;2=&85s*khCH{C$fc<`3H!j$Sw!L<`tO@;wsV(;wf@3 zNLG=jKzv31N-|r@(m#1Hu8tymf|v>^a~Mcck*|ZK6gdkdt;nSy*{!UeGFEpJWHO(S zW!*(&Ye}9WvaKX9gCsvCNyQ;3y;720K?;hbL5hkj25~+ubA1cMSL9ld1h&TTz04NX z4^r4wlBYmYdr0y+i1~~p+aC(edr7iCNM4Z|kU){sLBhRduJb_(irfs6*hk9z7{uFG zk|B^lk$-~ZKPzP>ABHxplH`jZo+7hB{Qaa%hH`!0k}_BMBGMDfa2u`yNggKk{2auo zmgLVM8AV1wvWjd|jru6EH%NMh)N=@kqsR=9j3V<uvWlDs5-M^d>6s}t4}cUD83aij zEoGhsNhv}r_MRg9f)o{*1(Nxi)N>|CJ|<<_`FzMY*t9ijt2cqTvn?r;>rTjou?%0G zCqR<NZ#viH!%<d?EbDL(w^fo^AjuVyECC76k>os(;z~)b0Ws%Fk_U0I^=$OKLXhAh zNnQg9FP3D&mthH)O0qLZR*{21oNr5+Q$XDBNYVo0DRM2zTp?xd1_{3_NeGg>Qj+&5 zmm<3zfn16l1d_VS<|=c&z6P0eEW_99R1ha7WpbS-WjNQ(Ao(~KlOd4c8d>MpK|)0) zeFZkJ$nGFTMGgZo*GfGnfw+pC4dN-11<5PYPkOGCdVUF#h)J0<eFZW>EW_uu<&mhN zBA*2*TrV}x1W9*DG9M(b$YmgbB6os#H_BX3fFy2~<YmfrizF3a#og^ovIj_@$l)N) zDk(Dy#9b{(J;~%GxrAiaNRk6du9ai}B(KP0MEa!6iy&sbBp-q}{gP~xhUVKO*%u_E z$TX0wBBz0PKa#o50Wo(-axF+&k=sE6MMBDTr_A*?5Lc0{j)I=Mq)Zh^=59%*ffN*( z2a*_&GHoE9B0r#9_gI+;sL42geUM4tEA>1Al2PQ3By*pXc^AZq$%Jv#0!^8Q)`(?T z<Uo+3BBz3Q_e;$l$tbb`#Qa#wJPwlmi6n1<Bp<e<OntVQj<bkmxISM1$tyA&#Q&+( zd?twdGf6H1N&H-rTR@ygCFuvrC=!4Kio6J79+SELNqQ97Wd_<ukwZWViZ~!eMHYjY zUr5atfg}{^0!b?J07y!a--6^7c^f29WV@N@dli`ml7C#5ekw@vmy(=Axqc<d%^<-O zlH5h)H<J7ur0`owo&!ldEy<f8jv`wfjrRGSl-U_1@r)&9tmO#EcrVCYr-0-YIUB_M zS;|}wQg}&{+d#5^mE>0-slQ3`0Z9IJOUl$|%GaPdmSO8X5X9eXq8ar!W`P9TO0pOv zROABEqsa9jMMdrbG22N!&w^wXc^@QHWY-$l{HJ8DBSE~$k~D(k6}cY7t&}p4f~0qm z<c}cXZjwwm1~uG6lFx%UpONGQ5PvU8&I8HrElC&Y*+-JcNoHS3UIy_#C&~LD>HQ_C zJQjMsD9Kb1{|HG=0LdRCNi#?>BS{t{(J09sAeoqyv5hAo<Hj<m2(*HDXG=ZFuS0W_ zB(p$VMa}{76uAW?tH{qtPqWlB43bi0%j2NA&B~Oi^WKoj#xh*z86c^ZQgZ`H;#^5Q zlEEVvqc*<=B!8(SKL;s(+mbS+zXTc6E^}4PLRpF&08&(BHi&<P%+&yry>ioKd5}q8 zC3AIynD0sQ6Odw7lIKX~`<vGME@ZN?47cIlv(Y|ROFcCp&NZ9XQwN#kbu!l_Af6(9 zq^Cp5{0hXqdDEKTfK2)pnQPbMQPEo^nGTYAK$3cpf+ClLWFM3=_ky?&N%A)kPm#?X z)cJ2xW-pNRtCGwD$tbcMB=MS*xe~-zWIagXO)2wJ5d3hdu*^SzxQhHcNM4bhPQbbU zL*`0@`0q$^GRcfcvJAw1*OD?8-VT}kN66d`nL;eX_VWTrQIU!h(W>vs(vJYiyf4Xe z5Lb~Of@HUzBwFJRko@kFJPVTAOA<2&xfIz4#8+e%NT|r!AZBl==X#KYBKLtL6&VIe zD>7v+tVNNTAg&^fAX!Cj0Pz)h1SC-8HIRZLlTSiBD{>@=yN^7J(?~{<l^}_IrOY)T zh0jWIJ4m)ll3#%Yio606Dze4NIQRWzu6;rLn3S=xqajm>W!Qes1PMMb^;|?UM@iB_ znx|P(M)QM^G1FzP=RgvQ{0k&JRm$vm3N)W4$$=ngPm-^LWG<9s0Z37i%RtOUQf4hk zLXn3_k0Q^2c#3RUiyA8OMUdphQu7=TUy&A&#HCW^7LY)Z5F~q<lqrIwzAedir{cU6 zITR$@E@h4f2^CoklKzgAxsY-x(hFiPmomQqaTIwG#8c#7AVo!XKMi%hO6r*nQc$E7 zByqKrxdtRu<Ux@1HB#nf5Koaw-#|MnvKNTCR_2-k;wf?l<x=EakfI{pAj#{bo}W-I zMP4JB>!r*d-$b1iIT0jK<SLLvhs@PaxfBUO@`}6zVs4PRwm%)ED?(4tWEF8h5;w|R z7lC9HxeKJI$ZtWCKa{!N0m&+|%Ne-JH%XbVfVhe*00|XoCvvmQH2{*hMUpo_JVh$! zq2(1h3M5oy5lC>W)l;Vbxd}4K)v~OILCktdiXd4<_RQc~C~_i*>6f`$iQF#9)gVbl z`av8;9s>y#c^$;RL+Y74A6G|_FM&9BN|_ZP>ANNQ9!PkfBzJ<O0!iKj$^KZ90~SE$ zQAth!2^CpFGLK1_3qTx2t^;uuSr3v`Bml`P@(f6*$lD-^U&ykyU5K(2*$*VE$aE0% zYnkgpkOCfb9-Uv@0^&U>$sHu~oFu;lN&iKXmq0>AOdWFlP0H*ElE5R>qh(D4aTPg> z$ZJyOI*_6wPl9-FOBqv-mjAmXM}ia-ISVB5j+DuQWbpv^Xnh_4DNdB+84zc4N&W@m zZ7IoT7Qvpkk>orOXD3OzKs-f$29nuV%KQ<;KS+`-7Q+%0*&8Hzu#}k#l2+tmkc=X| zAgM!SuBSl)MYd@`iz%`nh&fc|`WlF%$RZF=k#B<(73l*>A13t-k&Ge}mq4ak$|OPZ zM@aHD5a+9s%m;B5X$Q$F(gjjf<X0e>X;RM!Nd81gD$hjw%#maUNb+<`CZJ`;`8xwL z*^iJpA2J571Q@ltAA+RjNpd@gqsS8=c|~3XNxL%Fzd!;-_Bab=oh@Z*K(a9@a~2uM z_^}M1WfMrKNIQsowbXn+<x=EDkU){jrBL?+nJW#FRAdQ=cdeAUmSk>}<Ux?MB10hI zO;YAxAkNK}lsVHwmZ3Fb89vj~Kte?>1WDW?HTQy~Vp2x)eUM4tDs%k~B&*0jK?;iO zv>cj!nd=}BN0D!W_=;Q%QdHz-kn}34=N^!PA}@esI;G6pAbCYT(TLVi<O?9lE}82z zkc=W1g7}Ku3KA%C7f3;oCqR<jQuCidvWg^JT%;Z;a}bE5$U+cLkrg0*PUgA>B)LYC zyFuLbk~{^Hxm%LgL4x}wnS3@{>;Xw;fP{)H2Qd#ynQKVqZAtD2DJb$+5a;hwCfS6u zP-GTJ{vT3i8AzbW_dr5L9snsQG7M5wWT$4>&%aB}DUiG(vp@<lDRUQOAY(?Po>q{A zBHsl`D$)&-*=!3l+Cx4`xwewzEs#`9%9OrE3$AG_!*}<mK|Dnc1j#D$b&!H08Orqu zS^9aDOOcyFd_@9~ydnjVK#_lego^CniqaK138bh<6NvewtxuVAzXCGpSccENlk_MO zfP`Di^LiP?*+!BNK!R;0*=Yr2wv*%t5KobLAbCa31ql?n9wb!cA&_EB%AD78kTD5a z`UfCsMW&nsi~5w5`8-J2v_oW3Wi%fF8DHf(4kWKgJxFQ?skxPMDRLD^W=AP=3rMKQ zdJuOfD^sREKZT4J%kUL^0VJ!)2Oz#8JGG(CF)5?@FvtY43~T-dNUBoSc?IcF<Z2M- z(^BR(kYY^Al=V}{BzKm%o(4%N@(PHjNX1H=sUlwl@fA4+Bp;J9r7wg`5X<nHehVa2 zqz9y^$P=V_S6S!RNRJ}hoC`DDP0AbwlH6UAIV6LZEsgeLE=XFDOF=?Ke2`R9=6VVw zyQd_ZorhjRkpn>zpOG>rfus~U55!ZX10+!79uTva)bkgT*+-Iz=c9B*_5vv?au`T@ zUzy7RNmNPF1mY@kB}kx17v)OHT#tY_io6EmA1GyZ{WsK5ky#)`MV5l3r^;N{f&_~6 zgM^Aa3Q|zyucYT7sb~8OP(wvN2a-|50r3x(xmrN-igbXa50NqhL=KhYS&*zEZ-JO2 zq|7$oLK`ZwABeBWOpt;i8IaUhq@MFZ@{0TrBv9l|kWi5j#5+>zc>^SymL%cfyrxMq z9VCg@l8xRwCxW<Nmt+aa94E=SAo&v|`2k2#kqsb;Ia20Pkc=XeE`-cnDYF-dugF(G zii&&#B>fGUs}019$pka*-%TX*O`EHX%+DZGJY8!36G&>_rgLq15nAjcWcGkeHkRS~ zeHp~NQkHcxNHQzQ*&vClCCP#~zm{YjNJf!IKzv310+NqOnRDOfV%S(HHGc^t`Gh2= zf;ft-0C5%ZK|Do%0g_kbeIidv&B;q}rcX&y1L7*Om}H)oG8ch3isV6(zmqb*AU#8p zybR(i@`+1vH$5X|_5(@%UXtTMlFvzU7D(cGNiL;aigZ%0KS-GXB(KN|AVozcT?P|* z!R9J+y(%G-ie=cMJ`a*C#AUe)<~7yNuQQ1kV?shlLdJVZl9NDuMHYeNhowvlY5uDu z7l9NM`5{Q~x|F$-WE6P>B>R?>2|+?dUIa<KEoI&z@^?upzKv_D$j%^z62ZBj)3l_e zKJgEk>p;k46`2O&{JWHyOPUo~1QICH29h3;xh@0AC~^x(@_i|j11TzUKZx^zl=&q{ z_Crbj1d=dYn$iCG9T0b-Bzv{v3Mw)SBv51}h?yjF^-(TGo(2gOG2cP1&1J4ikc1)! zgE+fMnK>Y?A}c_G!==o1AO%J41u4d)jLkm{8S`bS=N*ugBHLY#tE0&7AdVs_kYJkB zGaJO4E{RK|Mw0J>_=@y_BxXyQUx1_)c?%??$Zl7lePUAPOb>#LGe>GZ1|)xyBnv?T zMa~5&DsnSO`ed2wPLP5kkAq}RkurY*2^1NjT&G!?GIgHvUFi9S)H4;NI8TyeLA;D4 zi$Jn5DWka!GKE+MCV(wgAc^@>&kZ0+MRG(IN|^w}Q{)+ttRioM_=;3qiI!I+36idp zn!f}RC~^WwvR=xZNivGuOfrk5%-tlTNC@IKNSR@f^b$!v1j(Nz$@W*lewIqIABewP zk|RM9jgp*1GK!oD5}qw(E(OUpNzw&Uh)J0%_+!YJW|`|bkc1-t4w6)4%kSatR%8lD zIwobx`T}H}Sca`-8c0Tw(?MKCnn658t^hIT$U6HZqsWgyQf*S^F%aimN&X0uKTnbo z5OcmHpUk3F71;$Og;(}+&tK+DQ;^BWGJK{pNzb=7o$F-C_^}M<a!HROFMtG!`~xIZ zWYYI>rkBgJ*bT&0<ZuxGDk*aoNap*Jd<P^@WF1KH8Y%O8kmR+JY;!d%L6N;c@`@Y* zVy?5f%CunyGMVc)EprZJ+*pQN?E4^|BI`l2iaZRGSEK+^P~-!UutT0##Sd`ZZ-~ia zw`ty@ruzC!iBR!7K*m*M4-j9GsUQVKrh^n?Ql>TLLMCxzTsoDt2*goj1(6?ay2WlG zJvT``>p_x={2IjXk}}VNm~Kg41927kCrGGB#Wm2}BXdm#aTNIsh^xp!AYM$$w8l)x z_^}K%hB*}^ACoe<>LBCv%KEGTaTU1`q!^PjdafZotEHYCNRYFnOs)Vj$u%-p2;wU8 z5{ReB2O!Q`nQQxNak|arW4UCROB)v(SLNCdxsvOoo-cv;eVeXx4P=5?hTHixko0<~ zX9-9~kxM~}iu?d1(ZA`kx+&L3$UF!cZ-XrT84zEQH$jqlDN}JB+WEGaQ2W%iE^~tt zp%dEyGN~WMGDN-rk}VN#)t1KjL5YyeS0UryA#)u|<W5QIKnjYuAkJM<#skUREy;I5 zTt#jI$ttn|Bvj-<kko+G^8|>a$nzk+BCnIoJu=t3AX!DWxE@z0CS@$V5;E?+QqSi= z68A~+6_9L9%IG<kWbT)_P6Y`RSqzeYK+3d|j3Sqio(HAO_d)y;p=;VyzsTgrlI1~( z&{gh4u27Lakkms`^MfF1MScn5DDo^wMv+%QJVo9C@fF#;181tpr$7>cEPW4<q#_4^ zWE43Z#8u=N5KoblK#D(>niqnYpGeXIl2GI#kaSGST+<sN<HR!5sOD~vj3U1QaTO_o zWEI)^2IP8J)~6CA^;1bc2jVDl7>N0ql$inID{=xz@)0R>2FWP01SC+T4WyvRr6A_# zQqK(_8AbX@k0K9)BnM@#XFxnf-T*O=N|}i_qQw-UcSz?SlQO%3IFCzm0EqufNsa<Z z{YsKrkc=XYAYK^D(7m&~@f<`ZV}iPwe}hb+M5Y~c{JiB@GW4E`Wr&d1l=w|dDA$$9 z<tx$w5-8FM5|#+*p&(j8k;U~b&57Si%^Q#_T_TjrZEb0G6<OHQv@~BLRG)j0%X?bt zc^D+CNC*-r@;pePM5wI##zlA&uhjE0WX$g*`3Fcskx4&<B`7i(B&EncAZbMo1#uKP z4kV+<d=OWWvq3yXE&<6Z(gETt(g%`P<R>73B2R*Zio673hUB@AfD{zj>L#?tGg4*> zNK%o{fH;bzKr)IP1>!1lGKi<hSs+<O&I9pFB(j#~hP)<?t|=(8yuPi){9e}iD(Fcn zauY~Kk<}o1MFv0uMIHeuJTEmr2U1kz9gxJIq|6pK<17?OfaDd~6QrQXRFI+~(?HCh zrREbs5+yQiHs9QME3%atr{{;vlI2TUj2Fuo5b6MoUm_^QETPg%1TqVk*3WNpUX-Pu z1DUKMmw@<+TniHXMdn%sVqS^~G@o1F)QC48$An7nhfGS52SCz_{1U_~5vpOMyV7_s z$9h2OT3xhiiIC<Y$~7!x8kg7OT9gRMya<^<kvBk!iu@BK_19Pr<*K*^7G5GKy>;O- z*LbhQGE_qVQ!Ek6H3hkne~V>^d<G<|$iX0qSEbB!khCJlgX9%C4J1&c4y2$+BS`W! zsd*(xT9HdYd_}IOTyMs?a9&I6r!H8YdMhS$7ONmrRAe29^R|?^4<uCNagfwMq|Eam zt|BjkWZsc7Z-RJ=ya$pUkusa#iuNfH)Y)xXvb@Flr<B<aGS0h_>_WK|`7B65k*Oew z_hhakK*AD1S#?WRK;{E0GyYw<eEG7*x?r;kGrE3pH1wn<N^$~-tH=V7K#^r2W|GWx z0f?i>cR-4YTmzEYT;|GwB({*`E)ZXlpMew<`90~`Qs#OI#I2CzEfBMnBp;F<MYi^F zUZ1cs<FptwnB5?g+FI)Q97u8-Ne%<aD>4HlyPcFdfn*Yr%mXRxBFQoke|JgF1M#Y2 zf~&l&bt!UvIVJ{w-=SPb#so6WXE&kFUyTXLTnm}hQI?cB(_0~vpC)sy1<6d8<PMO; zOi3OBNggf9V<5gFzXLH}lQMq+Nh|Ueh*u+JJ_HFB`Q$2;evFja1tg_N6-ZW*FM|{n z`5H(PKaw_j7t8@MUzg+zkdz{4f@Bq00TPzT^l8(0m`Try^$?+fFjFEZ#axJ7iP^CX zkt}Ie<R;RrNH2&vA<jjb>*lx24^EV1Y5j5&mI!IS4Y`VnJWhJ%#JNaj7$l*{q)xPt zBHM#x6-j~=71<xenJYCPPPr7B2~tqxM3DSRGS?X(=446E1aTBu0pcst4iYMI6Um%n z^-Q2M-S{sDnS3n6hwlUl6!|e}R^%y=f+BwgF}1SJ{{TrSQqctqS7aBEydnpH6i=0U zjs!`bCW%A26qyH7P{ai>-;lX321zUO1CWd&w@|Kc%3OUQNk#4_J&HU@dKCE+h*u&r zPj==lt2-F)wYHkaxfYSkA$ZeuTso2FhWQ8PON1`Zo6sC6@;*qY$d=t`4MnyGDJrrX zh&eqji!^@@Br#8tBS9QRP6SD2q|9QFd`!kUFVegcGX8v->k`VPNERf$K+3G4T#DQY zQd}ry0+3XlB)<Z26nO!}Rpd<&Pm#@f&|-@03{q6&KoGZHmQ@4dDRKr#phz=Fs7O0V zL6Mt5ii+G0Viw7=9wyQt$*UmQC6bt4=s8o8N|4l9l6)Q{t;mrejv{kFGBGK0P0xUg z8_Uo|HfMr(ig+NtBG-ZB73l{F6?p`tpvV&-MMeGql5Uje^(u&~$iF~*MRr<^vJ}}D z1a6ZV9S08wNhvZ1B%{b;kgOseNTA3qAVo#`Nzd7`tVcjRMgB;76nP6IRAj3hG%K<@ zNTNw<J{Tma$Z;U)W+^id#BY(r1ql_o1jMY6G94fZMS4k(BKLsg&yl%)Nx9l2`8|lE z$SWX4MK)W5(pSn{JAfn<sRBtV@)aWI%3KaeT9JB?j3VcPxQcuq#8ae)^qeO(-v<)L zq|BW%2$|IRGS}0jS&^4Od`12V5-76$THF_k>;dBZo77wlVlI$mE=W?51(Zt>7sONK ze2}anmxF|g+ys*NmMp6u#8o5!$t&_C<?>{%mq9X$ybls6vdub_uE-ulE|hw{2x2ah zWI9Mnk&{3?MV5f%6*-UeTrBlmO?nhrO?ni02qaMCd61$a?|~#Qk(zhxgJwkz1xYJ1 z8^lp$5lBXnCJ^sZsrh1%tRmNg_=>CnDJpU=NO+ml^8`pikw1f&b}91?NJf!K>!DeZ zPlGt$k-7E*DJb$)ko4tJ#sLWxSp<^0Ldu*25-4&FNb<W<rVk{q$d5r1S4x@RQ?Bnx z@(Sfr<X@C4D`mFp$GP7o$^IZ&MUDXp6gd;5sK^x{$=ju#J`hKdUxRpxyb6+6WUCEm zRYmp%N&HA^o(_^$qz=SW<Wdm#9+~TAknFvZ<Vnwck~~Z@iaZVCEAm$m?|zx<1Jd(A zOlHkEc-}FXGdeLT)2~+Mp*fa;Nn+(1B>S^i50Pq+ydp<~1SNv9NDRN380VTb;}9-A zJ!nap(j6)*mSG+BM4pWG5OS$>MJ}MyO9W+c&hR%fS36{!-)_3}TObq0GOVK?q@c+C zAc?1?=3juM6?qoKRpb>APmvEmvWk4_HnhAVyMqLZ>`&x(vh-;nMMdU<B!{HTSs<<= z7myxBZU9L<BXi|JGKxF`l2v4g^eFNM>G{3Xv)S#?qsVR`o+1Z>_=-3n=2@wyf%GVH z5lB{%4v;{RAAuyElX@N_J&OE^^eFNU=}~06A3@LaQqSHX8AZMd;wkbCkb)x3An89y zJy(FZirfm~D>495ROFYW=LM<fMUadl?}20$+4c^cmm>RuBnnc`;UF1B=7M;NG=dZq zxeO%zN2%v#5Lb~rh_A>XNKujJNY9_7p0_|UifnZ!dH_Xs1u=h?xl$l0MbaP{MNT3; ziYy{MFIqii`lxdt<Hj=FOI!+4ROD)q;4iX1KIM8zl71q?k~{+9yei3WKnkx*@-j&J zZAsn%N&H<Ba~IA_k!?T{@5eIE%vrqNo&Hx$=rod$Da54Axle_RZ?-a<+O2vlWZa2X zhTCT$h^NRoAc;v*=DQ$yMLH?h=2GSk%C*I&OMe71=~#wK{|$(%$jcysBJYsqEjO)s z>${;jmSN4igSd(u0um@v1CpqaXHiFb6gi*tC~^boQRH@z%vMs*W0XsgKY@6PybF?5 zWQPH0-b3oy6U0eM@<kA{rzA&$6!(^77D!@WNfv>)`%BUa;wf?w>G^_`xdtRSKoXy1 z6j?`lz9?nx1#wa_Iq|63Gv>{&tMg-0#(D>lD<8{5wgD0-@<)(Rk+(sLihKxS4vb4D zMHTnp{!wHnkW`6q4eJ-zrAvfz?F$)4krYTqkt0A{MNR<mVp8TzGmt5MgiH%$Qd8ww zTn7>yB*~9J@&`-uB#3jUBySKoOp<NyMd{U&>;;njk|fhXoFgQuC-PNEz6BCYm*f_Z z<ku`IbM6C>@nRWs;+&(RT|+go9wM}9AX_4IEq+dA9TUqCc@m_c$O|BeW2H<HB&Eot z`)~ynsRZ#9IRqrH$Wb6gMP`Gfz8;rFb#7jAZoOL~RKwFC<14ZZBz;_*i)1bYDJXI+ zh&M~h<Uo?MCAo|ADDoJHtH=u=c}3m;2^9GkNLV7#Su9>|PLO3yz8__sD9IimiMf(| z0VF(Ck{KYyGbA~Ua?O+EOb{<4$+tkVirfg|D{==&a=y&<3y@HeKZ9fzNSS|<o<)*O zegJwFOR_(RbEYISK?;hTOfqLlnZ+P^MOK0&mr9u{Ks-fm0tprA2PrI*xgG*B%O!aV zBzd+Z!ytZ>B=3WSEs}ilL9|AjB>RB`7fMnC5?&$6H$c+9B=sO!Ma~AvE8>9!B{HYx zr~}E$i=9%>6_82ZCCT-qS&=RfbGMYajdCgS5J*~)5X31Fls@&4Ls6f5q@L#?<J}t* zl9_riN-q(r?<<fAeiO?Oc?Tr(TS+#12>5A9b^u8zvL}c$BxSw`k|`0Ce#n7S(T2}T znIj;Re=a7FIj9;n3`(T=tY|M*@Vu2N)6*UUJ;^`BdMH=xGW1%K@ct-Ak`?opw$^7Q zX|8WUeI(&MU4;^%_Bjb<C0>ZjA~K)ORFShl+=7&81u2vWYS`ScWKm1<kFgAh+uGcK znTsUYlxG}CcrTVGNpoXU3wFwhT#J@0ufsegCRD?VQF`{zl4L>hiufR*BI_yFi#Au8 zmVXd3ek?;pnctIUMcx4k6xks_S&CGF6cm{WQdDF<i1~{=i+=-2C~_@GQjtE8lp?<d zNh?wWaTJ;SV_Z{34g+x&sRi*AIiGU9Bx`sT$td#wQFb5jP1Wlk#}DE}l(=zSqd0I! z1Q#k%0Z~z-pyF&w2NX(sY|C`Tjf&SeP*l{ox5k0u4o=)r@wzpL19#k8|DRu)bNYO- z>AnBH{{PpNcb@0@%`<Y^rq?4Gkw=i6$QwvOq=*znmU-OsyiaXgeUPZgo=9Az21$yX ziufYuA!(5tk%Gu$Na9D^`l~KWWHA!?$;SMN#6;G3f;u9bBZWY^F~&~51`?C}#a2!r zkzcKhMv5XQxR^g|Od3i5WhH|YMD9RxOZV_PzK8f2l3d2hi-<4sCXy0ajO3RsXH^*2 zAFlEWUB~o%k~QsNTVD^!iNugpPa8AbWvyi8NF*uZBfiKPu1+YU2E=xDKYf`F#VyTj zVxlYC%C{gHk*AP?$lHk5%Vrf_9g#ngxJb{ZSTB){kc`OANLFMx5|7xn>XC%V$w*Qp zgA_#OxH_xYI!__K$a_dy<Od|Rs?F;8G_tytjgXv3f5cm(98+Pp>_<!_h;d8d)gV!k z<B*uhEF>;+Gm;Q_1WAg#iufXnk(9`<NJgaRGpvP36v>J7NAe>3BL$HokfO*q#9PzO z;bbH#G98JDT!zF&<{$}?SCFL0SBNjN@_fcF(g#V43`8;_2_z@dfaFC^buqo|xGqFu zYg@Sv@kQn!8Ik9ZyvRF<w~npz9g+~~^(><h*#gOn3_>F7+Byfg7?C7W6!DSldN%6} zB)-0tTakpwlSo?ReIzIHE0Pyk`#DDXFI#zgq#&{nl8D-vW01^-R;D`H$jZ4$s*jZn zlHAzJLoRC*D|sX<@-dPZ`2#74tnxf_D6$#iZE7pWk%-7KNK|AB5(}ilndEF@(p!`( zSBSZam~0S3NBDDqNPJ7%pXZU3$R~)mm5uq)Wr-~J0$Cz!BAKmi*7itY8!HJUzO9vU zNLu6!BqwquQWTksL}Ip19*K#3>0~<_)BQz`!R@WAjpRiJAd&ty<{%^{(u~AK&Os6) zHzP@rrx0IcA(9gL14)al^Ackh*#*fBuss}!M0U0^9*K*bi6lj?MN%S9AZd|BNJhka znbt+tL5d<fA@N;oe?}q+5g$p4oQrq^ZPv|5OeBZ+B5xtlU2WE{NFtC5$HmHdj*B41 z9TwhZNI_%}65q{MJ`Bl-)FIyPHfACc6`6_nBKIJ<Kq~a`Sz-!7OsR(-xjKVvTYn>2 zk=0%yG;U+IM$#gCBL$IToa|w<T9C|MR?bBtgRR_v6h)pyazkv)2QF)<l|PZJNbgta z^WHXQ2gDaS2+4^wA_bAtU7ca&Iu&O1B4Q#zOlelHMWP~iBQcT3k+{gKNJ8X8Bq{PO z;)`^9jmrDjk*<RHB7KmYNI%5ex9f2YAtn;Ul*Tm*iHeLzVj?FYaghs<gvd=u;UL@R z2aux3bBK4ajd=%&h<t@aMgBr!B9R63M`R-;A<`d7itLT}A|sKMNHvlcX+kn0$0J#h zvyhy~RY-h<9qFA&QsfyVCGs9p5cw7HM%p?nz0OEQHbQ)nospDC0!ar_Vb9kPlL=x< zdt(xk6*&vZiClr?MeafhB2OVjkv9?Vkn*@H^ye#L(#P1bcl!@L6j=kwifoSLM0P{+ zBKsi)k;9Rq$QZ<{vaL@-A|j_DQIQLfoX9muUgU11Ao4g;6nPEtlD73lNW9w0_egrQ zmA_n8jg=MNU~h=@Mv5YvxtLm;wS$Wh8RBB<Y|IE3BU0^R>TS#vq#$x0k{DxSu11m~ z_qaMDPa!FhH<7f+$4ExxJ0vUeH<A-s=}lHgWF4dsNQIrb88O8mhAH>F{)ji$j%yDj zB66UM8E0dTb}=I3k*LU2Bo<0-zlJLJq$VCpL%-URBtj`Y$>AdmlA*XBPN$9^N-2it z&8bja%mu`xMQ(O7-u8J8k`;L#DT=&{c#SseD<mTFo68be?k!e%g3VeN$%ynrye1nn z7>S4+ibO@mA~BKUkhsV>NKxc+B-3o$x)sTbJcM|@jd>MGiG1#2j<qqrBXN<H-X=>V ziljxhM=~Nqk*vrONI|3#iM80)PeA;MRxWaN0;#a)uP4TvWV7ZtnOv3%SuYV2pVD>A zhr}d;7)tV8DkLe=;~n}evH_Af&h}?pBz3x#y^*v?6_OE|jATX9NKWJ`BrkFYQV@9r zDT?F~?+n|YMMy;CCnPG;<6YKEWNjoa(icgH?1&^q_C|b>Ly(k64U!f)7RiXDkgUih zNbGDot{aiUMOGd{iXtx~-b@>_2#JXNf<#4@dylq6)<ohWn;;31osp!-{)jJ9jif{- zA!(6wk&MW7NLJ(_Bq#D3k{9{RWnEkzdxazAH&-W!aR-67;``JQSsN*cY=#s?1|Z%g zcAf_#5s^cXs7O5$6Pb*}Mb1JJB9|dak=qbo<WVFgl1I`aA0io%ACaucvL7%TBC8|O zS$3qGAZd}^ketXNNKxciBz~!_bFRx0nT;ebvoUuf-sM&vMPec^xjG^rx~$nY>t`f# zg_Rx!`XjPAk`UPm$%^dl<VsuTFeH7GmGMYMB;~S1W+FL}TamoT<4EM5a^(v9`88sq zL5%0VK0;z5KO%9F<rXqhkxh`K$X<vqQjMfUQcmXBv0s9uMeao6_t}`Ikc7xPNK)im z#1~oqL*{3$t+O6d5ZM+<KVW0_M2Zhu8G&RUwlW@xJ!<77#CyU@8cB-Wh@?dxKyo6l zA+aZIozIbk$nQwzX&Vz+MC;F3*%*n43`C+LBaoQLI3zA|Dv}nt5J|jb+qwZMh}?^K zFWZ=>kz63%c(s$ScZtadF{RhPLo%=0I)5QqkscpWS!7KlFVY7oh-{4%MRr8I*KAvR zAQ6$_NK~X6Nr_BC(y!Y(XCle}Sh)--irngA-mo!`BDpuMyzJy7D+R>+#LCY|L}aCp zS!Iz;k%Y)DNKRxwm-VTwd=!#jY~@%a`k9q8U7gRZ%yxCYuyP0De`V!iB>r_EP1O_X z-1oZ^#X#Ivc#fEi$lFL!<TE7wt<Cxq@xHUN(kIN1$ofcHWE&Urz0KMciHi(H@;}&^ zQAq4ZEA>c5WHRFaWMk5<&aYPPK?)){B>tO?c^yfMEJBJRMI`fw&06+T_Ud0&)<mLz zTiF^(hzxUCA~i@_WExTwnSpSp<aPY~#x+Pp<US|eY|OJrY$+=rAQ_P#knGYnX064{ z>M~aPA<1Q}9F63bw=xb%^ssU!k`~Dzd65T@Oi!DYM^Y<U`3A{~to#}CBeFRXUD;+0 zMv@|<5MN|0k`g%;$@j8#u0*_um8X!1$YLZavef5P7U_)?MPf*76<c{2l3(3QHR7#d zr4@;YOh=+3mmx8cdyu%uOGrXwA(9mN3Gqc%{(^CdY>K2sc1JQIM<ZDgAIXWFgA_!r zLW&}HA>NvHHl9KvBJU$nkzbL7$m(A*E|I=ST4WHCT+6m~7?N4r%6O!(v6WMh$W~S^ zMf`27WRaA}D@a=8TO=dW{VV2BWD_JOvKvwmIR+_;oPl`T+Wy>tM0T+90OE_hh~z~+ zL=rpNtRE0>Co3y|%{~<AgCs?EM0}CqNJgX@$&0ih1(E4UQDiof+Qs(gb|fS6Fp?8_ z6)A{(ig*KUoga~?NcV3zzC?N<d6D&yg2?7bQDhJj+10j{K+=P(9EIdU88Kpb>9@~{ zB7R-nc>ctu*KxfV<0^|B>tqibb0QMo)5?WNR^)CZFOoyN!8YrCS4ZR*Bqh?b$hbr{ zLb4(|AUTntNM2+VQWP1BctdP|rXmrM8Awdz3M4La3z86d0P#hhMp7alAZd~B5N~hW zpH;r4j>uL>L1Y->4YOHek+{f2C;J33ZYQ`O^^Og<;y&XyzJDOp^iC$rPgpr0Nr_y6 z<V0>l@*?*lk%MfV$B?wh^GM=g8}o+C8ewHI;vHh;FQj;=l~unZ<}fRLk+jGlBqMS# zk`-w{aw5kgd6DTzQREuL8)aLci$p~7NK~YNBt(8eQX;E-&nQH;L^2{nketYoNM7Vv zq$qM85<T4Z`DP>`G6zYEyp4EA*sL#*h{)eaRAk*BIGRLuMB*ZcA_<X+NK)h?q$qL^ zk~-4%X91EHS&U>wenIjgtNci1kxh}vQMU4qNL*xJBqwq>5<A*vH6Tfm6I_<aOqX?x z&AJ!Kh|EVKRW@c3k`nm|DT=K86Kj#QS^bfi$e~DFq!mes%s`SNStKX&3=*xjZ55D$ z$Z|i^Ly^r9Z?w%CghXqs9D^i8PD7F+*CW2jBS=o<6(mw?D}RYZMY{h&Wsyyhl*nKt zEmDJIMNU9+B9|iZI@|hPE=FWNlCHNgi;%p?_egS#jal(mW>w^0NMx*y*#U`(?2jZw zl87&IJdzT*7)guVj$}mUBRP>pNM7VOq$sk=Z|sBy+vkmtxXAX1FER*8iyVk#M5>U; zI9qul5*0ZIiHXcak|Nh4zQ}_}TI6LUFY*CW5cviviY)&-t&g`oTn~wd;;!A3tN9e- zP?#$(Mody<f5aE5M^YlEAZd}ykc`M&B;IKI^C}XZVC72}Bhu{;S{GR#Nr~)+q(u%# zG9puvtjGmOPUKD`FY+W(5P1(Niu{UrO?DJ({K?)B*$#<{#F0d^%{l~0iBuz5k*P>Q zWCl_cxekf=w(<i=O5|lEbF7W|7|Dx#j}%1yMv5XE{>9i^Y@I<!L}U~a6{$rsBGZtZ z$oYuZYAfH3#6;#J1(ElWbeqlk5y^=}|0YZ1K%^)#4v9>(b<ROzA~O+hl8w2=#fUtL zWJF#=vLat0IgypUZeCtwBcvd*CsGtS67eS6{!Bn3BBvlxk&BU-$Zbem<VhqU@(z*| zDI&f|w{G3|8+^7uYanTnO^}SpE=X47AS5SJg%m{E5Pyno>vY7MYUMH{A#y8{pJrp8 zKqALkS%^eMenny;D=kIqBAX#8k%36`L|gd~BrY-@DT<uvVotJI7b9NEN*2kAyo^Lo zwlSX|zQ|JD8O13!W_=_svMZ7hNg{cXl#4ml*0~zVon~bYQV@9_iJWd@3P?(1sihg0 z$XZDHESt48;?1x!1j&gUgXBfdK{EfgS(hX6^Q_#8Bt)J-iX!hJv9!%9x-5}y%Mf$E zjadcpFR`*Qk`mb!NsAnWWJSgxIgwKkZ<eim2@(~#6G@0Xk7PwYLvkX&B9TjN<sQp2 zV<MX&DUm@)TI4V!BhrKvL{35c*|x2jNc1WzcOxm07m&Qj$4Dk)vwlU2*IHS5IcDs7 zE1MuukpYM=G6czr9F7!3CLrDow(|K%MC2wUDUw5ckvEZ)$oEKEWaZ@<smP{CR%CZ1 zCo&4ji?kpGkr_x)<OamMu{<vRv$L;<iAmmK$NnOcx!uZQBroz8QV>~v1zH!`7D?Z4 z>kL9-bFGX*d=Vc>K44?cb#+9pMlvFIAz6_pketXXNM7V4q#*J=QWROX2NU<8?avxW zL}UvjDzYaM6FCBji?kvMk@JwG$dyP+<Q^m~vH;15e2Qd6ycL-Zkqwc&$RMO3atPu* zWXC=piHe+p#6&Jd5+b)FNs*@zU*s($EAkyu6j`Px{dw5-r#BK8*$hdD?0}?24nXoE z<B{kiw(_Y+Oym+IC2}j06L}uVi+qd}M1Dt#BCD^&{5)n`?}ubX_Cs<aNhFf9S#3y6 zWIB=%xf)4{+=paE@`yLjR{jJ@F1GRqlK$Mvx+}95Us#DFX^{~~UZlard}*_$B8ji8 z{2PgVZRHvyBk~ZE6?qMbeq*yfLA-CR^y)<&ksXlecQ)n-B=)_P6P^5IC4)qMwlWt< zh`fdr{<JY)yR5&htQcW_mg>p<dDL5~bh_?~WR|fq(8Vlor51^<Xyte$*VD>uCo5aI z3rR+-%tz9zS$W^ZtYM|cD%26#1c|L_V+JD0waUVjclNa(G3nkm>sX|)wv}^`+=f<e zL-KvBJc0NdTX_pfZD!>sB(b@b6;@@hZeitLh_{uM0Z4A3l|zx}?p7L+^qy8uLn3=w zxeD<`<{*V3HfDjVGt|nDNNR5@E3ZbMhgsPg$%@30<UTg$Xe6?)l{S~PpOqO%{6H(0 zAPJG{k)+7Ih%fR4k`l=yX_5DkjL7#$R%C_MnR$`*k-W%uNI_(8q$qMU;w9|3jzuCO zrz263%aEAJok(0{9+D7w4M_%4Vb6a`j33054vOEA>_N7Nz1E=e2rHW*nUPioAw`ix zknAWMGa88=Zl%e^h@@Q15kbrzBM#Wk{T;k)AQeV&K3Rz)gDf|UtB^t<6|(Ljrg)Ui zdIs^2w(=g5I>yTPh*wpX3YEPz*)2g#X;yn8iKMObFT|_1vMrJhq(bF5F_|EyRQVvJ zC^8z!)!53dNTS}#=`L%Gm5ULt!OD$DO5{N#H_pbqh-4;MS%^eht^9z*1F0~srPpG; zf|$~{R!1^ZY@LmftVn+(Kh?$zMiSGk9O7a`>X78|HfACcIl;<wS0|7PeZJDw31Uip zz8CRDo<mZBRH*YlF|iYE>whANldP=Mo3=!DM0}A^NFrsknvjCX=}7uy8*@35ImOBx zBz~%uCy<25D@ao01H>2k8cB)#fy7U<m3ypBWs!9dUt~uor`xRINKxcSBzZ<Trouco z5R(dGO6xTlDTtim>YQoYx(JD#ZRJKJA@U&Ni@b^yMHV528Me+3E=Hv1I;_RHU5{c- zV!ZQhohXvN(8}&eUgS`uAX1NHX4<StNcLhYr@A^K7a{RWY)l48h}?}NMILuqvuxID zNLu70Bq#DK61&u9t*|b2MAkvlB3mFukzHKYWwy@#NJ69*Ns3HFe33JdR3H`h*oDMo z|4Ynu#N@BG{kaP%iadfuZnH5jA%**`yo;nCwemIMJ!a)Mmo?AIit91bXRQ1S@kO?B z@}iB|-DSOG<zOW7ij``YCDMwdM9x5RuiC6jk?eo0+~Q(H<|0Lr=a9@B<*W*8QE-)m zn9}k7ldCM!bA8rAqz_UM>5mjeh9KUXw$Fzm5s|S-ROEOhCXz<tBG(}akq3~Z$cu<C zvJgp${D`DQdi;wS6ZsdC73qiMM1~@Hkt30UNE=cVIT!KXvh#BT5)sKEQIXe>n8+tc zT;x|IA+pj2%#TPE@kO>rQX)f<w8#-iM&wu|D>5C)iCl%`MeaumBJ+`=$Xkf_ww<5P zk%-72NK|BvDDxw-4H6gG8%c;%BT11dh%a&;k`lQANsBy+WJKOTvLZz!C$hqZ%#TPP zq#&{bQWV(-@!qlXa}*L0@sX&=iAYRj1`-#!3`vOGj3h<wM|_c|kd(-4NLu7WBqQ=8 zk`-BgBj!hBT_i8EEm9B}gcL;%M7($H{8S+k5g&<)oQA|iW+8Er+mM9FJR~Xd2I7l+ zg``COLee6=`Y=C%(EZN7`Vx~3VoCvfAUTo4kfO+BB>tYAjnk2o$b~LT<Z2}MzRkKD zNq%7EDOX426(qgT#uQu~k?&odMK)%+jhXpRtgMarBAX+bPi@RDNc?jv`??sBqmZ1) zc%&#Y4e`FPb<RQJUs|~w@kMS!vLX+=I^Wu?JQ59M&wUQ8YOSiTO@`u@@EuoK<P#(% z@+}hk$yWXgN&IYOg-w`wk=2om$OcGOWD6uGvMW*$IS}!Fv2E2LQIS?89!Q1Vdy>og zy<De4%-O``{<3Xdg5*VRKq7y4UFTV1GTuraEta3kzUAtO6p=zG{Qd5U{D}-N+O3?` zNe^92>%`GsVyU1q;*z{<cOx#u^Op|9t@7Wrl~~5gikos2ENf*gB(YpsI%(b2*~Vop zZ?pD8ycMh*i4+5=P^X@lbPt==f<#uda+0gu)5_UMY^6XLd)*YDpXBKsi0k1@Vv=iH zxgII}%SzV8Y+&U%#NX7)2S{|YKxk`B4fE{xElY)Q70HTi5oEdkbl;4fu(g#{kwVPM z=18QUmEDo7$PrEk*qCuhQRFxzwu6nCfuu!dyR02;%sohECo4}Qk)5r)i)2N<Lh^xB zn2leEiSA<StlF2hcD1qrk`>t+DToX~QhV5}Bb@AQr4cEH!g{q-^Lg))Vda<#Jv@%A z$iBAD*+^96awNZ>jmaVfkw=lD$O0z^R&JdhwjRr8)Ta-#l?!A=kEopGcGNe-WR9^} z-8bjRtqNqXJx7%O`h0P;mDceMzE@+#{T=zJi2FP8F_G4`=E?C;T<cNV%8G1>6h-z# zqP0O=E-T@BC~_o{5*dSJMOu-f$Vo`7&Q?ATNs3&7q(yE+3L?)SMUh2_S8pr-jYLEu zThNxs=159pD3TEwfn-I-A~}(1NI~S^NNSAj&vh<F<Qc>tYhyk_iXwj_nFbrP?v})e z?103^m18O#Df<!=4`SSsdPyW9G6_kFoP+oxS0E{oN0G>Q+rzxe68RWOi~Nk_8g14J zTQSlJR@OzbBHJSQKq`!MFJj_Nw$5RQFES2EiJXiSMP?$=W?ScGSI4*V5E5^(@-h-@ zwXzUNw^{ko#Z0o|ZA~4KRS;ifV<auI3z8ApAIXZ0L2@D|BYBa_kb=m4NKxcf#G7pU z{3#L<`5lRh^xB5jMK(lY(`=poNJ3<9#1|Qjq(xFlQRF<tJI+?V9*KxNghWO1NK9lQ z5*PUvNr-scGS4CrBrg(0iXsCL?|9q8eUZcoWvQ^A4|kQXwpk5GL1ZdY6gdm=uCZB{ zA`y|Bk*LT6NKE8eBrft6k`Va}Ns9c6_#!LBIO0UsM$#giBN>sMk*vr8NKT{%$%~wZ z6hy8^iXx99-nDjq-asNEUpl$j#w@oT<GR(#YDh|C10*dHLoy<9Br7r;@$R#gk3=G& z3^_DW)l$=+PvEgJV~9!5vvLNK5xE}8iadqnMBYQ<d0XdqBq6d%KUP^}2;z&>ASsb^ zk+jI|NJivEBrEbIk`q~LdsbOw8zlCs?ejiJ<TWeDAejYLPH}ZaW+R37Y|ITv?0qY9 zkmv_ia)>YTDv}XdgrvT<SzjaGH&*^cA|fmGXDy00W@98FvICM78G`sChaqW^@kmx= zI+7E)1j&cOZz0uHPvti<LUDHvHxN@4c>wXgwS9gaiHLlML`8ZHV4g+RMl$QT->?YY zcW;SA*R`@YlH9<`F-SqA6^TV{%yc9zaxs$I(8gSc6gRT+43gd0%0eWzsg<9Q<mOhE z+ksK^x3W4CJHSdGq%gwDZb*7$Afx&X7_i;W{MJt>ZszwV#ycd4aWdA`5t)qm$Jv-u zk=zMZE=GzX*CO$gY)lqOrL5#!mdGnE>kJ$7A(9jM*~QGTF+F#rawvm`wf{A=f|b%= zC`+7cvo<2DD6$O_`L~VP1&ND{MEtaksYQ|(1VZcX4?lX*ivn@8+Dc4J<Rn*F<SbW5 z<YFW`)7H7g#fUtB_#*R>R3I#GXJ7BSn2T-Y?~ueLR{lnEp$snnUC!vNa!e<cU5uOP zbP!W&y5~-e{Zd<bEhHhbG2)AChh#*CBav%tog<Kx$ao}wt&N$Cc-L7u4T+0f?&{oV zV{S&WB99>Xn}QfOQn$>Jn*(t}oli_g<P9WoTM*NpHKwU}M<6b15i!X-t^DHZh%CP| z{SoPn<V5-)-d(oNb}ma~4<vcFjX4yF-eYBglY6b4g5*UmMY3~j%$-Q_J}b{4vAI@W zLoy;CAl?Huril0=-FBgMk=2m+gEnguBqOpt5_!nR?17{owsHWHe8kF8NKT~H#XM?b z&PIHZOOUk4ok&LH2_!4>AEY4iB~ldWK9Ko&%(lKR5)s)JiHhus<V5yGiXz7#v7D{k zh@?bLMdI^pOd3gxT!ADWw=ws*7?GEdyvQOX@`TMQB1w^Dc4ZDl)<q&u+N?oHTBHVv zJ!NA~M551HIS27YW+6F|n-K3gn>7c?ioA~$MSgTy&)cl!ccafD8zNDW!AM->2$%JO zt<&PNUbHg9$xBvlMEty!$B@JVD{msnH?4ezMBcLU8<G-Pad&3*Z5y*5k`vj=$vZY? zS0w&kS(up4zD5v}3}Q+FjYwK#x{Fz8D_?~aMdl#!4{glzNJiu%mnHJ2%UaZR4<mz^ zpHFP%K1fbvxQqG1#<U>`ku#C(*ES}Dc;8rg2#Jd<Kyo7AA%$;kRwPdA-&@%hiHZzE z5+XH7O5`*oD{=)A`N3A6hr~p_L5d>l??GEX*{oqmUgQWQ{-=#;L}E+z^16A!z52;W zO5{o;Ei%{1GB)cu#9P72M@YPfm1XuMtCyAak*vr7Bp*nH-Ma@d#r4W{D#RR2jJJtx zYqXQitu!MAk(7(s!p5AB<hQnR6;c$r9f@sgW9A~6Kq~a`8Da`SOz9YW-PMWNIv=|j zk>8Nyb~dKxUi3#~10>bY#%zap+gsTcNs8=?<V8jyh5j~c0utT9%4vu%av74@(Z<}3 z6h-DC`JHXd0wgxj%7-pyZ!5nbsbN-n4JK<JE1MvNKq}09KVtlSgREiu4Ib*IKQ%lM z_pjZFiSA#P3U!7PlL%s5l6N$c78!@+544phA%#$e?Z3xfF4Irgn3IW#9c1MkBrY-= z$%x#56hmno+y0I$H8QA!l-`jQLvbzNOIGrbAjZizdwI%Wfk~lQTqH=9>bz@^T z6jx^<F*%X1k-W&SNbIn3oeJ~ZYY1(P3fgj&H$kFDbe%PjnAlM^>o6plw9<h1qpci| z6h+cVyw=8CgQV)L%tgGhR$g*3<E(s+Bpa<PJCxR&tgMT~nyqY&M0_hlk!T<lX6z_p zQpc9FD#ZA%PK&L4u4}6`kOTMJ*Zo?Fmz!vXj~wQ^1A(};xR$J#$el=0<RQeLVzZt` zqEoHBg5*WsL(<c1%x8#qoRuGtn8@EqQe?%wY5jPcwHA^Q>4QX1vN78rsne_^ki1Bf z%R1f0oPqcv*C08O2a(JfHtQ9nDDou|Khwta7{+XfY>X5{1|rGnHtPVFC2};96FC-% zoMp34c6CIqadku<b9F=(x;kguI)A%5B5UnK%(*sZTPGJ;8H^M~jzsb^ZA=T2y~N5{ zuFfngS0f3LdyvefHs&RyAhHngFS9W}A!(5n_N9)<x=1#ZgZJw14h=6KNQGmtA6bdZ zZCkq|`9LaU9Y{=Mw#}+SG9s-`uCy^{Ah|#)RKA3mRHmF&A?9vZ=W1K|Iiz^4mG=<u zIx9saBGP?7jvbM;keJApNa_Y#XAn}j$;#nK_SUjg=<_6E;<wqXG~(Ufb=K9y6oZ)3 zdd@+jci1|4Bz32iPm!ER_u;Im$OcG3WJe^IwRJ`~xy#CUS4ZSjS4U(vQWTkkcz4@6 z&ma+zcaf;bH%MG$h5b1$MEW2Zk=>BOy|%59NKvE?@$R!R(~y|R*@!Q46_OUY11X9; zf<zy%mGiES$j3-Z<ToTO((3@m^@yz#MG}u%*#=39?1~hgurd2PdDTh{5-(V3MG_(> zJNd}QT#ckf9!4@EZy;HbB9aqX;Xw9}NMEENG7Kq-R3qNUwm-)qQIRW=n8>3@T;x3@ zA@U=V6j?dJdWmd?q(p`y*-vbLs*#+?G$b!_E)xCJW?k*%b1RP`F_G7ig2-n`@@t#5 z)Is!FWL+dBvOSU(Ngx>!AIXYbh~z}>K)i2k>+_L_$cIQg5W+kA`k9zy5K{_R<zRX! zvI&w4q(YtTh=~+!fA&D)BKsjJk;7eOkuiw(t*tW^iHV$v_#&4gS&`e2qR2cX`kk%( zA`%yQ3rUK6f}}*gM=~PaM=%PJ)sTY7#)$X5ZG8X|6&ZrWMGirdBK1g0WHOQwnSta) zu0{$Xa}e(b+n;BUsK`4=T;wYxDbjr;{SjFk$%t%&<V5yB3L=Lh-jB9F4M<evL?kY9 zA(9li9!ZJZk7Pt%L~<gFkb=lhi1(B2&kBdoACYyCxX6}BQe+U45*dMHMCy>7$Yi7- zG6V5`w*9#piHh8d_#!zZEs{sFA_XKb@-0#n`3s5sVq0JFP>xEGwULC#W{5AcCz2L9 z8p(=GLA+mWTW2Ftk=aOG<Q60;G8ajSEI=|MMI<NE^DsvGn{9mqBqq`iNr>!$_#z1; z9S8&J?5l>DOb}BFn1p0S&O&k`S0H(jJCTCOJftY{8shzK$Mp#k38X>~zb7Ud#Iz4# z6tf|+5)v0#7fJqM+u9C^{Apz`SEpyhJZ&C{c)hIDyE-CMovdPG&USUyuyQ4mUDL{) zE^8et^N_-NR^C90B3~ii`ZlKf;fz9L9V8k^g*n`Ym{br`n!`PvY+@^qaI&eDu}EYy zE0bM}$azS-uZ_75Ns2t;vPAxa6h#&ziOp@D-;u1y%11C`A{!x*Eo|2INK|A`BpyhG z`8mqPY-Q`TA_<YRk)+7gh%fShi`mZBdBw$uEJjiye<Nv;HIL+|6p0~Ok$sVzNG*~V zISDC<T<o&8w>`|dERh$HVt*U+xvMk4$}&eWKRa28B1w_mk(9_$NI_&065rX@xd_RL z+=Y0%*q9fPl*mFPI?%>^kHq)15;>YV6zPM+_p&iNAvuwKk-}gbGY0X8SecAuM9y|u z``MV=5pTGahmc4h6?WzeF6#iBRY39wTKUUK!pfS*u!16+BZY%(%<hPPu$2)=a-@|B zNJ`{XBqMSuk{7ujDTus=L=Lf)zd+)FR2cgo#3V-9tktUMk4Rr6E3z|E7;Uo-K)f0& zb%;O4N(+*iY31KYUStjuyV%Ceb6JmBS%7%+tbBr`MgByxBE6DSe%xmDK~f_9k@yof zCV^x`s*vcDHl`Ixik$AUp0Y8s5dRq~cOu?=D=)ejk@u0p%Qog`mzB2?sit+2jga`O zHf9i#7C8jThSJ*FxV`({k-wmvMI)VkjUy``#FPTsT;<noTjwG1H?3TYMBcJ;50ZMv z%5z9o<UN=5o{jkp@!q$x`e^1^q%RWxpd3?S6gv}>Uuf&>hj<@a8IMFoPDhd=mmt|s zY}U<4<X0<?x-60R5ntqMB>J1p@@g1G_f<T+{ClixA(^GEY=&e-1|m6;L!2yYvnC)# zk<*dLayI62Br0-05)*mRWi4;BK5;Q3e<JA>Y|QGlWUXjrYa}Z&7%7O1a#=lXRx1({ zIUPxgT!o}W<{*icY@HVoZ)GdrA(38zv^BPFSLL_V7uF2KZTg;dWUXaoBP1rWGm`0T zV-9vP>so1YG3!}53n@meWRTqURvtnk{jI!$q(r_zq62J9w|eS`tb!DGurYm*{7zQ3 zM-sc2g+X`rwKp-|UN-AUS9!3NF|N)&R$7td{#{o-gP2SZQ)>ERBqwqM;vHZsKY%1e zUO-X@*_cm}jL1@Bs4TJ(5<l2x4RkRhtc*nRfmE2E8kaTFX0;*FL&{Pi>ttg5!@7>S zfSAb9w(?c3av+^l=BK7>#@5x0j~-*QvScNaUAOf(F`3ae>n$W!YvmiHSZ`&yv2<dr zl?{+oAf5EkE%Wxo6oZ)3y6=l58p?GlWF1OOWSnhljB6{93R%;L@f&T{SxB<Y%4JCW zL@Re7>FHLUKyqhUS%Bn479;))8}mDo__vkS8i)y`LZ3Gx#yhW^RUu|4Vj@9IX$}uW zG9vXzL1YpVP22vQg(O8Tb8^0onS*3SUUD%P+L$j8{~{~h$1!6fQ6x6g#_WWoL=His z7u%Q#h%a&qk`cKA$%)*D#4oXRUUpd`pSqY?<(LZdy!3chFo-G5^9D##WM{+|8HuDs zT9CBJ`A8;^3awv7O!QJaiaT88Kq_QCLX3Br&3Yb52T~zxF)`U7rZm!}8`(c1eGu<* zTX}CJDpHFiMN&vw<O(D!@+guQc?XHiwrzcbL`D8Ue370LIJbzbixjS~b+&RbBD*80 zE6Xtz=4Y6z6U3C}X9N<x%2u9?#6-?=St7HMOvYy2<6=bSBay3Z%v*>r@+}g*#>Ony zMCCv#jN)I!#BQ=#+aWoTeUNO<#vFs>AGgwqB%ZKx8WMfd%K3=*l$C3cxX4{dTI5j| z^R&%+&c%dMTUXy$-B#yipRqA-xU4s=e2f&|vQl()-nR0WllQEw*vv>p)<SX%ZA@Pz z^`VskE=FW8B(ccG9OUF9E5{(oP#T)r$5jZ$ZL;yi_}x}D?-V8>d69Em<)v&)2JyOE zxeJMlJc9Vk*qE1)tjOC)YB?M8g^LmS9Vv<|=hL6%ZB}n29Y`lTv#PD7^w}EG4Q<w@ zWJNc!vLh1jV`ZpoOC*6LH?}cJS7%Er<B(h+o%F}e{3K%XL5w$TNJ~p|3%_yMAvOGX zWOEIlRUTBHR#W<6O#ZHPAg<1tuB}k2Ya8oYw(sZVVm9V{*OtiDNKxb-Bsn0+s%fd& zzF*Ze&sU+nbSSR%d1PfpUPf{vA0YWaD$K^0#1sbxt-H#9BeC7AtaU7vcek<?k{V=X zPb3nzatM+X8INQ{PC>FFvyq(0eMmthk9d37w!T85B0XBzKO%jRq{vVtB{Bv{i%fSh zLu^|YyBLuS5*un`?nM$J&m-}@ZOlTXAo2&29%f_KXr=N#R<=QkB7>3izBc9vB)gxL ziLTE6R?<jZ<R&C3@-&hX`3T7bQej8^L`*h_aU058v5hqqSsy8g^h3M@Y!8RJm;<dG zhGY-5G65+bZsjx=bEK7-NKWJ$#6QZ$<dBre+elvI7bJ1C&01z6b&j#p8}X7>wnPdd zgOEhEjTzx&w3TWkDKZ&JiJXRHMP?!eksFanjjcQviHqcsgveqfDe|L}T3ctuN$doX z4UoLZ4oJGrX6=JS>#ZDt<V2c~*ccmg0upJkayF6`xx&>E$sz@j$6cLqw$2+!T;zKs zDbi~)t1Pk=k`dVl$%<4Vd69`oLF7E7C~`C6jki5~0*Q#cheSnwK++;TrckHR)>#|z zo2+c=q}j@jNZz+H6v-WH<!Bcp(uNd7&U7&?HtRAZJJHI`h&Rc~y+~T*MVBSA2+525 zjTA-Jp300(ww1R>Vj}w^d65Rhn_{z$b6FziBbnoD%ndH)1S=0B$rG)-f}~HfvIy}` zv+^4f5m|p4s~ia7oqcUbj33050!APik@1LkM!BsDb*2)N=pu%@@+l2%G;pTv^BH7C z1F2AX7BR^n#;dBDP~FhPw?RU2oxX*bVjvaj%p)d0-L}2}@y@og2=PU}K~jNKsQfoE z=^&;whrN!Y&J0_5b0_DOr9z#(h>4tUvkphR3#|A^;vy^OB6*S95r3wQndjtUD+`dc z$Rea5@{7y5#AdB=JpGwvWoslZ5=U|(372)L&6<E@LaD0vTk2Zt+WgDPF`dj$IfS3p zw{^~QZ3WUvmRpQViHXdvT-n83OHB4kTX`<xU2WwRBpyg7Z4GX0+}~}@L>Doxtq-V^ z>>{SIxoONee($C}i1Aw6TAJMF1p0w=(z>hsg&W0xiTQ(=+<)x2dY(YJH>|9OBm$|> z);7dsyNGFQ9@EeDDc?nm-#poc@M-En>s3{ZwXL~6_kLL_w7v_ihcTrZ`yl=YU1yE3 zF`P+gzk$DwU8tNjVKlv&T*FUa2R(F+)let$aUjIF#o_mt1934ETw8&3GK$hT8yh=f zT#`4Lto-82{V8QlY-|i;N?9k974N=U`8fa|(AuvNPp?##PFioQEq#nD-~Z|&h81*m z3SGpw=FfMn_o`gS#bn%U1ThZ0EK(GC2#G|3QB+lpscmbn_R_0#U3tE%yjj;Vue+GO zL1owahe&>NE8jTT!piSRd`l}UoJgNVRzsp&*_eMJiLI?{jpVnnvWt^#tqgW`Vpa}B zGTT`>9Le^xQse4uZ>1UW`j@4Xb$4SwiI~JrHtRejEpjCi-Py+6gcL_st~|MhBW1#9 zego8I-Az{Hus|l)w3g0ekx`ZFxE?-CR{X!jJWEWhy6ZX%iOKz!n6HUR)OB6w7Z+0> zjKcMB>5~}O7%LGZDY5~Q7ugEQj<;EZketZDNTJcj9D{gGRwf{kKq{>A6k_}!#&y{{ z9f==Xu2UiFa$?d!jK{53+t|96mP{zF&fPAirRzE`5|asHya{y^+%J-PeH(&N9NXH= z=kW3sO7-Y=={+upX{l>}hE^OKNNa0NbyGcOqz-8q(^Sn#YH^3OwUpYL9}2B=Z^8LF zY->XK;oMFgQa52j^Q1bjcPI_5jm?wmTD-BLaPF<Crp}vT<<iF;Gl*Y8sjqLG*gBRN zo7LnxbW<49&^o2IVN65YurS6=#6o7QAnWx#k`HHt)>~@Ews^C`I`uV;&8>AFpDP>A zPg{%o6<#k9#*oGTaV-dC5;sx}O>OnbP~5mE?BzqLZ>!_VL{?b2J;(Ew55@KQFM9Z9 z*u(nCEe$++_ojz2RBo#Ar+S&Na``=g_e&U4?hfy}gHhCvscUPcdcH&0gU#;wYACMt z6;j>2#bN8T)z&<*(VG&s#q-u`K0e&LDa_*hQ@T=*3S)xDv|d=pRbHRUg;47KiETW| z_2!0kMz_{gGiToN665-u4P)Ax+xL$jwpCx(%-&_MhB5A6o6}Y<JW?83C;C3SE+H|y z5HqWzEk6CrWoE({#$MmnFrjX4*j5!g-rYm`Vb;VZrj=og?TBGko0{o!7~_spw-aKv za%t{!VOD*!?{0Ry`C&{$YpY*fQ|FBerL-2~*$H7*HPhkx90}WU{~FA=`i4UP>Y66; z20E<M-eW$iAr#j`Hk20)rD|dm58B6jJB4*<y|l{Nu=P@ZXg?K7eQRAE9rR{()G1YA z&xdtf4-cY;@i4~8QAlA0uk@2y?SK1qnv0?Ovb@?Z(~;Z@OMBfznT4c=EoI~m<VjMN z4`ZG}E?UmYr%05~6LeMED|;t*^JdU`M^;ayk$-kbZzOr>GN!F<kp+?!N4}KSk3@<G z+pI~5_hC0v=OQFB+{WCD#167DA9*2ctFfV#MfJR4r@MRFU=;r$rm&yQ`U4rht{ugi zr*!k)?O~-45|{q$iR4DuI<-h-J3C`1BK>>XI%yYkn9a%{u|urnk(9_!h$nqs?Ns`+ zm0i<~kyz<k8H_ZBM4z!cVUWvu%+BgjNSmzSaW0FocdYwG$h+aJGLhbm$eX@9X9jIO zfb1$UFCf#KZOkGhRj{oudm2|6sk07}k(fP^kt^CcJP>(7R_7?BFMXi{<-OX7B!}Di zISEPaW9Ru&Bqw|I4kWXs&B`I(##UZK`d-5~F~hcgK^~SlT=8_)LMm^F6lJ$0kff~g zR3s}|XCsBZY@cVkESa$zkgep%orie)*gn63tS&wL7KwAU?ij^-XE65bY+ErTQ92_9 zv$_j%uk7ccNOoVFbre$QVOwuSJlXTpkr{FZ$RIn(?tK`UEp5GsL=UiSeTZabR+l=n zn>SeYMg+;qJa2;>FMD;Mi;?4NKP0!mZL1FXrF4(vX2U%yXyDdrl+4d@#H3_4&UaF8 z_x#PsC^;_fM<O!z`AGC}JBM#0x;lR%tIH@N)0z3(ZCm}E>}l%^Mf%EFy$U&A_C_n> zPU#(IfHZQQtk*S2GHxs1iDVwL@)+`_jP!k^kh3x0AnVC0|Au%6+L@1@#kEOdwnSnw ziro;O+34u=2xPE~s~(vm{h5Neua5J^*~oe_t5+lO@Y>YSTDlwclBMf%a9q4ZOiK3Q zPsj}EbGNgZu?_9mS3{yxt@K46mUG<zgg?G&uCRL`?u((7M(cS;B01T;$0C17os*E{ zdbX{Z<vJZRb`#>uC|*GN%hB{E@{#O>uaV>`cD;Ue(rE8VmOY1eZPLTuNJfsYosdG- zo{>f((Rp@1`$$%@PDK)&{W?Z5+tmrL_>;D;YMs)=JFtW7*zY0cT^Ys8$P027U5w<V zt!^{Ac}p|vfBzlK{F+Es_UbN3CT!iU(@-RLz8%+LPFA)v)__Fi-X`Vh$i2k5PPVeM zaXoUp^!X8lKl*L<#<MOf+`X<p-@6!D)4!3F%;DPSvVu$78QT<z?qFqCq%k~FnCFIC zt|yrRHs(NLev#QY0$EyGAA`hX*PV+LVz$mz$O1W*A4S^2vD5nKn&zg~<iqxE=XGLI zvg^J>+*ij6cK<gLv9c}_4bR~t8tdv9mN!<;8(R{yI2_lg0kNH{`1Vq&ukG_dVv4di z#yOGe#YwKMZSC&83^__x@CM{znXx&@R^e<^RZXd>sxA%7oX1`u=Cp8r+^ZiT2{~te zhvc5KGq&P++zHEhV;v;9(C)fJ5xo+%AsdG~!L@Zd(kP>tiNxh-$|AYVf*Bi8*EVEQ zT~pgEndgUziOL+ljijVM%cQx_lslr;k&k4?Hbe??2eKP-uk?9;BreBb4HAvn)tTr- z?$G}2vN$PpoPTaW@-m9MkQ8lo#Jq^)o(RV7X6$36AS3N{KF5XZ-o8jq?qsTvyvSw9 z(lV~wkiIfMk0M366Mh?+A?v;viHx%6sGkw{)p6|fxPaEB&PGTsVY7xJ8%yO8NFtn{ z!$$0Ja9zzLFCQLFu8mq^qI=u<X+wHSos*DcxSv~G5x#bkI_DFU`O@y*Tac0AvEwr4 zA->#I{s*~8ViqG_cusIxJuYOu!clPksqvc|TT|QHKCeqmMpkf3BqnRIE0Po0AMxbO zKL$xIYb#Gg;$iEqKPMv@Ig4KFWD}cpCz5;79`6q#`D5&r`dK6`JG_9TM%p!9<|670 zv$8f4y~bYSh9Dcu`KQKZEfe&os{DLxikuIRC8i*)pMkXPWRIOIkts4`bCIlE<K97r z-5Rvz=I48)AUku7nXJ3)-ffYjtnxuf?tQy|Cb*c(t(=9_%5J$8DTeP9T<eb^8%xZ) z$PaRyeu~5&uzmgk@#Gj>`eN2X-oI~$cu||R2NDmD3)lLgE@qBh_c6!<IYYJ~7s>H; zimM}Mq#KZkoWmbNe3{k7NLp6sS7eq*k4t!GCu8r8Y$dWa(wDw7X{Ga~=M6zpAKIC( zaq_es`y?b@&REJDG3tOJBe^ga4zw}n5tH1=%53Bh*{kzh<!x=uOGsw0-Sh7uMLF9n zMsjim`5B4G9$R%5^CL4h97)Nn)*)Fr;!a13a{am(`9;nEceog-^BD53jO#sQd3mS# zH4>AvU-wJ9dACW{x=3F3b6+IBjXf#{BW<#R2^X`bU9UPMDLd+17bCNAH{yrq%&Liv z?%S~ZgqwYily`OHT=xTVo9y0hmvJW}cOa`Gi)9~fhU8_Q4@RP4<*LT^2es3s^=ZUp zWR=fFk}`_>k(@l4%sbi1?x;mbl)cJf$PVW^xKDFUTjQIuqrM_0b%dS6WjOZ~!}*z3 z#RKvQtz(kw*qym9F-bWe?ur!V+1B@SF;Clb!XZffaVs^5dtcD;jA$y7XtdXh^N^0a z!P33xwDzNx%}_pa?;_@SS&K)JvEkVH5AS(ozRdI6NK{6#>}<|sUf<e|JCHSyQF5-^ z6iE=((fUqEPL9D*E+(8q*ZKtHVcEUMA<N70bsmzEWAJ*!le@2HkQZbhzUk`7uKNP< zW!Lq*g37Y)y^&;ie^}+dy|P1pZ<x%_7R0P4$LU^3UUufeNbYXCrnOEusq*HxygDZ# zwX!<rA<=d1Zn*-vSH^WKGE!Qfk3{6?{tWp@vX;G)eJIbh)<9mMKkesv_D>_fI^YeH z72KAX8DWfDuicTOL=Huw;f%SM8ss_|mye8+d7g$8<eYgvl96LM>*PK=hYuqu*&8n+ zN6Gc{EhH<u<!dA@=Y*B7qVhU+p4UgbaJQ6ZqlWK@F&eX<iAnBjv-U^640mrSi*G%0 z(`2#^C#Fq$Scmx1pVN?p-2YsGBxMx$xh&Sb<GswY$Vajki(E`NKknYRrLoqF?rQt| zH!;~g?YU*m3`fdDd!F9}iOP{X07-`HHM)U6_{-N#;hL7lUd=f|#y*^^qO55Pl8~`q zfaK+Da|;p)kJGB=rqZ{MQ*sQxLCh#QAAXJGWDb|Qnm&i;-ck?iz0zGu$C|E6j3186 zjj1n^A)sTPhdPma<71HgI>E8yvZf$yvggl6JQ?ZrNKsbsF(m$o-Qh1F9cOh{`F&(m zxHFv;k>RrLD_z4#2isNN5XpUHuU`X^gp6xnWPZ3?T;;=DouRf)8&Z(_jSG;R+_zkd ztS)2Ex;irU`G_a?Kd&RHgl(&U)XI_a1(K7!(fwNHP*!;zBrYTEk9;X-$bFE9<*8%6 z%aXO2jNBx%F&&vJyKW}3dRUn|hY@ug2=l|Ez|G-p#5^gh^DMHSjB5cBmmT#3a<9ZJ zbsa~6T;n!DGSb7{ki{~JBayURiJB2#uGBM}$o1l0Bq5{7Aq&Ehx^XQ;GV<Q@S0pbx zYSrsG^M_-v+UwwvRr`<Rv#RXT6eGq9@AO>d{gHd6t+7ZxJa3F_Y~92CTHP=i`)S0u zW3=O*B;zXcNU=j6KoYWh|AQ3dX!;mQ$sX%*19igIT@SZF-VMj)WGIrA{v3@&<=N?Y zB)78N;U^*mS)FrTmYjcXM`E(;<|3Juf-`ni>1RGT_e#vWE@m&=);CB}?zL9Ekz+?% z-w?^jY;1$fmOF=mNM82pp$LCk(A=G#h-Bqy>MUfwJm1J7t21*<V`<&^6HrJYX3tTd zBFRW_NA1@%G`Zg$=uJk)8T$ufyefMiwbD(@n5@?}NNztn8*wBq*V81jlZ<^D@`oIQ zXCiqykKKZ}FT%>Bn1iIG^;eLnoa^34V$%BWNSsm~SD96B=E#-feSj0m+7F4zkvq=C z$T4^#va}pcvye>A&c@wHA-vCQbtf^tVsZv}k{Hj6nxpA`B-zi_`4Wk5ZAa1L7S1g) ziWriYQ5@)E<eV@Di7yqbyX(tTB+FLmn4hzezTvD^m46B@Cr800uCg4<bCI0<6u~pd zEE(wnq(5`mu`?GU$?NP6|JBuzncw7AL}q>vl9aRY2;?@|QPs#`X{!nOL(VPJ5l_x7 zS0lA@RNjeXWM{tSL}u)BSErX9Mfcn2k6Z`WM7;1`%gy{gNKfhWNF*+IgJY1wrMB{k zNJ3V5CUS4sRx3ZO<$fA7Dl>nRt1Qn&=O7t*pE3_AJZ0~ZUO|45BllAzEi?85k`!6# zc6O9pzcxgYGOk?_U(a=jCoy$MA!pB8XCqm;Bf18ul~ukQX_Q%g6!{^XA2;)_A?_W2 z$MtI=5`D@ZaX%vqWG5_t2R-y{%mzquBYW)Zj-+Jw9*GoW-H%7&3+=cbM7EMXKjZ4i z734i+zO2R1NLprN{W}?{?C_nCKV<9)B)Xd&MK$uIoX3tslF!(fG?HV+I?fWexH_kH zH`k^|keHkkzCb*ABJ?Ygls@;$Qu#wW8!@CH_bo>tdHF6?tBaB6y{9`l%ht&tvt?X4 z7ZaX0c-L0l=#G>J?Vf*~m<S_fQ<X;Rd7rwha9ma8pTdpG`EaGXxZ=yWws8{faN6P{ zCYrst{M6!J#N?i|^E?6>Df_t=$#l0dEyxr(x=%o!l&rIn(?n(=%P^*nJ%2A!EAulS z`BL`$8%RN(34e@SCwujKBr2m=;cmt*=Y&4U49SWiOG{h3B5AopJJ^Zrgf?VXsgput za^AQciO5>qhioP9o1R6IU)kOAJ+it~_U@sw^k-uvD%acuQh3PjpE~3RnbqTw%m((@ zxfE%WvEP6sPq0VRqew)q_%At;Gr)(4J_-B|$;kO<)q9yS8T-aaRPI-IMhZjho!(w9 zMy@ioE=JDk$04zBmB+U6!wKxKv9dESBqk$gzx$EJVHOGA)5u)OdIiyOEkcs)=Z^Ew zZ%BWc!{z4Cmi%<zrbt3sKLSbaXpg1|NN%Cs36~>rP66%DggJ6s-JzR%-mdb!#4Ihd z`V_J&qv^P}dC%36-Mid<%%SYnK8XA3I4TD^q4f?q2r0_UCy|`YVH@Jh-Z%w$SoYxs zNLE_E8;KX}*xyAO!z{O^jr7i!)%lH>RM=KSYw4FQJYRlVY?b?&c^Uh5h%Z;P1QH3) zt8NyiAUB1Tot%sG<$qcF^4a(*M4zGEj-=%L^AzIA_3L#cx~3gz5m`^JmCMhi&(iuD zNbWJ4H4w?jxuw>{$WNk9Mcfyc-EyDLM53}@7b7XTV|)OKOY5&APs%&HFOj~o7C*Z> z94Z}ct?&SK{$+RgI*2DTzYCI<vqaLx@YS*FrXU&FE$6$K@VnbC`bt+v-i_Xk#N}@J zb)<i|qg>Wvq_=$c|4*c^%+Hz+a-7O{x3@$JQ9G{PktgMheIOF`gCp0qbuyBXr&yOE zOqkhGw;=b*PIwF{JZjhdO=N-GM}2{0?ziWJpOA#SKkfZc`>fK*@=n+c@ufd;q$o2s z2AM9a-0HIEVaM6;6vVwX?pXH=kVtsH;l_Rw68*rA;#njwXOa(*qFmAbK!(em!wL`c z<X_ITYauD=a}3GK*bhZ!%dCz?@^am|0C_=n_!Y=$vZgm7(WO1l&1C6klB?VJKG9gY z`+9>IPrgh34U*j2?v|w<;ruN7aBbvEX=^hiD@V%ii2fA!aAde-jY2qKn;kV4DYn_? z{F9KKWQU)E^pttN5OHhTvC4NlDUCbWKl6~BjC27K&DoKDhV%~Kzn2QIm(y|`+zdHh zM$sR+PF8s@Brj))@kmbIkzL|q<b3!55|>qe(TVig9b4~8TR$Pw<=JU>&bt}ez3U?p znZy1_Qr@)<MG|t>IueP?6RIZUHktVo5KoSsi;$0Gx7>^9nm&Q#F1N?m2S`uZ^WPy+ zIZ{?-{&tm^4Uwp<P8`Y1vuip6Nyt3cAdvyK^)_VVa80XgYU+I6-DKrVaxyVFIpSs^ z?yKX>e>-xT^zca}bD%xj{0B+O(}Pcuk7QPVKvJd8jtF*dw|T6EjABisAoH^ul9n^% z!AMf(XDSkrtP7C1oX74$Jh^*+61gaxA2;S#k(jjg8Il=jXZ}~Dr|g8aALq;_bv8p1 zvVV3#Jh`{2a}tids;aiJv5JSQe09wHG*?GPF%$Vgj+ASWh}>B{gRCwwuOpey?cVqd ziSl@tWi6dwxR5_Vf8_l|Z)C0<Ut1tiIjirF<YmUjB83C&jI|=Ex<I&p=JB%U<%R^} z#(V-XgJo7PLgvc-&y7ez&c@FmIoZ#zI+5?|y^AC#*uA<KNr&fzDn53+is!INdch)= zXJh#%xyH%v?Tw^15Bl8H);!j|yNOHdn-Ei!J`X^W5;F+NO3YzMeEpy@MZFrNx5P|9 zA~Mg@k+kfnJCLYkJ%J3DS$z}fDeqH0b6Ik3`3=#ZIa&58_D^_T<@>n}?k5(aL@`C> z8S70<R*u1b$X2os2O%!JV}~D%43j?BBX7!2UimJIb4SO|<op|n%Fmr%kHqC2*+a+- z8T;!<BG%qtcTMF<4sxBW@{dSP-si6VH0Ng-#fFHxz<2a#CnP0LN)JHdYuG+FA(=sT zl}|(pvZj|I-g`FdVJ8JEuOkULk9~s_<$SpEGqkm-ZEFK$c6h()ev`}n;(Ai<n)V<j zB3J5BNOGQSy%mW`TNk^m@-Aqf)%y{zk8S-$BrYTU1c`2MEB}RLq(3XnCrjGe0U5Qn zJ!>6|WaJFlh^!~;H5G~OX1~XAK9Z92^DW39vJ>Va3Ax*OAGuC;)Q`wm*}W@0%e{nL zE4M=Wi|mUOq|a4|zQ><}M5oy~JRgb4+3z+aBTsH0Mv|23IKCD*k*x1rmhA9lpW`|x zV_zL9gx4l_q-=>a%B=2;{2*7op@=V)tB|E->^_o^v(}Z!3*pXmZOuU<a+P@lNy(1- z5=qN>^%o>B*THq3=e|Yyycu%5NPi?HBi#oX#zT&dcT$HSM}_NNI{Q_Zmdl*|CK5AP z&Z}o4z2)k85t5Sg*n=)h`tvMOkmLOeBqv9~iZ5_qCvB~dw0}jthSGlq|8CbRcY!P4 zT{v0F+m4LVPYLXEz&<0r@+WEWQv)N~s$1GPGw^9ZH8uRe`WW~7<SkY8E!7k1%2->s z1dnO)O{m{EaSR{IRl?GDkxT#8I(A}PZS&;7TT34>+)&-vFs-h(J$7_;&G_c}`qB$3 zqv=ICF$khlz6O;(&#awl##T2q)iqXCw~T46s%iG8R#h|l>RSGv|81!&eeg)BR}~|> zD%53xP7<4%TloAF2HMGMwRN0{o2Pd23LnKl-zT`wX=`n0ZsI!=W19K6kFgUf#8RiO zdcyyl!pBwozheKN<vZ=U`-}{(Jk@QT%|urXbeY(BQ*Qc7O|^D1UtPA<b*3v@`i5%N zgo%uV4@v24BTewDTRIzLz5D6Ce<n<9Vuk<VRjwy|a!lPAKA&XCq|%F{o0}W|@k(pe z<m#rjstFu>Y&$mzd|1an(wTyWrZN1KVqIs;5j0!zb-&qltfkY}OD*z@e8~;p?sbiI z6ZoAs?NR$njn%DfRr)%g8`M66CA@rux94@7WrE|m-Syz=C}rY1(CtlrorxcRZ>wr< z3ICISmb=;!%10nIx73w3<^P!R&z|s;m9$enhXvg(Vf(7{twC9{PUG8$S>Mt;p{lLf zUt)?n`dcAD=5X}H20o&$s|5`r+yrrvpqtvm_Ra)RZWRALijOa9aR*VAPEZ#;<5yeC zDb;ON^$mR3Qdhlb-`<krHd$9GVf}{EyTbn|w7#Ly9SlwG8Y!!$bK<T${N1-HUAA8e z;;cWZt4d)f|9L{uCf#EFw{E$ZU<b0U6W!st#98y7Mceo&u2$cDf>;*=E^UJUHSqt{ zh4yPO8^BF`S6y&d{qpjRuB+#;?J}5;g5nP0|5de`&+h872dw4)SoME62w3k1KJKhE z=Wb~H0(ethO<Ua(oenjaRJRiCSH1RJj<DL+vDM?*wH;?egVGh_dK+h6sBNwa|FuLD ze5hShHP<k?ScJjht8S9qCCPn)k-J%|R7K+Kz1TlXc2TAC0fwEaFwXFG=|m9BJzDv4 z{Lij*F+bd0SJ!Y7<TjNR4O3gn$6yD9ah-R*qfYz%IR!gi+n}{DD(L?bGrnZKV4HVz zsI_CAI=>6!HmJ3H#C3VkW#T$7)Nu~$vQ9@>=VeM)!q&zHK0K{-2z6O($>7dQ{;$<c zoGnz>RMTAA_7iH|olnJXbsA?2HT!McM7F=LYOm7St94D)qZ{k~@n*uj&j{+&Hnje) zp<F4$cPG5jbZNm|ZYPC_?sD2I7U*b$^LSNb-K4tm(bi?TC1Ux-!SH=g`!qSJtqUfr z(*+RxFR|{u8fRrbe4VSRxx4P9lR=mq&Yi?fsB0VBTw7%h60XN>cB$L{t;cb@)o@G8 z1tJ)MORH_Duebjm%L%uciyl|L(G%UzidMN#;{0bsP4mRyzP-J6dm^8nSi>DdLt}VM zl^UsTtFEeUts2)Fyt4`VTvO#f1G02#;{CsQpU@HD?y9R;U+zPAyWTdjr774@9WiY+ ze)~_}by}h0)rRIt6(ij5<9Gcc4<v%qo;F=dExlS*sfDp^ZGJ!AB`~iOcoWYhu+z3o zm^)p&Ibp%8YuyAgx8)x%ET690m%XOSBn7qqmssxF8XDb2_W#vFJ==j_)2-Z_*1DES z?)rW#k6YXyybM;$^|Ge1p^9UW54J76Wo@ZDb|TL_+IQCyulvnh`MU}z-|ciB6C6$E znpbW<ctwu0pzZK|OaQJI+C6uJ%&mJ%OG9mWkGt6R<5BLPjQ*popws$Rr&NeXJU*xH zx=vmy9rL^!?YNHGrrqb8w%>lcBZ^ZPza1!dbfqILbm^16#O4lf<)s#<hTu)AI&;$0 z+}2P(mERKNh;FJ0&c<3;Ug6_&C-TO*V};zW5;!T{^Ht#L(oK1JoHo9mz1(rjC8g>n z_-(;MHJf6d{FT|BqJt7G6N85_<)Bt}b#O(q<*WyjF9idf*wj)NELC9t6t_<snkLp& z)lI46EZH`tJm?^!)Z9e=V%ZYTshhQ#TD8RMoOnu)Y1nyuEN^L_gw*~s%WCfKlM6xl zk;W1U`l5UGu|$Age8Prg&xPvVj`(%KK!od;?5d092x*?kWu|H(r<(SL8=5DK3Eon; zr`zpA^{X4oua`bWx60jY_;od$RLk9UpKDCH@?x|Hnbm0r*CfxkY>Fc;&6fBlr&23+ z?b|E4Q^yjO94%4FO>WIt9>BC0Yv##A>GPLM>od8v+WwP2^H9}LZ-qJG!czKJ?)C*O z@1D}SPjyRb-!(RIU3D{1UHgxhsv9R)Pjy$^PF@SPB=1jnz}VbUexw+3`^Ru=`?lFI za7<(KXfAOb2m6w*EU}S-!88T8Bw>6*(<C0NbDiX&O7P-@hDOdMZp`lU1KiTLPigQk z_ewdYh1;3hs*dkTR1D#}A>p_tx`$P+fw69uf|G*lQt1`9w(T!<?2O<w9dUcOd{d;O ziaXtO9OrDkv0Rfn-rF=ZyL+E-4NCv)s9yT#_=e!2Z|R?AbxQx%IWCdggXLcpDvh@N z__Af)@n)_Q?E&Gpf|^H<3-2@AUvh_4`P)bTe6jTD^X}5oSXVv1{7$z$ZOOj5W_|v~ zsJn?U+onA@d_hJiDNEGj*m7sMx+yh$aC`#~<f<oe9dYkj+E=-;nR`N>00sZ7ubX6A zZFK*Xb6QE<X-3wvq~Z0kT-oK8j{bj!IxZb|?V)^lqg!7$-E9+>ti8mGr6sC5V*3H5 zWh?iM$Ba^8LNm9P%`N4Jic7p0E>mzC?X(kSIlGJtCc<5s!xM9Ph26}%+fVm?p>1mU z{Sn_><N<d1veR*8`R}pq-CQEBT&JtoDz?EgnmdOj3Rk)UE)mAt_$~%iT7K5rUMb2w zE^Q6jTJ{CkdimcSL;F9@zP7uq8|T))=&sml`*c1!j??-!iT&74XF6ZBWLtJLu`N}y z^3q>__uc?VkmnqybGx!?5dcAuhc6%qg29btP9jszw&EkXhXjM^I)rjWeC<xCa`+SE zbs`DKc+SxVsB>LpuJapJgZs}gfTEr}D_vlNn-5is>hR}og&kFH_zopCfUEUl!zV5@ zoW@8-F;FR<&subjjwKZf1lgzgPiMVQhbIcCCu$uFXi}IeN|Se3jjpf*^GJM@JrJ|c zPjwnBOsH{<x0*0&)sCYO!}<!Gbgj0CwmY;q%p`c)xBVdErWbxk;J%Z*zMn%2aHXwf zX}SsKT+m=|TFzfvDjDrKk*)9$30HpJiXSOY6fm2>u-G@R<TO713X1Y`sb!C)GV%F` z2X1m)`zsizDiavw`2ub6dcNuNJiw%1a6g!+g<*sI={clVqU3}qS=-I<-DcTwVvhz? z+mSdBD>;a~okIol?OB7U=Sc<3NvZ{Nyx7ru`W&QBh|>8wxH2wgvB&7Jv;mfL`wo}- zZHGbIVDMNQVEc`2aoI9|Sw1>(o^~p<?ei7hOkmETC=-oA$f{j&)FJBUfG}6IY%a2H zLDLwFGFXD+^vE(09)=vS2`7yNF0GniQ3cZsxwfNM4;ZG_OL=W&3cEu>BrP*TU2T%J zU;#si_fnGZkPV-%(O?PB?M?+B+8&ON@334@waO;cF)Rh#&L7sH435$4*4lwMU#~f5 zo!+Ry%npo3%ha4&@U#m0dk@WNm<YBwpq<tA&)8-&i$iFL%UM4z=Ib<Kj7q?!yCr!2 zk`i6C`M@oawwhByl(CRt>o6%9ERF}C%ATc#*Gad9kF{d(;<V9i#Morgl43!yzTsVl zh6C=a;fmvC7p??QECj(ek&mE;j$zG;I+METb9ftP`S>XqMK&A4mW#j9up90~IZKKK z3dWMPU6x%4&E`$#6`=W0f@l|-*QEwZ?>F||7|R)1j9dcB!02;4){m!;*q6BxY=F0V z2z;}9ShFH|aS%fGrGZ=yrJW0{iP0d>J|D(8U!}lSV+3#e$=RocuOc}wi~=yBZRUQ0 zF^U?iq6=r)bA_(vTSOw9L8*j86^so!isKAYG_IiFS>6I|9x7Y|w`Ow?50OCHwseCt zaz9-0GEKwqe#EypXhqZM3v^yFOs9;%Jm94$ZgHoHOfk7x+|Chobhh|&wnTsN0;tXK z<6bwPR~w{85Yb_6==5J>J*HF}rmQB3Fqdq{ub8Em*Ep9-=P)WSWAn!{W{-<6*0$2V zc$AVk1KTCL4`ED9U7Ouwb$6BA;HFTo)=Tt(3BllWO6*XuMg>$ww!15sudqPJnOs1# zh}-o&RtF3koDI#tU2#2c$qRm%3)6O}1Y*7TGt=;;JX1)m+$SjeEr?V5pSvZ-1yqJi zi@KwRI5z-3!}Yjb;>j1zQc{hW0lbKi@O0SCX=~!Na@kjKFbwAMn;6N#)f<PJFsn87 z_l#w6YuEwm(_RBED^>%=3V~&YKE>0$+)MMBdvu7jBqJ5+${C^9ewjCI=q%++h7GOz z5;nqP`govuW`x@lHxbFVuE{5!-$#!0=`55Our*dAL&ynXo`o5AR2CSaKLSNphOFV4 zpb6OxlY~hc=^z*OD7jTqu5M_=yeWz_bK0a;`8u}@ZifsR<RWd5Q$@w(XBLT!#*j2% z+p{y_6P7EOS9vOgK3YXVax4@0#m?4fjaO&Y)N(I;mPV740bGsHR6_j*TwWd+YL0mn z?&)b~VUVKmIzc)~G)SZLU|E+=gCViy^!p9#v3Hlunq+?$r|I1ED3i3wSSF(kZA8il zOp$j_{v|Vfpr(x=Cz*QY>Nq-*nKUp$SOs(fi`~#8JTR)|#Li_w7}}r!>>aKo(sKoe z^E+Scgtl&g^O`b}T5uXhLbPN(Ht$kIPHR9t2NX!3W89nBvfEnCv9WW_Q2A<yCsS65 zeS~!?enY8sTIz72xV@i;d2EDdxM0ECNmr@W|9bIT#!vuwDdYbm=MuUkT=?&(Lo_T> zB~(#-VXnfl*OT0~Dqqc?uDvhzP%T<^-ju&K)o%JNl`*M&0WH&_pqPWqijV}#t={=v zDUY3rcKZckZs75<#68?P4K?5x8?%4!{~%QX-tMMco&EMd4oGtFj5OCC9*evW<QqOI z-R`IEnHqu?RvQ`We%S=HG;RZs$lMi7kdf7xPdwoY2Bw;Xsn(?>)3!86gehDjctBLn zbSCo$1-kK&W@OxZ8x>3*+>VRS)YL-_=mfc=Mw_RR>b{3<b(tU2%B}Qi9fws%$!IGX zPg370vO;T)dUBM6BH!eb`$XBxHK^9a(4hP)jMQjd&VD0<h-OdU*6@AlhD~l5qsW_v zerAp?93R12N-g|np2k^JgJWlzJ?`T281{L7%#kMc1kB&|Pur!}%PN0TZLCSNFqFk3 zUvTJAxEfgIsUFugb&qbl)}QTh*EK3X$5FDqeQUk1XAoY`_p8;X*l<iWFXyhh+&)M3 zT#c-U*k_P4qfc1|!Lb9BSGU8)SV*gL@z9%ZHuLPs-65i3X8%5Td4quMv-R!@4FL~= zqP(5$zf_xW!lzr&+2^zUpRJX0uQ9pY1YAZ<U;BnCSFz6sIpMY1kYgN#wb!ZHb$uf9 z#oQ5?)pjr~wU<W%7lvSNz0CIA6ytgVS4PfkE#qh})!!L%r)ZrgY=e$)XT&r?c8F-E zW)gLpJn_|YH%CI_#}Hb`SC}_AFn(Ol;?%;8J8Wbya&gwUU);r^<Rqfc`nY<8N8rp% zTBAIkp#VKH&v7nk<yjNMd@iLb&r(!Uc%OuRo_n)@zyF7iz|CU+;ML9g*bHZ@&C$W} z*>Bg+QtW?^V*lXCM)u+i)9i8IwM|GV$gVimah##+U974Z+Ri~4)AkzeZ+zR~#ni<o zXS<%ml_x1RLtMj{<ka~xS!Fzim1)2#4K+<2=`%em@ImMnRWGCsk%{pT*@`v9%guMP zT=e`&96SCOYNqA<W=!znS!xyGLR!}Dp)^Hbt?qlw7yAQ)vfyiY8*OGb^b^6u4Q9pJ zz}2Avw|&EIYc$(g2bp1#J;cXzhO6Y5z^#cK&B;QlBgX5;HPm@CZ!|PzbLDx`DxJ7= zCQrvuOB~09B_hN!%{g`24$*Xt`4hGtA7>Bp98FG(T^>%b)ehMqbz(A!WmfJDyd}aj zUg|w2Z5*~tV)I#5S0<Z7)8Z&w*kmzhJ?&zr++|iT8qJ6~GdU1-+3I;ghsgI0*GpaM zLr?(tsO1Bc4v_|ahq29wiPxd(-B+$cH1A{V-7ec};2o;@+#Sx$Jw9%bm_MYoHnC^t zzQ5u^zr6mIW~GjutJG*6UUzZPl26JAf_Dn6svPhzmU(xl2Iml4sX{P~dY)>~kNzOL z(Ix=#gGs{hHm{5lR8%H4>72P85b+puwR5=*<Ht7*##fdy>OGxCy_xE4#xXMiB5Xhv zv85^6MfL-5Nkh8mRWq4$sW!s(S1slZ)lsl+1B?q)`*qFK^qLChnuAg(kx5rkIHSTx zdvI*oUJMD!;c@7OvT(veKakIbm?)5)vUOyvWqHkDWw3e1y@g~s;I)I|q$QV{nlEJQ zz=d63>4NZbkS?3Y%#~Fr2<o&mnmD4gP(rCLUxx;3zsnw=lneqjSaZ$JiK|M$kqJUh zzFYV<!?VKrX?4YE4l8*<g*TV1lxw4HD5f#x?5$W%+x&Li+T{O;<3ODB7b{<b^kOZW z3|-HXTezAuHoSC)x68icGz9z2iQ_oX%BO1t^N(G|vuAK{8rC5JF8xp&v>j{Hi#rOl zM~+cE%;iO_DS!vu)xpnM@Cz4P<K1eGX`m6>w}0HK+EtwzdB-`}Sw*4aqr_^>e37kT zIhMgKu-~Oa%eEKTnjE)0EV601gX7>du59a^-{%Uif-g03obw6KpW|i$eZz~pq*Ior z$}0ML7pFJRQP~_4hcC}j=3RB6<IO;*^pYM%n>igsnpwdH9fxowY+8XzWwuRe0p#~5 zP`o~cG1z$dKH55H!zy<xc8so8xXw=3{<t@YB(}HC0HUKBUaj$gQlR{nI9^5;UXgAj z2;R6}`82Bs{LVM9>Wq_EKV_pes}`Bnr;b~qk3lQvuTjBN^xtAD%I`C*T@QXo)8&pW zdR;xZ@-^SYJ~!KGc&X9zW@NLtkKpCi;~~S$6krATlw7|D1{~vx;rM*LSz*J(BfU~h zq1thpg^=#qw7kt;lQn43V|8dLrfShrO^VT6TeSLXoQ(`_!NtfuqDI;-)1)%FkBOW5 zBB=*KRwe@EaA+$un1)`{WC{D7@`sd33hx6D2JRS)xi&1R;5Z9ChyRWog^$w>rGOhP zE_L}387rzK_)dAF#KS^u%g#lRr;d%MxHry#Vyp)ai1>XU=3mVikUY+&m<IjMf;Uvv z+%xzP%oe?dmA6J!1jn!}gw~YxX33Crt-@eca6Z#@bb^tVG^^({e*JWnuMZXh2_7$x zn8xgHL*t`3MT>DkZ)cl|hXRb#bROQ(<7CjNMu?TP8CwR$s_)=0OJ04Jp#)`epdi)c zC{tgx56JIrsGLqxjy1p}aWC;CA)Kr4v9n-Yw7;E)?RtZ62@_4LRZN!R2Nz9~#IBGk zK#OqY*!|nLpO$eUzagVlU%Qx4etj|=5@7==<;p&B+M;>~6DJQl^<8Gvsz~IDRoU)l zULWBy-VwF^PbG#}&v8;|b1RL852&-&W3StxSsDIa;;8T6rKcp&*<iY&Z%);!#+&=^ zQMwF&kGK<HM0G8VkQh#p4T~P3^wkwtc!uLN;l@U0LPPMTkrIl5fx;5$9VlVz1T(}9 zW~!7A)|1H+*@+gg>oyYE#Qu2>Lj<gO$<fKnHN5RloT^%8oyK%3(KNiNf)Amvrq1uz zIKPTBr`?+Nhi<chQ|*SV9YoS~GZT4)TH#y<c-0pd{<7yu1Mc?!G`(<Ug9dYh6#;wP zD2|x<4vzB}eRQJn`q=@mY$&?%>K-;(19Dr-vox7=qti5qVp?dRbg;rwLve931Wg;0 zDt^?%p%H4dJnF(MxcC+g-qHo1h(%}>7ELK5aOpI?VZzQE5-o9a6LZFdSZwtFpNe?3 zlW_ihv?_$46X<J<7f!q*WC6nF6rzpfPxhRq${UPkTqv*{e*QoB^vz^3)jt}drVN;` z%aybSAyaWdsr4H?ueel`2ejGM7N1bZ-?_^xlFx7mOw;G?p7Lp|;3f#-DHMkl>d;<l z^@@nG)^z>MsAx>(#J<^r6#uWns0@|x(aGG>w;MyZpO6DTXRe%kOlDi>j~a_9WN$vK zti3J&+=2QsINt@IXcX^jJ*k^_p2;!!0n8}u6B<vQ`#8v1VEFgr+(*VMTr9%D$DlvC zfFs4_o;>y`+73NR!6~Nc*FK)Ih~=A&;L=wc!8Uzi1dmc!^E|?HdyVAaOs7E^pO4cI zjU&;<BYAQ&jiB3B(y$+)Y8olGj-RQSBT`jVau-(cLd+d>Rcb6BQ$$T4m)*A7%4%b! z+}4oRQ>N%gD)mgZ#aD!fVdzxz$;6Tu*LXYr93efi34(KP`Pj?rH#b=>mf627FiU(w zn3~7g-D-7b_ZG@z#Bd|9TS0lKmk69JY|>NA754-KiXmfy^++BQ_rH+DGDOs~EPs|n zGJ|Ugf$LH)8Hs-4<I$X<{{6K21plY|<?VvUo>rg`y0YhPPjYD*!>I%9BC=td&syKY zaFE$p{!C-bJRFk_{z0Ft?G~1V<sENO*vN^{`{uoL@H5vaI0u*)wVmlI023k=F3x^) z-?~O5<h*z}GdceAg$Iwiu15zp=A1-G*^IAXRP5wDTgRaf12WFYjt4+n+1*N?%JpkR z`TyWj#e*uoyj}7Lu^gm(<H^uVSrl}k3&N4$^?M{B94>0~pajSL#a$d|X0Y#E5@^1= z!Ik!i>zWW^f#@Kvqa_T6G)yuW_Cpk$3gPvNZIE}%luJEAm7vFEX^-nGdRB%3s&`8} z+yAkntW9clgx?5Gw*10yMS5c<cPolgc<G04@*9MG{mQ50Xy#q@3#@%;1ze}naKxUg zA95|h$hd0>a>uJ5d!(pLm^;ymv<EH^CI`BTHM5CqgBTe)qK51Wo@jNA$<+racBwEw zHJNkE3<RGZJq>A7R)d)=%15X*GGypVGLB`%9}?J1WQWp5%vowkS8<bzA=a|LLB-kd ze{@Tt(?)#%bar4)#dWbZzr5AvY~QYA=#vNaKcvUjqaU~f#j?w*53Gru3znx_Ovav0 z%1fiENC4i-_7H%^$!mzEm+iD!tq|-X=27XNd`V{SX}h#tC0E9>rE7Mfp;Hd)sU0MA zRu81^h5&E&zfTTRU86`_2-SSA$o1k8mYNq#oo0wQtMoGxyUIVBZG=6#cC_O_%0?|7 zU|WTBfNmAik&=g>SvuKsRZAN_(N2E|?;-s7>>M&HP~dF65%MFpOgKssfkY<x^JMMx z$Zi$dSnY>2uTf)!X~CLzl+0V6qx_i;kZR2WzFTQ?YokjKJ6-L)J^;JVT|A2tp<Sea zwI*nBE`pXcCtJ+M2qa(_PX4kKj9O9jE|W+`(WOt|KrPu-i$DeM_PY?qE2aZ1iskc) zdPJ>+27X4_IW%T~C)>>SS^rvWFh}tzDK%gvyu-Z0&xgkpFsaiTq(G%64!Mw^9;XGQ zm=y`&hjU9%6|n^ScQGqQ!atwK250d0PEk4h4c^mvDsPwUSy6IJrw%$I3sxlxoS06^ zP+CAE6G1sJp>54_7<C>gfS2SW#u>>HiFMm3d-7v5*A$Y=2Rn~sn<SE_!}rNTOJjj9 z8zv}Mk_hbjYg70H4(>SgQyR<NO4aAj!lX81uh*d|onaN_9Dn&iR74^~!)SM6#F|IP z$jHy956YMrz?u%nM!zZC;bIWWkE9OEj!Kt6I@m<Dyt$t%v+XTibM>`%V%Bc=2oHR_ zw7#7n%R+J1u(b#ElFeS3)aL_Y8xC%RSv#S`A|Oz|&})#go8YwNdp8>4T!~{!=E*@6 zr4pVeF(uWl<{f?c<o?BQUwsX;LHf?hFa&FQ{jy0B^5USY`lwd7RILm2FDoWr)Y)d^ z0%K$>nx4DsGA$L4mCy+k3$i8dZm)PrTRWT@C2ct?e@n;RbV%7=3DnxMyDG9nBXMpm zovU<Hm1>FqcHP=+|CQiz-?HeC-Cf7PCp~h4B36Xb3Zo4W{G8ew?7twb=D$vkx_Wnr zvWT0LTkL-@i@DnDeGKYeu4SQfw98n)EnA&NIwd%JK;<+$dc}=PCD2<0o7LBE@E<~O zNe{tOZ(-D0Rag<cg1#U;bFEMZPqnI;QQ(@v*APXsJPlFleNXcDC~yyQl*!^N=E~&_ z%&6md`Nr{@!#KJIP}E4&^nvF(#)(IU+Bl(y1?Z44pkqy7oLcLu_TkVT2~nbsG+><! zSniQb32XB(RQwUL62hio9qW#Ia)W8dQynA?k+y3wM-?+VNc_rA49<}b7O2r~6G#`L zFf8?Q{?_fA2d@gP4;mobfmMb|q3pT(_nH0sr|lNK^p-~47kK#Gwg7yR1LHcv1)5Q6 zx&Hjaj9c-#B2`4r2*RJH2t72bWh`G2>u?#&X-Cn3>4Z`b&<7~*VJ=7J*L?pb-$>Jr z<J;C9p@}&tqqdx#CPX$|BQpjLV>0G@aRpTRR)M50RbU}yGqwvhy6_h9gKR^a2X7&x zIyufDI_yxGz>EnMIPd0Bj(w*{l}#H}f-ox37?FH13+>2P8{(oZx^hZh&L~k3w&AzY z)yv2!EbH-o0Y#m%<7Gkm$kIUiJJkth=nS1i47K@)kXGTN;(JEC8ifIm2%xK{CoBqb z9EYF%YJ=GR`To}T$+tV5tymj9OI~bcZkHZP(0uy_-FlC8(i7Q#t3hrxBR%+OT{1aM zX4f64_!kYTuIQuKB<EP31Z&lUgg|$(RcMkzi1Cufp~H38KT56E_&WYfJ76x--n1S* z$ECW_hWYRL7aLz{8=1m6xOkEH5n(R;Zq=YVA}mu$&tamK=;jgCipr#{>?dP&8x&5$ z5@2;KN0>_}<si32S6P$?T2%yoAuNgG)4M|97R6zLrr>>^9AQ&P5-v|R3CsiL=TJC8 zs=>f(7h|?&wM;DKTbS170c!k{S+;hB53-JR1ItL|Yta6NikW%>O>t~PF+otHnX$WK zX5p1_nw-mhE~qDV<Hk5J$*+eva+rV1*C4oQwD1hqIdV4ec8KRPVKoWQyDpdS)6na1 zd#ny^ST%SLCT{hb#3iey7kc|OH)9Lh?9A!o_L%njxsAfd4W{I#t5wSdoZrUp*ZNY! z6|c~QdLkQI1hF4rb4e3Oo0=;J&KG!OXNS|$RKumNWd*#gpW|xd*8QZTLfBRul~i-J zOz)tI<6o@yIcHJQWq?PjmN!7POb2LV%Ys})>j(onJN&F<?9P7ZLB)j#vyX7k*zV@W z@MQpxA^DkYSzw<HW#(B*410xnGU=Zsy@CA@?@Kf)>sSVk+^q0AO=OpVayseUJH~jW zsm{^imY6@Qqx9$!ZkfQl8>)$3h>X=`M4q59Cz_`IfokRrFN8gYmy$7W*mH~8U^Ur2 zo9j=!D$t<YoKsXba&^z3#xiypd{m=~#dF*-H@l6dRV>bF;c2po<#SnKfVaoZ8mR~M zj>cJIs4W-wm|$p#m2duD3zOZv1!=Vb2yLU;RCAFBoB-GZS=a>ta*N0o^E;+=Pe+9^ zr7#I@YsP|S9Es4K;xJS<7-#pm()cg@Q%P_|Tt1*iHwm^K$b-$y;s&v43kNg>AV2*; z2=?z|b#te!%F6+XyF(K93^DEwK{P^^Ra4U3OWPQn6daY7qO;gvi<HaSE(3N~ah1OE zt}Vjugy|Kx<jYp9^yxc3si9YH@&NrVahcY>OPOYb@6uA;2+6E7e>Y1}Hd;!yUT{KF zdL4~tX#{0ak5UV@@TuiQ7Rv}^9nq8PDw5Ds9PA0g&5A+VYU!0l#<x6*gg0=Whnkwt zn1{GFuNz#I%jZjLj*gF#zD4QUi={qdy21^%DtA+^W80DoMR^2cBzM8JdD9Y6m9(m1 z`o!8%4OE(E$x4ARdeCi*kwi35`1I&@53gKr@faUey8O6z2W5AoK7iO`9VTYo4$Kz7 zs>G<Vaa*R(DRUF2i!Lk68Ug#v(GlCkY2PtW+M0ohS80f334!!X8X&n{N8qI)9arlZ zRp=@F^bC`>X9*=7m(4czP9ts{BhVO3A?h<DaErV(g3zQn0*A}k-UwKW-U!?l$Pt8= z#1S~AQ(W|cAKi~*NSrM`-XIX?5H}_i6?w$Y91_cjuo*+>aWrpEy&7A3S~N1D{g)6- z8z;Mvml)JrdI`v{fkDDhm6<IecIzwA;yxvA`*8Sf5#nx<>3J<=h4&-~N0;ME^PbUm zaa_2taiga=0C=II!MY-DL@mlk{1^(>5$D31)s)5+Ln)zNG#Lh!8xR#Yt_*LjR1nTZ z&@s1j#Wn{#cyvJT#Nd*ksv16BnE^OK+GG=-CCxtwe*Hffv3!cIPD`JIt<PD(p@MmN zv~US<knsw7pEEQPNgty>)VK!dRZ(xjmwVhZ05>yC!ap7cGcy+8fzp3;*m#B1V&hiY z{e$4k%Xjdn-?ua#X<giZ+dsHl!+nnZ0M|FJzF`D8IZF(2yP}j8J{OXnA6wFDD${iY zob?U%_Z=cW2*>kF_7K;zq>|wl160l}WHr~<*!$KUV?#YG3kQM-PHns#TMCqzd;)WB z`oQ%D2br9gYl!;+!@ot|mf*)t7%wx35>LH^fk^KSn*eBmmoHpT^5bZ3l^Mg_Z3SDr zGwUA-H*1@?ngehwizx$#6sIB73d;bmhD0uGxu^^Cjy_CYfbv85m|z6z+udV?(gl*l zlgN092XudlNc=Eu*^3DP`};pwo9_@*PiRi5U|9jsk?_hwD9p%YfLtkq7+bX*sh%GA zK*|*^Oz|=W-=O6F90TX<EB;ei^Uw0{renzL-#_z3qena$b@usUc4lLM1O#2|<6;S! zB8~Pazb#x*hJb&;+THe)#PNkQaYfxzHKrv1*Xtd_h@<mi22ln=;B=|@82Bw1%3M5J zAF!Y3*!Fr5Sm3J!@;}(c=@1m>#0(5gtX?wW32KFDN#e8RbXoN+4`~Vaab<bE-+=Op zS4eR&!l??x)m0P2I+=GFH1hx4BBIIT)9u+$v*ij~TAcUduotv(2!;Zcepqi2a$I@{ z(U#2L+#nVgtPn7i126p8IR;mRni)7t?KTfPIz??iz7zmUgnLe?@1>sBVRG>us>sp9 zy-+l%-e7{HHVG8BzIea|m<>Mw^kIvWf@Z>#XirZoJgil+A(-?dqE!2~z`p1G;`V9H z*d3rkIr`$;g;mzmf%}Z;<fTo4W4f)CK+%bv0&jNU`WbFeSpiG=H~4QU8hANNNIbG@ zFH-@DJ`J_fCKk-qdW;WFq;q)50IOg0YAg^~zTsusbhi1{I*W4H5>|w_BszLR#yB+G z7ev$$65HomX(rH!@-Y>*jzrPv!9iHZgu}-yuEnaaCGk#fNl^(?@?lpC!SCFvNYca> zWO%?ZrEtnvk{;Gig!r9#AXzGe-?|HjBO%Cv)YS$rs$b7(N&^6)Nn+24)YC`mT?&34 zgG^Kz&RLw#gJ9TLWqKt0l*KjdIN~c$W(01KPw&Dx51-N)p~oR4w*+(#dnAn*Ch$;8 z#XxVUi5L2b8!lLycssBp*U=ziAS2r2{BdP-YK1*4vDy!TctyPj;uvA2w-Q4r@q}c! zsMyou5;h-C4ayi%Di+qZirGS~!MjZrkSvUzn_3vhN|F?UV6K3M!oK5I`=hKfMz;5e zvIzf~Cxmu>b#jV$U6^8S_4BiKE(H2|YZSI05m=tg{I%wLbx#{3z@$_YSf4QdNW%_f zFZ(d1Bdwa;qAg$n)kqPsrE6J*0As<}8O0J#&!{@K?t)@?g9%UN!HQQ-$;`ryr@}JP zO%cxW)gmjen$=htWrgCx7(*q?{XzxuhJwrmqBJ3(dhoJSZ5lQh+<zYxRFT>8?=LyQ zrjsqU$jUPSU7b>65gqJle<P664}j1auAu0YX7)7e%*mVixQnhe;rS(W(Bt!S9A@*w z${lAbN^+Uaw~zZpDr=YgJt(<aG@b{O5rE}Tlfqg+xaDU`zX;U^;t{cqqbdaI+FAyn z+m*5#UMQ961-7z~X}3Yu-bXip?#Pt3kC+FQpe}WVodeZtbcpv-t_Uc<6_yMLOjxnF z636<L^wlFSXn)22M=VrzXUE?=n4Ll41o#Ez4O>~*j<EhC8T4BwuzX6El7L2lmIOPA zG{1tSu}T}%ln7v6d+?uLzeJ0lE9jp_xn6xa;7^@qu+g`Ohz3m`AQ(druGDT<_<@;~ zu*U=4kiVgykELldg<??w*H>^i%z%%$Q36{0sr;~wB@BNYHs8iC>t?rW;@OAei|{v_ z(29LnFZm09oWTReA16=(?I#Yu`I4~%IG@&^E$(55$;0w(|3r_npZD93%Ud3yCoTqS zDbW3MhW(o3W{CyadjN&XzoX?JABj;4pB<9uI-`AP2b2Va^DY1kDq9n%T}_Y)cBNPI zpV^a2O1+OPDz2o|tfUMPYenssD!EaMu)6k3Kz3V<6hdus^aT1Dez8}pedgOw8ew~{ zKD?Q|JATLUUw+#{;|Q)8&@c<~ZnLVCOsE|6N6<t0e8i5X{HFfw@bvTk8c&%z_#S2( z{l@%2lA~9zq?6gXlagU;C(17C=ogku+}q(#HvR5r559$YkuG@{5CygW(=_hjhe@2N z^ua|YIPr`IA?5~=3vGo8y4}yEV9mt^zW-A}><)gYzj4}ToL~`yA0D1Mxv#R5h2D$A zNIU-hZ1(Q8tp)zumOM{rD)--4(lIjR=<;8t>^cS0zHQ17bG?ePNE8}vrs8^vX`}-w z{aO(sPH6sgiV8^tA1qWaIT-#8wAK4Ii$Ez)F7M$cr}~PHS6})7OJs+!NETv(ONs~h zBE<0Lk3YrFmp>QikNXFLKHU6BqJ1Se2O6KNZ;#N4$sxn=9`^ty%gyo8?6>1Te9fh< zvR5JTQ-iRA83YX4H;$Gv2c4ul5r>cebgj`-Tw>O9Zjc-R8DGF*WK}b8)@T4C!QB6u zR#p1Dc~%mRfQ_6_Y+Vni2T(Q<tf{VjCdLCGDXBK|4EQ07FaVnMpck|hJ)7S`k)jD5 z^FMkTmH*NhI{a*EDG9&o`^aM~Xj%IO!ddX;?2>%|B9#U%hv(k$`(IApA8UT~pY~-9 zOxp8{L#RjA4GhZihfvZUAH5!>Zs6~ZFMmCK4OQ!Q&wtvEnQEh|w%H(RQj_AFG3Xze zKp?Lx_07fNlRpe1^|K^v)=Dy#m(Q&93@WVS(jlrCwy4>gI+VkMQNpL0>MwWywHi|S z-C=!swZWrZs$q>^>9odk`wc<-p`@0^xnIH$fvK>ru{_#Rhfv$y4B<KZ>`|p>kN{bc zpIu)KVNkx*;y4Sc!f_5WR@NIKS_`^WCiWSIr8f>dD#D&L(mEEt-h5jFh@~6H3K$iv zBkj2vAVO;T10cx@uuSF`Fa>i7(ClaP`|k{q^Q{AtZm<#<<p50Denl|S3O(~#RplyS zV-12S74u@G)65tkKXQeQL<?EvL<<@xcrntQckBURhKG|7S}hO{h+D&xyfIu^rNlzp znUc>}4`IqWr4$D23r+^L3_$h=kQXyd3>{4md4cJJ3r|Nj0tB~TD-}CYE7TmdM0}<q zzNK5CkgF5ZsT#3F)j*u8mr8^^kUOohrl#UTsVODA4iGHC6$Ujav784R>?wBm7Z-0e zim-XddBz>DkbK1BO{Zta@5fPGoo@H~tk=u6-f`>U)}^esgjQRckU~)j?*TlEY+!Ad zmWsxOJbIv4?!|1a)i8r)5-NnOeN_q7FzrW$wF*PFBQant4r?|ikdDfsl?+?U5i*BX zGB1)x%J|taZILw-&e)5~O{tv&*$H&`+#zaiv=Ywsx}pqNiP)%Qwb}A5h#Q%R3P*48 zX=KTXU}W3*J+9uQq0{7^A_xvHY&&;k;hX?L!(rGMmwz>fg>h^+uyUiwDE;B?c7HPG zC=xkes9nTY=gqB9n%zplMsRfg$JwP>%%E)1Fl9=Z!zoQDVJ)dvLI*KhM+F7B2Wh42 z$b4k-jI@wH-25=JO$Ez9#CQ62ynFq_%$F(tyyVMUQdF6;MTy&mk$gYad_Ok%e)N1X z<3O+A!K-hv11bsOL*rG&)|rb_V0B7%P?A`kwI>fW(%dPeBu*g~nE`VIOp87o-gy8h z+urAGq|RV9kkWMpqwl|deDROj`SJhm6=(x-n`2LC;O|h*-XH%{Y+LFAZe=(+f7{6r zkWPjcEExh+IAYm7vpvvn*aDTR4Z)T76mAG_O3_YbP)Gx9%NRkihz6WXn4Nui#ic)2 zBEuT)Lj-tdVBw6FyKAA!XbLxkXLf^PK%QX@{~@BI7U$;+l>V@-4Fl=~YKj}cTiQ~M z<D<z&nLrJ|iC3<qz|exy*Q^qb!CRPTpOo(Pufr;4P?0K?FIY-fc?Q4)fb&2(4^i9O z6&MD*W*5D|W|I-{lsLS2zptsrP<W*hdp%6RB%~h4mH6o7?APP-*~$Air-BzLDu*dh zrPr^hqY`%J-++oVFrb=zfu2paYlpBVYiAadZj6xgYx7~0eF%wpxYmNRTCE-B)kK{@ zg`(6!GvVQff3;j@0V$1WQ+^8`=8Ym}N5|)vv$MmK^Nw!|@3@a4RYpbJ94xUVJG%IJ zc6NU9yUc3p1IvS(QTPb0)b263G;KqKrfR8Hy+z>%RG*7xgA`zU{Qv%edMMN~b8^7} zFs2$qoV_~cZX=Qyd05jO=eq90{5l{KCTa_7Wc{grn3Av;oFBe_jeWTsuJt>%8%nIV zi`@<UtaOMbNcy?OwQ<X@T|d3eEXiMHd^9F_iq{a>8ZGcXqM%Y0>CWQ@t<c%NZS}H- zCt;bgD7|>~CbXCWLsP4*bR?~_GcG=^b!&U3HqwrCw!fE=W(Ax?(?F7t2hZni(aZ}c z6tu;tFsFydXEUn64L-}$Quy~ZY0fS#hIy;74H{th#ja>9UvKDTp?*Q3sPTHMGwHSt z{*;o9E-2ZQu)BoY3b@8`rceErqZ&n_1UsF>a4_|R>#Zt1xW<TJW^F7t^DoL31BVDb zWd!S)Z5f3I7nzvHU?W*Gs2Xons0ErTb{ngOb_#U|A;PqMNJQE@FwJ&ff4bi8`$>|- zw9loV)zVDr*r|5y7uAAmt?vm)4D-0W3vkSBl~=G7Z<T0CO#{(XoHwp^cX#&bDy7|2 z^-&AXFzMk`0$oD-pG@#9uqJ8utK?pWw|yzOrYHGVlIHVK&Qb!WB9wksbWzU54In6t z+i&QZK~f<(!;Cu?0t#9X?i<4iQO30lh#r+;rDtYf?o(l6K<CXQ!_S$q-FSdCp~;N4 zA?V`Q!~L1;pZet+NByolM<s3Rh@Uu>Dmid0Reu9s^Appi8h%7K97_VnTZJXgx0>G# z3nFU?%vMvxH5@I0<7E!J#~l_4{HBwqCMx{)I~(}rPdJrd^jjh|MmC;x;9W%|xT4U^ zN5ebQH*}EFxmWD;;Vi=A&TXtD%s~L{u;FqOII4?NIOgN%Cw?-ct$<$i<*(<*hp$ht z)KW-y`H7+$Bs^MRr7DYEgImLe4p!trK6kbYILp9sb6*U>H{ax+7?*>eBN?q+=HchP zgL2q%-zg`PjFyuLrpkHu;quszs=bvBB8JpbqdgK>YGVsGkIguoH;a<xaLkZZ=ty4d z#pU7U$<Ztold}x5jSvlbOqMZ%%%2{iQ6n~+A8?@+;9BPr^0PH?>BjF5-yL&xrgzxa zy&-4@{ZM<Di_7zq_rFxqF<?)ON&ds-o1cyC>Uz6Ik5pL(;RI{;b^{JrTFJj0zdt@d ze0%cm<JXrbA+4c4TpsnHlvZupx<!hTCUlePTfx%WL|_Bs6`(Hmv#jPE&M%~Qdm10$ zMPI?29c*qY(4Q)x)(ck|-leAr&dWG|i^UnP)0X6ybaEZzD?fqo7~)e8HoH`)*u9sR zpfS+LrLk_J<Q~OR<drM>TuOz)>{Sygpvs?wO|@$HRN|6%wt^2!mQZ4luwn*0D(V($ z68#+p4Qo6D?HmlqMufUUT_&0jM<4>o(FrSy;HJKz(-hAJ2jdE!-$B^!aOL#M$kjHA zjGCeFfCsf}*vd~jiog(Pc292rMupy=ysm769Prau|92FAjRPpW5p_R6R)DRcEVsgf zGt{gK#LBiW@t|ro(3&^$r3wTn3!h*`@C0jxc7&DK3(M8ENFFST)I*8SkAFY??fCUr zOZTWO@CdF5K7wm2&=FWg0@zn5;7!E>IH+JCh82B#divXkGZ`k-k320EDg%~0WY2(d zc`XBV?w0{*oM!Midw_k&**w;81`-4BZn3eMy<>;lU-PZeUtFG^o4<=_ESblOL26wr z%_j4xcqt!eVk%{^=Y?lHE<RH=6cIk-@zJG^#60jE!9sXO3vX)JU2>M?%~wt_O*42V zx=k-}A!UF!LHQZ`oCUK#yOxP3RRQ#XZtx^#F259#R)^XUWRhExjRO`L<mZO_{>d_m zdV#qHCNT)SS*)LYC9<*zT<<n`T5!=bP&;=(?1|~~&_V6t9k{3YoLO1h_f+LOtV{m_ zMk+ohBssNwz{Da~BtkyF92w~eh_4XixP`_%+d`XhT~R6=$!;tI!d5TS)A7G9;RSGV z3cp(DY4D0mrO(EYAw)v5x#1MZc=)Pu%|=WkUzbbfi7pR2;y5>ArgF5U{C<3X^5zd1 zX3r1b*$z#GG+=DxOxy+viT9Jb(&KUmY;e@FH<MUOp1N+6bI@4_*wkkSxYYLtI62u5 zD~|6E9byHiMpr8Oj2I8Z^3{)F?&Tw#Kw^3x<Q&PM7S)3_LuL?VUw1;s^9eQ8ZfH|f z13~Mn$~h3n9@-jbjw#0V&0#jYFOItcBl*+?>vYrPlt2^0sLl1F`~=gaoD7(bWXVfP zLvOFv$DU6uP9=_=3|62mL-{qpqzShOx+=Ooq{%?<!vUNZdJ9!v6hjwa`M6Zda0U?J zHQgCSpYgUj54HtZ<8aX`wT~uLehB$bG!xbkRi>+g5<e@wz!c*p&wK++%O@sPik4Vu zX6<0d?=R2)Q2XaeP5djW&T0uUG9e3FN*Pw&IM$3$p+65Zwx~X1TivF_7G)XvH72U3 z5kt>nT1WNG58wWBdM?vwO4grMJrto$-)-iLF876f1EZ%=HE~1Fdy&%|r8&)>3Adq? zgPYA--X+WluVB1MMHY}{iewVJfT}upSYTDa0`e;hrBojlwafsh#27SX1q(neEg&qb zaOFf$P7%eaK$=voNZ`AV0B{wJiITmD#GF+erb@M$(0s@Vfo}wq+<qQW()?CZN@Xyp zbOEpWBzf{nhTYsxj0z`r7;nULSSzKv1H9IgqCwv5#pG$=(xOGvsm)PAD!e3XqgIfL z9x_YayU=<UFX`HxX~t;zRYa98!6aTySNRgG={|(Foa~E;zO<}TwM~^QpI#|6aqW}t zJHdkz3FPVYy9#Ew)U6yqhB*U1mI_F`{U_TR2QJ}f;>R<QBsMwP5Sx<3R<{!(Ybuux zX`q+X4TTG-K5O9e#o<}j4afo!$4J#CD3JD316;oh6D523F3ed!3scR<y*T-$a$rIn z@S~Q^L|g0;W|NvrDP`lYnop@(bp2)LbvdS_a%cU4<F4_R6a@!qxHk&mWLic`>(Ys% z^eZNU6x*{f=oVN7&3NajFbQjF<y0VI7pYWTx`fdFS}Q6u0_UfFD-Y&87?^9?@a!QO zU(=W^_Zh<iH%;;?EAVC^3u}fOrFJC7&uI+OR!zPurIl10fokQL>}n^Fs^?E~=t*j; za05XV_ZonVocc@-=I<t>0PM9*K7Mh8gX7CC`Zk9ja2M$O<nj-?#=!i@8uYL(tvd8D zRpRXQ?a9#}Tp4TsW=ovBIXODKJQn)o*k<K1_y|mejloqQKS3>2!lz{YDK3@xe?Q=G zfu3Njtx*+Fn^eXQR7(DEaeV&%6o)`Io2O*`DF!K7GF!&;V;lE1RemXFO(~-~lZi8X zfBM?barR!HT)=ti^yK|zZTAG@Vxg+`ur93<dsq>;B065Vc=k88Gne|B!M}J1>u6MZ z4=bggTwHwMX;ft@DMr9UkT{Qk#k?{!y=SeBC+py+P_xo}4S*D<m+&bp=$b0ORB}y~ z+8n<=fl1}^kCL|m<b*gh05Qp;h@=6Oax&CDLJMh913nkln=+Bsx>_M>_zijhz<l$< zf;Y5;oRi1kqF+71G@|d&FjpSo-ZQ=#2gC0#X$YehoRc8b;*%%<$`op$ga!lLFhsPS z4p!~fUQ#v)0K|OoqkFvJ-E3^=5$qJ(ax?dM4s?{@O1V-}%MPZX(lQqxUR|Can{hm9 z9xzGF{xUl{eUGErLyYzdeX;>?oKz=Urp}$8{tGreP1ZIAX24lWh<^hpUCW@HnWcGE zdt~A`hMmlp${NXMUD2n$z6D0WRZgsHvkw=CzZ}obV9Y$VB~I6w8t4FG^7OeIIo=(f zopDl9VJ<|#LSOV=fcPaiM>d<0gX%#E0JZO=^YTns&acltoS&Uu9CNl(zk<?j0QRnA z-AQ2Ah7v@Z!D?dbFwomL4hrWOUImaxK>@P-J||!=k`*|W1Kn}F{A8pp@oj7Km|%8F zJO32L`KfI_sW8y>JZF%N4$*55wljGioE}{sU(U?WVQ-5GeF)_=fAO#P$Cs`f#c%(s zP7=RMpA$giz<%lfmDKu+0j<$6gf5SNIX>SrAZHcmwWC0qQyZ$?{R+BV!>!Udd!zBW zjdv1F1P8D<#n(|=q0<$>Y^PvuJ>BeTwX(yehM3S9?mL$DJ%0b;9UM6>k2&bP&7)GK zxdSjL1Rg3O5UXJkfO5$dnn-Ogq`4e1Z0L1p_mB7N4*?8u!_sJsz?nCq>-x!=()3y} zH1~EriKuJqxl2H`%3HTfJPiN~`5ZlINjGI<9&p*miGxP)`t|wo#f2zKYWDspT0s-N zc6qpvrN?A=>y)kFdpO(q+xZ$#&~S*kr+20qSBw)<NoWV-XORV{{##Pq)iU8ek2Dc6 zv>!qXu~cAZM~Aj%GR=L32lLI~xO+H(qU<B62{5~5p_UY6-$E%d97$BQ<t>~eU?3+< zRJ97FmeyU|GlWnBq}qzqUY7`mS-SFM7m>ovKI$_lT=88#VJRs4X8PjJb_`=HG1ZJb z++~}xc6j?Z*F`gwkfVrH0efU6z6B9YL)9<mp9tC*jDxt(tE$_vYX||U_9xIlP33$h zSLqh|B3G(VRGlZmYEZe=;4}~yfj|}?GszU4!9JF83C?U_#D*1$$9GWD;3TSPA-d~# zNP-jR101>7>nBChAyl1KH@msG+I*^d7)-<TGmgXPqDVLa<w4pAC!pHdRVCuFzI7~& zZz6*;>>;+)3Bv9#N8w-J9UhG!=<(a5#O3gHrZ&dE9K9O?_YZ!af*-wViZmuDaR@*9 z^$`CKUO;d9WB=ugAG>1Se|Y=01KCYkyFK5b6yKzSz5eyMgMexP<1H9OrGYUs6SMIV z1+pCVrREiC{&fl^rKThQglo#&v2@_g?e!>J*SGcE&6B`tTsyDdWrK$-4(k;MwC5Zr zlq&G_orN9Bp|8!XzqNcM(BzO}W4qnIVNmP999%7+Z`N?y!L#eJoZu84BEd0vHB<DA zFLLIt&KEY87<5=y5YuR*S#t3e%MUz^G95pL2bi}Q$h<pGp@~TGkXSa%kzD;1$0$Y? ztJDCQm)%5@uiU2w5WP5a^U*$Mp$(O|A*U1=!vh%I5E~$ye*j$F-oov>rNgtDYg-*k z$uI>n)EVgzl7?YyaG(pv0s=URxfz&A&9U}mwyu9!9SEI^aSO!NeB93yACSD5eMu=@ zDkDpMfj}@JDz-NRp+PnA2svDcNso(VW!4h_>L{O-*Kd<TKh0fQLVw&n-K@UYcil1$ z{Vi;rjKGl>N|iO=+~b`=T0$e-d5CC{ahQsEossHssT4gTj~22S$3#AlyelCIGgYdG zvL!N%d~<r3tIrYTA>g3T9Hp=Z#C!!H@gswkQE&~RbH}ORj=c<yD$wYov7YWr%;el+ z7__u*phug}9L~gvW|<Qx6p4M_Fk6}m7>{p(IOqs)%+=ZVM*f|ok%kCVVELPCI%W_0 z2^EPqc$JSh)-nD3;=d_k`kBE^PK_iSqy{T`#n7$Mo{S5qD@sknV*mbt*~)I2DL-47 z;?Qe<Hs_V(!nOm&m+rt6x&uX&SxUlOLw%E&aVTYpQ(bCAcsoP_q3suUE4-%T12m;e zh+A@f!lM)%)IlvfR|rDp95&Loik1}>8)C-k)q9`iV#9wkzk6VuTb3SqCNNLC((3+X zWK)B|7xT{QD<hhi0LGU^AYO5@Ix!Fns%*zKx?2`4A$nGC6jw)zp-UekTjq+vGJ(d( zL{CHf?CVb;#)^>z1^mB6Q`fG7(+`y)1dS)^*QEVp2CS+hiLe6I0*XiI>tFPRC#c~! zwpy_TQ&L$xG!liX>B=^^3{)b0DKsBkb8$_gN9$Xe9$q>pVH4!`A*gs1m8S)nLK7`# zYmN4FgDr=(<@YIAF{jej0%|GVbf94eEis9JRCWeCD7QA5XolMrHNJHhy&F+#8cpnd z$rLc@N#)*HR6OxWWDIFditXZFS60|zwa^MGaTIya7T=goeAbQ9D+OL^yTO-uT5eg% zroY0b5xk?cj$nSjM!;jP@}*NlZ)jmrq~I>Jvyrd~-U-Qdk~%4TlDR0_XR>KNeb1K4 zn?_@GDzks@k&G@Y4zZh}gXt(7l^7#e-8f(S&RTuiT8TNbQgi{U6g``JIMZ(I2<4Rm zigO1isb5(1(djaqO0ijBOHdccLRq&L(Rm6NMdp?tCOaGX`(A-lN*0H`6uSu$WKGf~ z9YamzU>PHfNZoLjEV-!MmPGpaiLW+DGqOp&U>VgLLb-RXDtt|u0C++N1E!l$8y^rG zrNw+$nmAlSTuwFaAftE1ustesv}w;k69qmCuSGYr$Rr}T+xjq`>E>e#XC9ix*1RLk zK=^$5<|A#xtjIKm%{88<$CNKdayLab^$D@3@T@O!-c={_K8JtUrhCiriO4u3^u}X+ z-;5|#$iPA!@?-q)ouGkyY>+7&MTmh*1v3nJ_7D*~GwnOTB*g7$t5(C*QueIZyC>XQ zUG47hc`^R^5}Sku%`M*lW#~~v*B3|~9S26&is48-Y)k9FO9<W)bHhPmABi)>T`)t! zOIsbTadMGIDTK67U?n4L1SVYljuwiAB2A#(+H<qoin-b9W9ecmRTUJ0Cu6rp@s^+K z1T58m3p)t+My0kE0cQZ#Mx`2+OK{4P&pRultgIdi)Vo;+^<73gPgCkAUTa)EVvlWs zu=)02i~?@Tng;qW$?s5KeA|8vWpm*%5u80(P^X5#_JI7huqw3EqXTm%Ptrks&t?bv zrWH85TOsCl9a;&KK3z+YOc#Zn8&$rOXQZ@`e9NLO{|Yl%4`ei1*Vap!zP0PK^C2L_ zNI<v+vc-NTb;4#R_lWpD(#pdkIsn87;M9x>T@3k|BF&h;iVdXc$KwX`w}4>}vT(u# z+g1m)OEorbi|cNuAV7@eJlDu3xKq%0<Ja&SSaN;0K={xE6!qh-HO~pGW6vpILoUK3 z4wM?R3MNmBOjORcB`FuDCV)wSo|Tv;BcOU5M4`u-jADivyK*8|1=lRBnyYuJPqr0% z%YFyVnTp{z$~*;ri(Bin<o-Q;W^Yk*odH{!=O2kcT>~wTz60$e+F#H_RZY|x$SzQ4 zRoa$WK&BwpfF-mJI}Hxf2BZ;4re{$WxgJqsO;-_0gNb_>3&JuMdU_o727a^9qs*Kd zntYs?zUVQoFa`yOWHSy>vBd>|2gDq|k=6oc(`E)`TT>73^V>bN9tz76uJq~<ph2;x zs7_gm0QNNk92eDE%jLuT4o5$++(m0K$_zP5xiH&hr1zl}Xv5OTLBfH0995+}Ssf0z zXOatVmY;BsEzbVHBtKG=OPGf)aw|~tMbXc7of+F=oD}-;VN?uAHrF@?*81Ip9)zPb z9R56$$i-3=3{$*Rm)d}Y5isAu6p^*gWPO_12+N&=FqYB7QeNrKIC>e-=;4<rv0M9? zpH0}PXIRpsX?r;7y-GcbStd}-Mf6yf0UVm%V2c;kAIFe=GBu=9#Jn0I9HY&k>|2;- z%|i&EHAB^fb%x>#l2+<UJ3yrjJbHBI<4|KG=czhFh?L?=TTP~iA%b;vPm_{?+KU;O zD>C{~TvBJ>WmDyJ(3oRcP}G#;<MO%_<fMO^xQ#*zNYy2M+V@NJP7}b<jg+kubqC<Z zL>{}5Ohz4|VaD3}g5#2p=T`@Uk{;NGi8n!J)Php20ug5kUW@ho>0=#uQuQ3em_&N4 zQlGiXi;=WNsKD~^ojgIK-a1tnxTIKLs9>r;eWxOaF}Maz-MUEzFYU!B6Nn8&>6G3G zFoqXUM}cI<G6N=52dRisC?{GNGB>b|klO(11y?vSjKM~k+aX}jzJ4jg*Mbc*gmPBL zDZQR|g^WwQxr&`aGKjKCr;E{e=}Q>^y9q;w%)Fz)o*fG(&zeh=Y9unUB2o?kZQndb zZkSBZs`|F};{x&3%``E9dWFs9TOSiAlGq!^$imZ+U)dr?z!_r?MudH>5^_S&QA7b@ zOHG5FJ+mYzhYB`1Jdo+qX5AOi4*QBz17Q|Z)`t^xM<|WP;Q$?Mf#7vvEdWB=L$Sfj zHZBn4=3>u{KBc1CY@TsuGElor5t`z_<CB(*OvLXQRy~b<hbcaNN&Jen#p@PJows-o z+DAo8fmC(q*!VG;Q0@*WZ@NLgL5oCA@J8#cuAvb@RpD9PR9g-B+ov{g`cB>ju0O62 zizV$z>W093LphCLI4xu5JprT7Pbv&-9lwXVH%;-;;CAXG9C7e+0jH<nz!rtkr9w)# zS52X6ZgCE$6Ma)eDc;NE`eA8~A<gc!w|aoM<>ML$)J7FenP>M&Oe|t8K{>=XFu(Ya zTL*195!rD;T%6>?=fcL!0ZSV?`=>=$hosEsu3;0d31^0U`z=$c1_g%h%?`nqqXM7j z^qCkzaoWIQf)~x~u{F!!51!QTisNvY=&WBcx()0Miy3YPB4CM@Yv@s#0B2}8Y?x-O z{ezs*JfjO5O@>X}wS#bSLxUbfrwsrBj_g*t$!WckHgddG$|&vz_WqIJmv0dj*`7ti zu>XAUGEzW%-k%+`Njywqw1!O?2l?D6+R$_3#|f?F(!wak%TYSayXKDD@f?G;FylFd zp|-=q0c<JRL@gO1Esd@`ygG?%5TJj8v;MWLJ+lhmyN>G-2{w|K!SpOrW2MuIHwM>g zWYk>wxw4BT6A^_HvG(wkaK;u$O9E?zGS^E7s!I>!GK|Mhp~!TYL2i(|dT&tbAVoSR znxb1Q<;^61zd<+WRAc~nSFW^l+=3|08~|2b*>L^Q?uax@__-QDSHICrsb&vXelOxt zF>}SLzyxAl1h(*JxSi0Zmj_P`et9r&(kU;u;U;a0zgBye7f@>K>CC|6dl)F)-l?sd z@AN2a<&d_t8J+}qe|h-o?Xg+^MET+U3E}`<9KQANr)Vo{Arsu8oMU4H1nbnN2FXQj z64~d}{STGwtW6+(#tdaPxRo<zOa>b<mZlLXmy|~jTcSJ+l!_kbpHHa*ub)QYRAua| z$ob8GtN<ZP`ze(MvC?QT#Is&(V1D{*aU=U&WyEUa=2VWG<?XGr|Ksdfin8Tksut#{ z{Y1(kWN+X;;X;hL@;*HnK}3p8@&%}uBH*Q(0VstB00qkSG<(`(oLkCzZNH$cTwB2~ zz(Flgu{85=1?Rbzf1)WkJB`O4Q02jIkY2332qT0V_}9Yf{|2Q%-BVjw`3@1U+G$Nf zPuCG&30^c5^xLjI!>P(3_H^wl4xnK;m&>n|)3Br8!QFcZsvp}q$!|Q<$y_SH)BNrL zJqi8Ur<-P`BbF<U8U*H7OsiI&77yBE8$d~6@?PIl&mkl-W0Gz&V+<t#w3J)U_z6@} zg<pZ-@ZbT_DxquDc9T$D5;9guVN*esPx&5Ew-!)Rg$W^bl1;N{ogDHkYW2#H+9evO zge#2Wd!XjF9t1$2&l8nX09qz>F|V>Em{`?x<(6PA!>W~3h6yHyHC-7dSj&*pfc4hO zFu}yIrYpk)YZ;bBspr}w#JU4k{ym~C<npKeo_z(0aY<H|71T02IsCC_RzYG`l9gEn zwaon9d(W^1i)jO@j9YNa+^6yUr4&xwx_C_TWyA!aW#R=ybn?oqM`S63dLU;(w1xbB za&ZF1q;G~6tO6QPW#58Z=ADjHYtSQ9KnJWv^oX{QSMSbx=_^Q#OR}=8pq80#gO!;? zDY4+Mnp>$h<0Z6)T0f<fk-ut2rP_>T{M6hPBo-xE`BYG0hWH|9Zx8>#qXn1Zl+)?A zc;s|qaE=(pr{{m9)_i@^!n(9GYiMjWDYNs%@&A4}et&d4JAD5~tziRAw1~shk{Lh? zBo!B!rIs*8m`@bm4i|!2)+nMp<wOd;nI!T8#W{KRz>_V+cvxFLVkM;}Dyi-Kvvb1v zD9;uYIap|lc)MKO<JK-T27zF^n%`WNXD;s^q^QQLmzD&@e>w^r%|ch@gL22%Fv0x& z)^wQ)dBuk)5`~BOtOQWZ5V4)<*LcRZWnqvL-rlMiO46{2p#ge^ui!`Z(+{Zx6N$F( zTb$^AT<y>hF#RCnCZF%bY{$DX{K@a(Kh<Og6#<|5D%5MEMw>cR)D9&N`za4L(#W@* zxy`uKfM9Xbm99*-fkZit3;TLbfh?f+#9O1VF`})xpZ98bk~L-ES>Dp7p@~~K5ekIO z(q@k&4twOro@q0|In?fp1(`pr4!Z#Yg3rF-eOKBLXc3IxX0TP)+93uEFCUX+1ndts z0U56{F&Bw>M#Qzpf2w=?Z*zI{1X??2xUB#bPK2;~<JsO7oLy@={S=D60oy0_^h#uy zsE2cc^(?VkKEm_`v-1l3OwZ_`E@@9#q3TzUV1OVNo{`Gxq6eCNkslN|uzh!m_*JP5 zN;(>%0JL$*Ik->j(l~)e-;lftnZWwot?<eYdc8Fm-epoPD-<0ik*N-NCFSu&NX{mf zC(QwTDBw76a%0&)dZn!k7+ZozKr9Aka8(bEt7vyjN%%^H+Xfli48t0bzp-hC&oU{S z>`q|s^3hw9SpGFfR_E&P_EmUG)f7x$D7;q(&r)#Wr`rArpW35WuiVD14b9Q33z#P! z_h-2L#8E_ZEMXk(f-kXKLVWA8rzaAdGHw9*lddQ@(A>`WOdre_aO5Qz4-(Jd*UE=# zoZ0T@`g8xM`upIA`upWU`OT2Zvy{hPF0&HXco9tx7gpXg+i;?>7q`o==o1CC|I;)M zk7!Nhn?K^YMh@Cw6o477yy#|HMzHbJS_5Rmg6*6saQO4d@?kSuOCs40Qy^yeD8%lS z@<wcC*g$8i>nD6PH@%Eze3q+4d|^IxX&va8XuPT}zYz(eS{9HT@wf@+Qg(=kuyj~q zZCYXKgx=B>O2<1s@vdu=B|o8P3{qE8&KP<IvXBu%O=0$B$w0HXM{dzl1_UjWu$MJt zTfDH{lC7{_wGf4LXmW9YEI*5iKkX96)i(yjB%NR24>@}n*MN>J%a(F$X6#8<>u<^q z4Q2Cf9Wlm9<q#<hoHGc64$)CLq@g;}H4>9bKa&<>xR%^PSg?Xt_r5+OEn(3eWYX$t z#51ncZBqT0pC=HSq1L!*$bi`$J8C)5I!198Bfral>2c9B(VHovQ*%&9ix%}(&LD5n z3`(`2K>mJdUkp*>)$dwxy!FPjj<(vM=C#(PhLSE-Pw7-QrKuI!M~627UwvUKHKTx` zFbI6bdHQno8-gJ)Iman8B8$L-?z&AwXV3TrT-<Vcb=#)zt{*D?A2@r<{Fu)CkZ$-P zo%1tRO3trz%FlGp&vcfD>B^56!M&0L;3Or)oqfdNDP1Q(<W+N4%=Ih*8x&>1RBY1` z=PC)|<rM_IrYRi!J#N0h=cAT`Gk*L#fV<o3{+lATu=U{rSXzd^qZRb~W`UzfZ*~Xt zY4P7&AIyG$E0dEl8NZ95-X&OloWkOAPnC@Fss*mpIz2jzGM1gMPmaOk8$lF9;|RJf zw2=weSy6=gW=@opbik<*|GU`fauT2KmBR-*o05j@^nLWWB(+6@1OD=phSzMK<^n}+ zUfu!hRsnQ36nE~go;;bxkw&`r9#J7JShjxre)#r-S$GVgrP6+KGQ#FV5!4dI^cVxs zf6+P0m63Zyv9%4IJhzm_ED5KKEp{6iSK1FZV3itH1*pTf%e!Jxc*K^|ApTxs6TQV@ zP`5;+>x@wGu69ejo##l6*{!Z~;e~CwtLQ$gW3idQ9>{Da$M1hRd4FtDlEo8T_+YtM zKEk)maht^*;%`t_rJHSBybIZ_6+EX`dhgB28MJw>j$aRc{BfTF^{`Da^}9m2{SvHf znksJnlKTqX0J=#`*86K*WnRtJ2V=mO3CN?*$_~5poWeG2zTxw`vn?Bg8vs^poP-;@ zQA_~g@(fqF9kxuzudTYe{1FMXK5u<Q5=-xTzC`p8)E>PJyN(XC_b+3D*mKxJ86CEO ze0MNV&SUTOG5t8C36$U1i_^M*?V>;nQ}$jeabr52B``6^jR7GaIUJqbvR+>y{-{5? z&7$Desp-21YI1IXp`PIFT{;$`l8Bsy;q`(_OZmP2^Ui+z1K|)GDge3~R*kO>#&hu_ z?XWxcByX#6S3y$0nDY8pF~Pk|Y&ES+@RBV{kJ%7L;ds(V6|j;-(gt!Bg(P8+Nl+R= zqcF4IddYiy(IBM3&syt9sM<=5*Zbly*C7+C-T=g_0W7LK8o-1+@94={ZU#vlfV~%z z$WEGDii9SDZNvsNmg>&@%?Yw?O#qwbtVGtHWPrwa{i}FUR<&<QdCMv-OoUR5s+OiN z*QhdW=`aEo+7|45)6<=-OCe5heN^Ber+riZ?eMeaWpXg7fS@pDzoC=!P=X{C;xzVg z1MexAw#`*nd%UCBFXyLt$I-TNk)pj-Zoji%-mLdZ4t^9`r+nWM)I40r`x(YaozRU- zFvGWSSS?|{$*|c7=z4WKzlQ0&C9Lu^`3)@dZUetr;5skn$s><S@3l=K>I=%OuF(QU zA^Too$d1?4$%r`e3ymiX!wgtF-1h=ga)^P&bgrv6v<|dzgtby-DzP`Lv3!6d=Zr3u zIIReFTlB3VRD;JTv5KOBVeZE^N8d7XYAj9D*tcXifX7eU#3l_Fy~69}3I>W&LmFIR zafvh*KlUI!A+A#YFMMhF&IKJ1M#QtC*?_X;a8pQT1~%_S>~9G2M}OEW?Px{58ikfD ztW>BkkV%2V;6se9*^!zkv=G$~O2`o(pm2M6TW7*!6i;J(>C~FhFw@A>YSR{yGjPZr zAEhzOQQZKXqRu!@Q2{ICk>-vSS(G$B1IDurVRzT(InNM`PDWpzA%bnH1{lF<$mA^c zQT+Rtf(;5=Z^Oc%PywjQ4VgflkOd?<mA>l%EQ)MU>yZY!zPgI+TkeQ>A_$SOn&UW5 z;d|<UsClPp+ChT?4^&Q9#;`HHa6`1s*`RWxHHbk=H(2)h<~t0qKL2@BI@*Q<r=G3? zh8UI8P(DXC{i0zyQW49^isY%Vm5A8qCWMxn)&Bd`wfx~k*VUiXSz8q6v=*Y1q`u+0 z`Mk@q#o6-ccjC<6(&mZ0#i$zXOy3d=#+iSZW~6<2fB0s`v8bS(S-k~-x>HfyEbVHV zC6c06s0E`1H?m82OY{Yo5JiPFIwoylrU+GMt61$_Y&%zhJ{5b>%!Up&B>HMrddVlF zuFarcl+>caQ^pln->Uw{t$xh=zDc6CNU+l;m98O9aF&|pbtVsSi!FgTk=I$8eDo9q zmIvrsR<6p-P%B^n=3=nj`}MciZ=gQo3I=9KPpo-n$DqqP;M5#YQeoQ{;KU8dO1P0- zzu(AhKtI)-`XvK9%_sQW0x)|mN7KUnM}_;KbKrIl37-7(`D*^g*&Njc{IZ8Q^=rkg zGK07QjKdw>BXW}hwvIGt#b&XE`mQsK6EI7T(Kb-pE_tqZ{>Rzn>Fkb0nY|()*AL{O z_G&?xx?pN+VRP7QT1Y1-454J#3F=U%?L=yFjN*LWZVTp-oz7L@3=Qk+^*shZnvM7C zi;S=nk2Da&VZ(OS)Hz@~3veP^|2C=`NS6an^Yj}&;Q0W5Utev@@9ksxd0&5m@&GwR z&EH(bnUlY_kLBmR{ls&pg_^&k9G1zaP*o;8KVZe+Elu<IpdZEAZ$}qD*Kwx@dY+}w z9MR{ZAx<N9$W1piG~PShR35mgOtAv0%GS%kDo<kVg`G|UXD5f4(iY+&kP1jFTM}!+ zO4D+g!RPFE>CSr5jB-_;BgpQ9Oj4-49*b)II9p#WaA;!oBI~B4b-0hMru)XZ!8p)5 zb@b*!+YYN&AKtt<K8Lb-YVLkM+A>&M$QI7kZ2&P#8;-I&)JT3e@3bsr@Mu9ik8UBH zv1Tme{OAWM!CblEY4Hm0&b=;A24w(c&1u^<$ql4rawSOKhjR9IJ>e@KGYL~U%{ui~ zXhs>eeFcsa+;W+nU0m4f?)E%b2Wpej7CMkxO@%17A8tI;Y`fj=6&MnP;WD(rY+)re zG1{H^^XT?)36;{gJ!3%y{>ADUQfBBHP(T<k*Wc#3PAaQdyxHu5bb}bmr;Sw`#e%Ar zhB>$km|Pl^OUjpFDCZQe$(Qm#)2(?BRydc{;#wKzPdEfjZ#((RG_Ym>?$?4Ep#y>0 zc*v<j{P}HCS0Du07v~WW3u|~5;(-_qraY2;dH&(zQf=qo*a|UQWqSI_=-7^_+6Cwj zT9q^lkG3o&7-vgDn4AoiOKn!U*co^W%+FU<$|R}o9l=wSI+(Hsz-#6=hAibnkXMf@ z8hc4ZV!}p^4rOAI{7;qUvxxFMRjNMlWBn|dy*s@1QL`9!D9@_dYz)P){U%H;PVB}I zVx~a<7PMr9VN|kKz4Fy(Rv?XG#t5P@#Ngc68&2<f4WtFvN^-sNH=deO6~cv0&)KOf zft4K-R`4-lfk1g1oE3MRJQxioUOa0E{k%hyVZ^H$L8Y!%W#?+q(Mn0~V9JZ|4R9ZY zQ*wuF20>-58NDN=h@)SYh%{;{7b0qZZs9Qqu6l{|#r(P2CmN7DG1Sezy33)_^&}?g z?VN#ShPfkTPlrLK1{2de1l576$ODKoMm-cPt9OIR>y6dXL}1RG)|Om3wT&-*PbDy( zT;<Beyx=(t)Vz@r9uL%A93A3H!^PQeCq~qQynHVE;_kX{{4Vg&m4#rUU|3$x<>?0B z<R(GGf%VHAJY6_2-Eas1DWG?x&4aTU0E05Dt}M@Cc&G3cP01;1rs7UOx=o=9UZyYL ztfvUq78`XWv~WzoC^)J%pzDf`tj(!Xh&=#ON*Yz#+O-g;N$nT1wCqyJ!7mYJ5INHL zTN;aXXaGi$iu88RR`vKgHDeUlLI%7lSt@`)bz2*Ut`Hl@BkBpwewowkWjU>9_8h>H zZ71a7mqf*cFot5P;+oA_d_yCgM%6l<FiKpMT>Bv)Dx!gCD_g#Y@NJ5F(sn~vI`o)C zO|?3a3a&~}>fM5pRE5ICie#Rr@Lm}+bf7k=T}TJgn#C$-_{o6R$zFpWa5}M*STa&i zfgMIXN+NzJXGzo*Gp$|5N;D3YjthRD`<JC#z(siuSRHXqJEWe3^y`K89`$F)m;uy2 zd)NSQp>Ff)@Ztn^$oh(~>NtcBAgc8cs_L^^+LzXgvMRoZu|e=?C?9RcaT6X3?Ez&| z<W%SnnFflyWt<`CLdsj<8OV`7ir|nRAgEoqGrKbu#2v*PWCZo&LP~cf>tMJylIusk zgbR6j2Q}SLRuBh$8Z^uC``5>>WzW&`#QHWP;2}s~X9TRzb9i)wHymd0?m0R?IlJUz z4rR;?aVm5KJOrswj+es^m%pB#pIrW7uR$B7@fpR8(u><T#yc7A`VVSiarCgQJbhPR zp|<K>?{EtcmrWSVY|a}@77fS3i4Bkz7-xWFN14b+RL;ftW3<UvIQA$ZLKE-L!}267 zBg|WHxY*X<)k-}KYM2c!hcH6=7}oEuEz#u=p&BujEa!HQS#=L%9Hk(a;CUM_DpetJ z;m#f*b?;UK_K2!WV^^l%k4r=?kgYO=FoYQV2Hj<RyIx#NYM3BEZg0GqR2Jj)_I`Qy z@ySVemN9?aBA~)-N;pRBe!weGwPx-wY5>_v%WZ%Jn-ohquJ0L!?Gevr!R60#nPIhI zZlI3)&2kH~*7ZlPTXY#t5Zleu8cvEU`jJ{3#&M|Tr2(zYR(x}ZJHCW29gp15Avhcu z6q7W<jlo$dyjZt*ggN<|7aj#rKx|xzsh4vE<}De&UZrEd3iQkj7f1O#%D=s0N}x57 zhorKhM;~uked?=#%=q~rjWf3iF~8^Z-lKSP$ZEIF{OXDLd3b(isUgrbsk9(&ti@M> z61}&U;NUOYzAnyYs4g8_u-wxNV5CPCob_`g)$5~Jp2Ucx>H31$b7vTN2+pTRVqbCu zFlY>I7BF=(d@lL%i`5zjXIiYqhiw~UvH<!ihJ183H-dPn?`n+@l1xoi<YOCAbbff| zmUi{oxtLS^6_4_LD5Za5UgER&0-dNEWU7Q(r?lxyI}vHdtjOBIUqMq}O7yic?a*7< zMh3NRym2vLm*OZd09C7j;9{xWqb#@K+8q3d<vLuGQ@7C?h;FPA5&=`o@%$K2aUDHG zB~|Z4BN2j$md^%~oCDAV*2MOhr23uO${&~X-j-?149*8x2h<q92t{s@>N6L#@ii`| z4C(a}BxSI!;Dy3D#3Q>aM~mYz`5*_U!4S0}*YF$C%PmK3a(RCE-ZU$lAarKVrc8)1 zw{>8d?K&7ch(FBPvwyGv`-!jZR3&)F#!uEdD96&6eCo%VJbZ|b5yfPOSdL^%UN~aG zwQpRuE+UlM%>|_(j+~V8O0UPOT<LKSX%F;oH^WuJv#}ywi7F$~y9SplXl(X!4t%s> z<Br}Wl-&a^pIVC-uByS*mN2Z|aJA#2DEhRnMRZb|Z~A2uk8>jjj*9%ilqXUFi^I}@ zg}Var;iSOdoht=F*{fe9$*G^|&bdG&t-paBJnd7JNNqf*i}-22yDaf(Z2PMHT#sV? zeCITZFLBjIGN!0mYZ|G=K!=;VM*(ms`e}nGA-G<E+vnyff}Vtbvx66M!9laZ#RWI+ z;lghRNw5Ive2;dGA7^K;;E{7+Z=MezdMdr}ZJQ`cGbpZS`z47MUj1R{`+yOG&bPe7 zQxl52+`({AC9taLMy6Wj0iYO&D~&9`N|tf<`K2{m0o1MM?Ct64Z*Vc!@{Oy|+8zf` z_m#M@wTnR-{5@=QZ`YbSGMsZ5Tn3(E^AUUaSaV|N4lOe@og#K%1~_C<2^{JEuo5KD zv+_~p;pOG|$*T{S#~g9{5k60ncc^;oRS_0jGM{kf5;A-?mMKYI#A*&j$1=saXkSvm zb4jZm3_)FG(9SO=>M4|*vd8k22C#;Hp)<m!j{Jn>9Ns=K%%t9dGE&_JH%8|s+yFJ5 zsrI$8Oc-vTCs;CLMbq&`T9zuRlvFGw<+j%)%jsFR*WJS>ju+obD`zC+dw~T56eiIC zC%_WBHWfNRW4pySwyETGG*;{*9IQvmHlzwCMZ;WKgtF2mkc_i|7d~;4H9-K)j&CWu z$R-HRtl369gYyaP)1Jwq=}od&nmZjObAB~<1|Y`s^+(?)lQH*)FcR>H@3jSF<`P0x zXo-y^&keDe!HuGgB2hcJV&Dk5iCpY9PVGd{`Uu!Szg#2mgKb;);b4oCnfh#ul@G&= zMf2QvX7@ty;&JUP%AtmlveU_`_BGQ{VfG(_JCG}tJRw-%)bwd_v3Poo_lofV+Z=Ie z9Qex^@O*(5`fag*<=?Uj5DD=46&Jg)Ksxpefq`JDDM`iHaopt&mstGwD|C0Xk+D28 z|5Z;NSHuZE%)u<km@0`QMw`G*8`h@Em;nv;AX3iK35}&EaMl3r-xHL=f41%7z_tY| zr8h@VeS5qPHW&DP1~V4IT$|Xr3LhA9944bu{_hw)(jT4p-F)+@X2i|u4}7=QkqAzL zUbcrI=}?DOd^bUgu>iJ(*EL4srEg{gHE5;r%KH7cy}xi7_;){k=I<k1qQIp01{ZR+ zdvkO~_|4A#D!*X&L%4LrKXZ(y5hR8~<a%@MqTv_v1$C1GZB&ENiuTrcgp<Jn9&i&A z&fFBQ1#z6+jKFt~BS1tO8-Xsl4{N!iNuM^WZ!J`+#E@9v=?tj4*1x6z<-u5*z#z|B zZ&cijNPuk9Nao~2(|AgBBI`6(d6#%EVyQR3M+L?~P$AfS(JORtT!Bb?B~{7=gd4J^ z#T?c*mxDL$mvpE;@dRq~Z4&Wi(|l`Z*7XaAj?=2(QPk)+H(tYDlHemBHepA;>~_s( zZgK||q;Ed~o9YVE_jdui7T{J<1<Vka@Z;=GcTKQ#ksBtJ=moBqe%UZo9^ON+VX1RL zef|t6nb?57-?qhTGkaVYEN@i%wsnPD*a?G%&~<@vtOACGT-@DzJoXIon*;$uyVIu6 zN5)I>C}aS$fM9G0%{p!^fd-nUBE*-xElj`|`WQ7A&jNr|HABQF12FkLni=!DPBN_Z z7<};+^OL@ggu=vde~+hyub~DONs;$)bp<@8?+^u!x+`1_b<%(`tXl^{V<B)uYX1P> zG3O$6m*>+GTisF=YEAbpSU3uZwJ}hXJRBLL!$?5nzQIes*B?h%ps-0C^0|ZC7J5|e zzG8}u(@5mp;;PD`R5-FsK<Uf|y>rvjlgl^;g$tv5Gfk63o(2P;wRqbA1>CG0-2nIx z6pQ*HFbN0{Wm?-6u_4!3r(;3meUvU|xwC*lfRF?6AarL5`S)tFlt$3#S1*WWvMW#& z(l2@$2djG03<`#o5T=eErDu=x$JO?pifpt>&NEh$&5^hww_QBUX9&MJhyDruZLxW5 zcxbN3sskBYgoL^x3wE_Zw3h3v<Ood0Ek|31ropgiL-FNZY7F5r{+J5_atM#Wu<gN- zG--6!St!6tP|tZcU(%+gIHdpF<Eic!#>%w`35{`gzq-O+=>~cxis21Hhw$<~Auyuu z7#>8;huLlQX^A-k5-TR^-S&3Ayx$?t6Y_q0RNNh3i=OTg3Wj|5XoTd()EA~b8o-+L zda-=@^G~x4_ROp^s=&AYn3FFhL*k3$UoCd3&Y+;R77PoUEqra-o83L`uw}bm*b71h zJez&_=?CM5Szd=@Ty{*l4(ShbCcMdj4Q4#awl@oX{seEoE*L3yZ}tWjyR+j9_w#6z zufDx!w6dtqFN-Iqd$ZacVhX}J`v~$#Mue8r@mCyd&%og9IF)^}eZP9-wvZc#lgA@- zXcj@?yWnb#>(mTo8zF)?>{;^eX8HMP`I5g7hsS;`ps_=<z_?|5xrh!dL4L3WKro5D z*Z23wkC>)xLuBoRj9c_(|AL=yHLKhv0FGhcxKjwWefrUJeBS!6S#2bA=_dpbK=<Si zgfa>?k;daQKzzBz=^iN%67{S7!t1nO3-y|z1m;|uH=nVWLbsc}J~%}3u}jm&fZj3( z>dzgvWDica*?wH!K6wI81k3xsJn<^Cd&T^Yz!knHnmeqZ<-t{g`_J|2%a0`U<b5s# zw~if5Pk#S-g(ElPcT@PG-q%42w++Zl4|S*Fn_MZ4X_m9X*3oLRn>$n%CuoA9A<>Fx zRKW0I5lPue?OQXl^77862rB^)Owqxw2qjBQWR?4Zk@JcvH?@vpAXMDC7EZF+nRI+D z_DMgcE+9qT#vq4;oIMbl>H*=aJ^9Iu%rn!RJ>fkQ9}P|n=mqequk#8@rLnC8bMly& zABZY*#>F>;z<PLtct$kJym<N3-V9fI?=Uq<5nQgWX1741F=zMJm{j2uk9j0uH|U5l zMfY-WzQdCBus6%YLN&%D3rpwSW=)QAdsu$v#4Y`UFRmfv)XXRUD@5sf-1|&NgpW%! zJVIK3!(GMGw<kw`WS_p7$%{UB1l5$5ric0ZBL)Bm2_}=-3FLvX4KK(XVVT75)#L97 zCuIf<QD_F~zLp`V3_F_(E#?0Qhw=!m{(ri|04oU<zAkeJi^hzz*c@Tf!%K7bG4BQo zH3Mvi+z5N!?^dfjSl_PkkmhbXgOzEu+aTJ!ZrE@4BI9i4otd34fa3P?32rqo87tzH zFLIQ_dsQKx&CWl(*Na4F7snr7pU%#Y-<}@L-k#vb(hT**<cp4p|9{yY%wR^D<0IJW zKyHX?%)kPzu$NrspXNY!(n_#!0<(&lgw_u*Yp?G49-mF%xQ?yqp5<T+5ei$)sz~mJ zo02x}&>rTvd+gyi@PTnh3R4NY)@QR+HO-`sMwcJ6x*}$^6olHsGI`1=_4xheIXvlU zzZLN4_#7_+d_dS;#E_<I)UPs_vY#UQ^K$;9UV^l$-Cxb{Jl}<$(|e1EbI~%^S=65f zJ@V+n@^VBVR@wvin9!keXU(JPm&KE>q-XXBr*~H9FE_SXgtzPkmSV#mGOiC=<sBdL zYQNtJyDGeuE>JMuz~mbO+r0t%lbbHvYt(DAyxMV8&CYe|?Rl-1z|zsc5*DWq3GAky zW?z?-68#Nr=O%QFT-YLD_lwV!y_gYF0F53P4nTboe2nyI&JIt`N!EWsfV``yUCl|# zv^)+!1pJxnpvVOMeYttUX~O^R7(_jnSiJQMG<R>^*)+A2OxO22OkrAbT5{`uG+I1D z6~?EA1xw)$p*7~xSP8Ti-__MZgU@j(qXD`NOqEm$I8FezUU-6$!u0^(A~h;zT6_g~ zNg=MBWjKGjKfJk#x&Km~OZC{{tP`UG^N)`4SG25S?!b^_Cx($%@y4Nwz{_+i9T-jm zPY4jdM=j@Z$!TFWJ2|}cFB_Gyp>vLFH5^D|KKNr_77;gG;NfBg`G1EVOVjglDAU#m zTp-yhSeE$00fK{<HZAV%aF;H?`~mUo^GBaQolEG1Q4>)=ZI`n<jFRog-P6tLOLXrU z91a(s3gg)kriyo$CC$>C`!sw1L{zQ83{dE;cfbARR2_Os%!?g1SC2Q=FZKpYppMV$ zV=ZWAjK1l~A3oVy0N8-gSFh-UOXm<9Jnn+nb#tH1HC-lO`?@akQ}oJ^K2a;XH7yjv z@N_f{ft0WUDMOxdPcMHxK3Acrl&X1gtjAhd@cH5aUSyL!MC5N?;g0?BA>J;Cfy8%M zOY=({ooa9pbjwufW5{5l&Fm(t^f_haPRw_Nq1dohF&V$be*9RMOOdb-cLtL;x3K&= zni~<1m*XmZ3^Za^_nHoAE6rQ%^`X<#YIjbbpt|BT#9kGg++cWcf$jS-JbwH*T2A&C z^r1%^(TnVHg@eSe^rP?xUVW_DO9+;Dd|G|POv8ZoRgswAe4ekDR3%CS&)`6gzFm|K zw$48<4lmG~ZThZm1pKm)z<LO^M0r?Y@+{1R8rCf7K(}|85d34k-r3{7v3ldUAC0Bh zU!%&EhN9-KXh{y{k$J3HWMWYX9YiwPr<&B3#8=mbe8{mE`6(7&rjUk=M#7YT3g@+Z z8p?0Z7h7Hewbp+Ph2d$@>zsx=)gI;b;%awyfmQqQuBwkQImNX;aC?~l2QOi-@Ct$l zwVSoAeNAoiAXd3D7sB|pg-!><zJIWL+VXsoh;uh?rZ#eKj|QcL++gU{k=fqe8fN^} z7aRO)IO(=NH8?k`Raq6&AYxzo__TWLI*9xK!c_KGh}3ufTX+_4{WH?Ki<rmU=Ph8= z(6tu)S#uM`{=au}ae>Ebf0^Mqt4og$S0<CZ$J@gvJMu?LO=!*zc;hl^-*(>{toMke zNNbxqux)z&_roD#YQO=c6v6f5@cw?dgmeuP>Oz#J?rb-eF(`2FoL9M_^<)0Pp^R=h zYvNHet!_D#F)PE4f?Zhc1X#=DJ7L|iPHIt#>g1i|3uab)O%LlM7h8CV%yCf#<sQxA zjHKAkl-JZGS@-m;sEl*o&G~U-G%vT@+Lu;=cH{cnhewv{IoM6`K)qY6w45}X?eW_< zg)8)%TW;7p{rB(=j{bL2xn3`}*PG=UI?3$Sj@@4_2iR%CXi;?H>7|$ZE_T~?8x8<Y zyP<BOzNNQtuy(P%?2{ry83b-WK)(#NYX7+WRsHA20lF4u)@W_+{@@7_g-{pbhvFg` zVV}GrMI{Vchr8uK-*^eb8BAI>u>~D<`+R%0&Z>+N4ihYTsrI9o`4&&dIvcaz_UB9| zW#KC0e6`&7Z}<%w%BC|g!~xEo;<Z5Q^-da+shN4FE(T&CR6L%R`ZV9r(F8*Zwd9gw z5h1xdvPo-XJMg!%mHE{haaK(*CtFSFcZ<y#z7ur!@^Rc+^6v2Ltc2pR{P;Fccpj}# z{&lV8tyAs!>TcA~cvYXXfIrvpUY40nFXe9n3r%cQ&(2T(^#`U+S#-)k<D*U(3L5s@ zz`H$P#f;3~K5B|4)z5X9ujT)%`P$^Uyx(FnfPH*dYsbk9x{$0xy5U1BznbLSZle{m zQfUzN1&EF2e|2>67V6F`Y>$q=rd_jZ<&qr>zjckx3VNpZOa=$4;*ANWygFy>SEAAv zAp^G1^i!oHmzg_x6-&o=@tHWLSV_CcUMgYi8)E~tObetEdF6)f9>F<-@1oI{XnxU= z38#V3d+Nk{{P=l^0YP(anBM-mr@%;MDUGtqzMgwDSh;N(L}!1%4i;+oe2a+?pAUQU z-Qwm5;|ux@h8OJ?yJ|R)n2(qYXbqj;;H5EKFUMkvaI>FIv0;MK`?+|j8*JagMiCMy z>kTr&Fjuq$t;0dlTt{xyLi*AleHgo-*-pFf7@82F@XgF(Z7Mqv4x*ZZYxn-}2zvpX zp6Y)0jSPKz|AejU2#=XuuHHcnT(T2-F06!aaT>N;$5#KCCm@c*>D9gMn`8(~)8SvP zoJcIwS5M4_+Uzj4Yb?QRAeoB1H~xP5+wtqFp=2cphVE?6IjK}!Qa;AM9b&D%BtwX# z2wMq)H9|F_k%RW!^2vC^0S|3su7K-kd?m|xzoaoE%_g#(loM3+q<4DQ!i)$1WY@}o zFd}n1#+S%^_LXt^Nwydm*t)&W!}c@xaPv-8c<oM}(PCPa>LqeEhjj#5;67qUvbsZ< zO&oY$Cvz64Oos1lao?X_p1@dn{KlFYYa056+mWb^`mMugtl8`<Cd$%wZH%|3i(9i| z++k$W)AalHq9}uEOS7y8qEs70Vhhh<xUb4475KlnkH+D|o(ytli;c`&*yc)^OMQhU zup@dCO_6t2l7E(JM}FAD|JQj87uVdU?Th{A3$AVQQ4BaA>ne?WTcWQ(&xf&9XC9_v zeB9mMZolEoJnEN`cdPjqILb6Ca!Y4DIz~j%3xY@kF)R1DCD|1PErB+7sQL`+UN~64 z!Z}*C*xpqm8s?7goMmu`;0`uBF3g$Kfbp0flp(3WZDorD-0INeU!{n8B)eyTtevd> z<3^~4GH*Q74lQg(@&v$Q2a~owj`7VVz~DAR_>j9YdIG9kHa(h+KL&Pw+}PG;-b4Ph zi&feeF)P)^A#AH<PwPvb>_3RhsP6N3ZFamCEOWamXXbUhX$doQnXG#8-SnPylcq<c zO}S5gl!)STnK5e>tgUXX3hpDe5p5O&Z@tvxGCN;84~129`SfPBxqvEhzc^J0s?vE{ zeJPl!B~$Oyw3!a9((d~i6G-9GpS$=V5JQ`^<H7H`gkjn6gBa8Ka8MG`X=?pzPs&$` zLD|jrm_%pS>m8bLg#ZPyerx9kbK2VNVPOll_QDD5-G5|o=e7|7j2-fX5Z2j7j7i4J z_V5Ffl4^^4U3iweR(0(A7#HZTFh^jyvSiW8i(y9m^mch!#@tdgzR8_ZSo5~ZwvOsg ziYENT^Dg@cu@^9Lu!`X@HyXq)fp)8)TFJMh`SeEI583<|Y=^Vec1r)`Sr&EL9phPW zZCtLx05QLUUyC=*?b8CTjUkJQ<=O!A7VK#}s^RHQpf7$s{Bi$acF6z`T=@#Zhb|AU zY_B3l?UAy7-w_=V%`~Y~PDq6D{yN!gLqNvh;$@dea~Z91xe8cJJN<Sz@0X&XwBgVR zi<GIk!QARd(-EG&{`^zR-Lp)pdu2lrvnywfsxs<3GnNiMvW@h5L=feB<*-0A1iGYA z7kutKnVTAJ4g8KdIzc&M4`mT{fqKFY|93bxnGH3{RY|wdje+vrqd;6r<s|^GAM^to z4(NuZ7oxO$UPtpfCJP%OWn`8SJ2r`c8-;^<T~88KcAV4<kM&{fcTvt^oqkwYaeKDq z*CDzr3C#h6So*Mo^N&9Shigu<dY5*9WmpQSiR|Gn3YJT`OvRSVR6Q^K;$PT+oTTl^ zP_dQX#g6qu=~(I%)$SoFy`Q<GMp?Q!5uejpr<_UpcsDUlR&~F6#>qguC@tQAQzeJC zOMI@Uvd@r#uwQDt2%na<2gIJ(7S1r*-7esY7H!1dII=!FpCz9lOggpISE^mVN?`^W z-PtS4<k4A(5sp6WkOO;<ENA}2bYu`)Hz@OT33EfECg)LOo#UB_I+*rX%1!p0^$f>n zIFX<=*FKGLyxe^Iz9Q_}ZTPf!!@@%Jd2lcjVp!e&<Y@|&t0)n+9F&hZoLhNorIQ#m z7|$@mIFAxJS;9ImM$LxAypgw`FhN7DLY3ZG%%r;QQ67c>;F@Kfd17An0iTs*YnSn( z><I(JhYOtCYJbX!mWw=Y;xUkEoGM1EKy_NCU8xT@iJO<_<aZ^U8>F(9aQD}89p`Xi zzPb4D>hk>fm@-6x8tb-sVnCBSo{o6T-5`-ne{l+}M;_J&JH&i=s%JXYl0}~(I;Pmi z8Ii8{R#Giua)sH4ZX(tv%(_Qw)cw=;2KTHO)`VVj?Qtt22q2G+TkYf8C)cP#U*UlS zoy6dXm<%W3pbBSII4G|fJc9<O>XR}imJDN^ojEn=l(EeXO6bGmN0n<j_}3{*C1bDU z8V{35sch|Zw49f(XmZ*`!5F?a1M94ycKk8v;v;b{8;1=v!Nm6$bA1f6Dy5^TAQ`u8 znpFNZWys<ws1<kJk9=3@TjwrpDoi6ky2OF_1wsJe>=9A)WaBX%wZsL$H>h(2ng_E= zog|ViA9SfkW}xsM+UiDsj|ytb{>#wZ*ne=7=o9xdzN`IweSHr{hcM*&4O}#IoCjMm zu)dFcxO!YIs&2+oZ%`|EuvS!!3p`yM<U?qq6z(NBpsrte!setBe6iWUIl$YbS#U%X zsz5VLEqB`kt$55P2=);>JQ}thSH3_%yB@gOe&>i6Qa$F=IF;LOV9I7*IPS5r)l|$c zn^CM1THoP=ZRQ(ppk1gmZo208ig$(>pO;IiR%>|`$MAp?9m5lI$6$q<p3gh#ovz=V zWf-p{(LZTYfw2vGFOENKa2&q>gEKl1tLyE02K^BI9xs26`b9v4sk8W`M`j34T_K{? z1S}R4T9qzLF%1+K04#3MvH1+cZwQAI7({yE1HP)gS&$mb`nc~7^xjw|?^pDE*J&|( zJ!bOwT(@#TGhDaYV>&2`#LU{th4-06QwEtP`!Jn;{CS_R$?d0f8rn+ScM@azRug7t zZ48ZV)auDOrnMPjPt|xqkDpMV&>9JM)v+^nR^iqnSw(|~u4zu?RfG23&T8|1_i&Y0 zx<-Wa*kbuvhd2G0<AR|E1vHUvWkWE+a$<A2iesFSDL&@t)L7NTh0#<VJ>(%L><v-t z)W42o-MnCHpDl1y^a<e(y*9}-ih?5VO>;8opTw5EOKw%%wh~MtTOQEe%-~}?gj&NH z1Gzc3+C-EOhs@Vkq@5ZRii>*xv=*VP82H(@97D#;mAr3e&UKC0-`{$2b9ptgHwZRG z<>UE*mg*0eM{&I7y+&Rnaue*DxSHCX5(=@d^Jtux>lWsgRfjT6Bzkf*{72CD%w3k= zz&=Z0K%da0fMm90TRDi*NoC9A{r%+P<kj2bIwSOFC~r0vZY+)wq4F|%jj{T3%Ux}> z1}!BM4%7TH1EYoUxK*IP;PFiFE{8QTCrH0`4tdd6NBBD)7G8y0QxBs2ku67A+JZ(! zjA-?F&oK-pU1r;XgMstI`C7REP|xJ8iYN{L_TtTYJuwS)nC`ltaeqP_k`-iZnu)<c zPj7nRH?{FOyV+!E#Nl(V7ua0TRuws<bH%C34zC^2I9GQKt&)8q$HUirsyy;*pj`fe zHyvb;`CD6TPK9~x@oOHP@df=JQyzTz>6UI|pPHPFeKk_vBib}n8rY7cpK+G%+RR1z zo>K(Pi*?G?TF@?dWwm(+2L;?)rPss<tnx9{mhRE7n<hEyEX(0P`%Ph7<|z#?PCiLO zxu{-;gD!3xhT?&!?-U-Q=C_%rA(&rvA4H*Fbce4t6;vN6<a@9Tz^yF&66^}X*v$2o z7v(VL)ZRwR)z}kk|F5%a+ifBVqI?k&tU$a*#sTj`l69OQo-8M<EGvOsF=q4od+MC3 z?y8w_Ks+Gf%%!`lyY8oIDiOmz!1lww_$2sYQQvK}4NT&*;T-ua`=2@Xb1~33td(X= zpwjV(>&?^QF+={&jzyn6AMcKA&bsk682ux??p(_eXP31i4hqk4cruXNa;=LY<O~14 zy4Wl~;EQt2h!DUH6;g(Yc|z+b`=FH04t8a+`}c@L7pW7>r=uog@~CPm_G(3f1SNiI zGq7RV4ZzIH?bUL<y7a*89l{eN9)ywuIk6!}oT=`#)uW%&%*iB}RQuK732MO=I~kJZ zjZ%G!p0gtdg`4s081YxD$<YDh@$t^uI=1CAsVs-uikfPylCc)V_QuQ;Pg{pASo{68 z1;;iAx{N2eNtFFEl~QV5n~W{(J`e9U&VM9ONac4Y(?V603p%CTWDDdc;})4fbP7e% zpp|_7254kL|6m40XsNffsJVk8&+0m|NQ5crZn==26@aIR5CuQ0R%kdfJVQJ5cvDiE zHp^RJ@bI07>H`MLc;G4-y=3=&Qm4H2i24_e#GjGN`}(7uE3+|?T!WHj{;4=B$yW+( z5lf;h@Ki3vcU<uIB`;Mp+6wNhA22q)S#ei9#L3wq1Ch4y5$gqz0bNXiUpM?F<zI_v zn=OkpG5qd|zx)M&142tMaS)nxVFlVDD))qTG%vS*{)cMWy@4OTFCKUJ0{ie1Rp9sc z@JaPo?24Hzq(Uo)>Q-(Ce<L!HGelsPIXD;)YgS;?mJP5<23V;EE`*p!XoUqVr}p}u zIK8<DCR4_DVcROPNpqtn>>eWY&^QoH06iuEqA(8}gL0+m(;J}<u9tt^EH4(zt;b2k z3X{xK*=Qeh#?kksvE83<OKYQ0Uf~8ML~TP?V?VH6Zmfz|U3eGeG9L^v;R-v#IL?k* z$Iry5lpBWBj)mWB&foP7*Ti8f6=~=+)Yepk;`Z?OQ}EP@RGZZ8*_%E}Os0Kn+hSfd zSf1o1SOuWa#AVK!f!WoZpL57cMHSDB3$anwJ=A?p&Bk0CYeyYk@wmab!rPbIJrtNC zc<)zhfJQFYpQpsYfwdlr-AM@<;)e+#QS?<Qx_bBl^se$8))E1Fvy>(2!Oa+79^TPm z_s8pdRIpr${Tm11Wavq?Q^yYkMjwXbgY~nC^))Zks!`*Qq*1rx>?eLrtY+yh7!Enb z#Ai>laT&rSY@~+Eg=rW!E|*d^leULJ#W8UM&?K)CmIT@l>HyzXumU*5P(=}NMNK`l z2$`-Qh6>WPlRAei?=(u9Z$hU=W2@zkd6G_4g{|06V}oheR-ssKEM5!&h19Ql0>B@_ zlK9G+HNbis6r<NDIv9iZSIEWGLN3!7*$mD)aSP8wwUj`9WM*l6Jlrah6FK{l>LE1Q zH$|39!I;eh<&!grk-iPq!5B+66T5o-!7JlPf(Y1(TV?Dm{78?>C_7#abDu>9h$95B znYwn*WP-JIp2f`Nd)(&P)VijQnV35VXA?&xNNZ&AxB!Lrrj!D&TE`?^eEVuD#5kW) zyrkhE!qFEBB*xaGsfG30cL&&X+a)l|)*cCsM(w|72IW0raw=faL$#rBEW))qUoFly zOKOi5QVpipCSQoMziJ|L!*SAJ$vyssIm_T8X8i>*k~pVI;`v$5Nj$sRRtO!%cbOOq zR}BBh+2ZLg-}SO7@#betfaUwu)!BOUIf6(rk;*W#tTnKV`V$f6ViRw6`ygYy*5nOL z=w$N7l@qJtJaXBWXpBR3vcx>z$Va&@THPD~<cAAAt_O%Ge1SBSMqWBE6`5$}HR9;e zJ))0hZa>Q731y2nL-fCX^EL^8zK_15Yw*zZJxCqTYF4s7J;XIv@Y958M<BQ`EiZ}= z3Q0&?xBs2#pWLLa`@iwHX&Otar9x#pm3R17#dmbxj@vk0KXJ5+OXAj9WTtRSq4QBl zNVlK#ignp6qq#Dtm=TS+kM6dOQ}YNzs<^g#*w@owsRl#%p!a6TDM$$bluMb?M4ko~ zHoT(4{g9m1Nr(!LdXHNW80)Ay9}HHz0gYoNq-_WI=_ZH;&_9ZJ;2+_k_Jn)CY`IQ0 z&@<~^zFFQa{wQ8R4Ke9)xh}0RufsaD`NH#8h+gLpYwY7<bU)K)NXK1LCQ2=`$i#B3 zeyXkg_)n)`DG`s%Bh;<m4UGgFey(^;Z^Lv9`pFQxhc#&PpU@HGbY7d1?C9#nly*HH V4lSgYL=W6cf~4lM{uy`s#s7`e4*CE9 literal 0 HcmV?d00001 diff --git a/include/grpc++/support/channel_arguments.h b/include/grpc++/support/channel_arguments.h index 9dc505f0082..c9879d8a28d 100644 --- a/include/grpc++/support/channel_arguments.h +++ b/include/grpc++/support/channel_arguments.h @@ -122,7 +122,7 @@ class ChannelArguments { /// Default pointer argument operations. struct PointerVtableMembers { static void* Copy(void* in) { return in; } - static void Destroy(grpc_exec_ctx* exec_ctx, void* in) {} + static void Destroy(void* in) {} static int Compare(void* a, void* b) { if (a < b) return -1; if (a > b) return 1; diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h index 65463bb33b6..f65346701fd 100644 --- a/include/grpc/impl/codegen/grpc_types.h +++ b/include/grpc/impl/codegen/grpc_types.h @@ -85,7 +85,7 @@ typedef enum { typedef struct grpc_arg_pointer_vtable { void *(*copy)(void *p); - void (*destroy)(grpc_exec_ctx *exec_ctx, void *p); + void (*destroy)(void *p); int (*cmp)(void *p, void *q); } grpc_arg_pointer_vtable; diff --git a/include/grpc/impl/codegen/slice.h b/include/grpc/impl/codegen/slice.h index 128fa8e1216..9bb6fa4b8fc 100644 --- a/include/grpc/impl/codegen/slice.h +++ b/include/grpc/impl/codegen/slice.h @@ -43,7 +43,7 @@ typedef struct grpc_slice grpc_slice; typedef struct grpc_slice_refcount_vtable { void (*ref)(void *); - void (*unref)(grpc_exec_ctx *exec_ctx, void *); + void (*unref)(void *); int (*eq)(grpc_slice a, grpc_slice b); uint32_t (*hash)(grpc_slice slice); } grpc_slice_refcount_vtable; diff --git a/include/grpc/slice_buffer.h b/include/grpc/slice_buffer.h index de4b86f777d..772f6c89558 100644 --- a/include/grpc/slice_buffer.h +++ b/include/grpc/slice_buffer.h @@ -67,8 +67,7 @@ GPRAPI void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer *src, size_t n, grpc_slice_buffer *dst); /** move the first n bytes of src into dst (copying them) */ -GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *src, +GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer *src, size_t n, void *dst); /** take the first slice in the slice buffer */ GPRAPI grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer *src); diff --git a/memory_usage.csv b/memory_usage.csv new file mode 100644 index 00000000000..4f2c2fb879f --- /dev/null +++ b/memory_usage.csv @@ -0,0 +1 @@ +8771.168889,165387,4457938,8698.928889,210284,, diff --git a/remove_exec_ctx.py b/remove_exec_ctx.py new file mode 100644 index 00000000000..fe530e424ee --- /dev/null +++ b/remove_exec_ctx.py @@ -0,0 +1,49 @@ +import os +import sys +import re + +def repl_fn(m): + ret = '' + ret = ret + m.groups()[0] + '(' + for i in range(1, len(m.groups())): + if(m.groups()[i] != None): + ret = ret + m.groups()[i] + else: + break + ret = ret + ')' + print '\n' + m.group() + '\nwith\n' + ret + '\n' + return ret + +def work_on(fname): + with open(fname) as f: + p = re.compile(r'((?:\b[^\s\(\),]+)|(?:\(\*[^\s\(\),]+\)))\s*' + # function name or function pointer + r'\(\s*' + # open brackets + r'(?:(?:exec_ctx)|(?:grpc_exec_ctx\s*\*\s*exec_ctx)|(?:&\s*exec_ctx))' + # first exec_ctx paramenter + r'\s*,?' + # comma after exec_ctx + r'(\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'(\s*,\s*[^\),]+)?' + # all but first argument + r'\s*\)') # close brackets + res = p.sub(repl_fn, f.read()) + + f = open(fname, 'w') + f.write(res) + f.close() + #print res + +def main(): + file_list = [] + for line in sys.stdin: + work_on(line.strip()) + + +if __name__ == '__main__': + main() diff --git a/scenario_result.json b/scenario_result.json new file mode 100644 index 00000000000..00a7c1b7470 --- /dev/null +++ b/scenario_result.json @@ -0,0 +1 @@ +{"scenario":{"name":"cpp_protobuf_async_unary_1channel_100rpcs_1MB","clientConfig":{"clientType":"ASYNC_CLIENT","outstandingRpcsPerChannel":100,"clientChannels":1,"loadParams":{"closedLoop":{}},"payloadConfig":{"simpleParams":{"reqSize":1048576,"respSize":1048576}},"histogramParams":{"resolution":0.01,"maxPossible":60000000000},"channelArgs":[{"name":"grpc.optimization_target","strValue":"throughput"}]},"numClients":1,"serverConfig":{"serverType":"ASYNC_SERVER","channelArgs":[{"name":"grpc.optimization_target","strValue":"throughput"}]},"numServers":1,"warmupSeconds":5,"benchmarkSeconds":30},"latencies":{"bucket":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"minSeen":60000000000},"serverStats":[{"timeElapsed":30.000293970108032,"timeUser":6.916,"timeSystem":10.652,"totalCpuTime":"35087","idleCpuTime":"31013","cqPollCount":"3","coreStats":{"metrics":[{"name":"client_calls_created","count":"0"},{"name":"server_calls_created","count":"1"},{"name":"cqs_created","count":"19"},{"name":"client_channels_created","count":"0"},{"name":"client_subchannels_created","count":"0"},{"name":"server_channels_created","count":"2"},{"name":"syscall_poll","count":"22"},{"name":"syscall_wait","count":"0"},{"name":"pollset_kick","count":"7"},{"name":"pollset_kicked_without_poller","count":"3"},{"name":"pollset_kicked_again","count":"0"},{"name":"pollset_kick_wakeup_fd","count":"0"},{"name":"pollset_kick_wakeup_cv","count":"16"},{"name":"pollset_kick_own_thread","count":"3"},{"name":"histogram_slow_lookups","count":"1"},{"name":"syscall_write","count":"8"},{"name":"syscall_read","count":"19"},{"name":"tcp_backup_pollers_created","count":"0"},{"name":"tcp_backup_poller_polls","count":"0"},{"name":"http2_op_batches","count":"7"},{"name":"http2_op_cancel","count":"0"},{"name":"http2_op_send_initial_metadata","count":"1"},{"name":"http2_op_send_message","count":"2"},{"name":"http2_op_send_trailing_metadata","count":"0"},{"name":"http2_op_recv_initial_metadata","count":"1"},{"name":"http2_op_recv_message","count":"3"},{"name":"http2_op_recv_trailing_metadata","count":"1"},{"name":"http2_settings_writes","count":"2"},{"name":"http2_pings_sent","count":"3"},{"name":"http2_writes_begun","count":"7"},{"name":"http2_writes_offloaded","count":"2"},{"name":"http2_writes_continued","count":"0"},{"name":"http2_partial_writes","count":"0"},{"name":"http2_initiate_write_due_to_initial_write","count":"0"},{"name":"http2_initiate_write_due_to_start_new_stream","count":"0"},{"name":"http2_initiate_write_due_to_send_message","count":"1"},{"name":"http2_initiate_write_due_to_send_initial_metadata","count":"1"},{"name":"http2_initiate_write_due_to_send_trailing_metadata","count":"0"},{"name":"http2_initiate_write_due_to_retry_send_ping","count":"0"},{"name":"http2_initiate_write_due_to_continue_pings","count":"0"},{"name":"http2_initiate_write_due_to_goaway_sent","count":"0"},{"name":"http2_initiate_write_due_to_rst_stream","count":"0"},{"name":"http2_initiate_write_due_to_close_from_api","count":"0"},{"name":"http2_initiate_write_due_to_stream_flow_control","count":"0"},{"name":"http2_initiate_write_due_to_transport_flow_control","count":"2"},{"name":"http2_initiate_write_due_to_send_settings","count":"0"},{"name":"http2_initiate_write_due_to_bdp_estimator_ping","count":"0"},{"name":"http2_initiate_write_due_to_flow_control_unstalled_by_setting","count":"0"},{"name":"http2_initiate_write_due_to_flow_control_unstalled_by_update","count":"0"},{"name":"http2_initiate_write_due_to_application_ping","count":"0"},{"name":"http2_initiate_write_due_to_keepalive_ping","count":"0"},{"name":"http2_initiate_write_due_to_transport_flow_control_unstalled","count":"0"},{"name":"http2_initiate_write_due_to_ping_response","count":"3"},{"name":"http2_initiate_write_due_to_force_rst_stream","count":"0"},{"name":"http2_spurious_writes_begun","count":"0"},{"name":"hpack_recv_indexed","count":"0"},{"name":"hpack_recv_lithdr_incidx","count":"0"},{"name":"hpack_recv_lithdr_incidx_v","count":"9"},{"name":"hpack_recv_lithdr_notidx","count":"0"},{"name":"hpack_recv_lithdr_notidx_v","count":"0"},{"name":"hpack_recv_lithdr_nvridx","count":"0"},{"name":"hpack_recv_lithdr_nvridx_v","count":"0"},{"name":"hpack_recv_uncompressed","count":"18"},{"name":"hpack_recv_huffman","count":"0"},{"name":"hpack_recv_binary","count":"0"},{"name":"hpack_recv_binary_base64","count":"0"},{"name":"hpack_send_indexed","count":"0"},{"name":"hpack_send_lithdr_incidx","count":"0"},{"name":"hpack_send_lithdr_incidx_v","count":"4"},{"name":"hpack_send_lithdr_notidx","count":"0"},{"name":"hpack_send_lithdr_notidx_v","count":"0"},{"name":"hpack_send_lithdr_nvridx","count":"0"},{"name":"hpack_send_lithdr_nvridx_v","count":"0"},{"name":"hpack_send_uncompressed","count":"8"},{"name":"hpack_send_huffman","count":"0"},{"name":"hpack_send_binary","count":"0"},{"name":"hpack_send_binary_base64","count":"0"},{"name":"combiner_locks_initiated","count":"34"},{"name":"combiner_locks_scheduled_items","count":"58"},{"name":"combiner_locks_scheduled_final_items","count":"17"},{"name":"combiner_locks_offloaded","count":"0"},{"name":"executor_scheduled_short_items","count":"5"},{"name":"executor_scheduled_long_items","count":"0"},{"name":"executor_scheduled_to_self","count":"0"},{"name":"executor_wakeup_initiated","count":"5"},{"name":"executor_queue_drained","count":"5"},{"name":"executor_push_retries","count":"0"},{"name":"server_requested_calls","count":"240018"},{"name":"server_slowpath_requests_queued","count":"0"},{"name":"cq_ev_queue_trylock_failures","count":"0"},{"name":"cq_ev_queue_trylock_successes","count":"10497179"},{"name":"cq_ev_queue_transient_pop_failures","count":"0"},{"name":"call_initial_size","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":7},{"start":9},{"start":11},{"start":14},{"start":17},{"start":21},{"start":26},{"start":32},{"start":39},{"start":47},{"start":57},{"start":68},{"start":82},{"start":98},{"start":117},{"start":140},{"start":167},{"start":199},{"start":238},{"start":284},{"start":339},{"start":404},{"start":482},{"start":575},{"start":685},{"start":816},{"start":972},{"start":1158},{"start":1380},{"start":1644},{"start":1959},{"start":2334},{"start":2780},{"start":3312},{"start":3945},{"start":4699},{"start":5597,"count":"1"},{"start":6667},{"start":7941},{"start":9459},{"start":11267},{"start":13420},{"start":15984},{"start":19038},{"start":22676},{"start":27009},{"start":32169},{"start":38315},{"start":45635},{"start":54353},{"start":64737},{"start":77104},{"start":91834},{"start":109378},{"start":130273},{"start":155159},{"start":184799},{"start":220100}]}},{"name":"poll_events_returned","histogram":{"buckets":[{},{"start":1,"count":"21"},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":13},{"start":14},{"start":15},{"start":16},{"start":17},{"start":18},{"start":19},{"start":20},{"start":21},{"start":22},{"start":23},{"start":24},{"start":25},{"start":26},{"start":27},{"start":28},{"start":30},{"start":32},{"start":34},{"start":36},{"start":38},{"start":40},{"start":42},{"start":44},{"start":46},{"start":48},{"start":50},{"start":52},{"start":54},{"start":56},{"start":58},{"start":60},{"start":63},{"start":66},{"start":69},{"start":72},{"start":75},{"start":78},{"start":81},{"start":84},{"start":87},{"start":90},{"start":94},{"start":98},{"start":102},{"start":106},{"start":110},{"start":114},{"start":118},{"start":122},{"start":126},{"start":131},{"start":136},{"start":141},{"start":146},{"start":151},{"start":156},{"start":162},{"start":168},{"start":174},{"start":180},{"start":186},{"start":192},{"start":199},{"start":206},{"start":213},{"start":220},{"start":228},{"start":236},{"start":244},{"start":252},{"start":260},{"start":269},{"start":278},{"start":287},{"start":297},{"start":307},{"start":317},{"start":327},{"start":338},{"start":349},{"start":360},{"start":372},{"start":384},{"start":396},{"start":409},{"start":422},{"start":436},{"start":450},{"start":464},{"start":479},{"start":494},{"start":510},{"start":526},{"start":543},{"start":560},{"start":578},{"start":596},{"start":615},{"start":634},{"start":654},{"start":674},{"start":695},{"start":717},{"start":739},{"start":762},{"start":785},{"start":809},{"start":834},{"start":859},{"start":885},{"start":912},{"start":939},{"start":967},{"start":996}]}},{"name":"tcp_write_size","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26,"count":"1"},{"start":34,"count":"1"},{"start":44},{"start":57,"count":"3"},{"start":73,"count":"1"},{"start":94},{"start":121},{"start":155,"count":"1"},{"start":199},{"start":255},{"start":327},{"start":419},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108},{"start":10373,"count":"1"},{"start":13270},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"tcp_write_iov_size","histogram":{"buckets":[{},{"start":1,"count":"1"},{"start":2,"count":"3"},{"start":3,"count":"3"},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18,"count":"1"},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"tcp_read_size","histogram":{"buckets":[{},{"start":1},{"start":2,"count":"1"},{"start":3},{"start":4,"count":"1"},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26,"count":"1"},{"start":34,"count":"1"},{"start":44,"count":"2"},{"start":57},{"start":73,"count":"1"},{"start":94,"count":"1"},{"start":121},{"start":155},{"start":199},{"start":255},{"start":327},{"start":419,"count":"1"},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108},{"start":10373},{"start":13270},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"tcp_read_offer","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26},{"start":34},{"start":44},{"start":57},{"start":73},{"start":94},{"start":121},{"start":155},{"start":199},{"start":255},{"start":327},{"start":419},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108,"count":"3"},{"start":10373},{"start":13270,"count":"16"},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"tcp_read_offer_iov_size","histogram":{"buckets":[{},{"start":1,"count":"3"},{"start":2,"count":"16"},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_message_size","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4,"count":"1"},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26},{"start":34},{"start":44},{"start":57},{"start":73},{"start":94},{"start":121},{"start":155},{"start":199},{"start":255},{"start":327},{"start":419},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108},{"start":10373,"count":"1"},{"start":13270},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"http2_send_initial_metadata_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_message_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_trailing_metadata_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_flowctl_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"server_cqs_checked","histogram":{"buckets":[{"count":"1"},{"start":1},{"start":2},{"start":4},{"start":7},{"start":13},{"start":23},{"start":39}]}}]}}],"serverCores":[12],"summary":{"qps":"NaN","qpsPerServerCore":"NaN","serverSystemTime":35.506318740121465,"serverUserTime":23.053107435850553,"clientSystemTime":"NaN","clientUserTime":"NaN","serverCpuUsage":11.611138028329577,"clientPollsPerRequest":"NaN","serverPollsPerRequest":"Infinity","clientQueriesPerCpuSec":"NaN"},"clientSuccess":[false],"serverSuccess":[true]} \ No newline at end of file diff --git a/src/core/ext/census/grpc_filter.cc b/src/core/ext/census/grpc_filter.cc index b37ab903893..85f774b7d41 100644 --- a/src/core/ext/census/grpc_filter.cc +++ b/src/core/ext/census/grpc_filter.cc @@ -68,15 +68,13 @@ static void client_mutate_op(grpc_call_element *elem, } } -static void client_start_transport_op(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void client_start_transport_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { client_mutate_op(elem, op); - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } -static void server_on_done_recv(grpc_exec_ctx *exec_ctx, void *ptr, - grpc_error *error) { +static void server_on_done_recv(void *ptr, grpc_error *error) { GPR_TIMER_BEGIN("census-server:server_on_done_recv", 0); grpc_call_element *elem = (grpc_call_element *)ptr; call_data *calld = (call_data *)elem->call_data; @@ -84,7 +82,7 @@ static void server_on_done_recv(grpc_exec_ctx *exec_ctx, void *ptr, if (error == GRPC_ERROR_NONE) { extract_and_annotate_method_tag(calld->recv_initial_metadata, calld, chand); } - calld->on_done_recv->cb(exec_ctx, calld->on_done_recv->cb_arg, error); + calld->on_done_recv->cb(calld->on_done_recv->cb_arg, error); GPR_TIMER_END("census-server:server_on_done_recv", 0); } @@ -102,8 +100,7 @@ static void server_mutate_op(grpc_call_element *elem, } } -static void server_start_transport_op(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void server_start_transport_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { /* TODO(ctiller): this code fails. I don't know why. I expect it's incomplete, and someone should look at it soon. @@ -111,11 +108,10 @@ static void server_start_transport_op(grpc_exec_ctx *exec_ctx, call_data *calld = elem->call_data; GPR_ASSERT((calld->op_id.upper != 0) || (calld->op_id.lower != 0)); */ server_mutate_op(elem, op); - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } -static grpc_error *client_init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *client_init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *d = (call_data *)elem->call_data; GPR_ASSERT(d != NULL); @@ -124,8 +120,7 @@ static grpc_error *client_init_call_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void client_destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *d = (call_data *)elem->call_data; @@ -133,8 +128,7 @@ static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx, /* TODO(hongyu): record rpc client stats and census_rpc_end_op here */ } -static grpc_error *server_init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *server_init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *d = (call_data *)elem->call_data; GPR_ASSERT(d != NULL); @@ -146,8 +140,7 @@ static grpc_error *server_init_call_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void server_destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *d = (call_data *)elem->call_data; @@ -155,16 +148,14 @@ static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx, /* TODO(hongyu): record rpc server stats and census_tracing_end_op here */ } -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(chand != NULL); return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(chand != NULL); } diff --git a/src/core/ext/census/grpc_plugin.cc b/src/core/ext/census/grpc_plugin.cc index 22b16c6c63d..48fa43780b5 100644 --- a/src/core/ext/census/grpc_plugin.cc +++ b/src/core/ext/census/grpc_plugin.cc @@ -38,8 +38,7 @@ static bool is_census_enabled(const grpc_channel_args *a) { return census_enabled() && !grpc_channel_args_want_minimal_stack(a); } -static bool maybe_add_census_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool maybe_add_census_filter(grpc_channel_stack_builder *builder, void *arg) { const grpc_channel_args *args = grpc_channel_stack_builder_get_channel_arguments(builder); diff --git a/src/core/ext/filters/client_channel/channel_connectivity.cc b/src/core/ext/filters/client_channel/channel_connectivity.cc index 31a8fc39ce6..13521127314 100644 --- a/src/core/ext/filters/client_channel/channel_connectivity.cc +++ b/src/core/ext/filters/client_channel/channel_connectivity.cc @@ -33,22 +33,22 @@ grpc_connectivity_state grpc_channel_check_connectivity_state( /* forward through to the underlying client channel */ grpc_channel_element *client_channel_elem = grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_connectivity_state state; GRPC_API_TRACE( "grpc_channel_check_connectivity_state(channel=%p, try_to_connect=%d)", 2, (channel, try_to_connect)); if (client_channel_elem->filter == &grpc_client_channel_filter) { - state = grpc_client_channel_check_connectivity_state( - &exec_ctx, client_channel_elem, try_to_connect); - grpc_exec_ctx_finish(&exec_ctx); + state = grpc_client_channel_check_connectivity_state(client_channel_elem, + try_to_connect); + grpc_exec_ctx_finish(); return state; } gpr_log(GPR_ERROR, "grpc_channel_check_connectivity_state called on something that is " "not a client channel, but '%s'", client_channel_elem->filter->name); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return GRPC_CHANNEL_SHUTDOWN; } @@ -73,12 +73,11 @@ typedef struct { void *tag; } state_watcher; -static void delete_state_watcher(grpc_exec_ctx *exec_ctx, state_watcher *w) { +static void delete_state_watcher(state_watcher *w) { grpc_channel_element *client_channel_elem = grpc_channel_stack_last_element( grpc_channel_get_channel_stack(w->channel)); if (client_channel_elem->filter == &grpc_client_channel_filter) { - GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, w->channel, - "watch_channel_connectivity"); + GRPC_CHANNEL_INTERNAL_UNREF(w->channel, "watch_channel_connectivity"); } else { abort(); } @@ -86,8 +85,7 @@ static void delete_state_watcher(grpc_exec_ctx *exec_ctx, state_watcher *w) { gpr_free(w); } -static void finished_completion(grpc_exec_ctx *exec_ctx, void *pw, - grpc_cq_completion *ignored) { +static void finished_completion(void *pw, grpc_cq_completion *ignored) { bool should_delete = false; state_watcher *w = (state_watcher *)pw; gpr_mu_lock(&w->mu); @@ -102,19 +100,19 @@ static void finished_completion(grpc_exec_ctx *exec_ctx, void *pw, gpr_mu_unlock(&w->mu); if (should_delete) { - delete_state_watcher(exec_ctx, w); + delete_state_watcher(w); } } -static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w, - bool due_to_completion, grpc_error *error) { +static void partly_done(state_watcher *w, bool due_to_completion, + grpc_error *error) { if (due_to_completion) { - grpc_timer_cancel(exec_ctx, &w->alarm); + grpc_timer_cancel(&w->alarm); } else { grpc_channel_element *client_channel_elem = grpc_channel_stack_last_element( grpc_channel_get_channel_stack(w->channel)); grpc_client_channel_watch_connectivity_state( - exec_ctx, client_channel_elem, + client_channel_elem, grpc_polling_entity_create_from_pollset(grpc_cq_pollset(w->cq)), NULL, &w->on_complete, NULL); } @@ -149,7 +147,7 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w, w->error = error; } w->phase = CALLING_BACK_AND_FINISHED; - grpc_cq_end_op(exec_ctx, w->cq, w->tag, w->error, finished_completion, w, + grpc_cq_end_op(w->cq, w->tag, w->error, finished_completion, w, &w->completion_storage); break; case CALLING_BACK_AND_FINISHED: @@ -161,14 +159,12 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w, GRPC_ERROR_UNREF(error); } -static void watch_complete(grpc_exec_ctx *exec_ctx, void *pw, - grpc_error *error) { - partly_done(exec_ctx, (state_watcher *)pw, true, GRPC_ERROR_REF(error)); +static void watch_complete(void *pw, grpc_error *error) { + partly_done((state_watcher *)pw, true, GRPC_ERROR_REF(error)); } -static void timeout_complete(grpc_exec_ctx *exec_ctx, void *pw, - grpc_error *error) { - partly_done(exec_ctx, (state_watcher *)pw, false, GRPC_ERROR_REF(error)); +static void timeout_complete(void *pw, grpc_error *error) { + partly_done((state_watcher *)pw, false, GRPC_ERROR_REF(error)); } int grpc_channel_num_external_connectivity_watchers(grpc_channel *channel) { @@ -183,12 +179,10 @@ typedef struct watcher_timer_init_arg { gpr_timespec deadline; } watcher_timer_init_arg; -static void watcher_timer_init(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error_ignored) { +static void watcher_timer_init(void *arg, grpc_error *error_ignored) { watcher_timer_init_arg *wa = (watcher_timer_init_arg *)arg; - grpc_timer_init(exec_ctx, &wa->w->alarm, - grpc_timespec_to_millis_round_up(wa->deadline), + grpc_timer_init(&wa->w->alarm, grpc_timespec_to_millis_round_up(wa->deadline), &wa->w->on_timeout); gpr_free(wa); } @@ -204,7 +198,7 @@ void grpc_channel_watch_connectivity_state( gpr_timespec deadline, grpc_completion_queue *cq, void *tag) { grpc_channel_element *client_channel_elem = grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; state_watcher *w = (state_watcher *)gpr_malloc(sizeof(*w)); GRPC_API_TRACE( @@ -240,12 +234,12 @@ void grpc_channel_watch_connectivity_state( if (client_channel_elem->filter == &grpc_client_channel_filter) { GRPC_CHANNEL_INTERNAL_REF(channel, "watch_channel_connectivity"); grpc_client_channel_watch_connectivity_state( - &exec_ctx, client_channel_elem, + client_channel_elem, grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)), &w->state, &w->on_complete, &w->watcher_timer_init); } else { abort(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } diff --git a/src/core/ext/filters/client_channel/client_channel.cc b/src/core/ext/filters/client_channel/client_channel.cc index 22c2bc88804..973cc5f703f 100644 --- a/src/core/ext/filters/client_channel/client_channel.cc +++ b/src/core/ext/filters/client_channel/client_channel.cc @@ -87,7 +87,7 @@ static void method_parameters_unref(method_parameters *method_params) { } } -static void method_parameters_free(grpc_exec_ctx *exec_ctx, void *value) { +static void method_parameters_free(void *value) { method_parameters_unref((method_parameters *)value); } @@ -223,12 +223,11 @@ typedef struct { grpc_lb_policy *lb_policy; } lb_policy_connectivity_watcher; -static void watch_lb_policy_locked(grpc_exec_ctx *exec_ctx, channel_data *chand, +static void watch_lb_policy_locked(channel_data *chand, grpc_lb_policy *lb_policy, grpc_connectivity_state current_state); -static void set_channel_connectivity_state_locked(grpc_exec_ctx *exec_ctx, - channel_data *chand, +static void set_channel_connectivity_state_locked(channel_data *chand, grpc_connectivity_state state, grpc_error *error, const char *reason) { @@ -240,12 +239,12 @@ static void set_channel_connectivity_state_locked(grpc_exec_ctx *exec_ctx, if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) { /* cancel picks with wait_for_ready=false */ grpc_lb_policy_cancel_picks_locked( - exec_ctx, chand->lb_policy, + chand->lb_policy, /* mask= */ GRPC_INITIAL_METADATA_WAIT_FOR_READY, /* check= */ 0, GRPC_ERROR_REF(error)); } else if (state == GRPC_CHANNEL_SHUTDOWN) { /* cancel all picks */ - grpc_lb_policy_cancel_picks_locked(exec_ctx, chand->lb_policy, + grpc_lb_policy_cancel_picks_locked(chand->lb_policy, /* mask= */ 0, /* check= */ 0, GRPC_ERROR_REF(error)); } @@ -254,12 +253,10 @@ static void set_channel_connectivity_state_locked(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "chand=%p: setting connectivity state to %s", chand, grpc_connectivity_state_name(state)); } - grpc_connectivity_state_set(exec_ctx, &chand->state_tracker, state, error, - reason); + grpc_connectivity_state_set(&chand->state_tracker, state, error, reason); } -static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void on_lb_policy_state_changed_locked(void *arg, grpc_error *error) { lb_policy_connectivity_watcher *w = (lb_policy_connectivity_watcher *)arg; grpc_connectivity_state publish_state = w->state; /* check if the notification is for the latest policy */ @@ -270,21 +267,21 @@ static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx, } if (publish_state == GRPC_CHANNEL_SHUTDOWN && w->chand->resolver != NULL) { publish_state = GRPC_CHANNEL_TRANSIENT_FAILURE; - grpc_resolver_channel_saw_error_locked(exec_ctx, w->chand->resolver); - GRPC_LB_POLICY_UNREF(exec_ctx, w->chand->lb_policy, "channel"); + grpc_resolver_channel_saw_error_locked(w->chand->resolver); + GRPC_LB_POLICY_UNREF(w->chand->lb_policy, "channel"); w->chand->lb_policy = NULL; } - set_channel_connectivity_state_locked(exec_ctx, w->chand, publish_state, + set_channel_connectivity_state_locked(w->chand, publish_state, GRPC_ERROR_REF(error), "lb_changed"); if (w->state != GRPC_CHANNEL_SHUTDOWN) { - watch_lb_policy_locked(exec_ctx, w->chand, w->lb_policy, w->state); + watch_lb_policy_locked(w->chand, w->lb_policy, w->state); } } - GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, "watch_lb_policy"); + GRPC_CHANNEL_STACK_UNREF(w->chand->owning_stack, "watch_lb_policy"); gpr_free(w); } -static void watch_lb_policy_locked(grpc_exec_ctx *exec_ctx, channel_data *chand, +static void watch_lb_policy_locked(channel_data *chand, grpc_lb_policy *lb_policy, grpc_connectivity_state current_state) { lb_policy_connectivity_watcher *w = @@ -295,19 +292,18 @@ static void watch_lb_policy_locked(grpc_exec_ctx *exec_ctx, channel_data *chand, grpc_combiner_scheduler(chand->combiner)); w->state = current_state; w->lb_policy = lb_policy; - grpc_lb_policy_notify_on_state_change_locked(exec_ctx, lb_policy, &w->state, + grpc_lb_policy_notify_on_state_change_locked(lb_policy, &w->state, &w->on_changed); } -static void start_resolving_locked(grpc_exec_ctx *exec_ctx, - channel_data *chand) { +static void start_resolving_locked(channel_data *chand) { if (GRPC_TRACER_ON(grpc_client_channel_trace)) { gpr_log(GPR_DEBUG, "chand=%p: starting name resolution", chand); } GPR_ASSERT(!chand->started_resolving); chand->started_resolving = true; GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver"); - grpc_resolver_next_locked(exec_ctx, chand->resolver, &chand->resolver_result, + grpc_resolver_next_locked(chand->resolver, &chand->resolver_result, &chand->on_resolver_result_changed); } @@ -371,8 +367,7 @@ static void parse_retry_throttle_params(const grpc_json *field, void *arg) { } } -static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void on_resolver_result_changed_locked(void *arg, grpc_error *error) { channel_data *chand = (channel_data *)arg; if (GRPC_TRACER_ON(grpc_client_channel_trace)) { gpr_log(GPR_DEBUG, "chand=%p: got resolver result: error=%s", chand, @@ -437,11 +432,10 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, if (chand->lb_policy != NULL && !lb_policy_name_changed) { // Continue using the same LB policy. Update with new addresses. lb_policy_updated = true; - grpc_lb_policy_update_locked(exec_ctx, chand->lb_policy, &lb_policy_args); + grpc_lb_policy_update_locked(chand->lb_policy, &lb_policy_args); } else { // Instantiate new LB policy. - new_lb_policy = - grpc_lb_policy_create(exec_ctx, lb_policy_name, &lb_policy_args); + new_lb_policy = grpc_lb_policy_create(lb_policy_name, &lb_policy_args); if (new_lb_policy == NULL) { gpr_log(GPR_ERROR, "could not create LB policy \"%s\"", lb_policy_name); } @@ -459,8 +453,7 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, grpc_channel_args_find(chand->resolver_result, GRPC_ARG_SERVER_URI); GPR_ASSERT(channel_arg != NULL); GPR_ASSERT(channel_arg->type == GRPC_ARG_STRING); - grpc_uri *uri = - grpc_uri_parse(exec_ctx, channel_arg->value.string, true); + grpc_uri *uri = grpc_uri_parse(channel_arg->value.string, true); GPR_ASSERT(uri->path[0] != '\0'); service_config_parsing_state parsing_state; memset(&parsing_state, 0, sizeof(parsing_state)); @@ -471,7 +464,7 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, grpc_uri_destroy(uri); retry_throttle_data = parsing_state.retry_throttle_data; method_params_table = grpc_service_config_create_method_config_table( - exec_ctx, service_config, method_parameters_create_from_json, + service_config, method_parameters_create_from_json, method_parameters_free); grpc_service_config_destroy(service_config); } @@ -480,7 +473,7 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, // be pointing to data inside chand->resolver_result. // The copy will be saved in chand->lb_policy_name below. lb_policy_name_dup = gpr_strdup(lb_policy_name); - grpc_channel_args_destroy(exec_ctx, chand->resolver_result); + grpc_channel_args_destroy(chand->resolver_result); chand->resolver_result = NULL; } if (GRPC_TRACER_ON(grpc_client_channel_trace)) { @@ -512,7 +505,7 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, chand->retry_throttle_data = retry_throttle_data; // Swap out the method params table. if (chand->method_params_table != NULL) { - grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table); + grpc_slice_hash_table_unref(chand->method_params_table); } chand->method_params_table = method_params_table; // If we have a new LB policy or are shutting down (in which case @@ -528,10 +521,9 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "chand=%p: unreffing lb_policy=%p", chand, chand->lb_policy); } - grpc_pollset_set_del_pollset_set(exec_ctx, - chand->lb_policy->interested_parties, + grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties, chand->interested_parties); - GRPC_LB_POLICY_UNREF(exec_ctx, chand->lb_policy, "channel"); + GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel"); } chand->lb_policy = new_lb_policy; } @@ -545,21 +537,20 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, if (GRPC_TRACER_ON(grpc_client_channel_trace)) { gpr_log(GPR_DEBUG, "chand=%p: shutting down resolver", chand); } - grpc_resolver_shutdown_locked(exec_ctx, chand->resolver); - GRPC_RESOLVER_UNREF(exec_ctx, chand->resolver, "channel"); + grpc_resolver_shutdown_locked(chand->resolver); + GRPC_RESOLVER_UNREF(chand->resolver, "channel"); chand->resolver = NULL; } set_channel_connectivity_state_locked( - exec_ctx, chand, GRPC_CHANNEL_SHUTDOWN, + chand, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Got resolver result after disconnection", &error, 1), "resolver_gone"); - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->owning_stack, "resolver"); + GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "resolver"); grpc_closure_list_fail_all(&chand->waiting_for_resolver_result_closures, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Channel disconnected", &error, 1)); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, - &chand->waiting_for_resolver_result_closures); + GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures); } else { // Not shutting down. grpc_connectivity_state state = GRPC_CHANNEL_TRANSIENT_FAILURE; grpc_error *state_error = @@ -569,33 +560,28 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "chand=%p: initializing new LB policy", chand); } GRPC_ERROR_UNREF(state_error); - state = grpc_lb_policy_check_connectivity_locked(exec_ctx, new_lb_policy, - &state_error); - grpc_pollset_set_add_pollset_set(exec_ctx, - new_lb_policy->interested_parties, + state = + grpc_lb_policy_check_connectivity_locked(new_lb_policy, &state_error); + grpc_pollset_set_add_pollset_set(new_lb_policy->interested_parties, chand->interested_parties); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, - &chand->waiting_for_resolver_result_closures); + GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures); if (chand->exit_idle_when_lb_policy_arrives) { - grpc_lb_policy_exit_idle_locked(exec_ctx, new_lb_policy); + grpc_lb_policy_exit_idle_locked(new_lb_policy); chand->exit_idle_when_lb_policy_arrives = false; } - watch_lb_policy_locked(exec_ctx, chand, new_lb_policy, state); + watch_lb_policy_locked(chand, new_lb_policy, state); } if (!lb_policy_updated) { - set_channel_connectivity_state_locked(exec_ctx, chand, state, - GRPC_ERROR_REF(state_error), - "new_lb+resolver"); + set_channel_connectivity_state_locked( + chand, state, GRPC_ERROR_REF(state_error), "new_lb+resolver"); } - grpc_resolver_next_locked(exec_ctx, chand->resolver, - &chand->resolver_result, + grpc_resolver_next_locked(chand->resolver, &chand->resolver_result, &chand->on_resolver_result_changed); GRPC_ERROR_UNREF(state_error); } } -static void start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error_ignored) { +static void start_transport_op_locked(void *arg, grpc_error *error_ignored) { grpc_transport_op *op = (grpc_transport_op *)arg; grpc_channel_element *elem = (grpc_channel_element *)op->handler_private.extra_arg; @@ -603,7 +589,7 @@ static void start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg, if (op->on_connectivity_state_change != NULL) { grpc_connectivity_state_notify_on_state_change( - exec_ctx, &chand->state_tracker, op->connectivity_state, + &chand->state_tracker, op->connectivity_state, op->on_connectivity_state_change); op->on_connectivity_state_change = NULL; op->connectivity_state = NULL; @@ -611,11 +597,10 @@ static void start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg, if (op->send_ping != NULL) { if (chand->lb_policy == NULL) { - GRPC_CLOSURE_SCHED( - exec_ctx, op->send_ping, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Ping with no load balancing")); + GRPC_CLOSURE_SCHED(op->send_ping, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Ping with no load balancing")); } else { - grpc_lb_policy_ping_one_locked(exec_ctx, chand->lb_policy, op->send_ping); + grpc_lb_policy_ping_one_locked(chand->lb_policy, op->send_ping); op->bind_pollset = NULL; } op->send_ping = NULL; @@ -624,54 +609,48 @@ static void start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg, if (op->disconnect_with_error != GRPC_ERROR_NONE) { if (chand->resolver != NULL) { set_channel_connectivity_state_locked( - exec_ctx, chand, GRPC_CHANNEL_SHUTDOWN, + chand, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_REF(op->disconnect_with_error), "disconnect"); - grpc_resolver_shutdown_locked(exec_ctx, chand->resolver); - GRPC_RESOLVER_UNREF(exec_ctx, chand->resolver, "channel"); + grpc_resolver_shutdown_locked(chand->resolver); + GRPC_RESOLVER_UNREF(chand->resolver, "channel"); chand->resolver = NULL; if (!chand->started_resolving) { grpc_closure_list_fail_all(&chand->waiting_for_resolver_result_closures, GRPC_ERROR_REF(op->disconnect_with_error)); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, - &chand->waiting_for_resolver_result_closures); + GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures); } if (chand->lb_policy != NULL) { - grpc_pollset_set_del_pollset_set(exec_ctx, - chand->lb_policy->interested_parties, + grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties, chand->interested_parties); - GRPC_LB_POLICY_UNREF(exec_ctx, chand->lb_policy, "channel"); + GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel"); chand->lb_policy = NULL; } } GRPC_ERROR_UNREF(op->disconnect_with_error); } - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->owning_stack, "start_transport_op"); + GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "start_transport_op"); - GRPC_CLOSURE_SCHED(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE); } -static void cc_start_transport_op(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void cc_start_transport_op(grpc_channel_element *elem, grpc_transport_op *op) { channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(op->set_accept_stream == false); if (op->bind_pollset != NULL) { - grpc_pollset_set_add_pollset(exec_ctx, chand->interested_parties, - op->bind_pollset); + grpc_pollset_set_add_pollset(chand->interested_parties, op->bind_pollset); } op->handler_private.extra_arg = elem; GRPC_CHANNEL_STACK_REF(chand->owning_stack, "start_transport_op"); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&op->handler_private.closure, start_transport_op_locked, op, grpc_combiner_scheduler(chand->combiner)), GRPC_ERROR_NONE); } -static void cc_get_channel_info(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void cc_get_channel_info(grpc_channel_element *elem, const grpc_channel_info *info) { channel_data *chand = (channel_data *)elem->channel_data; gpr_mu_lock(&chand->info_mu); @@ -690,8 +669,7 @@ static void cc_get_channel_info(grpc_exec_ctx *exec_ctx, } /* Constructor for channel_data */ -static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *cc_init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(args->is_last); @@ -739,15 +717,15 @@ static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx, } char *proxy_name = NULL; grpc_channel_args *new_args = NULL; - grpc_proxy_mappers_map_name(exec_ctx, arg->value.string, args->channel_args, + grpc_proxy_mappers_map_name(arg->value.string, args->channel_args, &proxy_name, &new_args); // Instantiate resolver. - chand->resolver = grpc_resolver_create( - exec_ctx, proxy_name != NULL ? proxy_name : arg->value.string, - new_args != NULL ? new_args : args->channel_args, - chand->interested_parties, chand->combiner); + chand->resolver = + grpc_resolver_create(proxy_name != NULL ? proxy_name : arg->value.string, + new_args != NULL ? new_args : args->channel_args, + chand->interested_parties, chand->combiner); if (proxy_name != NULL) gpr_free(proxy_name); - if (new_args != NULL) grpc_channel_args_destroy(exec_ctx, new_args); + if (new_args != NULL) grpc_channel_args_destroy(new_args); if (chand->resolver == NULL) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING("resolver creation failed"); } @@ -756,31 +734,28 @@ static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void shutdown_resolver_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void shutdown_resolver_locked(void *arg, grpc_error *error) { grpc_resolver *resolver = (grpc_resolver *)arg; - grpc_resolver_shutdown_locked(exec_ctx, resolver); - GRPC_RESOLVER_UNREF(exec_ctx, resolver, "channel"); + grpc_resolver_shutdown_locked(resolver); + GRPC_RESOLVER_UNREF(resolver, "channel"); } /* Destructor for channel_data */ -static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void cc_destroy_channel_elem(grpc_channel_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; if (chand->resolver != NULL) { GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver, - grpc_combiner_scheduler(chand->combiner)), + GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver, + grpc_combiner_scheduler(chand->combiner)), GRPC_ERROR_NONE); } if (chand->client_channel_factory != NULL) { - grpc_client_channel_factory_unref(exec_ctx, chand->client_channel_factory); + grpc_client_channel_factory_unref(chand->client_channel_factory); } if (chand->lb_policy != NULL) { - grpc_pollset_set_del_pollset_set(exec_ctx, - chand->lb_policy->interested_parties, + grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties, chand->interested_parties); - GRPC_LB_POLICY_UNREF(exec_ctx, chand->lb_policy, "channel"); + GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel"); } gpr_free(chand->info_lb_policy_name); gpr_free(chand->info_service_config_json); @@ -788,11 +763,11 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx, grpc_server_retry_throttle_data_unref(chand->retry_throttle_data); } if (chand->method_params_table != NULL) { - grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table); + grpc_slice_hash_table_unref(chand->method_params_table); } - grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker); - grpc_pollset_set_destroy(exec_ctx, chand->interested_parties); - GRPC_COMBINER_UNREF(exec_ctx, chand->combiner, "client_channel"); + grpc_connectivity_state_destroy(&chand->state_tracker); + grpc_pollset_set_destroy(chand->interested_parties); + GRPC_COMBINER_UNREF(chand->combiner, "client_channel"); gpr_mu_destroy(&chand->info_mu); gpr_mu_destroy(&chand->external_connectivity_watcher_list_mu); } @@ -879,21 +854,18 @@ static void waiting_for_pick_batches_add( } // This is called via the call combiner, so access to calld is synchronized. -static void fail_pending_batch_in_call_combiner(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void fail_pending_batch_in_call_combiner(void *arg, grpc_error *error) { call_data *calld = (call_data *)arg; if (calld->waiting_for_pick_batches_count > 0) { --calld->waiting_for_pick_batches_count; grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, calld->waiting_for_pick_batches[calld->waiting_for_pick_batches_count], GRPC_ERROR_REF(error), calld->call_combiner); } } // This is called via the call combiner, so access to calld is synchronized. -static void waiting_for_pick_batches_fail(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void waiting_for_pick_batches_fail(grpc_call_element *elem, grpc_error *error) { call_data *calld = (call_data *)elem->call_data; if (GRPC_TRACER_ON(grpc_client_channel_trace)) { @@ -906,37 +878,34 @@ static void waiting_for_pick_batches_fail(grpc_exec_ctx *exec_ctx, GRPC_CLOSURE_INIT(&calld->handle_pending_batch_in_call_combiner[i], fail_pending_batch_in_call_combiner, calld, grpc_schedule_on_exec_ctx); - GRPC_CALL_COMBINER_START(exec_ctx, calld->call_combiner, - &calld->handle_pending_batch_in_call_combiner[i], - GRPC_ERROR_REF(error), - "waiting_for_pick_batches_fail"); + GRPC_CALL_COMBINER_START( + calld->call_combiner, &calld->handle_pending_batch_in_call_combiner[i], + GRPC_ERROR_REF(error), "waiting_for_pick_batches_fail"); } if (calld->initial_metadata_batch != NULL) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, calld->initial_metadata_batch, GRPC_ERROR_REF(error), + calld->initial_metadata_batch, GRPC_ERROR_REF(error), calld->call_combiner); } else { - GRPC_CALL_COMBINER_STOP(exec_ctx, calld->call_combiner, + GRPC_CALL_COMBINER_STOP(calld->call_combiner, "waiting_for_pick_batches_fail"); } GRPC_ERROR_UNREF(error); } // This is called via the call combiner, so access to calld is synchronized. -static void run_pending_batch_in_call_combiner(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *ignored) { +static void run_pending_batch_in_call_combiner(void *arg, grpc_error *ignored) { call_data *calld = (call_data *)arg; if (calld->waiting_for_pick_batches_count > 0) { --calld->waiting_for_pick_batches_count; grpc_subchannel_call_process_op( - exec_ctx, calld->subchannel_call, + calld->subchannel_call, calld->waiting_for_pick_batches[calld->waiting_for_pick_batches_count]); } } // This is called via the call combiner, so access to calld is synchronized. -static void waiting_for_pick_batches_resume(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static void waiting_for_pick_batches_resume(grpc_call_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; if (GRPC_TRACER_ON(grpc_client_channel_trace)) { @@ -949,20 +918,18 @@ static void waiting_for_pick_batches_resume(grpc_exec_ctx *exec_ctx, GRPC_CLOSURE_INIT(&calld->handle_pending_batch_in_call_combiner[i], run_pending_batch_in_call_combiner, calld, grpc_schedule_on_exec_ctx); - GRPC_CALL_COMBINER_START(exec_ctx, calld->call_combiner, - &calld->handle_pending_batch_in_call_combiner[i], - GRPC_ERROR_NONE, - "waiting_for_pick_batches_resume"); + GRPC_CALL_COMBINER_START( + calld->call_combiner, &calld->handle_pending_batch_in_call_combiner[i], + GRPC_ERROR_NONE, "waiting_for_pick_batches_resume"); } GPR_ASSERT(calld->initial_metadata_batch != NULL); - grpc_subchannel_call_process_op(exec_ctx, calld->subchannel_call, + grpc_subchannel_call_process_op(calld->subchannel_call, calld->initial_metadata_batch); } // Applies service config to the call. Must be invoked once we know // that the resolver has returned results to the channel. -static void apply_service_config_to_call_locked(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static void apply_service_config_to_call_locked(grpc_call_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; if (GRPC_TRACER_ON(grpc_client_channel_trace)) { @@ -975,7 +942,7 @@ static void apply_service_config_to_call_locked(grpc_exec_ctx *exec_ctx, } if (chand->method_params_table != NULL) { calld->method_params = (method_parameters *)grpc_method_config_table_get( - exec_ctx, chand->method_params_table, calld->path); + chand->method_params_table, calld->path); if (calld->method_params != NULL) { method_parameters_ref(calld->method_params); // If the deadline from the service config is shorter than the one @@ -987,15 +954,14 @@ static void apply_service_config_to_call_locked(grpc_exec_ctx *exec_ctx, calld->method_params->timeout; if (per_method_deadline < calld->deadline) { calld->deadline = per_method_deadline; - grpc_deadline_state_reset(exec_ctx, elem, calld->deadline); + grpc_deadline_state_reset(elem, calld->deadline); } } } } } -static void create_subchannel_call_locked(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void create_subchannel_call_locked(grpc_call_element *elem, grpc_error *error) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; @@ -1009,24 +975,22 @@ static void create_subchannel_call_locked(grpc_exec_ctx *exec_ctx, calld->call_combiner // call_combiner }; grpc_error *new_error = grpc_connected_subchannel_create_call( - exec_ctx, calld->connected_subchannel, &call_args, - &calld->subchannel_call); + calld->connected_subchannel, &call_args, &calld->subchannel_call); if (GRPC_TRACER_ON(grpc_client_channel_trace)) { gpr_log(GPR_DEBUG, "chand=%p calld=%p: create subchannel_call=%p: error=%s", chand, calld, calld->subchannel_call, grpc_error_string(new_error)); } if (new_error != GRPC_ERROR_NONE) { new_error = grpc_error_add_child(new_error, error); - waiting_for_pick_batches_fail(exec_ctx, elem, new_error); + waiting_for_pick_batches_fail(elem, new_error); } else { - waiting_for_pick_batches_resume(exec_ctx, elem); + waiting_for_pick_batches_resume(elem); } GRPC_ERROR_UNREF(error); } // Invoked when a pick is completed, on both success or failure. -static void pick_done_locked(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_error *error) { +static void pick_done_locked(grpc_call_element *elem, grpc_error *error) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; if (calld->connected_subchannel == NULL) { @@ -1042,10 +1006,10 @@ static void pick_done_locked(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, "chand=%p calld=%p: failed to create subchannel: error=%s", chand, calld, grpc_error_string(calld->error)); } - waiting_for_pick_batches_fail(exec_ctx, elem, GRPC_ERROR_REF(calld->error)); + waiting_for_pick_batches_fail(elem, GRPC_ERROR_REF(calld->error)); } else { /* Create call on subchannel. */ - create_subchannel_call_locked(exec_ctx, elem, GRPC_ERROR_REF(error)); + create_subchannel_call_locked(elem, GRPC_ERROR_REF(error)); } GRPC_ERROR_UNREF(error); } @@ -1054,19 +1018,17 @@ static void pick_done_locked(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, // either (a) the pick was deferred pending a resolver result or (b) the // pick was done asynchronously. Removes the call's polling entity from // chand->interested_parties before invoking pick_done_locked(). -static void async_pick_done_locked(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, grpc_error *error) { +static void async_pick_done_locked(grpc_call_element *elem, grpc_error *error) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; - grpc_polling_entity_del_from_pollset_set(exec_ctx, calld->pollent, + grpc_polling_entity_del_from_pollset_set(calld->pollent, chand->interested_parties); - pick_done_locked(exec_ctx, elem, error); + pick_done_locked(elem, error); } // Note: This runs under the client_channel combiner, but will NOT be // holding the call combiner. -static void pick_callback_cancel_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void pick_callback_cancel_locked(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; @@ -1075,17 +1037,15 @@ static void pick_callback_cancel_locked(grpc_exec_ctx *exec_ctx, void *arg, gpr_log(GPR_DEBUG, "chand=%p calld=%p: cancelling pick from LB policy %p", chand, calld, calld->lb_policy); } - grpc_lb_policy_cancel_pick_locked(exec_ctx, calld->lb_policy, - &calld->connected_subchannel, - GRPC_ERROR_REF(error)); + grpc_lb_policy_cancel_pick_locked( + calld->lb_policy, &calld->connected_subchannel, GRPC_ERROR_REF(error)); } - GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, "pick_callback_cancel"); + GRPC_CALL_STACK_UNREF(calld->owning_call, "pick_callback_cancel"); } // Callback invoked by grpc_lb_policy_pick_locked() for async picks. // Unrefs the LB policy and invokes async_pick_done_locked(). -static void pick_callback_done_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void pick_callback_done_locked(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; @@ -1094,23 +1054,22 @@ static void pick_callback_done_locked(grpc_exec_ctx *exec_ctx, void *arg, chand, calld); } GPR_ASSERT(calld->lb_policy != NULL); - GRPC_LB_POLICY_UNREF(exec_ctx, calld->lb_policy, "pick_subchannel"); + GRPC_LB_POLICY_UNREF(calld->lb_policy, "pick_subchannel"); calld->lb_policy = NULL; - async_pick_done_locked(exec_ctx, elem, GRPC_ERROR_REF(error)); + async_pick_done_locked(elem, GRPC_ERROR_REF(error)); } // Takes a ref to chand->lb_policy and calls grpc_lb_policy_pick_locked(). // If the pick was completed synchronously, unrefs the LB policy and // returns true. -static bool pick_callback_start_locked(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static bool pick_callback_start_locked(grpc_call_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; if (GRPC_TRACER_ON(grpc_client_channel_trace)) { gpr_log(GPR_DEBUG, "chand=%p calld=%p: starting pick on lb_policy=%p", chand, calld, chand->lb_policy); } - apply_service_config_to_call_locked(exec_ctx, elem); + apply_service_config_to_call_locked(elem); // If the application explicitly set wait_for_ready, use that. // Otherwise, if the service config specified a value for this // method, use that. @@ -1140,7 +1099,7 @@ static bool pick_callback_start_locked(grpc_exec_ctx *exec_ctx, GRPC_CLOSURE_INIT(&calld->lb_pick_closure, pick_callback_done_locked, elem, grpc_combiner_scheduler(chand->combiner)); const bool pick_done = grpc_lb_policy_pick_locked( - exec_ctx, chand->lb_policy, &inputs, &calld->connected_subchannel, + chand->lb_policy, &inputs, &calld->connected_subchannel, calld->subchannel_call_context, NULL, &calld->lb_pick_closure); if (pick_done) { /* synchronous grpc_lb_policy_pick call. Unref the LB policy. */ @@ -1148,12 +1107,12 @@ static bool pick_callback_start_locked(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "chand=%p calld=%p: pick completed synchronously", chand, calld); } - GRPC_LB_POLICY_UNREF(exec_ctx, calld->lb_policy, "pick_subchannel"); + GRPC_LB_POLICY_UNREF(calld->lb_policy, "pick_subchannel"); calld->lb_policy = NULL; } else { GRPC_CALL_STACK_REF(calld->owning_call, "pick_callback_cancel"); grpc_call_combiner_set_notify_on_cancel( - exec_ctx, calld->call_combiner, + calld->call_combiner, GRPC_CLOSURE_INIT(&calld->lb_pick_cancel_closure, pick_callback_cancel_locked, elem, grpc_combiner_scheduler(chand->combiner))); @@ -1170,8 +1129,7 @@ typedef struct { // Note: This runs under the client_channel combiner, but will NOT be // holding the call combiner. -static void pick_after_resolver_result_cancel_locked(grpc_exec_ctx *exec_ctx, - void *arg, +static void pick_after_resolver_result_cancel_locked(void *arg, grpc_error *error) { pick_after_resolver_result_args *args = (pick_after_resolver_result_args *)arg; @@ -1200,13 +1158,11 @@ static void pick_after_resolver_result_cancel_locked(grpc_exec_ctx *exec_ctx, // it's safe to call async_pick_done_locked() here -- we are // essentially calling it here instead of calling it in // pick_after_resolver_result_done_locked(). - async_pick_done_locked(exec_ctx, elem, - GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Pick cancelled", &error, 1)); + async_pick_done_locked(elem, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Pick cancelled", &error, 1)); } -static void pick_after_resolver_result_done_locked(grpc_exec_ctx *exec_ctx, - void *arg, +static void pick_after_resolver_result_done_locked(void *arg, grpc_error *error) { pick_after_resolver_result_args *args = (pick_after_resolver_result_args *)arg; @@ -1227,25 +1183,24 @@ static void pick_after_resolver_result_done_locked(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "chand=%p calld=%p: resolver failed to return data", chand, calld); } - async_pick_done_locked(exec_ctx, elem, GRPC_ERROR_REF(error)); + async_pick_done_locked(elem, GRPC_ERROR_REF(error)); } else { if (GRPC_TRACER_ON(grpc_client_channel_trace)) { gpr_log(GPR_DEBUG, "chand=%p calld=%p: resolver returned, doing pick", chand, calld); } - if (pick_callback_start_locked(exec_ctx, elem)) { + if (pick_callback_start_locked(elem)) { // Even if the LB policy returns a result synchronously, we have // already added our polling entity to chand->interested_parties // in order to wait for the resolver result, so we need to // remove it here. Therefore, we call async_pick_done_locked() // instead of pick_done_locked(). - async_pick_done_locked(exec_ctx, elem, GRPC_ERROR_NONE); + async_pick_done_locked(elem, GRPC_ERROR_NONE); } } } -static void pick_after_resolver_result_start_locked(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static void pick_after_resolver_result_start_locked(grpc_call_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; if (GRPC_TRACER_ON(grpc_client_channel_trace)) { @@ -1261,47 +1216,46 @@ static void pick_after_resolver_result_start_locked(grpc_exec_ctx *exec_ctx, grpc_closure_list_append(&chand->waiting_for_resolver_result_closures, &args->closure, GRPC_ERROR_NONE); grpc_call_combiner_set_notify_on_cancel( - exec_ctx, calld->call_combiner, + calld->call_combiner, GRPC_CLOSURE_INIT(&args->cancel_closure, pick_after_resolver_result_cancel_locked, args, grpc_combiner_scheduler(chand->combiner))); } -static void start_pick_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *ignored) { +static void start_pick_locked(void *arg, grpc_error *ignored) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(calld->connected_subchannel == NULL); if (chand->lb_policy != NULL) { // We already have an LB policy, so ask it for a pick. - if (pick_callback_start_locked(exec_ctx, elem)) { + if (pick_callback_start_locked(elem)) { // Pick completed synchronously. - pick_done_locked(exec_ctx, elem, GRPC_ERROR_NONE); + pick_done_locked(elem, GRPC_ERROR_NONE); return; } } else { // We do not yet have an LB policy, so wait for a resolver result. if (chand->resolver == NULL) { - pick_done_locked(exec_ctx, elem, + pick_done_locked(elem, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Disconnected")); return; } if (!chand->started_resolving) { - start_resolving_locked(exec_ctx, chand); + start_resolving_locked(chand); } - pick_after_resolver_result_start_locked(exec_ctx, elem); + pick_after_resolver_result_start_locked(elem); } // We need to wait for either a resolver result or for an async result // from the LB policy. Add the polling entity from call_data to the // channel_data's interested_parties, so that the I/O of the LB policy // and resolver can be done under it. The polling entity will be // removed in async_pick_done_locked(). - grpc_polling_entity_add_to_pollset_set(exec_ctx, calld->pollent, + grpc_polling_entity_add_to_pollset_set(calld->pollent, chand->interested_parties); } -static void on_complete(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_complete(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; if (calld->retry_throttle_data != NULL) { @@ -1317,18 +1271,15 @@ static void on_complete(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { calld->retry_throttle_data); } } - GRPC_CLOSURE_RUN(exec_ctx, calld->original_on_complete, - GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(calld->original_on_complete, GRPC_ERROR_REF(error)); } static void cc_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; if (chand->deadline_checking_enabled) { - grpc_deadline_state_client_start_transport_stream_op_batch(exec_ctx, elem, - batch); + grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch); } GPR_TIMER_BEGIN("cc_start_transport_stream_op_batch", 0); // If we've previously been cancelled, immediately fail any new batches. @@ -1338,7 +1289,7 @@ static void cc_start_transport_stream_op_batch( chand, calld, grpc_error_string(calld->error)); } grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, batch, GRPC_ERROR_REF(calld->error), calld->call_combiner); + batch, GRPC_ERROR_REF(calld->error), calld->call_combiner); goto done; } if (batch->cancel_stream) { @@ -1356,11 +1307,10 @@ static void cc_start_transport_stream_op_batch( // If we have a subchannel call, send the cancellation batch down. // Otherwise, fail all pending batches. if (calld->subchannel_call != NULL) { - grpc_subchannel_call_process_op(exec_ctx, calld->subchannel_call, batch); + grpc_subchannel_call_process_op(calld->subchannel_call, batch); } else { waiting_for_pick_batches_add(calld, batch); - waiting_for_pick_batches_fail(exec_ctx, elem, - GRPC_ERROR_REF(calld->error)); + waiting_for_pick_batches_fail(elem, GRPC_ERROR_REF(calld->error)); } goto done; } @@ -1383,7 +1333,7 @@ static void cc_start_transport_stream_op_batch( "chand=%p calld=%p: sending batch to subchannel_call=%p", chand, calld, calld->subchannel_call); } - grpc_subchannel_call_process_op(exec_ctx, calld->subchannel_call, batch); + grpc_subchannel_call_process_op(calld->subchannel_call, batch); goto done; } // We do not yet have a subchannel call. @@ -1397,7 +1347,6 @@ static void cc_start_transport_stream_op_batch( chand, calld); } GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&batch->handler_private.closure, start_pick_locked, elem, grpc_combiner_scheduler(chand->combiner)), GRPC_ERROR_NONE); @@ -1408,7 +1357,7 @@ static void cc_start_transport_stream_op_batch( "chand=%p calld=%p: saved batch, yeilding call combiner", chand, calld); } - GRPC_CALL_COMBINER_STOP(exec_ctx, calld->call_combiner, + GRPC_CALL_COMBINER_STOP(calld->call_combiner, "batch does not include send_initial_metadata"); } done: @@ -1416,8 +1365,7 @@ done: } /* Constructor for call_data */ -static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *cc_init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; @@ -1429,23 +1377,22 @@ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx, calld->owning_call = args->call_stack; calld->call_combiner = args->call_combiner; if (chand->deadline_checking_enabled) { - grpc_deadline_state_init(exec_ctx, elem, args->call_stack, - args->call_combiner, calld->deadline); + grpc_deadline_state_init(elem, args->call_stack, args->call_combiner, + calld->deadline); } return GRPC_ERROR_NONE; } /* Destructor for call_data */ -static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void cc_destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; if (chand->deadline_checking_enabled) { - grpc_deadline_state_destroy(exec_ctx, elem); + grpc_deadline_state_destroy(elem); } - grpc_slice_unref_internal(exec_ctx, calld->path); + grpc_slice_unref_internal(calld->path); if (calld->method_params != NULL) { method_parameters_unref(calld->method_params); } @@ -1454,14 +1401,13 @@ static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_subchannel_call_set_cleanup_closure(calld->subchannel_call, then_schedule_closure); then_schedule_closure = NULL; - GRPC_SUBCHANNEL_CALL_UNREF(exec_ctx, calld->subchannel_call, + GRPC_SUBCHANNEL_CALL_UNREF(calld->subchannel_call, "client_channel_destroy_call"); } GPR_ASSERT(calld->lb_policy == NULL); GPR_ASSERT(calld->waiting_for_pick_batches_count == 0); if (calld->connected_subchannel != NULL) { - GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, calld->connected_subchannel, - "picked"); + GRPC_CONNECTED_SUBCHANNEL_UNREF(calld->connected_subchannel, "picked"); } for (size_t i = 0; i < GRPC_CONTEXT_COUNT; ++i) { if (calld->subchannel_call_context[i].value != NULL) { @@ -1469,11 +1415,10 @@ static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx, calld->subchannel_call_context[i].value); } } - GRPC_CLOSURE_SCHED(exec_ctx, then_schedule_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(then_schedule_closure, GRPC_ERROR_NONE); } -static void cc_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void cc_set_pollset_or_pollset_set(grpc_call_element *elem, grpc_polling_entity *pollent) { call_data *calld = (call_data *)elem->call_data; calld->pollent = pollent; @@ -1497,30 +1442,29 @@ const grpc_channel_filter grpc_client_channel_filter = { "client-channel", }; -static void try_to_connect_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error_ignored) { +static void try_to_connect_locked(void *arg, grpc_error *error_ignored) { channel_data *chand = (channel_data *)arg; if (chand->lb_policy != NULL) { - grpc_lb_policy_exit_idle_locked(exec_ctx, chand->lb_policy); + grpc_lb_policy_exit_idle_locked(chand->lb_policy); } else { chand->exit_idle_when_lb_policy_arrives = true; if (!chand->started_resolving && chand->resolver != NULL) { - start_resolving_locked(exec_ctx, chand); + start_resolving_locked(chand); } } - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->owning_stack, "try_to_connect"); + GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "try_to_connect"); } grpc_connectivity_state grpc_client_channel_check_connectivity_state( - grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, int try_to_connect) { + grpc_channel_element *elem, int try_to_connect) { channel_data *chand = (channel_data *)elem->channel_data; grpc_connectivity_state out = grpc_connectivity_state_check(&chand->state_tracker); if (out == GRPC_CHANNEL_IDLE && try_to_connect) { GRPC_CHANNEL_STACK_REF(chand->owning_stack, "try_to_connect"); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_CREATE(try_to_connect_locked, chand, - grpc_combiner_scheduler(chand->combiner)), + GRPC_CLOSURE_CREATE(try_to_connect_locked, chand, + grpc_combiner_scheduler(chand->combiner)), GRPC_ERROR_NONE); } return out; @@ -1599,50 +1543,49 @@ int grpc_client_channel_num_external_connectivity_watchers( return count; } -static void on_external_watch_complete(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_external_watch_complete(void *arg, grpc_error *error) { external_connectivity_watcher *w = (external_connectivity_watcher *)arg; grpc_closure *follow_up = w->on_complete; - grpc_polling_entity_del_from_pollset_set(exec_ctx, &w->pollent, + grpc_polling_entity_del_from_pollset_set(&w->pollent, w->chand->interested_parties); - GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, + GRPC_CHANNEL_STACK_UNREF(w->chand->owning_stack, "external_connectivity_watcher"); external_connectivity_watcher_list_remove(w->chand, w); gpr_free(w); - GRPC_CLOSURE_RUN(exec_ctx, follow_up, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(follow_up, GRPC_ERROR_REF(error)); } -static void watch_connectivity_state_locked(grpc_exec_ctx *exec_ctx, void *arg, +static void watch_connectivity_state_locked(void *arg, grpc_error *error_ignored) { external_connectivity_watcher *w = (external_connectivity_watcher *)arg; external_connectivity_watcher *found = NULL; if (w->state != NULL) { external_connectivity_watcher_list_append(w->chand, w); - GRPC_CLOSURE_RUN(exec_ctx, w->watcher_timer_init, GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN(w->watcher_timer_init, GRPC_ERROR_NONE); GRPC_CLOSURE_INIT(&w->my_closure, on_external_watch_complete, w, grpc_schedule_on_exec_ctx); - grpc_connectivity_state_notify_on_state_change( - exec_ctx, &w->chand->state_tracker, w->state, &w->my_closure); + grpc_connectivity_state_notify_on_state_change(&w->chand->state_tracker, + w->state, &w->my_closure); } else { GPR_ASSERT(w->watcher_timer_init == NULL); found = lookup_external_connectivity_watcher(w->chand, w->on_complete); if (found) { GPR_ASSERT(found->on_complete == w->on_complete); grpc_connectivity_state_notify_on_state_change( - exec_ctx, &found->chand->state_tracker, NULL, &found->my_closure); + &found->chand->state_tracker, NULL, &found->my_closure); } - grpc_polling_entity_del_from_pollset_set(exec_ctx, &w->pollent, + grpc_polling_entity_del_from_pollset_set(&w->pollent, w->chand->interested_parties); - GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, + GRPC_CHANNEL_STACK_UNREF(w->chand->owning_stack, "external_connectivity_watcher"); gpr_free(w); } } void grpc_client_channel_watch_connectivity_state( - grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, - grpc_polling_entity pollent, grpc_connectivity_state *state, - grpc_closure *closure, grpc_closure *watcher_timer_init) { + grpc_channel_element *elem, grpc_polling_entity pollent, + grpc_connectivity_state *state, grpc_closure *closure, + grpc_closure *watcher_timer_init) { channel_data *chand = (channel_data *)elem->channel_data; external_connectivity_watcher *w = (external_connectivity_watcher *)gpr_zalloc(sizeof(*w)); @@ -1651,12 +1594,11 @@ void grpc_client_channel_watch_connectivity_state( w->on_complete = closure; w->state = state; w->watcher_timer_init = watcher_timer_init; - grpc_polling_entity_add_to_pollset_set(exec_ctx, &w->pollent, + grpc_polling_entity_add_to_pollset_set(&w->pollent, chand->interested_parties); GRPC_CHANNEL_STACK_REF(w->chand->owning_stack, "external_connectivity_watcher"); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&w->my_closure, watch_connectivity_state_locked, w, grpc_combiner_scheduler(chand->combiner)), GRPC_ERROR_NONE); diff --git a/src/core/ext/filters/client_channel/client_channel.h b/src/core/ext/filters/client_channel/client_channel.h index 152fe2365af..62e36039980 100644 --- a/src/core/ext/filters/client_channel/client_channel.h +++ b/src/core/ext/filters/client_channel/client_channel.h @@ -42,15 +42,15 @@ extern "C" { extern const grpc_channel_filter grpc_client_channel_filter; grpc_connectivity_state grpc_client_channel_check_connectivity_state( - grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, int try_to_connect); + grpc_channel_element *elem, int try_to_connect); int grpc_client_channel_num_external_connectivity_watchers( grpc_channel_element *elem); void grpc_client_channel_watch_connectivity_state( - grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, - grpc_polling_entity pollent, grpc_connectivity_state *state, - grpc_closure *on_complete, grpc_closure *watcher_timer_init); + grpc_channel_element *elem, grpc_polling_entity pollent, + grpc_connectivity_state *state, grpc_closure *on_complete, + grpc_closure *watcher_timer_init); /* Debug helper: pull the subchannel call from a call stack element */ grpc_subchannel_call *grpc_client_channel_get_subchannel_call( diff --git a/src/core/ext/filters/client_channel/client_channel_factory.cc b/src/core/ext/filters/client_channel/client_channel_factory.cc index 57eac8f8757..60c95d7dc90 100644 --- a/src/core/ext/filters/client_channel/client_channel_factory.cc +++ b/src/core/ext/filters/client_channel/client_channel_factory.cc @@ -23,23 +23,19 @@ void grpc_client_channel_factory_ref(grpc_client_channel_factory* factory) { factory->vtable->ref(factory); } -void grpc_client_channel_factory_unref(grpc_exec_ctx* exec_ctx, - grpc_client_channel_factory* factory) { - factory->vtable->unref(exec_ctx, factory); +void grpc_client_channel_factory_unref(grpc_client_channel_factory* factory) { + factory->vtable->unref(factory); } grpc_subchannel* grpc_client_channel_factory_create_subchannel( - grpc_exec_ctx* exec_ctx, grpc_client_channel_factory* factory, - const grpc_subchannel_args* args) { - return factory->vtable->create_subchannel(exec_ctx, factory, args); + grpc_client_channel_factory* factory, const grpc_subchannel_args* args) { + return factory->vtable->create_subchannel(factory, args); } grpc_channel* grpc_client_channel_factory_create_channel( - grpc_exec_ctx* exec_ctx, grpc_client_channel_factory* factory, - const char* target, grpc_client_channel_type type, - const grpc_channel_args* args) { - return factory->vtable->create_client_channel(exec_ctx, factory, target, type, - args); + grpc_client_channel_factory* factory, const char* target, + grpc_client_channel_type type, const grpc_channel_args* args) { + return factory->vtable->create_client_channel(factory, target, type, args); } static void* factory_arg_copy(void* factory) { @@ -47,9 +43,8 @@ static void* factory_arg_copy(void* factory) { return factory; } -static void factory_arg_destroy(grpc_exec_ctx* exec_ctx, void* factory) { - grpc_client_channel_factory_unref(exec_ctx, - (grpc_client_channel_factory*)factory); +static void factory_arg_destroy(void* factory) { + grpc_client_channel_factory_unref((grpc_client_channel_factory*)factory); } static int factory_arg_cmp(void* factory1, void* factory2) { diff --git a/src/core/ext/filters/client_channel/client_channel_factory.h b/src/core/ext/filters/client_channel/client_channel_factory.h index 4273c900583..82efc6e083a 100644 --- a/src/core/ext/filters/client_channel/client_channel_factory.h +++ b/src/core/ext/filters/client_channel/client_channel_factory.h @@ -49,31 +49,26 @@ struct grpc_client_channel_factory { struct grpc_client_channel_factory_vtable { void (*ref)(grpc_client_channel_factory *factory); - void (*unref)(grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *factory); - grpc_subchannel *(*create_subchannel)(grpc_exec_ctx *exec_ctx, - grpc_client_channel_factory *factory, + void (*unref)(grpc_client_channel_factory *factory); + grpc_subchannel *(*create_subchannel)(grpc_client_channel_factory *factory, const grpc_subchannel_args *args); - grpc_channel *(*create_client_channel)(grpc_exec_ctx *exec_ctx, - grpc_client_channel_factory *factory, + grpc_channel *(*create_client_channel)(grpc_client_channel_factory *factory, const char *target, grpc_client_channel_type type, const grpc_channel_args *args); }; void grpc_client_channel_factory_ref(grpc_client_channel_factory *factory); -void grpc_client_channel_factory_unref(grpc_exec_ctx *exec_ctx, - grpc_client_channel_factory *factory); +void grpc_client_channel_factory_unref(grpc_client_channel_factory *factory); /** Create a new grpc_subchannel */ grpc_subchannel *grpc_client_channel_factory_create_subchannel( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *factory, - const grpc_subchannel_args *args); + grpc_client_channel_factory *factory, const grpc_subchannel_args *args); /** Create a new grpc_channel */ grpc_channel *grpc_client_channel_factory_create_channel( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *factory, - const char *target, grpc_client_channel_type type, - const grpc_channel_args *args); + grpc_client_channel_factory *factory, const char *target, + grpc_client_channel_type type, const grpc_channel_args *args); grpc_arg grpc_client_channel_factory_create_channel_arg( grpc_client_channel_factory *factory); diff --git a/src/core/ext/filters/client_channel/client_channel_plugin.cc b/src/core/ext/filters/client_channel/client_channel_plugin.cc index 4431d115198..a466244a7b2 100644 --- a/src/core/ext/filters/client_channel/client_channel_plugin.cc +++ b/src/core/ext/filters/client_channel/client_channel_plugin.cc @@ -34,14 +34,12 @@ #include "src/core/ext/filters/client_channel/subchannel_index.h" #include "src/core/lib/surface/channel_init.h" -static bool append_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, void *arg) { +static bool append_filter(grpc_channel_stack_builder *builder, void *arg) { return grpc_channel_stack_builder_append_filter( builder, (const grpc_channel_filter *)arg, NULL, NULL); } -static bool set_default_host_if_unset(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool set_default_host_if_unset(grpc_channel_stack_builder *builder, void *unused) { const grpc_channel_args *args = grpc_channel_stack_builder_get_channel_arguments(builder); @@ -52,15 +50,14 @@ static bool set_default_host_if_unset(grpc_exec_ctx *exec_ctx, } } char *default_authority = grpc_get_default_authority( - exec_ctx, grpc_channel_stack_builder_get_target(builder)); + grpc_channel_stack_builder_get_target(builder)); if (default_authority != NULL) { grpc_arg arg = grpc_channel_arg_string_create( (char *)GRPC_ARG_DEFAULT_AUTHORITY, default_authority); grpc_channel_args *new_args = grpc_channel_args_copy_and_add(args, &arg, 1); - grpc_channel_stack_builder_set_channel_arguments(exec_ctx, builder, - new_args); + grpc_channel_stack_builder_set_channel_arguments(builder, new_args); gpr_free(default_authority); - grpc_channel_args_destroy(exec_ctx, new_args); + grpc_channel_args_destroy(new_args); } return true; } diff --git a/src/core/ext/filters/client_channel/connector.cc b/src/core/ext/filters/client_channel/connector.cc index c258468e589..c8bf2f3e1c0 100644 --- a/src/core/ext/filters/client_channel/connector.cc +++ b/src/core/ext/filters/client_channel/connector.cc @@ -23,18 +23,17 @@ grpc_connector* grpc_connector_ref(grpc_connector* connector) { return connector; } -void grpc_connector_unref(grpc_exec_ctx* exec_ctx, grpc_connector* connector) { - connector->vtable->unref(exec_ctx, connector); +void grpc_connector_unref(grpc_connector* connector) { + connector->vtable->unref(connector); } -void grpc_connector_connect(grpc_exec_ctx* exec_ctx, grpc_connector* connector, +void grpc_connector_connect(grpc_connector* connector, const grpc_connect_in_args* in_args, grpc_connect_out_args* out_args, grpc_closure* notify) { - connector->vtable->connect(exec_ctx, connector, in_args, out_args, notify); + connector->vtable->connect(connector, in_args, out_args, notify); } -void grpc_connector_shutdown(grpc_exec_ctx* exec_ctx, grpc_connector* connector, - grpc_error* why) { - connector->vtable->shutdown(exec_ctx, connector, why); +void grpc_connector_shutdown(grpc_connector* connector, grpc_error* why) { + connector->vtable->shutdown(connector, why); } diff --git a/src/core/ext/filters/client_channel/connector.h b/src/core/ext/filters/client_channel/connector.h index b71e0aab004..af6ed2a546b 100644 --- a/src/core/ext/filters/client_channel/connector.h +++ b/src/core/ext/filters/client_channel/connector.h @@ -53,26 +53,24 @@ typedef struct { struct grpc_connector_vtable { void (*ref)(grpc_connector *connector); - void (*unref)(grpc_exec_ctx *exec_ctx, grpc_connector *connector); + void (*unref)(grpc_connector *connector); /** Implementation of grpc_connector_shutdown */ - void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_connector *connector, - grpc_error *why); + void (*shutdown)(grpc_connector *connector, grpc_error *why); /** Implementation of grpc_connector_connect */ - void (*connect)(grpc_exec_ctx *exec_ctx, grpc_connector *connector, + void (*connect)(grpc_connector *connector, const grpc_connect_in_args *in_args, grpc_connect_out_args *out_args, grpc_closure *notify); }; grpc_connector *grpc_connector_ref(grpc_connector *connector); -void grpc_connector_unref(grpc_exec_ctx *exec_ctx, grpc_connector *connector); +void grpc_connector_unref(grpc_connector *connector); /** Connect using the connector: max one outstanding call at a time */ -void grpc_connector_connect(grpc_exec_ctx *exec_ctx, grpc_connector *connector, +void grpc_connector_connect(grpc_connector *connector, const grpc_connect_in_args *in_args, grpc_connect_out_args *out_args, grpc_closure *notify); /** Cancel any pending connection */ -void grpc_connector_shutdown(grpc_exec_ctx *exec_ctx, grpc_connector *connector, - grpc_error *why); +void grpc_connector_shutdown(grpc_connector *connector, grpc_error *why); #ifdef __cplusplus } diff --git a/src/core/ext/filters/client_channel/http_connect_handshaker.cc b/src/core/ext/filters/client_channel/http_connect_handshaker.cc index 418bb41ef6a..14b3836b90a 100644 --- a/src/core/ext/filters/client_channel/http_connect_handshaker.cc +++ b/src/core/ext/filters/client_channel/http_connect_handshaker.cc @@ -61,19 +61,17 @@ typedef struct http_connect_handshaker { } http_connect_handshaker; // Unref and clean up handshaker. -static void http_connect_handshaker_unref(grpc_exec_ctx* exec_ctx, - http_connect_handshaker* handshaker) { +static void http_connect_handshaker_unref(http_connect_handshaker* handshaker) { if (gpr_unref(&handshaker->refcount)) { gpr_mu_destroy(&handshaker->mu); if (handshaker->endpoint_to_destroy != NULL) { - grpc_endpoint_destroy(exec_ctx, handshaker->endpoint_to_destroy); + grpc_endpoint_destroy(handshaker->endpoint_to_destroy); } if (handshaker->read_buffer_to_destroy != NULL) { - grpc_slice_buffer_destroy_internal(exec_ctx, - handshaker->read_buffer_to_destroy); + grpc_slice_buffer_destroy_internal(handshaker->read_buffer_to_destroy); gpr_free(handshaker->read_buffer_to_destroy); } - grpc_slice_buffer_destroy_internal(exec_ctx, &handshaker->write_buffer); + grpc_slice_buffer_destroy_internal(&handshaker->write_buffer); grpc_http_parser_destroy(&handshaker->http_parser); grpc_http_response_destroy(&handshaker->http_response); gpr_free(handshaker); @@ -83,19 +81,18 @@ static void http_connect_handshaker_unref(grpc_exec_ctx* exec_ctx, // Set args fields to NULL, saving the endpoint and read buffer for // later destruction. static void cleanup_args_for_failure_locked( - grpc_exec_ctx* exec_ctx, http_connect_handshaker* handshaker) { + http_connect_handshaker* handshaker) { handshaker->endpoint_to_destroy = handshaker->args->endpoint; handshaker->args->endpoint = NULL; handshaker->read_buffer_to_destroy = handshaker->args->read_buffer; handshaker->args->read_buffer = NULL; - grpc_channel_args_destroy(exec_ctx, handshaker->args->args); + grpc_channel_args_destroy(handshaker->args->args); handshaker->args->args = NULL; } // If the handshake failed or we're shutting down, clean up and invoke the // callback with the error. -static void handshake_failed_locked(grpc_exec_ctx* exec_ctx, - http_connect_handshaker* handshaker, +static void handshake_failed_locked(http_connect_handshaker* handshaker, grpc_error* error) { if (error == GRPC_ERROR_NONE) { // If we were shut down after an endpoint operation succeeded but @@ -108,34 +105,32 @@ static void handshake_failed_locked(grpc_exec_ctx* exec_ctx, // before destroying them, even if we know that there are no // pending read/write callbacks. This should be fixed, at which // point this can be removed. - grpc_endpoint_shutdown(exec_ctx, handshaker->args->endpoint, - GRPC_ERROR_REF(error)); + grpc_endpoint_shutdown(handshaker->args->endpoint, GRPC_ERROR_REF(error)); // Not shutting down, so the handshake failed. Clean up before // invoking the callback. - cleanup_args_for_failure_locked(exec_ctx, handshaker); + cleanup_args_for_failure_locked(handshaker); // Set shutdown to true so that subsequent calls to // http_connect_handshaker_shutdown() do nothing. handshaker->shutdown = true; } // Invoke callback. - GRPC_CLOSURE_SCHED(exec_ctx, handshaker->on_handshake_done, error); + GRPC_CLOSURE_SCHED(handshaker->on_handshake_done, error); } // Callback invoked when finished writing HTTP CONNECT request. -static void on_write_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_write_done(void* arg, grpc_error* error) { http_connect_handshaker* handshaker = (http_connect_handshaker*)arg; gpr_mu_lock(&handshaker->mu); if (error != GRPC_ERROR_NONE || handshaker->shutdown) { // If the write failed or we're shutting down, clean up and invoke the // callback with the error. - handshake_failed_locked(exec_ctx, handshaker, GRPC_ERROR_REF(error)); + handshake_failed_locked(handshaker, GRPC_ERROR_REF(error)); gpr_mu_unlock(&handshaker->mu); - http_connect_handshaker_unref(exec_ctx, handshaker); + http_connect_handshaker_unref(handshaker); } else { // Otherwise, read the response. // The read callback inherits our ref to the handshaker. - grpc_endpoint_read(exec_ctx, handshaker->args->endpoint, + grpc_endpoint_read(handshaker->args->endpoint, handshaker->args->read_buffer, &handshaker->response_read_closure); gpr_mu_unlock(&handshaker->mu); @@ -143,14 +138,13 @@ static void on_write_done(grpc_exec_ctx* exec_ctx, void* arg, } // Callback invoked for reading HTTP CONNECT response. -static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_read_done(void* arg, grpc_error* error) { http_connect_handshaker* handshaker = (http_connect_handshaker*)arg; gpr_mu_lock(&handshaker->mu); if (error != GRPC_ERROR_NONE || handshaker->shutdown) { // If the read failed or we're shutting down, clean up and invoke the // callback with the error. - handshake_failed_locked(exec_ctx, handshaker, GRPC_ERROR_REF(error)); + handshake_failed_locked(handshaker, GRPC_ERROR_REF(error)); goto done; } // Add buffer to parser. @@ -161,7 +155,7 @@ static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg, handshaker->args->read_buffer->slices[i], &body_start_offset); if (error != GRPC_ERROR_NONE) { - handshake_failed_locked(exec_ctx, handshaker, error); + handshake_failed_locked(handshaker, error); goto done; } if (handshaker->http_parser.state == GRPC_HTTP_BODY) { @@ -180,7 +174,7 @@ static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg, &handshaker->args->read_buffer->slices[i + 1], handshaker->args->read_buffer->count - i - 1); grpc_slice_buffer_swap(handshaker->args->read_buffer, &tmp_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &tmp_buffer); + grpc_slice_buffer_destroy_internal(&tmp_buffer); break; } } @@ -197,9 +191,8 @@ static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg, // complete (e.g., handling chunked transfer encoding or looking // at the Content-Length: header). if (handshaker->http_parser.state != GRPC_HTTP_BODY) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, - handshaker->args->read_buffer); - grpc_endpoint_read(exec_ctx, handshaker->args->endpoint, + grpc_slice_buffer_reset_and_unref_internal(handshaker->args->read_buffer); + grpc_endpoint_read(handshaker->args->endpoint, handshaker->args->read_buffer, &handshaker->response_read_closure); gpr_mu_unlock(&handshaker->mu); @@ -213,48 +206,44 @@ static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg, handshaker->http_response.status); error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - handshake_failed_locked(exec_ctx, handshaker, error); + handshake_failed_locked(handshaker, error); goto done; } // Success. Invoke handshake-done callback. - GRPC_CLOSURE_SCHED(exec_ctx, handshaker->on_handshake_done, error); + GRPC_CLOSURE_SCHED(handshaker->on_handshake_done, error); done: // Set shutdown to true so that subsequent calls to // http_connect_handshaker_shutdown() do nothing. handshaker->shutdown = true; gpr_mu_unlock(&handshaker->mu); - http_connect_handshaker_unref(exec_ctx, handshaker); + http_connect_handshaker_unref(handshaker); } // // Public handshaker methods // -static void http_connect_handshaker_destroy(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker_in) { +static void http_connect_handshaker_destroy(grpc_handshaker* handshaker_in) { http_connect_handshaker* handshaker = (http_connect_handshaker*)handshaker_in; - http_connect_handshaker_unref(exec_ctx, handshaker); + http_connect_handshaker_unref(handshaker); } -static void http_connect_handshaker_shutdown(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker_in, +static void http_connect_handshaker_shutdown(grpc_handshaker* handshaker_in, grpc_error* why) { http_connect_handshaker* handshaker = (http_connect_handshaker*)handshaker_in; gpr_mu_lock(&handshaker->mu); if (!handshaker->shutdown) { handshaker->shutdown = true; - grpc_endpoint_shutdown(exec_ctx, handshaker->args->endpoint, - GRPC_ERROR_REF(why)); - cleanup_args_for_failure_locked(exec_ctx, handshaker); + grpc_endpoint_shutdown(handshaker->args->endpoint, GRPC_ERROR_REF(why)); + cleanup_args_for_failure_locked(handshaker); } gpr_mu_unlock(&handshaker->mu); GRPC_ERROR_UNREF(why); } static void http_connect_handshaker_do_handshake( - grpc_exec_ctx* exec_ctx, grpc_handshaker* handshaker_in, - grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, - grpc_handshaker_args* args) { + grpc_handshaker* handshaker_in, grpc_tcp_server_acceptor* acceptor, + grpc_closure* on_handshake_done, grpc_handshaker_args* args) { http_connect_handshaker* handshaker = (http_connect_handshaker*)handshaker_in; // Check for HTTP CONNECT channel arg. // If not found, invoke on_handshake_done without doing anything. @@ -266,7 +255,7 @@ static void http_connect_handshaker_do_handshake( gpr_mu_lock(&handshaker->mu); handshaker->shutdown = true; gpr_mu_unlock(&handshaker->mu); - GRPC_CLOSURE_SCHED(exec_ctx, on_handshake_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_handshake_done, GRPC_ERROR_NONE); return; } GPR_ASSERT(arg->type == GRPC_ARG_STRING); @@ -324,7 +313,7 @@ static void http_connect_handshaker_do_handshake( gpr_free(header_strings); // Take a new ref to be held by the write callback. gpr_ref(&handshaker->refcount); - grpc_endpoint_write(exec_ctx, args->endpoint, &handshaker->write_buffer, + grpc_endpoint_write(args->endpoint, &handshaker->write_buffer, &handshaker->request_done_closure); gpr_mu_unlock(&handshaker->mu); } @@ -355,14 +344,13 @@ static grpc_handshaker* grpc_http_connect_handshaker_create() { // static void handshaker_factory_add_handshakers( - grpc_exec_ctx* exec_ctx, grpc_handshaker_factory* factory, - const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) { + grpc_handshaker_factory* factory, const grpc_channel_args* args, + grpc_handshake_manager* handshake_mgr) { grpc_handshake_manager_add(handshake_mgr, grpc_http_connect_handshaker_create()); } -static void handshaker_factory_destroy(grpc_exec_ctx* exec_ctx, - grpc_handshaker_factory* factory) {} +static void handshaker_factory_destroy(grpc_handshaker_factory* factory) {} static const grpc_handshaker_factory_vtable handshaker_factory_vtable = { handshaker_factory_add_handshakers, handshaker_factory_destroy}; diff --git a/src/core/ext/filters/client_channel/http_proxy.cc b/src/core/ext/filters/client_channel/http_proxy.cc index a16b44d3dc3..567d5fe2e4b 100644 --- a/src/core/ext/filters/client_channel/http_proxy.cc +++ b/src/core/ext/filters/client_channel/http_proxy.cc @@ -40,15 +40,14 @@ * 'http_proxy' env var, otherwise leaves it unchanged. It is caller's * responsibility to gpr_free user_cred. */ -static char* get_http_proxy_server(grpc_exec_ctx* exec_ctx, char** user_cred) { +static char* get_http_proxy_server(char** user_cred) { GPR_ASSERT(user_cred != NULL); char* proxy_name = NULL; char* uri_str = gpr_getenv("http_proxy"); char** authority_strs = NULL; size_t authority_nstrs; if (uri_str == NULL) return NULL; - grpc_uri* uri = - grpc_uri_parse(exec_ctx, uri_str, false /* suppress_errors */); + grpc_uri* uri = grpc_uri_parse(uri_str, false /* suppress_errors */); if (uri == NULL || uri->authority == NULL) { gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var"); goto done; @@ -82,18 +81,16 @@ done: return proxy_name; } -static bool proxy_mapper_map_name(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper* mapper, +static bool proxy_mapper_map_name(grpc_proxy_mapper* mapper, const char* server_uri, const grpc_channel_args* args, char** name_to_resolve, grpc_channel_args** new_args) { char* user_cred = NULL; - *name_to_resolve = get_http_proxy_server(exec_ctx, &user_cred); + *name_to_resolve = get_http_proxy_server(&user_cred); if (*name_to_resolve == NULL) return false; char* no_proxy_str = NULL; - grpc_uri* uri = - grpc_uri_parse(exec_ctx, server_uri, false /* suppress_errors */); + grpc_uri* uri = grpc_uri_parse(server_uri, false /* suppress_errors */); if (uri == NULL || uri->path[0] == '\0') { gpr_log(GPR_ERROR, "'http_proxy' environment variable set, but cannot " @@ -174,8 +171,7 @@ no_use_proxy: return false; } -static bool proxy_mapper_map_address(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper* mapper, +static bool proxy_mapper_map_address(grpc_proxy_mapper* mapper, const grpc_resolved_address* address, const grpc_channel_args* args, grpc_resolved_address** new_address, diff --git a/src/core/ext/filters/client_channel/lb_policy.cc b/src/core/ext/filters/client_channel/lb_policy.cc index 8e6673d737e..be3c2176bf2 100644 --- a/src/core/ext/filters/client_channel/lb_policy.cc +++ b/src/core/ext/filters/client_channel/lb_policy.cc @@ -65,28 +65,25 @@ void grpc_lb_policy_ref(grpc_lb_policy *policy REF_FUNC_EXTRA_ARGS) { ref_mutate(policy, 1 << WEAK_REF_BITS, 0 REF_MUTATE_PASS_ARGS("STRONG_REF")); } -static void shutdown_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void shutdown_locked(void *arg, grpc_error *error) { grpc_lb_policy *policy = (grpc_lb_policy *)arg; - policy->vtable->shutdown_locked(exec_ctx, policy); - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, policy, "strong-unref"); + policy->vtable->shutdown_locked(policy); + GRPC_LB_POLICY_WEAK_UNREF(policy, "strong-unref"); } -void grpc_lb_policy_unref(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy REF_FUNC_EXTRA_ARGS) { +void grpc_lb_policy_unref(grpc_lb_policy *policy REF_FUNC_EXTRA_ARGS) { gpr_atm old_val = ref_mutate(policy, (gpr_atm)1 - (gpr_atm)(1 << WEAK_REF_BITS), 1 REF_MUTATE_PASS_ARGS("STRONG_UNREF")); gpr_atm mask = ~(gpr_atm)((1 << WEAK_REF_BITS) - 1); gpr_atm check = 1 << WEAK_REF_BITS; if ((old_val & mask) == check) { - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE( - shutdown_locked, policy, - grpc_combiner_scheduler(policy->combiner)), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_CREATE(shutdown_locked, policy, + grpc_combiner_scheduler(policy->combiner)), + GRPC_ERROR_NONE); } else { - grpc_lb_policy_weak_unref(exec_ctx, - policy REF_FUNC_PASS_ARGS("strong-unref")); + grpc_lb_policy_weak_unref(policy REF_FUNC_PASS_ARGS("strong-unref")); } } @@ -94,71 +91,61 @@ void grpc_lb_policy_weak_ref(grpc_lb_policy *policy REF_FUNC_EXTRA_ARGS) { ref_mutate(policy, 1, 0 REF_MUTATE_PASS_ARGS("WEAK_REF")); } -void grpc_lb_policy_weak_unref(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy REF_FUNC_EXTRA_ARGS) { +void grpc_lb_policy_weak_unref(grpc_lb_policy *policy REF_FUNC_EXTRA_ARGS) { gpr_atm old_val = ref_mutate(policy, -(gpr_atm)1, 1 REF_MUTATE_PASS_ARGS("WEAK_UNREF")); if (old_val == 1) { - grpc_pollset_set_destroy(exec_ctx, policy->interested_parties); + grpc_pollset_set_destroy(policy->interested_parties); grpc_combiner *combiner = policy->combiner; - policy->vtable->destroy(exec_ctx, policy); - GRPC_COMBINER_UNREF(exec_ctx, combiner, "lb_policy"); + policy->vtable->destroy(policy); + GRPC_COMBINER_UNREF(combiner, "lb_policy"); } } -int grpc_lb_policy_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, +int grpc_lb_policy_pick_locked(grpc_lb_policy *policy, const grpc_lb_policy_pick_args *pick_args, grpc_connected_subchannel **target, grpc_call_context_element *context, void **user_data, grpc_closure *on_complete) { - return policy->vtable->pick_locked(exec_ctx, policy, pick_args, target, - context, user_data, on_complete); + return policy->vtable->pick_locked(policy, pick_args, target, context, + user_data, on_complete); } -void grpc_lb_policy_cancel_pick_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_cancel_pick_locked(grpc_lb_policy *policy, grpc_connected_subchannel **target, grpc_error *error) { - policy->vtable->cancel_pick_locked(exec_ctx, policy, target, error); + policy->vtable->cancel_pick_locked(policy, target, error); } -void grpc_lb_policy_cancel_picks_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_cancel_picks_locked(grpc_lb_policy *policy, uint32_t initial_metadata_flags_mask, uint32_t initial_metadata_flags_eq, grpc_error *error) { - policy->vtable->cancel_picks_locked(exec_ctx, policy, - initial_metadata_flags_mask, + policy->vtable->cancel_picks_locked(policy, initial_metadata_flags_mask, initial_metadata_flags_eq, error); } -void grpc_lb_policy_exit_idle_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy) { - policy->vtable->exit_idle_locked(exec_ctx, policy); +void grpc_lb_policy_exit_idle_locked(grpc_lb_policy *policy) { + policy->vtable->exit_idle_locked(policy); } -void grpc_lb_policy_ping_one_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_ping_one_locked(grpc_lb_policy *policy, grpc_closure *closure) { - policy->vtable->ping_one_locked(exec_ctx, policy, closure); + policy->vtable->ping_one_locked(policy, closure); } void grpc_lb_policy_notify_on_state_change_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - grpc_connectivity_state *state, grpc_closure *closure) { - policy->vtable->notify_on_state_change_locked(exec_ctx, policy, state, - closure); + grpc_lb_policy *policy, grpc_connectivity_state *state, + grpc_closure *closure) { + policy->vtable->notify_on_state_change_locked(policy, state, closure); } grpc_connectivity_state grpc_lb_policy_check_connectivity_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - grpc_error **connectivity_error) { - return policy->vtable->check_connectivity_locked(exec_ctx, policy, - connectivity_error); + grpc_lb_policy *policy, grpc_error **connectivity_error) { + return policy->vtable->check_connectivity_locked(policy, connectivity_error); } -void grpc_lb_policy_update_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_update_locked(grpc_lb_policy *policy, const grpc_lb_policy_args *lb_policy_args) { - policy->vtable->update_locked(exec_ctx, policy, lb_policy_args); + policy->vtable->update_locked(policy, lb_policy_args); } diff --git a/src/core/ext/filters/client_channel/lb_policy.h b/src/core/ext/filters/client_channel/lb_policy.h index 010299c2f4c..090e0214851 100644 --- a/src/core/ext/filters/client_channel/lb_policy.h +++ b/src/core/ext/filters/client_channel/lb_policy.h @@ -59,48 +59,45 @@ typedef struct grpc_lb_policy_pick_args { } grpc_lb_policy_pick_args; struct grpc_lb_policy_vtable { - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy); - void (*shutdown_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy); + void (*destroy)(grpc_lb_policy *policy); + void (*shutdown_locked)(grpc_lb_policy *policy); /** \see grpc_lb_policy_pick */ - int (*pick_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, + int (*pick_locked)(grpc_lb_policy *policy, const grpc_lb_policy_pick_args *pick_args, grpc_connected_subchannel **target, grpc_call_context_element *context, void **user_data, grpc_closure *on_complete); /** \see grpc_lb_policy_cancel_pick */ - void (*cancel_pick_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, + void (*cancel_pick_locked)(grpc_lb_policy *policy, grpc_connected_subchannel **target, grpc_error *error); /** \see grpc_lb_policy_cancel_picks */ - void (*cancel_picks_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, + void (*cancel_picks_locked)(grpc_lb_policy *policy, uint32_t initial_metadata_flags_mask, uint32_t initial_metadata_flags_eq, grpc_error *error); /** \see grpc_lb_policy_ping_one */ - void (*ping_one_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - grpc_closure *closure); + void (*ping_one_locked)(grpc_lb_policy *policy, grpc_closure *closure); /** Try to enter a READY connectivity state */ - void (*exit_idle_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy); + void (*exit_idle_locked)(grpc_lb_policy *policy); /** check the current connectivity of the lb_policy */ grpc_connectivity_state (*check_connectivity_locked)( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - grpc_error **connectivity_error); + grpc_lb_policy *policy, grpc_error **connectivity_error); /** call notify when the connectivity state of a channel changes from *state. Updates *state with the new state of the policy. Calling with a NULL \a state cancels the subscription. */ - void (*notify_on_state_change_locked)(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, + void (*notify_on_state_change_locked)(grpc_lb_policy *policy, grpc_connectivity_state *state, grpc_closure *closure); - void (*update_locked)(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, + void (*update_locked)(grpc_lb_policy *policy, const grpc_lb_policy_args *args); }; @@ -109,33 +106,33 @@ struct grpc_lb_policy_vtable { /* Strong references: the policy will shutdown when they reach zero */ #define GRPC_LB_POLICY_REF(p, r) \ grpc_lb_policy_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_LB_POLICY_UNREF(exec_ctx, p, r) \ - grpc_lb_policy_unref((exec_ctx), (p), __FILE__, __LINE__, (r)) +#define GRPC_LB_POLICY_UNREF(p, r) \ + grpc_lb_policy_unref((p), __FILE__, __LINE__, (r)) /* Weak references: they don't prevent the shutdown of the LB policy. When no * strong references are left but there are still weak ones, shutdown is called. * Once the weak reference also reaches zero, the LB policy is destroyed. */ #define GRPC_LB_POLICY_WEAK_REF(p, r) \ grpc_lb_policy_weak_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, p, r) \ - grpc_lb_policy_weak_unref((exec_ctx), (p), __FILE__, __LINE__, (r)) +#define GRPC_LB_POLICY_WEAK_UNREF(p, r) \ + grpc_lb_policy_weak_unref((p), __FILE__, __LINE__, (r)) void grpc_lb_policy_ref(grpc_lb_policy *policy, const char *file, int line, const char *reason); -void grpc_lb_policy_unref(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - const char *file, int line, const char *reason); +void grpc_lb_policy_unref(grpc_lb_policy *policy, const char *file, int line, + const char *reason); void grpc_lb_policy_weak_ref(grpc_lb_policy *policy, const char *file, int line, const char *reason); -void grpc_lb_policy_weak_unref(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - const char *file, int line, const char *reason); +void grpc_lb_policy_weak_unref(grpc_lb_policy *policy, const char *file, + int line, const char *reason); #else #define GRPC_LB_POLICY_REF(p, r) grpc_lb_policy_ref((p)) -#define GRPC_LB_POLICY_UNREF(cl, p, r) grpc_lb_policy_unref((cl), (p)) +#define GRPC_LB_POLICY_UNREF(p, r) grpc_lb_policy_unref((p)) #define GRPC_LB_POLICY_WEAK_REF(p, r) grpc_lb_policy_weak_ref((p)) -#define GRPC_LB_POLICY_WEAK_UNREF(cl, p, r) grpc_lb_policy_weak_unref((cl), (p)) +#define GRPC_LB_POLICY_WEAK_UNREF(p, r) grpc_lb_policy_weak_unref((p)) void grpc_lb_policy_ref(grpc_lb_policy *policy); -void grpc_lb_policy_unref(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy); +void grpc_lb_policy_unref(grpc_lb_policy *policy); void grpc_lb_policy_weak_ref(grpc_lb_policy *policy); -void grpc_lb_policy_weak_unref(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy); +void grpc_lb_policy_weak_unref(grpc_lb_policy *policy); #endif /** called by concrete implementations to initialize the base struct */ @@ -160,7 +157,7 @@ void grpc_lb_policy_init(grpc_lb_policy *policy, Any IO should be done under the \a interested_parties \a grpc_pollset_set in the \a grpc_lb_policy struct. */ -int grpc_lb_policy_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, +int grpc_lb_policy_pick_locked(grpc_lb_policy *policy, const grpc_lb_policy_pick_args *pick_args, grpc_connected_subchannel **target, grpc_call_context_element *context, @@ -168,44 +165,38 @@ int grpc_lb_policy_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, /** Perform a connected subchannel ping (see \a grpc_connected_subchannel_ping) against one of the connected subchannels managed by \a policy. */ -void grpc_lb_policy_ping_one_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_ping_one_locked(grpc_lb_policy *policy, grpc_closure *closure); /** Cancel picks for \a target. The \a on_complete callback of the pending picks will be invoked with \a *target set to NULL. */ -void grpc_lb_policy_cancel_pick_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_cancel_pick_locked(grpc_lb_policy *policy, grpc_connected_subchannel **target, grpc_error *error); /** Cancel all pending picks for which their \a initial_metadata_flags (as given in the call to \a grpc_lb_policy_pick) matches \a initial_metadata_flags_eq when AND'd with \a initial_metadata_flags_mask */ -void grpc_lb_policy_cancel_picks_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_cancel_picks_locked(grpc_lb_policy *policy, uint32_t initial_metadata_flags_mask, uint32_t initial_metadata_flags_eq, grpc_error *error); /** Try to enter a READY connectivity state */ -void grpc_lb_policy_exit_idle_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy); +void grpc_lb_policy_exit_idle_locked(grpc_lb_policy *policy); /* Call notify when the connectivity state of a channel changes from \a *state. * Updates \a *state with the new state of the policy */ void grpc_lb_policy_notify_on_state_change_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - grpc_connectivity_state *state, grpc_closure *closure); + grpc_lb_policy *policy, grpc_connectivity_state *state, + grpc_closure *closure); grpc_connectivity_state grpc_lb_policy_check_connectivity_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, - grpc_error **connectivity_error); + grpc_lb_policy *policy, grpc_error **connectivity_error); /** Update \a policy with \a lb_policy_args. */ -void grpc_lb_policy_update_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *policy, +void grpc_lb_policy_update_locked(grpc_lb_policy *policy, const grpc_lb_policy_args *lb_policy_args); #ifdef __cplusplus diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc index 7ad322902bd..f56d3bc0512 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc @@ -25,14 +25,12 @@ #include "src/core/lib/iomgr/error.h" #include "src/core/lib/profiling/timers.h" -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} typedef struct { // Stats object to update. @@ -47,28 +45,24 @@ typedef struct { bool recv_initial_metadata_succeeded; } call_data; -static void on_complete_for_send(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_complete_for_send(void *arg, grpc_error *error) { call_data *calld = (call_data *)arg; if (error == GRPC_ERROR_NONE) { calld->send_initial_metadata_succeeded = true; } - GRPC_CLOSURE_RUN(exec_ctx, calld->original_on_complete_for_send, - GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(calld->original_on_complete_for_send, GRPC_ERROR_REF(error)); } -static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void recv_initial_metadata_ready(void *arg, grpc_error *error) { call_data *calld = (call_data *)arg; if (error == GRPC_ERROR_NONE) { calld->recv_initial_metadata_succeeded = true; } - GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_initial_metadata_ready, + GRPC_CLOSURE_RUN(calld->original_recv_initial_metadata_ready, GRPC_ERROR_REF(error)); } -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; // Get stats object from context and take a ref. @@ -82,7 +76,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *calld = (call_data *)elem->call_data; @@ -97,8 +91,7 @@ static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, } static void start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; GPR_TIMER_BEGIN("clr_start_transport_stream_op_batch", 0); // Intercept send_initial_metadata. @@ -119,7 +112,7 @@ static void start_transport_stream_op_batch( &calld->recv_initial_metadata_ready; } // Chain to next filter. - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); GPR_TIMER_END("clr_start_transport_stream_op_batch", 0); } diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc index ffd58129c6e..aa4beb359f0 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc @@ -131,12 +131,12 @@ grpc_tracer_flag grpc_lb_glb_trace = GRPC_TRACER_INITIALIZER(false, "glb"); /* add lb_token of selected subchannel (address) to the call's initial * metadata */ static grpc_error *initial_metadata_add_lb_token( - grpc_exec_ctx *exec_ctx, grpc_metadata_batch *initial_metadata, + grpc_metadata_batch *initial_metadata, grpc_linked_mdelem *lb_token_mdelem_storage, grpc_mdelem lb_token) { GPR_ASSERT(lb_token_mdelem_storage != NULL); GPR_ASSERT(!GRPC_MDISNULL(lb_token)); - return grpc_metadata_batch_add_tail(exec_ctx, initial_metadata, - lb_token_mdelem_storage, lb_token); + return grpc_metadata_batch_add_tail(initial_metadata, lb_token_mdelem_storage, + lb_token); } static void destroy_client_stats(void *arg) { @@ -182,12 +182,11 @@ typedef struct wrapped_rr_closure_arg { /* The \a on_complete closure passed as part of the pick requires keeping a * reference to its associated round robin instance. We wrap this closure in * order to unref the round robin instance upon its invocation */ -static void wrapped_rr_closure(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void wrapped_rr_closure(void *arg, grpc_error *error) { wrapped_rr_closure_arg *wc_arg = (wrapped_rr_closure_arg *)arg; GPR_ASSERT(wc_arg->wrapped_closure != NULL); - GRPC_CLOSURE_SCHED(exec_ctx, wc_arg->wrapped_closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(wc_arg->wrapped_closure, GRPC_ERROR_REF(error)); if (wc_arg->rr_policy != NULL) { /* if *target is NULL, no pick has been made by the RR policy (eg, all @@ -195,7 +194,7 @@ static void wrapped_rr_closure(grpc_exec_ctx *exec_ctx, void *arg, * available */ if (*wc_arg->target != NULL) { if (!GRPC_MDISNULL(wc_arg->lb_token)) { - initial_metadata_add_lb_token(exec_ctx, wc_arg->initial_metadata, + initial_metadata_add_lb_token(wc_arg->initial_metadata, wc_arg->lb_token_mdelem_storage, GRPC_MDELEM_REF(wc_arg->lb_token)); } else { @@ -215,7 +214,7 @@ static void wrapped_rr_closure(grpc_exec_ctx *exec_ctx, void *arg, if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_INFO, "Unreffing RR %p", (void *)wc_arg->rr_policy); } - GRPC_LB_POLICY_UNREF(exec_ctx, wc_arg->rr_policy, "wrapped_rr_closure"); + GRPC_LB_POLICY_UNREF(wc_arg->rr_policy, "wrapped_rr_closure"); } GPR_ASSERT(wc_arg->free_when_done != NULL); gpr_free(wc_arg->free_when_done); @@ -453,9 +452,9 @@ static void *lb_token_copy(void *token) { ? NULL : (void *)GRPC_MDELEM_REF(grpc_mdelem{(uintptr_t)token}).payload; } -static void lb_token_destroy(grpc_exec_ctx *exec_ctx, void *token) { +static void lb_token_destroy(void *token) { if (token != NULL) { - GRPC_MDELEM_UNREF(exec_ctx, grpc_mdelem{(uintptr_t)token}); + GRPC_MDELEM_UNREF(grpc_mdelem{(uintptr_t)token}); } } static int lb_token_cmp(void *token1, void *token2) { @@ -491,7 +490,7 @@ static void parse_server(const grpc_grpclb_server *server, /* Returns addresses extracted from \a serverlist. */ static grpc_lb_addresses *process_serverlist_locked( - grpc_exec_ctx *exec_ctx, const grpc_grpclb_serverlist *serverlist) { + const grpc_grpclb_serverlist *serverlist) { size_t num_valid = 0; /* first pass: count how many are valid in order to allocate the necessary * memory in a single block */ @@ -522,9 +521,9 @@ static grpc_lb_addresses *process_serverlist_locked( strnlen(server->load_balance_token, lb_token_max_length); grpc_slice lb_token_mdstr = grpc_slice_from_copied_buffer( server->load_balance_token, lb_token_length); - user_data = (void *)grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_LB_TOKEN, - lb_token_mdstr) - .payload; + user_data = + (void *)grpc_mdelem_from_slices(GRPC_MDSTR_LB_TOKEN, lb_token_mdstr) + .payload; } else { char *uri = grpc_sockaddr_to_uri(&addr); gpr_log(GPR_INFO, @@ -546,7 +545,7 @@ static grpc_lb_addresses *process_serverlist_locked( /* Returns the backend addresses extracted from the given addresses */ static grpc_lb_addresses *extract_backend_addresses_locked( - grpc_exec_ctx *exec_ctx, const grpc_lb_addresses *addresses) { + const grpc_lb_addresses *addresses) { /* first pass: count the number of backend addresses */ size_t num_backends = 0; for (size_t i = 0; i < addresses->num_addresses; ++i) { @@ -571,8 +570,8 @@ static grpc_lb_addresses *extract_backend_addresses_locked( } static void update_lb_connectivity_status_locked( - grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, - grpc_connectivity_state rr_state, grpc_error *rr_state_error) { + glb_lb_policy *glb_policy, grpc_connectivity_state rr_state, + grpc_error *rr_state_error) { const grpc_connectivity_state curr_glb_state = grpc_connectivity_state_check(&glb_policy->state_tracker); @@ -623,7 +622,7 @@ static void update_lb_connectivity_status_locked( GPR_INFO, "Setting grpclb's state to %s from new RR policy %p state.", grpc_connectivity_state_name(rr_state), (void *)glb_policy->rr_policy); } - grpc_connectivity_state_set(exec_ctx, &glb_policy->state_tracker, rr_state, + grpc_connectivity_state_set(&glb_policy->state_tracker, rr_state, rr_state_error, "update_lb_connectivity_status_locked"); } @@ -634,9 +633,9 @@ static void update_lb_connectivity_status_locked( * If \a force_async is true, then we will manually schedule the * completion callback even if the pick is available immediately. */ static bool pick_from_internal_rr_locked( - grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, - const grpc_lb_policy_pick_args *pick_args, bool force_async, - grpc_connected_subchannel **target, wrapped_rr_closure_arg *wc_arg) { + glb_lb_policy *glb_policy, const grpc_lb_policy_pick_args *pick_args, + bool force_async, grpc_connected_subchannel **target, + wrapped_rr_closure_arg *wc_arg) { // Check for drops if we are not using fallback backend addresses. if (glb_policy->serverlist != NULL) { // Look at the index into the serverlist to see if we should drop this call. @@ -651,7 +650,7 @@ static bool pick_from_internal_rr_locked( gpr_log(GPR_INFO, "Unreffing RR for drop (0x%" PRIxPTR ")", (intptr_t)wc_arg->rr_policy); } - GRPC_LB_POLICY_UNREF(exec_ctx, wc_arg->rr_policy, "glb_pick_sync"); + GRPC_LB_POLICY_UNREF(wc_arg->rr_policy, "glb_pick_sync"); // Update client load reporting stats to indicate the number of // dropped calls. Note that we have to do this here instead of in // the client_load_reporting filter, because we do not create a @@ -662,7 +661,7 @@ static bool pick_from_internal_rr_locked( grpc_grpclb_client_stats_unref(wc_arg->client_stats); if (force_async) { GPR_ASSERT(wc_arg->wrapped_closure != NULL); - GRPC_CLOSURE_SCHED(exec_ctx, wc_arg->wrapped_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(wc_arg->wrapped_closure, GRPC_ERROR_NONE); gpr_free(wc_arg->free_when_done); return false; } @@ -672,7 +671,7 @@ static bool pick_from_internal_rr_locked( } // Pick via the RR policy. const bool pick_done = grpc_lb_policy_pick_locked( - exec_ctx, wc_arg->rr_policy, pick_args, target, wc_arg->context, + wc_arg->rr_policy, pick_args, target, wc_arg->context, (void **)&wc_arg->lb_token, &wc_arg->wrapper_closure); if (pick_done) { /* synchronous grpc_lb_policy_pick call. Unref the RR policy. */ @@ -680,9 +679,9 @@ static bool pick_from_internal_rr_locked( gpr_log(GPR_INFO, "Unreffing RR (0x%" PRIxPTR ")", (intptr_t)wc_arg->rr_policy); } - GRPC_LB_POLICY_UNREF(exec_ctx, wc_arg->rr_policy, "glb_pick_sync"); + GRPC_LB_POLICY_UNREF(wc_arg->rr_policy, "glb_pick_sync"); /* add the load reporting initial metadata */ - initial_metadata_add_lb_token(exec_ctx, pick_args->initial_metadata, + initial_metadata_add_lb_token(pick_args->initial_metadata, pick_args->lb_token_mdelem_storage, GRPC_MDELEM_REF(wc_arg->lb_token)); // Pass on client stats via context. Passes ownership of the reference. @@ -691,7 +690,7 @@ static bool pick_from_internal_rr_locked( wc_arg->context[GRPC_GRPCLB_CLIENT_STATS].destroy = destroy_client_stats; if (force_async) { GPR_ASSERT(wc_arg->wrapped_closure != NULL); - GRPC_CLOSURE_SCHED(exec_ctx, wc_arg->wrapped_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(wc_arg->wrapped_closure, GRPC_ERROR_NONE); gpr_free(wc_arg->free_when_done); return false; } @@ -704,12 +703,11 @@ static bool pick_from_internal_rr_locked( return pick_done; } -static grpc_lb_policy_args *lb_policy_args_create(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static grpc_lb_policy_args *lb_policy_args_create(glb_lb_policy *glb_policy) { grpc_lb_addresses *addresses; if (glb_policy->serverlist != NULL) { GPR_ASSERT(glb_policy->serverlist->num_servers > 0); - addresses = process_serverlist_locked(exec_ctx, glb_policy->serverlist); + addresses = process_serverlist_locked(glb_policy->serverlist); } else { // If rr_handover_locked() is invoked when we haven't received any // serverlist from the balancer, we use the fallback backends returned by @@ -729,24 +727,21 @@ static grpc_lb_policy_args *lb_policy_args_create(grpc_exec_ctx *exec_ctx, args->args = grpc_channel_args_copy_and_add_and_remove( glb_policy->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &arg, 1); - grpc_lb_addresses_destroy(exec_ctx, addresses); + grpc_lb_addresses_destroy(addresses); return args; } -static void lb_policy_args_destroy(grpc_exec_ctx *exec_ctx, - grpc_lb_policy_args *args) { - grpc_channel_args_destroy(exec_ctx, args->args); +static void lb_policy_args_destroy(grpc_lb_policy_args *args) { + grpc_channel_args_destroy(args->args); gpr_free(args); } -static void glb_rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error); -static void create_rr_locked(grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, +static void glb_rr_connectivity_changed_locked(void *arg, grpc_error *error); +static void create_rr_locked(glb_lb_policy *glb_policy, grpc_lb_policy_args *args) { GPR_ASSERT(glb_policy->rr_policy == NULL); - grpc_lb_policy *new_rr_policy = - grpc_lb_policy_create(exec_ctx, "round_robin", args); + grpc_lb_policy *new_rr_policy = grpc_lb_policy_create("round_robin", args); if (new_rr_policy == NULL) { gpr_log(GPR_ERROR, "Failure creating a RoundRobin policy for serverlist update with " @@ -760,16 +755,14 @@ static void create_rr_locked(grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, glb_policy->rr_policy = new_rr_policy; grpc_error *rr_state_error = NULL; const grpc_connectivity_state rr_state = - grpc_lb_policy_check_connectivity_locked(exec_ctx, glb_policy->rr_policy, + grpc_lb_policy_check_connectivity_locked(glb_policy->rr_policy, &rr_state_error); /* Connectivity state is a function of the RR policy updated/created */ - update_lb_connectivity_status_locked(exec_ctx, glb_policy, rr_state, - rr_state_error); + update_lb_connectivity_status_locked(glb_policy, rr_state, rr_state_error); /* Add the gRPC LB's interested_parties pollset_set to that of the newly * created RR policy. This will make the RR policy progress upon activity on * gRPC LB, which in turn is tied to the application's call */ - grpc_pollset_set_add_pollset_set(exec_ctx, - glb_policy->rr_policy->interested_parties, + grpc_pollset_set_add_pollset_set(glb_policy->rr_policy->interested_parties, glb_policy->base.interested_parties); /* Allocate the data for the tracking of the new RR policy's connectivity. @@ -784,10 +777,10 @@ static void create_rr_locked(grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, /* Subscribe to changes to the connectivity of the new RR */ GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "glb_rr_connectivity_cb"); - grpc_lb_policy_notify_on_state_change_locked(exec_ctx, glb_policy->rr_policy, + grpc_lb_policy_notify_on_state_change_locked(glb_policy->rr_policy, &rr_connectivity->state, &rr_connectivity->on_change); - grpc_lb_policy_exit_idle_locked(exec_ctx, glb_policy->rr_policy); + grpc_lb_policy_exit_idle_locked(glb_policy->rr_policy); /* Update picks and pings in wait */ pending_pick *pp; @@ -801,7 +794,7 @@ static void create_rr_locked(grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, gpr_log(GPR_INFO, "Pending pick about to (async) PICK from %p", (void *)glb_policy->rr_policy); } - pick_from_internal_rr_locked(exec_ctx, glb_policy, &pp->pick_args, + pick_from_internal_rr_locked(glb_policy, &pp->pick_args, true /* force_async */, pp->target, &pp->wrapped_on_complete_arg); } @@ -815,40 +808,37 @@ static void create_rr_locked(grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy, gpr_log(GPR_INFO, "Pending ping about to PING from 0x%" PRIxPTR "", (intptr_t)glb_policy->rr_policy); } - grpc_lb_policy_ping_one_locked(exec_ctx, glb_policy->rr_policy, + grpc_lb_policy_ping_one_locked(glb_policy->rr_policy, &pping->wrapped_notify_arg.wrapper_closure); } } /* glb_policy->rr_policy may be NULL (initial handover) */ -static void rr_handover_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void rr_handover_locked(glb_lb_policy *glb_policy) { if (glb_policy->shutting_down) return; - grpc_lb_policy_args *args = lb_policy_args_create(exec_ctx, glb_policy); + grpc_lb_policy_args *args = lb_policy_args_create(glb_policy); GPR_ASSERT(args != NULL); if (glb_policy->rr_policy != NULL) { if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_DEBUG, "Updating Round Robin policy (%p)", (void *)glb_policy->rr_policy); } - grpc_lb_policy_update_locked(exec_ctx, glb_policy->rr_policy, args); + grpc_lb_policy_update_locked(glb_policy->rr_policy, args); } else { - create_rr_locked(exec_ctx, glb_policy, args); + create_rr_locked(glb_policy, args); if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_DEBUG, "Created new Round Robin policy (%p)", (void *)glb_policy->rr_policy); } } - lb_policy_args_destroy(exec_ctx, args); + lb_policy_args_destroy(args); } -static void glb_rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void glb_rr_connectivity_changed_locked(void *arg, grpc_error *error) { rr_connectivity_data *rr_connectivity = (rr_connectivity_data *)arg; glb_lb_policy *glb_policy = rr_connectivity->glb_policy; if (glb_policy->shutting_down) { - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, - "glb_rr_connectivity_cb"); + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "glb_rr_connectivity_cb"); gpr_free(rr_connectivity); return; } @@ -856,25 +846,22 @@ static void glb_rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, /* An RR policy that has transitioned into the SHUTDOWN connectivity state * should not be considered for picks or updates: the SHUTDOWN state is a * sink, policies can't transition back from it. .*/ - GRPC_LB_POLICY_UNREF(exec_ctx, glb_policy->rr_policy, - "rr_connectivity_shutdown"); + GRPC_LB_POLICY_UNREF(glb_policy->rr_policy, "rr_connectivity_shutdown"); glb_policy->rr_policy = NULL; - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, - "glb_rr_connectivity_cb"); + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "glb_rr_connectivity_cb"); gpr_free(rr_connectivity); return; } /* rr state != SHUTDOWN && !glb_policy->shutting down: biz as usual */ - update_lb_connectivity_status_locked( - exec_ctx, glb_policy, rr_connectivity->state, GRPC_ERROR_REF(error)); + update_lb_connectivity_status_locked(glb_policy, rr_connectivity->state, + GRPC_ERROR_REF(error)); /* Resubscribe. Reuse the "glb_rr_connectivity_cb" weak ref. */ - grpc_lb_policy_notify_on_state_change_locked(exec_ctx, glb_policy->rr_policy, + grpc_lb_policy_notify_on_state_change_locked(glb_policy->rr_policy, &rr_connectivity->state, &rr_connectivity->on_change); } -static void destroy_balancer_name(grpc_exec_ctx *exec_ctx, - void *balancer_name) { +static void destroy_balancer_name(void *balancer_name) { gpr_free(balancer_name); } @@ -901,7 +888,7 @@ static int balancer_name_cmp_fn(void *a, void *b) { * above the grpclb policy. * - \a args: other args inherited from the grpclb policy. */ static grpc_channel_args *build_lb_channel_args( - grpc_exec_ctx *exec_ctx, const grpc_lb_addresses *addresses, + const grpc_lb_addresses *addresses, grpc_fake_resolver_response_generator *response_generator, const grpc_channel_args *args) { size_t num_grpclb_addrs = 0; @@ -944,7 +931,7 @@ static grpc_channel_args *build_lb_channel_args( gpr_free(targets_info_entries); grpc_channel_args *lb_channel_args = - grpc_lb_policy_grpclb_build_lb_channel_args(exec_ctx, targets_info, + grpc_lb_policy_grpclb_build_lb_channel_args(targets_info, response_generator, args); grpc_arg lb_channel_addresses_arg = @@ -952,34 +939,34 @@ static grpc_channel_args *build_lb_channel_args( grpc_channel_args *result = grpc_channel_args_copy_and_add( lb_channel_args, &lb_channel_addresses_arg, 1); - grpc_slice_hash_table_unref(exec_ctx, targets_info); - grpc_channel_args_destroy(exec_ctx, lb_channel_args); - grpc_lb_addresses_destroy(exec_ctx, lb_addresses); + grpc_slice_hash_table_unref(targets_info); + grpc_channel_args_destroy(lb_channel_args); + grpc_lb_addresses_destroy(lb_addresses); return result; } -static void glb_destroy(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void glb_destroy(grpc_lb_policy *pol) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; GPR_ASSERT(glb_policy->pending_picks == NULL); GPR_ASSERT(glb_policy->pending_pings == NULL); gpr_free((void *)glb_policy->server_name); - grpc_channel_args_destroy(exec_ctx, glb_policy->args); + grpc_channel_args_destroy(glb_policy->args); if (glb_policy->client_stats != NULL) { grpc_grpclb_client_stats_unref(glb_policy->client_stats); } - grpc_connectivity_state_destroy(exec_ctx, &glb_policy->state_tracker); + grpc_connectivity_state_destroy(&glb_policy->state_tracker); if (glb_policy->serverlist != NULL) { grpc_grpclb_destroy_serverlist(glb_policy->serverlist); } if (glb_policy->fallback_backend_addresses != NULL) { - grpc_lb_addresses_destroy(exec_ctx, glb_policy->fallback_backend_addresses); + grpc_lb_addresses_destroy(glb_policy->fallback_backend_addresses); } grpc_fake_resolver_response_generator_unref(glb_policy->response_generator); grpc_subchannel_index_unref(); gpr_free(glb_policy); } -static void glb_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void glb_shutdown_locked(grpc_lb_policy *pol) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; glb_policy->shutting_down = true; @@ -997,11 +984,11 @@ static void glb_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { /* lb_on_server_status_received will pick up the cancel and clean up */ } if (glb_policy->retry_timer_active) { - grpc_timer_cancel(exec_ctx, &glb_policy->lb_call_retry_timer); + grpc_timer_cancel(&glb_policy->lb_call_retry_timer); glb_policy->retry_timer_active = false; } if (glb_policy->fallback_timer_active) { - grpc_timer_cancel(exec_ctx, &glb_policy->lb_fallback_timer); + grpc_timer_cancel(&glb_policy->lb_fallback_timer); glb_policy->fallback_timer_active = false; } @@ -1010,7 +997,7 @@ static void glb_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { pending_ping *pping = glb_policy->pending_pings; glb_policy->pending_pings = NULL; if (glb_policy->rr_policy != NULL) { - GRPC_LB_POLICY_UNREF(exec_ctx, glb_policy->rr_policy, "glb_shutdown"); + GRPC_LB_POLICY_UNREF(glb_policy->rr_policy, "glb_shutdown"); } // We destroy the LB channel here because // glb_lb_channel_on_connectivity_changed_cb needs a valid glb_policy @@ -1021,20 +1008,20 @@ static void glb_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { glb_policy->lb_channel = NULL; } grpc_connectivity_state_set( - exec_ctx, &glb_policy->state_tracker, GRPC_CHANNEL_SHUTDOWN, + &glb_policy->state_tracker, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Shutdown"), "glb_shutdown"); while (pp != NULL) { pending_pick *next = pp->next; *pp->target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure, + GRPC_CLOSURE_SCHED(&pp->wrapped_on_complete_arg.wrapper_closure, GRPC_ERROR_NONE); pp = next; } while (pping != NULL) { pending_ping *next = pping->next; - GRPC_CLOSURE_SCHED(exec_ctx, &pping->wrapped_notify_arg.wrapper_closure, + GRPC_CLOSURE_SCHED(&pping->wrapped_notify_arg.wrapper_closure, GRPC_ERROR_NONE); pping = next; } @@ -1050,7 +1037,7 @@ static void glb_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { // - Otherwise, without an RR instance, picks stay pending at this policy's // level (grpclb), inside the glb_policy->pending_picks list. To cancel these, // we invoke the completion closure and set *target to NULL right here. -static void glb_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static void glb_cancel_pick_locked(grpc_lb_policy *pol, grpc_connected_subchannel **target, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; @@ -1060,7 +1047,7 @@ static void glb_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, pending_pick *next = pp->next; if (pp->target == target) { *target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure, + GRPC_CLOSURE_SCHED(&pp->wrapped_on_complete_arg.wrapper_closure, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick Cancelled", &error, 1)); } else { @@ -1070,7 +1057,7 @@ static void glb_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, pp = next; } if (glb_policy->rr_policy != NULL) { - grpc_lb_policy_cancel_pick_locked(exec_ctx, glb_policy->rr_policy, target, + grpc_lb_policy_cancel_pick_locked(glb_policy->rr_policy, target, GRPC_ERROR_REF(error)); } GRPC_ERROR_UNREF(error); @@ -1086,8 +1073,7 @@ static void glb_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, // - Otherwise, without an RR instance, picks stay pending at this policy's // level (grpclb), inside the glb_policy->pending_picks list. To cancel these, // we invoke the completion closure and set *target to NULL right here. -static void glb_cancel_picks_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *pol, +static void glb_cancel_picks_locked(grpc_lb_policy *pol, uint32_t initial_metadata_flags_mask, uint32_t initial_metadata_flags_eq, grpc_error *error) { @@ -1098,7 +1084,7 @@ static void glb_cancel_picks_locked(grpc_exec_ctx *exec_ctx, pending_pick *next = pp->next; if ((pp->pick_args.initial_metadata_flags & initial_metadata_flags_mask) == initial_metadata_flags_eq) { - GRPC_CLOSURE_SCHED(exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure, + GRPC_CLOSURE_SCHED(&pp->wrapped_on_complete_arg.wrapper_closure, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick Cancelled", &error, 1)); } else { @@ -1109,52 +1095,49 @@ static void glb_cancel_picks_locked(grpc_exec_ctx *exec_ctx, } if (glb_policy->rr_policy != NULL) { grpc_lb_policy_cancel_picks_locked( - exec_ctx, glb_policy->rr_policy, initial_metadata_flags_mask, + glb_policy->rr_policy, initial_metadata_flags_mask, initial_metadata_flags_eq, GRPC_ERROR_REF(error)); } GRPC_ERROR_UNREF(error); } -static void lb_on_fallback_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); -static void query_for_backends_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy); -static void start_picking_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void lb_on_fallback_timer_locked(void *arg, grpc_error *error); +static void query_for_backends_locked(glb_lb_policy *glb_policy); +static void start_picking_locked(glb_lb_policy *glb_policy) { /* start a timer to fall back */ if (glb_policy->lb_fallback_timeout_ms > 0 && glb_policy->serverlist == NULL && !glb_policy->fallback_timer_active) { grpc_millis deadline = - grpc_exec_ctx_now(exec_ctx) + glb_policy->lb_fallback_timeout_ms; + grpc_exec_ctx_now() + glb_policy->lb_fallback_timeout_ms; GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "grpclb_fallback_timer"); GRPC_CLOSURE_INIT(&glb_policy->lb_on_fallback, lb_on_fallback_timer_locked, glb_policy, grpc_combiner_scheduler(glb_policy->base.combiner)); glb_policy->fallback_timer_active = true; - grpc_timer_init(exec_ctx, &glb_policy->lb_fallback_timer, deadline, + grpc_timer_init(&glb_policy->lb_fallback_timer, deadline, &glb_policy->lb_on_fallback); } glb_policy->started_picking = true; grpc_backoff_reset(&glb_policy->lb_call_backoff_state); - query_for_backends_locked(exec_ctx, glb_policy); + query_for_backends_locked(glb_policy); } -static void glb_exit_idle_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void glb_exit_idle_locked(grpc_lb_policy *pol) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; if (!glb_policy->started_picking) { - start_picking_locked(exec_ctx, glb_policy); + start_picking_locked(glb_policy); } } -static int glb_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static int glb_pick_locked(grpc_lb_policy *pol, const grpc_lb_policy_pick_args *pick_args, grpc_connected_subchannel **target, grpc_call_context_element *context, void **user_data, grpc_closure *on_complete) { if (pick_args->lb_token_mdelem_storage == NULL) { *target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, on_complete, + GRPC_CLOSURE_SCHED(on_complete, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "No mdelem storage for the LB token. Load reporting " "won't work without it. Failing")); @@ -1186,9 +1169,8 @@ static int glb_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, wc_arg->lb_token_mdelem_storage = pick_args->lb_token_mdelem_storage; wc_arg->initial_metadata = pick_args->initial_metadata; wc_arg->free_when_done = wc_arg; - pick_done = - pick_from_internal_rr_locked(exec_ctx, glb_policy, pick_args, - false /* force_async */, target, wc_arg); + pick_done = pick_from_internal_rr_locked( + glb_policy, pick_args, false /* force_async */, target, wc_arg); } else { if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_DEBUG, @@ -1200,7 +1182,7 @@ static int glb_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, on_complete); if (!glb_policy->started_picking) { - start_picking_locked(exec_ctx, glb_policy); + start_picking_locked(glb_policy); } pick_done = false; } @@ -1208,37 +1190,33 @@ static int glb_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, } static grpc_connectivity_state glb_check_connectivity_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, - grpc_error **connectivity_error) { + grpc_lb_policy *pol, grpc_error **connectivity_error) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; return grpc_connectivity_state_get(&glb_policy->state_tracker, connectivity_error); } -static void glb_ping_one_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, - grpc_closure *closure) { +static void glb_ping_one_locked(grpc_lb_policy *pol, grpc_closure *closure) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; if (glb_policy->rr_policy) { - grpc_lb_policy_ping_one_locked(exec_ctx, glb_policy->rr_policy, closure); + grpc_lb_policy_ping_one_locked(glb_policy->rr_policy, closure); } else { add_pending_ping(&glb_policy->pending_pings, closure); if (!glb_policy->started_picking) { - start_picking_locked(exec_ctx, glb_policy); + start_picking_locked(glb_policy); } } } -static void glb_notify_on_state_change_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *pol, +static void glb_notify_on_state_change_locked(grpc_lb_policy *pol, grpc_connectivity_state *current, grpc_closure *notify) { glb_lb_policy *glb_policy = (glb_lb_policy *)pol; - grpc_connectivity_state_notify_on_state_change( - exec_ctx, &glb_policy->state_tracker, current, notify); + grpc_connectivity_state_notify_on_state_change(&glb_policy->state_tracker, + current, notify); } -static void lb_call_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void lb_call_on_retry_timer_locked(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; glb_policy->retry_timer_active = false; if (!glb_policy->shutting_down && error == GRPC_ERROR_NONE) { @@ -1247,27 +1225,26 @@ static void lb_call_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, (void *)glb_policy); } GPR_ASSERT(glb_policy->lb_call == NULL); - query_for_backends_locked(exec_ctx, glb_policy); + query_for_backends_locked(glb_policy); } - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, "grpclb_retry_timer"); + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "grpclb_retry_timer"); } -static void maybe_restart_lb_call(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void maybe_restart_lb_call(glb_lb_policy *glb_policy) { if (glb_policy->started_picking && glb_policy->updating_lb_call) { if (glb_policy->retry_timer_active) { - grpc_timer_cancel(exec_ctx, &glb_policy->lb_call_retry_timer); + grpc_timer_cancel(&glb_policy->lb_call_retry_timer); } - if (!glb_policy->shutting_down) start_picking_locked(exec_ctx, glb_policy); + if (!glb_policy->shutting_down) start_picking_locked(glb_policy); glb_policy->updating_lb_call = false; } else if (!glb_policy->shutting_down) { /* if we aren't shutting down, restart the LB client call after some time */ grpc_millis next_try = - grpc_backoff_step(exec_ctx, &glb_policy->lb_call_backoff_state); + grpc_backoff_step(&glb_policy->lb_call_backoff_state); if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_DEBUG, "Connection to LB server lost (grpclb: %p)...", (void *)glb_policy); - grpc_millis timeout = next_try - grpc_exec_ctx_now(exec_ctx); + grpc_millis timeout = next_try - grpc_exec_ctx_now(); if (timeout > 0) { gpr_log(GPR_DEBUG, "... retry_timer_active in %" PRIdPTR "ms.", timeout); @@ -1280,40 +1257,36 @@ static void maybe_restart_lb_call(grpc_exec_ctx *exec_ctx, lb_call_on_retry_timer_locked, glb_policy, grpc_combiner_scheduler(glb_policy->base.combiner)); glb_policy->retry_timer_active = true; - grpc_timer_init(exec_ctx, &glb_policy->lb_call_retry_timer, next_try, + grpc_timer_init(&glb_policy->lb_call_retry_timer, next_try, &glb_policy->lb_on_call_retry); } - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "lb_on_server_status_received_locked"); } -static void send_client_load_report_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); +static void send_client_load_report_locked(void *arg, grpc_error *error); -static void schedule_next_client_load_report(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void schedule_next_client_load_report(glb_lb_policy *glb_policy) { const grpc_millis next_client_load_report_time = - grpc_exec_ctx_now(exec_ctx) + glb_policy->client_stats_report_interval; + grpc_exec_ctx_now() + glb_policy->client_stats_report_interval; GRPC_CLOSURE_INIT(&glb_policy->client_load_report_closure, send_client_load_report_locked, glb_policy, grpc_combiner_scheduler(glb_policy->base.combiner)); - grpc_timer_init(exec_ctx, &glb_policy->client_load_report_timer, + grpc_timer_init(&glb_policy->client_load_report_timer, next_client_load_report_time, &glb_policy->client_load_report_closure); } -static void client_load_report_done_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void client_load_report_done_locked(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; grpc_byte_buffer_destroy(glb_policy->client_load_report_payload); glb_policy->client_load_report_payload = NULL; if (error != GRPC_ERROR_NONE || glb_policy->lb_call == NULL) { glb_policy->client_load_report_timer_pending = false; - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, - "client_load_report"); + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "client_load_report"); return; } - schedule_next_client_load_report(exec_ctx, glb_policy); + schedule_next_client_load_report(glb_policy); } static bool load_report_counters_are_zero(grpc_grpclb_request *request) { @@ -1328,15 +1301,13 @@ static bool load_report_counters_are_zero(grpc_grpclb_request *request) { (drop_entries == NULL || drop_entries->num_entries == 0); } -static void send_client_load_report_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void send_client_load_report_locked(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; if (error == GRPC_ERROR_CANCELLED || glb_policy->lb_call == NULL) { glb_policy->client_load_report_timer_pending = false; - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, - "client_load_report"); + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "client_load_report"); if (glb_policy->lb_call == NULL) { - maybe_restart_lb_call(exec_ctx, glb_policy); + maybe_restart_lb_call(glb_policy); } return; } @@ -1349,7 +1320,7 @@ static void send_client_load_report_locked(grpc_exec_ctx *exec_ctx, void *arg, if (load_report_counters_are_zero(request)) { if (glb_policy->last_client_load_report_counters_were_zero) { grpc_grpclb_request_destroy(request); - schedule_next_client_load_report(exec_ctx, glb_policy); + schedule_next_client_load_report(glb_policy); return; } glb_policy->last_client_load_report_counters_were_zero = true; @@ -1359,7 +1330,7 @@ static void send_client_load_report_locked(grpc_exec_ctx *exec_ctx, void *arg, grpc_slice request_payload_slice = grpc_grpclb_request_encode(request); glb_policy->client_load_report_payload = grpc_raw_byte_buffer_create(&request_payload_slice, 1); - grpc_slice_unref_internal(exec_ctx, request_payload_slice); + grpc_slice_unref_internal(request_payload_slice); grpc_grpclb_request_destroy(request); // Send load report message. grpc_op op; @@ -1370,20 +1341,16 @@ static void send_client_load_report_locked(grpc_exec_ctx *exec_ctx, void *arg, client_load_report_done_locked, glb_policy, grpc_combiner_scheduler(glb_policy->base.combiner)); grpc_call_error call_error = grpc_call_start_batch_and_execute( - exec_ctx, glb_policy->lb_call, &op, 1, - &glb_policy->client_load_report_closure); + glb_policy->lb_call, &op, 1, &glb_policy->client_load_report_closure); if (call_error != GRPC_CALL_OK) { gpr_log(GPR_ERROR, "call_error=%d", call_error); GPR_ASSERT(GRPC_CALL_OK == call_error); } } -static void lb_on_server_status_received_locked(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error); -static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); -static void lb_call_init_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void lb_on_server_status_received_locked(void *arg, grpc_error *error); +static void lb_on_response_received_locked(void *arg, grpc_error *error); +static void lb_call_init_locked(glb_lb_policy *glb_policy) { GPR_ASSERT(glb_policy->server_name != NULL); GPR_ASSERT(glb_policy->server_name[0] != '\0'); GPR_ASSERT(glb_policy->lb_call == NULL); @@ -1396,13 +1363,13 @@ static void lb_call_init_locked(grpc_exec_ctx *exec_ctx, grpc_millis deadline = glb_policy->lb_call_timeout_ms == 0 ? GRPC_MILLIS_INF_FUTURE - : grpc_exec_ctx_now(exec_ctx) + glb_policy->lb_call_timeout_ms; + : grpc_exec_ctx_now() + glb_policy->lb_call_timeout_ms; glb_policy->lb_call = grpc_channel_create_pollset_set_call( - exec_ctx, glb_policy->lb_channel, NULL, GRPC_PROPAGATE_DEFAULTS, + glb_policy->lb_channel, NULL, GRPC_PROPAGATE_DEFAULTS, glb_policy->base.interested_parties, GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD, &host, deadline, NULL); - grpc_slice_unref_internal(exec_ctx, host); + grpc_slice_unref_internal(host); if (glb_policy->client_stats != NULL) { grpc_grpclb_client_stats_unref(glb_policy->client_stats); @@ -1417,7 +1384,7 @@ static void lb_call_init_locked(grpc_exec_ctx *exec_ctx, grpc_slice request_payload_slice = grpc_grpclb_request_encode(request); glb_policy->lb_request_payload = grpc_raw_byte_buffer_create(&request_payload_slice, 1); - grpc_slice_unref_internal(exec_ctx, request_payload_slice); + grpc_slice_unref_internal(request_payload_slice); grpc_grpclb_request_destroy(request); GRPC_CLOSURE_INIT(&glb_policy->lb_on_server_status_received, @@ -1438,8 +1405,7 @@ static void lb_call_init_locked(grpc_exec_ctx *exec_ctx, glb_policy->last_client_load_report_counters_were_zero = false; } -static void lb_call_destroy_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void lb_call_destroy_locked(glb_lb_policy *glb_policy) { GPR_ASSERT(glb_policy->lb_call != NULL); grpc_call_unref(glb_policy->lb_call); glb_policy->lb_call = NULL; @@ -1448,22 +1414,21 @@ static void lb_call_destroy_locked(grpc_exec_ctx *exec_ctx, grpc_metadata_array_destroy(&glb_policy->lb_trailing_metadata_recv); grpc_byte_buffer_destroy(glb_policy->lb_request_payload); - grpc_slice_unref_internal(exec_ctx, glb_policy->lb_call_status_details); + grpc_slice_unref_internal(glb_policy->lb_call_status_details); if (glb_policy->client_load_report_timer_pending) { - grpc_timer_cancel(exec_ctx, &glb_policy->client_load_report_timer); + grpc_timer_cancel(&glb_policy->client_load_report_timer); } } /* * Auxiliary functions and LB client callbacks. */ -static void query_for_backends_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy) { +static void query_for_backends_locked(glb_lb_policy *glb_policy) { GPR_ASSERT(glb_policy->lb_channel != NULL); if (glb_policy->shutting_down) return; - lb_call_init_locked(exec_ctx, glb_policy); + lb_call_init_locked(glb_policy); if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_INFO, @@ -1495,8 +1460,8 @@ static void query_for_backends_locked(grpc_exec_ctx *exec_ctx, op->flags = 0; op->reserved = NULL; op++; - call_error = grpc_call_start_batch_and_execute(exec_ctx, glb_policy->lb_call, - ops, (size_t)(op - ops), NULL); + call_error = grpc_call_start_batch_and_execute(glb_policy->lb_call, ops, + (size_t)(op - ops), NULL); GPR_ASSERT(GRPC_CALL_OK == call_error); op = ops; @@ -1514,7 +1479,7 @@ static void query_for_backends_locked(grpc_exec_ctx *exec_ctx, GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "lb_on_server_status_received_locked"); call_error = grpc_call_start_batch_and_execute( - exec_ctx, glb_policy->lb_call, ops, (size_t)(op - ops), + glb_policy->lb_call, ops, (size_t)(op - ops), &glb_policy->lb_on_server_status_received); GPR_ASSERT(GRPC_CALL_OK == call_error); @@ -1528,13 +1493,12 @@ static void query_for_backends_locked(grpc_exec_ctx *exec_ctx, * lb_on_response_received_locked */ GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "lb_on_response_received_locked"); call_error = grpc_call_start_batch_and_execute( - exec_ctx, glb_policy->lb_call, ops, (size_t)(op - ops), + glb_policy->lb_call, ops, (size_t)(op - ops), &glb_policy->lb_on_response_received); GPR_ASSERT(GRPC_CALL_OK == call_error); } -static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void lb_on_response_received_locked(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; grpc_op ops[2]; memset(ops, 0, sizeof(ops)); @@ -1568,7 +1532,7 @@ static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, * send_client_load_report_locked() */ glb_policy->client_load_report_timer_pending = true; GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "client_load_report"); - schedule_next_client_load_report(exec_ctx, glb_policy); + schedule_next_client_load_report(glb_policy); } else if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_INFO, "received initial LB response message; " @@ -1608,11 +1572,10 @@ static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, grpc_grpclb_destroy_serverlist(glb_policy->serverlist); } else { /* or dispose of the fallback */ - grpc_lb_addresses_destroy(exec_ctx, - glb_policy->fallback_backend_addresses); + grpc_lb_addresses_destroy(glb_policy->fallback_backend_addresses); glb_policy->fallback_backend_addresses = NULL; if (glb_policy->fallback_timer_active) { - grpc_timer_cancel(exec_ctx, &glb_policy->lb_fallback_timer); + grpc_timer_cancel(&glb_policy->lb_fallback_timer); glb_policy->fallback_timer_active = false; } } @@ -1621,7 +1584,7 @@ static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, * update or in glb_destroy() */ glb_policy->serverlist = serverlist; glb_policy->serverlist_index = 0; - rr_handover_locked(exec_ctx, glb_policy); + rr_handover_locked(glb_policy); } } else { if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { @@ -1634,7 +1597,7 @@ static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX)); } } - grpc_slice_unref_internal(exec_ctx, response_slice); + grpc_slice_unref_internal(response_slice); if (!glb_policy->shutting_down) { /* keep listening for serverlist updates */ op->op = GRPC_OP_RECV_MESSAGE; @@ -1645,23 +1608,22 @@ static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg, /* reuse the "lb_on_response_received_locked" weak ref taken in * query_for_backends_locked() */ const grpc_call_error call_error = grpc_call_start_batch_and_execute( - exec_ctx, glb_policy->lb_call, ops, (size_t)(op - ops), + glb_policy->lb_call, ops, (size_t)(op - ops), &glb_policy->lb_on_response_received); /* loop */ GPR_ASSERT(GRPC_CALL_OK == call_error); } else { - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "lb_on_response_received_locked_shutdown"); } } else { /* empty payload: call cancelled. */ /* dispose of the "lb_on_response_received_locked" weak ref taken in * query_for_backends_locked() and reused in every reception loop */ - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "lb_on_response_received_locked_empty_payload"); } } -static void lb_on_fallback_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void lb_on_fallback_timer_locked(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; glb_policy->fallback_timer_active = false; /* If we receive a serverlist after the timer fires but before this callback @@ -1674,15 +1636,13 @@ static void lb_on_fallback_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, (void *)glb_policy); } GPR_ASSERT(glb_policy->fallback_backend_addresses != NULL); - rr_handover_locked(exec_ctx, glb_policy); + rr_handover_locked(glb_policy); } } - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, - "grpclb_fallback_timer"); + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "grpclb_fallback_timer"); } -static void lb_on_server_status_received_locked(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void lb_on_server_status_received_locked(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; GPR_ASSERT(glb_policy->lb_call != NULL); if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { @@ -1696,29 +1656,28 @@ static void lb_on_server_status_received_locked(grpc_exec_ctx *exec_ctx, gpr_free(status_details); } /* We need to perform cleanups no matter what. */ - lb_call_destroy_locked(exec_ctx, glb_policy); + lb_call_destroy_locked(glb_policy); // If the load report timer is still pending, we wait for it to be // called before restarting the call. Otherwise, we restart the call // here. if (!glb_policy->client_load_report_timer_pending) { - maybe_restart_lb_call(exec_ctx, glb_policy); + maybe_restart_lb_call(glb_policy); } } -static void fallback_update_locked(grpc_exec_ctx *exec_ctx, - glb_lb_policy *glb_policy, +static void fallback_update_locked(glb_lb_policy *glb_policy, const grpc_lb_addresses *addresses) { GPR_ASSERT(glb_policy->fallback_backend_addresses != NULL); - grpc_lb_addresses_destroy(exec_ctx, glb_policy->fallback_backend_addresses); + grpc_lb_addresses_destroy(glb_policy->fallback_backend_addresses); glb_policy->fallback_backend_addresses = - extract_backend_addresses_locked(exec_ctx, addresses); + extract_backend_addresses_locked(addresses); if (glb_policy->lb_fallback_timeout_ms > 0 && !glb_policy->fallback_timer_active) { - rr_handover_locked(exec_ctx, glb_policy); + rr_handover_locked(glb_policy); } } -static void glb_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, +static void glb_update_locked(grpc_lb_policy *policy, const grpc_lb_policy_args *args) { glb_lb_policy *glb_policy = (glb_lb_policy *)policy; const grpc_arg *arg = @@ -1728,7 +1687,7 @@ static void glb_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, // If we don't have a current channel to the LB, go into TRANSIENT // FAILURE. grpc_connectivity_state_set( - exec_ctx, &glb_policy->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &glb_policy->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing update in args"), "glb_update_missing"); } else { @@ -1745,16 +1704,16 @@ static void glb_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, // If a non-empty serverlist hasn't been received from the balancer, // propagate the update to fallback_backend_addresses. if (glb_policy->serverlist == NULL) { - fallback_update_locked(exec_ctx, glb_policy, addresses); + fallback_update_locked(glb_policy, addresses); } GPR_ASSERT(glb_policy->lb_channel != NULL); // Propagate updates to the LB channel (pick_first) through the fake // resolver. grpc_channel_args *lb_channel_args = build_lb_channel_args( - exec_ctx, addresses, glb_policy->response_generator, args->args); + addresses, glb_policy->response_generator, args->args); grpc_fake_resolver_response_generator_set_response( - exec_ctx, glb_policy->response_generator, lb_channel_args); - grpc_channel_args_destroy(exec_ctx, lb_channel_args); + glb_policy->response_generator, lb_channel_args); + grpc_channel_args_destroy(lb_channel_args); // Start watching the LB channel connectivity for connection, if not // already doing so. if (!glb_policy->watching_lb_channel) { @@ -1766,9 +1725,8 @@ static void glb_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, glb_policy->watching_lb_channel = true; GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "watch_lb_channel_connectivity"); grpc_client_channel_watch_connectivity_state( - exec_ctx, client_channel_elem, - grpc_polling_entity_create_from_pollset_set( - glb_policy->base.interested_parties), + client_channel_elem, grpc_polling_entity_create_from_pollset_set( + glb_policy->base.interested_parties), &glb_policy->lb_channel_connectivity, &glb_policy->lb_channel_on_connectivity_changed, NULL); } @@ -1777,8 +1735,7 @@ static void glb_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, // Invoked as part of the update process. It continues watching the LB channel // until it shuts down or becomes READY. It's invoked even if the LB channel // stayed READY throughout the update (for example if the update is identical). -static void glb_lb_channel_on_connectivity_changed_cb(grpc_exec_ctx *exec_ctx, - void *arg, +static void glb_lb_channel_on_connectivity_changed_cb(void *arg, grpc_error *error) { glb_lb_policy *glb_policy = (glb_lb_policy *)arg; if (glb_policy->shutting_down) goto done; @@ -1795,9 +1752,8 @@ static void glb_lb_channel_on_connectivity_changed_cb(grpc_exec_ctx *exec_ctx, grpc_channel_get_channel_stack(glb_policy->lb_channel)); GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter); grpc_client_channel_watch_connectivity_state( - exec_ctx, client_channel_elem, - grpc_polling_entity_create_from_pollset_set( - glb_policy->base.interested_parties), + client_channel_elem, grpc_polling_entity_create_from_pollset_set( + glb_policy->base.interested_parties), &glb_policy->lb_channel_connectivity, &glb_policy->lb_channel_on_connectivity_changed, NULL); break; @@ -1815,16 +1771,16 @@ static void glb_lb_channel_on_connectivity_changed_cb(grpc_exec_ctx *exec_ctx, // lb_call. } else if (glb_policy->started_picking && !glb_policy->shutting_down) { if (glb_policy->retry_timer_active) { - grpc_timer_cancel(exec_ctx, &glb_policy->lb_call_retry_timer); + grpc_timer_cancel(&glb_policy->lb_call_retry_timer); glb_policy->retry_timer_active = false; } - start_picking_locked(exec_ctx, glb_policy); + start_picking_locked(glb_policy); } /* fallthrough */ case GRPC_CHANNEL_SHUTDOWN: done: glb_policy->watching_lb_channel = false; - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base, + GRPC_LB_POLICY_WEAK_UNREF(&glb_policy->base, "watch_lb_channel_connectivity_cb_shutdown"); break; } @@ -1843,8 +1799,7 @@ static const grpc_lb_policy_vtable glb_lb_policy_vtable = { glb_notify_on_state_change_locked, glb_update_locked}; -static grpc_lb_policy *glb_create(grpc_exec_ctx *exec_ctx, - grpc_lb_policy_factory *factory, +static grpc_lb_policy *glb_create(grpc_lb_policy_factory *factory, grpc_lb_policy_args *args) { /* Count the number of gRPC-LB addresses. There must be at least one. */ const grpc_arg *arg = @@ -1865,7 +1820,7 @@ static grpc_lb_policy *glb_create(grpc_exec_ctx *exec_ctx, arg = grpc_channel_args_find(args->args, GRPC_ARG_SERVER_URI); GPR_ASSERT(arg != NULL); GPR_ASSERT(arg->type == GRPC_ARG_STRING); - grpc_uri *uri = grpc_uri_parse(exec_ctx, arg->value.string, true); + grpc_uri *uri = grpc_uri_parse(arg->value.string, true); GPR_ASSERT(uri->path[0] != '\0'); glb_policy->server_name = gpr_strdup(uri->path[0] == '/' ? uri->path + 1 : uri->path); @@ -1897,26 +1852,26 @@ static grpc_lb_policy *glb_create(grpc_exec_ctx *exec_ctx, /* Extract the backend addresses (may be empty) from the resolver for * fallback. */ glb_policy->fallback_backend_addresses = - extract_backend_addresses_locked(exec_ctx, addresses); + extract_backend_addresses_locked(addresses); /* Create a client channel over them to communicate with a LB service */ glb_policy->response_generator = grpc_fake_resolver_response_generator_create(); grpc_channel_args *lb_channel_args = build_lb_channel_args( - exec_ctx, addresses, glb_policy->response_generator, args->args); + addresses, glb_policy->response_generator, args->args); char *uri_str; gpr_asprintf(&uri_str, "fake:///%s", glb_policy->server_name); glb_policy->lb_channel = grpc_lb_policy_grpclb_create_lb_channel( - exec_ctx, uri_str, args->client_channel_factory, lb_channel_args); + uri_str, args->client_channel_factory, lb_channel_args); /* Propagate initial resolution */ grpc_fake_resolver_response_generator_set_response( - exec_ctx, glb_policy->response_generator, lb_channel_args); - grpc_channel_args_destroy(exec_ctx, lb_channel_args); + glb_policy->response_generator, lb_channel_args); + grpc_channel_args_destroy(lb_channel_args); gpr_free(uri_str); if (glb_policy->lb_channel == NULL) { gpr_free((void *)glb_policy->server_name); - grpc_channel_args_destroy(exec_ctx, glb_policy->args); + grpc_channel_args_destroy(glb_policy->args); gpr_free(glb_policy); return NULL; } @@ -1947,7 +1902,7 @@ grpc_lb_policy_factory *grpc_glb_lb_factory_create() { // Only add client_load_reporting filter if the grpclb LB policy is used. static bool maybe_add_client_load_reporting_filter( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, void *arg) { + grpc_channel_stack_builder *builder, void *arg) { const grpc_channel_args *args = grpc_channel_stack_builder_get_channel_arguments(builder); const grpc_arg *channel_arg = diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc index f2967182e2d..8871f10d14b 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc @@ -26,17 +26,17 @@ #include "src/core/lib/support/string.h" grpc_channel *grpc_lb_policy_grpclb_create_lb_channel( - grpc_exec_ctx *exec_ctx, const char *lb_service_target_addresses, + const char *lb_service_target_addresses, grpc_client_channel_factory *client_channel_factory, grpc_channel_args *args) { grpc_channel *lb_channel = grpc_client_channel_factory_create_channel( - exec_ctx, client_channel_factory, lb_service_target_addresses, + client_channel_factory, lb_service_target_addresses, GRPC_CLIENT_CHANNEL_TYPE_LOAD_BALANCING, args); return lb_channel; } grpc_channel_args *grpc_lb_policy_grpclb_build_lb_channel_args( - grpc_exec_ctx *exec_ctx, grpc_slice_hash_table *targets_info, + grpc_slice_hash_table *targets_info, grpc_fake_resolver_response_generator *response_generator, const grpc_channel_args *args) { const grpc_arg to_add[] = { diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h index e8599d1f51c..c3d2de82228 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h @@ -35,12 +35,12 @@ extern "C" { * \a client_channel_factory will be used for the creation of the LB channel, * alongside the channel args passed in \a args. */ grpc_channel *grpc_lb_policy_grpclb_create_lb_channel( - grpc_exec_ctx *exec_ctx, const char *lb_service_target_addresses, + const char *lb_service_target_addresses, grpc_client_channel_factory *client_channel_factory, grpc_channel_args *args); grpc_channel_args *grpc_lb_policy_grpclb_build_lb_channel_args( - grpc_exec_ctx *exec_ctx, grpc_slice_hash_table *targets_info, + grpc_slice_hash_table *targets_info, grpc_fake_resolver_response_generator *response_generator, const grpc_channel_args *args); diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc index 2681b2a079c..b5a6e650b1c 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc @@ -29,7 +29,7 @@ #include "src/core/lib/support/string.h" grpc_channel *grpc_lb_policy_grpclb_create_lb_channel( - grpc_exec_ctx *exec_ctx, const char *lb_service_target_addresses, + const char *lb_service_target_addresses, grpc_client_channel_factory *client_channel_factory, grpc_channel_args *args) { grpc_channel_args *new_args = args; @@ -50,19 +50,19 @@ grpc_channel *grpc_lb_policy_grpclb_create_lb_channel( new_args = grpc_channel_args_copy_and_add_and_remove( args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), args_to_add, GPR_ARRAY_SIZE(args_to_add)); - grpc_channel_credentials_unref(exec_ctx, creds_sans_call_creds); + grpc_channel_credentials_unref(creds_sans_call_creds); } grpc_channel *lb_channel = grpc_client_channel_factory_create_channel( - exec_ctx, client_channel_factory, lb_service_target_addresses, + client_channel_factory, lb_service_target_addresses, GRPC_CLIENT_CHANNEL_TYPE_LOAD_BALANCING, new_args); if (channel_credentials != NULL) { - grpc_channel_args_destroy(exec_ctx, new_args); + grpc_channel_args_destroy(new_args); } return lb_channel; } grpc_channel_args *grpc_lb_policy_grpclb_build_lb_channel_args( - grpc_exec_ctx *exec_ctx, grpc_slice_hash_table *targets_info, + grpc_slice_hash_table *targets_info, grpc_fake_resolver_response_generator *response_generator, const grpc_channel_args *args) { const grpc_arg to_add[] = { diff --git a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc index b07fc3b720b..5e638d9c86c 100644 --- a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +++ b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc @@ -78,20 +78,19 @@ typedef struct { grpc_connectivity_state_tracker state_tracker; } pick_first_lb_policy; -static void pf_destroy(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void pf_destroy(grpc_lb_policy *pol) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; GPR_ASSERT(p->pending_picks == NULL); for (size_t i = 0; i < p->num_subchannels; i++) { - GRPC_SUBCHANNEL_UNREF(exec_ctx, p->subchannels[i], "pick_first_destroy"); + GRPC_SUBCHANNEL_UNREF(p->subchannels[i], "pick_first_destroy"); } if (p->selected != NULL) { - GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, p->selected, - "picked_first_destroy"); + GRPC_CONNECTED_SUBCHANNEL_UNREF(p->selected, "picked_first_destroy"); } - grpc_connectivity_state_destroy(exec_ctx, &p->state_tracker); + grpc_connectivity_state_destroy(&p->state_tracker); grpc_subchannel_index_unref(); if (p->pending_update_args != NULL) { - grpc_channel_args_destroy(exec_ctx, p->pending_update_args->args); + grpc_channel_args_destroy(p->pending_update_args->args); gpr_free(p->pending_update_args); } gpr_free(p->subchannels); @@ -102,34 +101,34 @@ static void pf_destroy(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { } } -static void pf_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void pf_shutdown_locked(grpc_lb_policy *pol) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; pending_pick *pp; p->shutdown = true; pp = p->pending_picks; p->pending_picks = NULL; grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_SHUTDOWN, + &p->state_tracker, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel shutdown"), "shutdown"); /* cancel subscription */ if (p->selected != NULL) { - grpc_connected_subchannel_notify_on_state_change( - exec_ctx, p->selected, NULL, NULL, &p->connectivity_changed); + grpc_connected_subchannel_notify_on_state_change(p->selected, NULL, NULL, + &p->connectivity_changed); } else if (p->num_subchannels > 0 && p->started_picking) { grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], NULL, NULL, + p->subchannels[p->checking_subchannel], NULL, NULL, &p->connectivity_changed); } while (pp != NULL) { pending_pick *next = pp->next; *pp->target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_NONE); gpr_free(pp); pp = next; } } -static void pf_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static void pf_cancel_pick_locked(grpc_lb_policy *pol, grpc_connected_subchannel **target, grpc_error *error) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; @@ -140,7 +139,7 @@ static void pf_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, pending_pick *next = pp->next; if (pp->target == target) { *target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick Cancelled", &error, 1)); gpr_free(pp); @@ -153,7 +152,7 @@ static void pf_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, GRPC_ERROR_UNREF(error); } -static void pf_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static void pf_cancel_picks_locked(grpc_lb_policy *pol, uint32_t initial_metadata_flags_mask, uint32_t initial_metadata_flags_eq, grpc_error *error) { @@ -165,7 +164,7 @@ static void pf_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, pending_pick *next = pp->next; if ((pp->initial_metadata_flags & initial_metadata_flags_mask) == initial_metadata_flags_eq) { - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick Cancelled", &error, 1)); gpr_free(pp); @@ -178,8 +177,7 @@ static void pf_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, GRPC_ERROR_UNREF(error); } -static void start_picking_locked(grpc_exec_ctx *exec_ctx, - pick_first_lb_policy *p) { +static void start_picking_locked(pick_first_lb_policy *p) { p->started_picking = true; if (p->subchannels != NULL) { GPR_ASSERT(p->num_subchannels > 0); @@ -187,20 +185,19 @@ static void start_picking_locked(grpc_exec_ctx *exec_ctx, p->checking_connectivity = GRPC_CHANNEL_IDLE; GRPC_LB_POLICY_WEAK_REF(&p->base, "pick_first_connectivity"); grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], - p->base.interested_parties, &p->checking_connectivity, - &p->connectivity_changed); + p->subchannels[p->checking_subchannel], p->base.interested_parties, + &p->checking_connectivity, &p->connectivity_changed); } } -static void pf_exit_idle_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void pf_exit_idle_locked(grpc_lb_policy *pol) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; if (!p->started_picking) { - start_picking_locked(exec_ctx, p); + start_picking_locked(p); } } -static int pf_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static int pf_pick_locked(grpc_lb_policy *pol, const grpc_lb_policy_pick_args *pick_args, grpc_connected_subchannel **target, grpc_call_context_element *context, void **user_data, @@ -216,7 +213,7 @@ static int pf_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, /* No subchannel selected yet, so try again */ if (!p->started_picking) { - start_picking_locked(exec_ctx, p); + start_picking_locked(p); } pp = (pending_pick *)gpr_malloc(sizeof(*pp)); pp->next = p->pending_picks; @@ -227,50 +224,46 @@ static int pf_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, return 0; } -static void destroy_subchannels_locked(grpc_exec_ctx *exec_ctx, - pick_first_lb_policy *p) { +static void destroy_subchannels_locked(pick_first_lb_policy *p) { size_t num_subchannels = p->num_subchannels; grpc_subchannel **subchannels = p->subchannels; p->num_subchannels = 0; p->subchannels = NULL; - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, "destroy_subchannels"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "destroy_subchannels"); for (size_t i = 0; i < num_subchannels; i++) { - GRPC_SUBCHANNEL_UNREF(exec_ctx, subchannels[i], "pick_first"); + GRPC_SUBCHANNEL_UNREF(subchannels[i], "pick_first"); } gpr_free(subchannels); } static grpc_connectivity_state pf_check_connectivity_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, grpc_error **error) { + grpc_lb_policy *pol, grpc_error **error) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; return grpc_connectivity_state_get(&p->state_tracker, error); } -static void pf_notify_on_state_change_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *pol, +static void pf_notify_on_state_change_locked(grpc_lb_policy *pol, grpc_connectivity_state *current, grpc_closure *notify) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; - grpc_connectivity_state_notify_on_state_change(exec_ctx, &p->state_tracker, - current, notify); + grpc_connectivity_state_notify_on_state_change(&p->state_tracker, current, + notify); } -static void pf_ping_one_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, - grpc_closure *closure) { +static void pf_ping_one_locked(grpc_lb_policy *pol, grpc_closure *closure) { pick_first_lb_policy *p = (pick_first_lb_policy *)pol; if (p->selected) { - grpc_connected_subchannel_ping(exec_ctx, p->selected, closure); + grpc_connected_subchannel_ping(p->selected, closure); } else { - GRPC_CLOSURE_SCHED(exec_ctx, closure, + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Not connected")); } } /* unsubscribe all subchannels */ -static void stop_connectivity_watchers(grpc_exec_ctx *exec_ctx, - pick_first_lb_policy *p) { +static void stop_connectivity_watchers(pick_first_lb_policy *p) { if (p->num_subchannels > 0) { GPR_ASSERT(p->selected == NULL); if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { @@ -278,7 +271,7 @@ static void stop_connectivity_watchers(grpc_exec_ctx *exec_ctx, (void *)p, (void *)p->subchannels[p->checking_subchannel]); } grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], NULL, NULL, + p->subchannels[p->checking_subchannel], NULL, NULL, &p->connectivity_changed); p->updating_subchannels = true; } else if (p->selected != NULL) { @@ -287,14 +280,14 @@ static void stop_connectivity_watchers(grpc_exec_ctx *exec_ctx, "Pick First %p unsubscribing from selected subchannel %p", (void *)p, (void *)p->selected); } - grpc_connected_subchannel_notify_on_state_change( - exec_ctx, p->selected, NULL, NULL, &p->connectivity_changed); + grpc_connected_subchannel_notify_on_state_change(p->selected, NULL, NULL, + &p->connectivity_changed); p->updating_selected = true; } } /* true upon success */ -static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, +static void pf_update_locked(grpc_lb_policy *policy, const grpc_lb_policy_args *args) { pick_first_lb_policy *p = (pick_first_lb_policy *)policy; const grpc_arg *arg = @@ -303,7 +296,7 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, if (p->subchannels == NULL) { // If we don't have a current subchannel list, go into TRANSIENT FAILURE. grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing update in args"), "pf_update_missing"); } else { @@ -321,10 +314,10 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, // Empty update. Unsubscribe from all current subchannels and put the // channel in TRANSIENT_FAILURE. grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"), "pf_update_empty"); - stop_connectivity_watchers(exec_ctx, p); + stop_connectivity_watchers(p); return; } if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { @@ -363,7 +356,7 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, grpc_subchannel_key *ith_sc_key = grpc_subchannel_key_create(&sc_args[i]); const bool found_selected = grpc_subchannel_key_compare(p->selected_key, ith_sc_key) == 0; - grpc_subchannel_key_destroy(exec_ctx, ith_sc_key); + grpc_subchannel_key_destroy(ith_sc_key); if (found_selected) { // The currently selected subchannel is in the update: we are done. if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { @@ -373,8 +366,7 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, (void *)p, (void *)p->selected); } for (size_t j = 0; j < sc_args_count; j++) { - grpc_channel_args_destroy(exec_ctx, - (grpc_channel_args *)sc_args[j].args); + grpc_channel_args_destroy((grpc_channel_args *)sc_args[j].args); } gpr_free(sc_args); return; @@ -391,7 +383,7 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, (void *)p); } if (p->pending_update_args != NULL) { - grpc_channel_args_destroy(exec_ctx, p->pending_update_args->args); + grpc_channel_args_destroy(p->pending_update_args->args); gpr_free(p->pending_update_args); } p->pending_update_args = @@ -408,7 +400,7 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, size_t num_new_subchannels = 0; for (size_t i = 0; i < sc_args_count; i++) { grpc_subchannel *subchannel = grpc_client_channel_factory_create_subchannel( - exec_ctx, args->client_channel_factory, &sc_args[i]); + args->client_channel_factory, &sc_args[i]); if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { char *address_uri = grpc_sockaddr_to_uri(&addresses->addresses[i].address); @@ -417,7 +409,7 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, (void *)p, (void *)subchannel, address_uri); gpr_free(address_uri); } - grpc_channel_args_destroy(exec_ctx, (grpc_channel_args *)sc_args[i].args); + grpc_channel_args_destroy((grpc_channel_args *)sc_args[i].args); if (subchannel != NULL) new_subchannels[num_new_subchannels++] = subchannel; } gpr_free(sc_args); @@ -426,15 +418,15 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, // Empty update. Unsubscribe from all current subchannels and put the // channel in TRANSIENT_FAILURE. grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("No valid addresses in update"), "pf_update_no_valid_addresses"); - stop_connectivity_watchers(exec_ctx, p); + stop_connectivity_watchers(p); return; } /* Destroy the current subchannels. Repurpose pf_shutdown/destroy. */ - stop_connectivity_watchers(exec_ctx, p); + stop_connectivity_watchers(p); /* Save new subchannels. The switch over will happen in * pf_connectivity_changed_locked */ @@ -450,15 +442,13 @@ static void pf_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, p->checking_subchannel = 0; p->checking_connectivity = GRPC_CHANNEL_IDLE; grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], - p->base.interested_parties, &p->checking_connectivity, - &p->connectivity_changed); + p->subchannels[p->checking_subchannel], p->base.interested_parties, + &p->checking_connectivity, &p->connectivity_changed); } } } -static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void pf_connectivity_changed_locked(void *arg, grpc_error *error) { pick_first_lb_policy *p = (pick_first_lb_policy *)arg; grpc_subchannel *selected_subchannel; pending_pick *pp; @@ -476,8 +466,7 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, if (p->updating_selected && error != GRPC_ERROR_NONE) { /* Captured the unsubscription for p->selected */ GPR_ASSERT(p->selected != NULL); - GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, p->selected, - "pf_update_connectivity"); + GRPC_CONNECTED_SUBCHANNEL_UNREF(p->selected, "pf_update_connectivity"); if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { gpr_log(GPR_DEBUG, "Pick First %p unreffing selected subchannel %p", (void *)p, (void *)p->selected); @@ -493,8 +482,7 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, /* Captured the unsubscription for the checking subchannel */ GPR_ASSERT(p->selected == NULL); for (size_t i = 0; i < p->num_subchannels; i++) { - GRPC_SUBCHANNEL_UNREF(exec_ctx, p->subchannels[i], - "pf_update_connectivity"); + GRPC_SUBCHANNEL_UNREF(p->subchannels[i], "pf_update_connectivity"); if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { gpr_log(GPR_DEBUG, "Pick First %p unreffing subchannel %p", (void *)p, (void *)p->subchannels[i]); @@ -523,20 +511,19 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, p->checking_connectivity = GRPC_CHANNEL_IDLE; /* reuses the weak ref from start_picking_locked */ grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], - p->base.interested_parties, &p->checking_connectivity, - &p->connectivity_changed); + p->subchannels[p->checking_subchannel], p->base.interested_parties, + &p->checking_connectivity, &p->connectivity_changed); } if (p->pending_update_args != NULL) { const grpc_lb_policy_args *args = p->pending_update_args; p->pending_update_args = NULL; - pf_update_locked(exec_ctx, &p->base, args); + pf_update_locked(&p->base, args); } return; } GRPC_ERROR_REF(error); if (p->shutdown) { - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, "pick_first_connectivity"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "pick_first_connectivity"); GRPC_ERROR_UNREF(error); return; } else if (p->selected != NULL) { @@ -544,15 +531,14 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, /* if the selected channel goes bad, we're done */ p->checking_connectivity = GRPC_CHANNEL_SHUTDOWN; } - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, - p->checking_connectivity, GRPC_ERROR_REF(error), - "selected_changed"); + grpc_connectivity_state_set(&p->state_tracker, p->checking_connectivity, + GRPC_ERROR_REF(error), "selected_changed"); if (p->checking_connectivity != GRPC_CHANNEL_SHUTDOWN) { grpc_connected_subchannel_notify_on_state_change( - exec_ctx, p->selected, p->base.interested_parties, - &p->checking_connectivity, &p->connectivity_changed); + p->selected, p->base.interested_parties, &p->checking_connectivity, + &p->connectivity_changed); } else { - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, "pick_first_connectivity"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "pick_first_connectivity"); } } else { loop: @@ -560,9 +546,8 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, case GRPC_CHANNEL_INIT: GPR_UNREACHABLE_CODE(return ); case GRPC_CHANNEL_READY: - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, - GRPC_CHANNEL_READY, GRPC_ERROR_NONE, - "connecting_ready"); + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_READY, + GRPC_ERROR_NONE, "connecting_ready"); selected_subchannel = p->subchannels[p->checking_subchannel]; p->selected = GRPC_CONNECTED_SUBCHANNEL_REF( grpc_subchannel_get_connected_subchannel(selected_subchannel), @@ -576,7 +561,7 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, p->selected_key = grpc_subchannel_get_key(selected_subchannel); /* drop the pick list: we are connected now */ GRPC_LB_POLICY_WEAK_REF(&p->base, "destroy_subchannels"); - destroy_subchannels_locked(exec_ctx, p); + destroy_subchannels_locked(p); /* update any calls that were waiting for a pick */ while ((pp = p->pending_picks)) { p->pending_picks = pp->next; @@ -586,12 +571,12 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, "Servicing pending pick with selected subchannel %p", (void *)p->selected); } - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_NONE); gpr_free(pp); } grpc_connected_subchannel_notify_on_state_change( - exec_ctx, p->selected, p->base.interested_parties, - &p->checking_connectivity, &p->connectivity_changed); + p->selected, p->base.interested_parties, &p->checking_connectivity, + &p->connectivity_changed); break; case GRPC_CHANNEL_TRANSIENT_FAILURE: p->checking_subchannel = @@ -600,7 +585,7 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, /* only trigger transient failure when we've tried all alternatives */ grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_REF(error), "connecting_transient_failure"); } GRPC_ERROR_UNREF(error); @@ -608,7 +593,7 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, p->subchannels[p->checking_subchannel], &error); if (p->checking_connectivity == GRPC_CHANNEL_TRANSIENT_FAILURE) { grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], + p->subchannels[p->checking_subchannel], p->base.interested_parties, &p->checking_connectivity, &p->connectivity_changed); } else { @@ -617,37 +602,34 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, break; case GRPC_CHANNEL_CONNECTING: case GRPC_CHANNEL_IDLE: - grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_CONNECTING, - GRPC_ERROR_REF(error), "connecting_changed"); + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_CONNECTING, + GRPC_ERROR_REF(error), + "connecting_changed"); grpc_subchannel_notify_on_state_change( - exec_ctx, p->subchannels[p->checking_subchannel], - p->base.interested_parties, &p->checking_connectivity, - &p->connectivity_changed); + p->subchannels[p->checking_subchannel], p->base.interested_parties, + &p->checking_connectivity, &p->connectivity_changed); break; case GRPC_CHANNEL_SHUTDOWN: p->num_subchannels--; GPR_SWAP(grpc_subchannel *, p->subchannels[p->checking_subchannel], p->subchannels[p->num_subchannels]); - GRPC_SUBCHANNEL_UNREF(exec_ctx, p->subchannels[p->num_subchannels], - "pick_first"); + GRPC_SUBCHANNEL_UNREF(p->subchannels[p->num_subchannels], "pick_first"); if (p->num_subchannels == 0) { grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_SHUTDOWN, + &p->state_tracker, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick first exhausted channels", &error, 1), "no_more_channels"); while ((pp = p->pending_picks)) { p->pending_picks = pp->next; *pp->target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_NONE); gpr_free(pp); } - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, - "pick_first_connectivity"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "pick_first_connectivity"); } else { grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_REF(error), "subchannel_failed"); p->checking_subchannel %= p->num_subchannels; GRPC_ERROR_UNREF(error); @@ -677,15 +659,14 @@ static void pick_first_factory_ref(grpc_lb_policy_factory *factory) {} static void pick_first_factory_unref(grpc_lb_policy_factory *factory) {} -static grpc_lb_policy *create_pick_first(grpc_exec_ctx *exec_ctx, - grpc_lb_policy_factory *factory, +static grpc_lb_policy *create_pick_first(grpc_lb_policy_factory *factory, grpc_lb_policy_args *args) { GPR_ASSERT(args->client_channel_factory != NULL); pick_first_lb_policy *p = (pick_first_lb_policy *)gpr_zalloc(sizeof(*p)); if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) { gpr_log(GPR_DEBUG, "Pick First %p created.", (void *)p); } - pf_update_locked(exec_ctx, &p->base, args); + pf_update_locked(&p->base, args); grpc_lb_policy_init(&p->base, &pick_first_lb_policy_vtable, args->combiner); grpc_subchannel_index_ref(); GRPC_CLOSURE_INIT(&p->connectivity_changed, pf_connectivity_changed_locked, p, diff --git a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc index 6812bb50cd9..5c985120859 100644 --- a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +++ b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc @@ -159,8 +159,7 @@ static rr_subchannel_list *rr_subchannel_list_create(round_robin_lb_policy *p, return subchannel_list; } -static void rr_subchannel_list_destroy(grpc_exec_ctx *exec_ctx, - rr_subchannel_list *subchannel_list) { +static void rr_subchannel_list_destroy(rr_subchannel_list *subchannel_list) { GPR_ASSERT(subchannel_list->shutting_down); if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { gpr_log(GPR_INFO, "[RR %p] Destroying subchannel_list %p", @@ -169,13 +168,12 @@ static void rr_subchannel_list_destroy(grpc_exec_ctx *exec_ctx, for (size_t i = 0; i < subchannel_list->num_subchannels; i++) { subchannel_data *sd = &subchannel_list->subchannels[i]; if (sd->subchannel != NULL) { - GRPC_SUBCHANNEL_UNREF(exec_ctx, sd->subchannel, - "rr_subchannel_list_destroy"); + GRPC_SUBCHANNEL_UNREF(sd->subchannel, "rr_subchannel_list_destroy"); } sd->subchannel = NULL; if (sd->user_data != NULL) { GPR_ASSERT(sd->user_data_vtable != NULL); - sd->user_data_vtable->destroy(exec_ctx, sd->user_data); + sd->user_data_vtable->destroy(sd->user_data); sd->user_data = NULL; } } @@ -194,8 +192,7 @@ static void rr_subchannel_list_ref(rr_subchannel_list *subchannel_list, } } -static void rr_subchannel_list_unref(grpc_exec_ctx *exec_ctx, - rr_subchannel_list *subchannel_list, +static void rr_subchannel_list_unref(rr_subchannel_list *subchannel_list, const char *reason) { const bool done = gpr_unref(&subchannel_list->refcount); if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { @@ -205,15 +202,14 @@ static void rr_subchannel_list_unref(grpc_exec_ctx *exec_ctx, (unsigned long)(count + 1), (unsigned long)count, reason); } if (done) { - rr_subchannel_list_destroy(exec_ctx, subchannel_list); + rr_subchannel_list_destroy(subchannel_list); } } /** Mark \a subchannel_list as discarded. Unsubscribes all its subchannels. The * watcher's callback will ultimately unref \a subchannel_list. */ static void rr_subchannel_list_shutdown_and_unref( - grpc_exec_ctx *exec_ctx, rr_subchannel_list *subchannel_list, - const char *reason) { + rr_subchannel_list *subchannel_list, const char *reason) { GPR_ASSERT(!subchannel_list->shutting_down); if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { gpr_log(GPR_DEBUG, "[RR %p] Shutting down subchannel_list %p (%s)", @@ -232,12 +228,11 @@ static void rr_subchannel_list_shutdown_and_unref( (void *)subchannel_list->policy, (void *)sd->subchannel, (void *)subchannel_list); } - grpc_subchannel_notify_on_state_change(exec_ctx, sd->subchannel, NULL, - NULL, + grpc_subchannel_notify_on_state_change(sd->subchannel, NULL, NULL, &sd->connectivity_changed_closure); } } - rr_subchannel_list_unref(exec_ctx, subchannel_list, reason); + rr_subchannel_list_unref(subchannel_list, reason); } /** Returns the index into p->subchannel_list->subchannels of the next @@ -304,18 +299,18 @@ static void update_last_ready_subchannel_index_locked(round_robin_lb_policy *p, } } -static void rr_destroy(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void rr_destroy(grpc_lb_policy *pol) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { gpr_log(GPR_DEBUG, "[RR %p] Destroying Round Robin policy at %p", (void *)pol, (void *)pol); } - grpc_connectivity_state_destroy(exec_ctx, &p->state_tracker); + grpc_connectivity_state_destroy(&p->state_tracker); grpc_subchannel_index_unref(); gpr_free(p); } -static void rr_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void rr_shutdown_locked(grpc_lb_policy *pol) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { gpr_log(GPR_DEBUG, "[RR %p] Shutting down Round Robin policy at %p", @@ -326,29 +321,27 @@ static void rr_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { while ((pp = p->pending_picks)) { p->pending_picks = pp->next; *pp->target = NULL; - GRPC_CLOSURE_SCHED( - exec_ctx, pp->on_complete, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Shutdown")); + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Channel Shutdown")); gpr_free(pp); } grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_SHUTDOWN, + &p->state_tracker, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Shutdown"), "rr_shutdown"); const bool latest_is_current = p->subchannel_list == p->latest_pending_subchannel_list; - rr_subchannel_list_shutdown_and_unref(exec_ctx, p->subchannel_list, + rr_subchannel_list_shutdown_and_unref(p->subchannel_list, "sl_shutdown_rr_shutdown"); p->subchannel_list = NULL; if (!latest_is_current && p->latest_pending_subchannel_list != NULL && !p->latest_pending_subchannel_list->shutting_down) { - rr_subchannel_list_shutdown_and_unref(exec_ctx, - p->latest_pending_subchannel_list, + rr_subchannel_list_shutdown_and_unref(p->latest_pending_subchannel_list, "sl_shutdown_pending_rr_shutdown"); p->latest_pending_subchannel_list = NULL; } } -static void rr_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static void rr_cancel_pick_locked(grpc_lb_policy *pol, grpc_connected_subchannel **target, grpc_error *error) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; @@ -358,7 +351,7 @@ static void rr_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, pending_pick *next = pp->next; if (pp->target == target) { *target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick cancelled", &error, 1)); gpr_free(pp); @@ -371,7 +364,7 @@ static void rr_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, GRPC_ERROR_UNREF(error); } -static void rr_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static void rr_cancel_picks_locked(grpc_lb_policy *pol, uint32_t initial_metadata_flags_mask, uint32_t initial_metadata_flags_eq, grpc_error *error) { @@ -383,7 +376,7 @@ static void rr_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, if ((pp->initial_metadata_flags & initial_metadata_flags_mask) == initial_metadata_flags_eq) { *pp->target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Pick cancelled", &error, 1)); gpr_free(pp); @@ -396,28 +389,27 @@ static void rr_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, GRPC_ERROR_UNREF(error); } -static void start_picking_locked(grpc_exec_ctx *exec_ctx, - round_robin_lb_policy *p) { +static void start_picking_locked(round_robin_lb_policy *p) { p->started_picking = true; for (size_t i = 0; i < p->subchannel_list->num_subchannels; i++) { subchannel_data *sd = &p->subchannel_list->subchannels[i]; GRPC_LB_POLICY_WEAK_REF(&p->base, "start_picking_locked"); rr_subchannel_list_ref(sd->subchannel_list, "started_picking"); grpc_subchannel_notify_on_state_change( - exec_ctx, sd->subchannel, p->base.interested_parties, + sd->subchannel, p->base.interested_parties, &sd->pending_connectivity_state_unsafe, &sd->connectivity_changed_closure); } } -static void rr_exit_idle_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) { +static void rr_exit_idle_locked(grpc_lb_policy *pol) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; if (!p->started_picking) { - start_picking_locked(exec_ctx, p); + start_picking_locked(p); } } -static int rr_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, +static int rr_pick_locked(grpc_lb_policy *pol, const grpc_lb_policy_pick_args *pick_args, grpc_connected_subchannel **target, grpc_call_context_element *context, void **user_data, @@ -453,7 +445,7 @@ static int rr_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, } /* no pick currently available. Save for later in list of pending picks */ if (!p->started_picking) { - start_picking_locked(exec_ctx, p); + start_picking_locked(p); } pending_pick *pp = (pending_pick *)gpr_malloc(sizeof(*pp)); pp->next = p->pending_picks; @@ -497,7 +489,7 @@ static void update_state_counters_locked(subchannel_data *sd) { * used upon policy transition to TRANSIENT_FAILURE or SHUTDOWN. Returns the * connectivity status set. */ static grpc_connectivity_state update_lb_connectivity_status_locked( - grpc_exec_ctx *exec_ctx, subchannel_data *sd, grpc_error *error) { + subchannel_data *sd, grpc_error *error) { /* In priority order. The first rule to match terminates the search (ie, if we * are on rule n, all previous rules were unfulfilled). * @@ -522,31 +514,29 @@ static grpc_connectivity_state update_lb_connectivity_status_locked( rr_subchannel_list *subchannel_list = sd->subchannel_list; round_robin_lb_policy *p = subchannel_list->policy; if (subchannel_list->num_ready > 0) { /* 1) READY */ - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, GRPC_CHANNEL_READY, + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_READY, GRPC_ERROR_NONE, "rr_ready"); new_state = GRPC_CHANNEL_READY; } else if (sd->curr_connectivity_state == GRPC_CHANNEL_CONNECTING) { /* 2) CONNECTING */ - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, - GRPC_CHANNEL_CONNECTING, GRPC_ERROR_NONE, - "rr_connecting"); + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_CONNECTING, + GRPC_ERROR_NONE, "rr_connecting"); new_state = GRPC_CHANNEL_CONNECTING; } else if (p->subchannel_list->num_shutdown == p->subchannel_list->num_subchannels) { /* 3) SHUTDOWN */ - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, - GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_REF(error), - "rr_shutdown"); + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_SHUTDOWN, + GRPC_ERROR_REF(error), "rr_shutdown"); p->shutdown = true; new_state = GRPC_CHANNEL_SHUTDOWN; } else if (subchannel_list->num_transient_failures == p->subchannel_list->num_subchannels) { /* 4) TRANSIENT_FAILURE */ - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_REF(error), "rr_transient_failure"); new_state = GRPC_CHANNEL_TRANSIENT_FAILURE; } else if (subchannel_list->num_idle == p->subchannel_list->num_subchannels) { /* 5) IDLE */ - grpc_connectivity_state_set(exec_ctx, &p->state_tracker, GRPC_CHANNEL_IDLE, + grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_IDLE, GRPC_ERROR_NONE, "rr_idle"); new_state = GRPC_CHANNEL_IDLE; } @@ -554,8 +544,7 @@ static grpc_connectivity_state update_lb_connectivity_status_locked( return new_state; } -static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void rr_connectivity_changed_locked(void *arg, grpc_error *error) { subchannel_data *sd = (subchannel_data *)arg; round_robin_lb_policy *p = sd->subchannel_list->policy; if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { @@ -572,18 +561,18 @@ static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, } // If the policy is shutting down, unref and return. if (p->shutdown) { - rr_subchannel_list_unref(exec_ctx, sd->subchannel_list, + rr_subchannel_list_unref(sd->subchannel_list, "pol_shutdown+started_picking"); - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, "pol_shutdown"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "pol_shutdown"); return; } if (sd->subchannel_list->shutting_down && error == GRPC_ERROR_CANCELLED) { // the subchannel list associated with sd has been discarded. This callback // corresponds to the unsubscription. The unrefs correspond to the picking // ref (start_picking_locked or update_started_picking). - rr_subchannel_list_unref(exec_ctx, sd->subchannel_list, + rr_subchannel_list_unref(sd->subchannel_list, "sl_shutdown+started_picking"); - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, "sl_shutdown+picking"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "sl_shutdown+picking"); return; } // Dispose of outdated subchannel lists. @@ -592,13 +581,12 @@ static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, const char *reason = NULL; if (sd->subchannel_list->shutting_down) { reason = "sl_outdated_straggler"; - rr_subchannel_list_unref(exec_ctx, sd->subchannel_list, reason); + rr_subchannel_list_unref(sd->subchannel_list, reason); } else { reason = "sl_outdated"; - rr_subchannel_list_shutdown_and_unref(exec_ctx, sd->subchannel_list, - reason); + rr_subchannel_list_shutdown_and_unref(sd->subchannel_list, reason); } - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, reason); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, reason); return; } // Now that we're inside the combiner, copy the pending connectivity @@ -609,15 +597,15 @@ static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, update_state_counters_locked(sd); sd->prev_connectivity_state = sd->curr_connectivity_state; const grpc_connectivity_state new_policy_connectivity_state = - update_lb_connectivity_status_locked(exec_ctx, sd, GRPC_ERROR_REF(error)); + update_lb_connectivity_status_locked(sd, GRPC_ERROR_REF(error)); // If the sd's new state is SHUTDOWN, unref the subchannel, and if the new // policy's state is SHUTDOWN, clean up. if (sd->curr_connectivity_state == GRPC_CHANNEL_SHUTDOWN) { - GRPC_SUBCHANNEL_UNREF(exec_ctx, sd->subchannel, "rr_subchannel_shutdown"); + GRPC_SUBCHANNEL_UNREF(sd->subchannel, "rr_subchannel_shutdown"); sd->subchannel = NULL; if (sd->user_data != NULL) { GPR_ASSERT(sd->user_data_vtable != NULL); - sd->user_data_vtable->destroy(exec_ctx, sd->user_data); + sd->user_data_vtable->destroy(sd->user_data); sd->user_data = NULL; } if (new_policy_connectivity_state == GRPC_CHANNEL_SHUTDOWN) { @@ -626,15 +614,14 @@ static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, while ((pp = p->pending_picks)) { p->pending_picks = pp->next; *pp->target = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_NONE); gpr_free(pp); } } - rr_subchannel_list_unref(exec_ctx, sd->subchannel_list, + rr_subchannel_list_unref(sd->subchannel_list, "sd_shutdown+started_picking"); // unref the "rr_connectivity_update" weak ref from start_picking. - GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &p->base, - "rr_connectivity_sd_shutdown"); + GRPC_LB_POLICY_WEAK_UNREF(&p->base, "rr_connectivity_sd_shutdown"); } else { // sd not in SHUTDOWN if (sd->curr_connectivity_state == GRPC_CHANNEL_READY) { if (sd->subchannel_list != p->subchannel_list) { @@ -657,7 +644,7 @@ static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, } if (p->subchannel_list != NULL) { // dispose of the current subchannel_list - rr_subchannel_list_shutdown_and_unref(exec_ctx, p->subchannel_list, + rr_subchannel_list_shutdown_and_unref(p->subchannel_list, "sl_phase_out_shutdown"); } p->subchannel_list = p->latest_pending_subchannel_list; @@ -691,36 +678,34 @@ static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg, (void *)p, (void *)selected->subchannel, (void *)p->subchannel_list, (unsigned long)next_ready_index); } - GRPC_CLOSURE_SCHED(exec_ctx, pp->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pp->on_complete, GRPC_ERROR_NONE); gpr_free(pp); } } /* renew notification: reuses the "rr_connectivity_update" weak ref on the * policy as well as the sd->subchannel_list ref. */ grpc_subchannel_notify_on_state_change( - exec_ctx, sd->subchannel, p->base.interested_parties, + sd->subchannel, p->base.interested_parties, &sd->pending_connectivity_state_unsafe, &sd->connectivity_changed_closure); } } static grpc_connectivity_state rr_check_connectivity_locked( - grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, grpc_error **error) { + grpc_lb_policy *pol, grpc_error **error) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; return grpc_connectivity_state_get(&p->state_tracker, error); } -static void rr_notify_on_state_change_locked(grpc_exec_ctx *exec_ctx, - grpc_lb_policy *pol, +static void rr_notify_on_state_change_locked(grpc_lb_policy *pol, grpc_connectivity_state *current, grpc_closure *notify) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; - grpc_connectivity_state_notify_on_state_change(exec_ctx, &p->state_tracker, - current, notify); + grpc_connectivity_state_notify_on_state_change(&p->state_tracker, current, + notify); } -static void rr_ping_one_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, - grpc_closure *closure) { +static void rr_ping_one_locked(grpc_lb_policy *pol, grpc_closure *closure) { round_robin_lb_policy *p = (round_robin_lb_policy *)pol; const size_t next_ready_index = get_next_ready_subchannel_index_locked(p); if (next_ready_index < p->subchannel_list->num_subchannels) { @@ -729,15 +714,15 @@ static void rr_ping_one_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, grpc_connected_subchannel *target = GRPC_CONNECTED_SUBCHANNEL_REF( grpc_subchannel_get_connected_subchannel(selected->subchannel), "rr_picked"); - grpc_connected_subchannel_ping(exec_ctx, target, closure); - GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, target, "rr_picked"); + grpc_connected_subchannel_ping(target, closure); + GRPC_CONNECTED_SUBCHANNEL_UNREF(target, "rr_picked"); } else { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "Round Robin not connected")); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Round Robin not connected")); } } -static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, +static void rr_update_locked(grpc_lb_policy *policy, const grpc_lb_policy_args *args) { round_robin_lb_policy *p = (round_robin_lb_policy *)policy; const grpc_arg *arg = @@ -746,7 +731,7 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, if (p->subchannel_list == NULL) { // If we don't have a current subchannel list, go into TRANSIENT FAILURE. grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing update in args"), "rr_update_missing"); } else { @@ -762,11 +747,11 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, rr_subchannel_list_create(p, addresses->num_addresses); if (addresses->num_addresses == 0) { grpc_connectivity_state_set( - exec_ctx, &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"), "rr_update_empty"); if (p->subchannel_list != NULL) { - rr_subchannel_list_shutdown_and_unref(exec_ctx, p->subchannel_list, + rr_subchannel_list_shutdown_and_unref(p->subchannel_list, "sl_shutdown_empty_update"); } p->subchannel_list = subchannel_list; // empty list @@ -781,8 +766,8 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, (void *)p, (void *)p->latest_pending_subchannel_list, (void *)subchannel_list); } - rr_subchannel_list_shutdown_and_unref( - exec_ctx, p->latest_pending_subchannel_list, "sl_outdated_dont_smash"); + rr_subchannel_list_shutdown_and_unref(p->latest_pending_subchannel_list, + "sl_outdated_dont_smash"); } p->latest_pending_subchannel_list = subchannel_list; grpc_subchannel_args sc_args; @@ -803,8 +788,8 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, gpr_free(addr_arg.value.string); sc_args.args = new_args; grpc_subchannel *subchannel = grpc_client_channel_factory_create_subchannel( - exec_ctx, args->client_channel_factory, &sc_args); - grpc_channel_args_destroy(exec_ctx, new_args); + args->client_channel_factory, &sc_args); + grpc_channel_args_destroy(new_args); grpc_error *error; // Get the connectivity state of the subchannel. Already existing ones may // be in a state other than INIT. @@ -812,7 +797,7 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, grpc_subchannel_check_connectivity(subchannel, &error); if (error != GRPC_ERROR_NONE) { // The subchannel is in error (e.g. shutting down). Ignore it. - GRPC_SUBCHANNEL_UNREF(exec_ctx, subchannel, "new_sc_connectivity_error"); + GRPC_SUBCHANNEL_UNREF(subchannel, "new_sc_connectivity_error"); GRPC_ERROR_UNREF(error); continue; } @@ -853,7 +838,7 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, * p->subchannel_list for sd->subchannel_list, provided the subchannel * list is still valid (ie, isn't shutting down) */ grpc_subchannel_notify_on_state_change( - exec_ctx, sd->subchannel, p->base.interested_parties, + sd->subchannel, p->base.interested_parties, &sd->pending_connectivity_state_unsafe, &sd->connectivity_changed_closure); } @@ -862,7 +847,7 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy, // The policy isn't picking yet. Save the update for later, disposing of // previous version if any. if (p->subchannel_list != NULL) { - rr_subchannel_list_shutdown_and_unref(exec_ctx, p->subchannel_list, + rr_subchannel_list_shutdown_and_unref(p->subchannel_list, "rr_update_before_started_picking"); } p->subchannel_list = subchannel_list; @@ -886,8 +871,7 @@ static void round_robin_factory_ref(grpc_lb_policy_factory *factory) {} static void round_robin_factory_unref(grpc_lb_policy_factory *factory) {} -static grpc_lb_policy *round_robin_create(grpc_exec_ctx *exec_ctx, - grpc_lb_policy_factory *factory, +static grpc_lb_policy *round_robin_create(grpc_lb_policy_factory *factory, grpc_lb_policy_args *args) { GPR_ASSERT(args->client_channel_factory != NULL); round_robin_lb_policy *p = (round_robin_lb_policy *)gpr_zalloc(sizeof(*p)); @@ -895,7 +879,7 @@ static grpc_lb_policy *round_robin_create(grpc_exec_ctx *exec_ctx, grpc_subchannel_index_ref(); grpc_connectivity_state_init(&p->state_tracker, GRPC_CHANNEL_IDLE, "round_robin"); - rr_update_locked(exec_ctx, &p->base, args); + rr_update_locked(&p->base, args); if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) { gpr_log(GPR_DEBUG, "[RR %p] Created with %lu subchannels", (void *)p, (unsigned long)p->subchannel_list->num_subchannels); diff --git a/src/core/ext/filters/client_channel/lb_policy_factory.cc b/src/core/ext/filters/client_channel/lb_policy_factory.cc index 05ab43d0b69..493d06008f3 100644 --- a/src/core/ext/filters/client_channel/lb_policy_factory.cc +++ b/src/core/ext/filters/client_channel/lb_policy_factory.cc @@ -112,13 +112,11 @@ int grpc_lb_addresses_cmp(const grpc_lb_addresses* addresses1, return 0; } -void grpc_lb_addresses_destroy(grpc_exec_ctx* exec_ctx, - grpc_lb_addresses* addresses) { +void grpc_lb_addresses_destroy(grpc_lb_addresses* addresses) { for (size_t i = 0; i < addresses->num_addresses; ++i) { gpr_free(addresses->addresses[i].balancer_name); if (addresses->addresses[i].user_data != NULL) { - addresses->user_data_vtable->destroy(exec_ctx, - addresses->addresses[i].user_data); + addresses->user_data_vtable->destroy(addresses->addresses[i].user_data); } } gpr_free(addresses->addresses); @@ -128,8 +126,8 @@ void grpc_lb_addresses_destroy(grpc_exec_ctx* exec_ctx, static void* lb_addresses_copy(void* addresses) { return grpc_lb_addresses_copy((grpc_lb_addresses*)addresses); } -static void lb_addresses_destroy(grpc_exec_ctx* exec_ctx, void* addresses) { - grpc_lb_addresses_destroy(exec_ctx, (grpc_lb_addresses*)addresses); +static void lb_addresses_destroy(void* addresses) { + grpc_lb_addresses_destroy((grpc_lb_addresses*)addresses); } static int lb_addresses_cmp(void* addresses1, void* addresses2) { return grpc_lb_addresses_cmp((grpc_lb_addresses*)addresses1, @@ -162,8 +160,7 @@ void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory) { } grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy( - grpc_exec_ctx* exec_ctx, grpc_lb_policy_factory* factory, - grpc_lb_policy_args* args) { + grpc_lb_policy_factory* factory, grpc_lb_policy_args* args) { if (factory == NULL) return NULL; - return factory->vtable->create_lb_policy(exec_ctx, factory, args); + return factory->vtable->create_lb_policy(factory, args); } diff --git a/src/core/ext/filters/client_channel/lb_policy_factory.h b/src/core/ext/filters/client_channel/lb_policy_factory.h index 8790ffdda31..6b48d094fe8 100644 --- a/src/core/ext/filters/client_channel/lb_policy_factory.h +++ b/src/core/ext/filters/client_channel/lb_policy_factory.h @@ -54,7 +54,7 @@ typedef struct grpc_lb_address { typedef struct grpc_lb_user_data_vtable { void *(*copy)(void *); - void (*destroy)(grpc_exec_ctx *exec_ctx, void *); + void (*destroy)(void *); int (*cmp)(void *, void *); } grpc_lb_user_data_vtable; @@ -95,8 +95,7 @@ int grpc_lb_addresses_cmp(const grpc_lb_addresses *addresses1, const grpc_lb_addresses *addresses2); /** Destroys \a addresses. */ -void grpc_lb_addresses_destroy(grpc_exec_ctx *exec_ctx, - grpc_lb_addresses *addresses); +void grpc_lb_addresses_destroy(grpc_lb_addresses *addresses); /** Returns a channel arg containing \a addresses. */ grpc_arg grpc_lb_addresses_create_channel_arg( @@ -118,8 +117,7 @@ struct grpc_lb_policy_factory_vtable { void (*unref)(grpc_lb_policy_factory *factory); /** Implementation of grpc_lb_policy_factory_create_lb_policy */ - grpc_lb_policy *(*create_lb_policy)(grpc_exec_ctx *exec_ctx, - grpc_lb_policy_factory *factory, + grpc_lb_policy *(*create_lb_policy)(grpc_lb_policy_factory *factory, grpc_lb_policy_args *args); /** Name for the LB policy this factory implements */ @@ -131,8 +129,7 @@ void grpc_lb_policy_factory_unref(grpc_lb_policy_factory *factory); /** Create a lb_policy instance. */ grpc_lb_policy *grpc_lb_policy_factory_create_lb_policy( - grpc_exec_ctx *exec_ctx, grpc_lb_policy_factory *factory, - grpc_lb_policy_args *args); + grpc_lb_policy_factory *factory, grpc_lb_policy_args *args); #ifdef __cplusplus } diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.cc b/src/core/ext/filters/client_channel/lb_policy_registry.cc index f2460f83045..b059e6fadc2 100644 --- a/src/core/ext/filters/client_channel/lb_policy_registry.cc +++ b/src/core/ext/filters/client_channel/lb_policy_registry.cc @@ -61,10 +61,10 @@ static grpc_lb_policy_factory *lookup_factory(const char *name) { return NULL; } -grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name, +grpc_lb_policy *grpc_lb_policy_create(const char *name, grpc_lb_policy_args *args) { grpc_lb_policy_factory *factory = lookup_factory(name); grpc_lb_policy *lb_policy = - grpc_lb_policy_factory_create_lb_policy(exec_ctx, factory, args); + grpc_lb_policy_factory_create_lb_policy(factory, args); return lb_policy; } diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.h b/src/core/ext/filters/client_channel/lb_policy_registry.h index 55154cb02a1..6ddd892fe2a 100644 --- a/src/core/ext/filters/client_channel/lb_policy_registry.h +++ b/src/core/ext/filters/client_channel/lb_policy_registry.h @@ -38,7 +38,7 @@ void grpc_register_lb_policy(grpc_lb_policy_factory *factory); * * If \a name is NULL, the default factory from \a grpc_lb_policy_registry_init * will be returned. */ -grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name, +grpc_lb_policy *grpc_lb_policy_create(const char *name, grpc_lb_policy_args *args); #ifdef __cplusplus diff --git a/src/core/ext/filters/client_channel/proxy_mapper.cc b/src/core/ext/filters/client_channel/proxy_mapper.cc index c6ea5fc680b..be85cfcced9 100644 --- a/src/core/ext/filters/client_channel/proxy_mapper.cc +++ b/src/core/ext/filters/client_channel/proxy_mapper.cc @@ -23,24 +23,22 @@ void grpc_proxy_mapper_init(const grpc_proxy_mapper_vtable* vtable, mapper->vtable = vtable; } -bool grpc_proxy_mapper_map_name(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper* mapper, +bool grpc_proxy_mapper_map_name(grpc_proxy_mapper* mapper, const char* server_uri, const grpc_channel_args* args, char** name_to_resolve, grpc_channel_args** new_args) { - return mapper->vtable->map_name(exec_ctx, mapper, server_uri, args, - name_to_resolve, new_args); + return mapper->vtable->map_name(mapper, server_uri, args, name_to_resolve, + new_args); } -bool grpc_proxy_mapper_map_address(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper* mapper, +bool grpc_proxy_mapper_map_address(grpc_proxy_mapper* mapper, const grpc_resolved_address* address, const grpc_channel_args* args, grpc_resolved_address** new_address, grpc_channel_args** new_args) { - return mapper->vtable->map_address(exec_ctx, mapper, address, args, - new_address, new_args); + return mapper->vtable->map_address(mapper, address, args, new_address, + new_args); } void grpc_proxy_mapper_destroy(grpc_proxy_mapper* mapper) { diff --git a/src/core/ext/filters/client_channel/proxy_mapper.h b/src/core/ext/filters/client_channel/proxy_mapper.h index bb8259f8545..d4a3793e8a2 100644 --- a/src/core/ext/filters/client_channel/proxy_mapper.h +++ b/src/core/ext/filters/client_channel/proxy_mapper.h @@ -36,14 +36,14 @@ typedef struct { /// If no proxy is needed, returns false. /// Otherwise, sets \a name_to_resolve, optionally sets \a new_args, /// and returns true. - bool (*map_name)(grpc_exec_ctx* exec_ctx, grpc_proxy_mapper* mapper, - const char* server_uri, const grpc_channel_args* args, - char** name_to_resolve, grpc_channel_args** new_args); + bool (*map_name)(grpc_proxy_mapper* mapper, const char* server_uri, + const grpc_channel_args* args, char** name_to_resolve, + grpc_channel_args** new_args); /// Determines the proxy address to use to contact \a address. /// If no proxy is needed, returns false. /// Otherwise, sets \a new_address, optionally sets \a new_args, and /// returns true. - bool (*map_address)(grpc_exec_ctx* exec_ctx, grpc_proxy_mapper* mapper, + bool (*map_address)(grpc_proxy_mapper* mapper, const grpc_resolved_address* address, const grpc_channel_args* args, grpc_resolved_address** new_address, @@ -59,15 +59,13 @@ struct grpc_proxy_mapper { void grpc_proxy_mapper_init(const grpc_proxy_mapper_vtable* vtable, grpc_proxy_mapper* mapper); -bool grpc_proxy_mapper_map_name(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper* mapper, +bool grpc_proxy_mapper_map_name(grpc_proxy_mapper* mapper, const char* server_uri, const grpc_channel_args* args, char** name_to_resolve, grpc_channel_args** new_args); -bool grpc_proxy_mapper_map_address(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper* mapper, +bool grpc_proxy_mapper_map_address(grpc_proxy_mapper* mapper, const grpc_resolved_address* address, const grpc_channel_args* args, grpc_resolved_address** new_address, diff --git a/src/core/ext/filters/client_channel/proxy_mapper_registry.cc b/src/core/ext/filters/client_channel/proxy_mapper_registry.cc index 09967eea3c0..51778a20cc5 100644 --- a/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +++ b/src/core/ext/filters/client_channel/proxy_mapper_registry.cc @@ -46,14 +46,13 @@ static void grpc_proxy_mapper_list_register(grpc_proxy_mapper_list* list, ++list->num_mappers; } -static bool grpc_proxy_mapper_list_map_name(grpc_exec_ctx* exec_ctx, - grpc_proxy_mapper_list* list, +static bool grpc_proxy_mapper_list_map_name(grpc_proxy_mapper_list* list, const char* server_uri, const grpc_channel_args* args, char** name_to_resolve, grpc_channel_args** new_args) { for (size_t i = 0; i < list->num_mappers; ++i) { - if (grpc_proxy_mapper_map_name(exec_ctx, list->list[i], server_uri, args, + if (grpc_proxy_mapper_map_name(list->list[i], server_uri, args, name_to_resolve, new_args)) { return true; } @@ -62,12 +61,12 @@ static bool grpc_proxy_mapper_list_map_name(grpc_exec_ctx* exec_ctx, } static bool grpc_proxy_mapper_list_map_address( - grpc_exec_ctx* exec_ctx, grpc_proxy_mapper_list* list, - const grpc_resolved_address* address, const grpc_channel_args* args, - grpc_resolved_address** new_address, grpc_channel_args** new_args) { + grpc_proxy_mapper_list* list, const grpc_resolved_address* address, + const grpc_channel_args* args, grpc_resolved_address** new_address, + grpc_channel_args** new_args) { for (size_t i = 0; i < list->num_mappers; ++i) { - if (grpc_proxy_mapper_map_address(exec_ctx, list->list[i], address, args, - new_address, new_args)) { + if (grpc_proxy_mapper_map_address(list->list[i], address, args, new_address, + new_args)) { return true; } } @@ -105,20 +104,17 @@ void grpc_proxy_mapper_register(bool at_start, grpc_proxy_mapper* mapper) { grpc_proxy_mapper_list_register(&g_proxy_mapper_list, at_start, mapper); } -bool grpc_proxy_mappers_map_name(grpc_exec_ctx* exec_ctx, - const char* server_uri, +bool grpc_proxy_mappers_map_name(const char* server_uri, const grpc_channel_args* args, char** name_to_resolve, grpc_channel_args** new_args) { - return grpc_proxy_mapper_list_map_name(exec_ctx, &g_proxy_mapper_list, - server_uri, args, name_to_resolve, - new_args); + return grpc_proxy_mapper_list_map_name(&g_proxy_mapper_list, server_uri, args, + name_to_resolve, new_args); } -bool grpc_proxy_mappers_map_address(grpc_exec_ctx* exec_ctx, - const grpc_resolved_address* address, +bool grpc_proxy_mappers_map_address(const grpc_resolved_address* address, const grpc_channel_args* args, grpc_resolved_address** new_address, grpc_channel_args** new_args) { - return grpc_proxy_mapper_list_map_address( - exec_ctx, &g_proxy_mapper_list, address, args, new_address, new_args); + return grpc_proxy_mapper_list_map_address(&g_proxy_mapper_list, address, args, + new_address, new_args); } diff --git a/src/core/ext/filters/client_channel/proxy_mapper_registry.h b/src/core/ext/filters/client_channel/proxy_mapper_registry.h index 39c607cefcf..efe1df48a67 100644 --- a/src/core/ext/filters/client_channel/proxy_mapper_registry.h +++ b/src/core/ext/filters/client_channel/proxy_mapper_registry.h @@ -33,14 +33,12 @@ void grpc_proxy_mapper_registry_shutdown(); /// the list. Otherwise, it will be added to the end. void grpc_proxy_mapper_register(bool at_start, grpc_proxy_mapper* mapper); -bool grpc_proxy_mappers_map_name(grpc_exec_ctx* exec_ctx, - const char* server_uri, +bool grpc_proxy_mappers_map_name(const char* server_uri, const grpc_channel_args* args, char** name_to_resolve, grpc_channel_args** new_args); -bool grpc_proxy_mappers_map_address(grpc_exec_ctx* exec_ctx, - const grpc_resolved_address* address, +bool grpc_proxy_mappers_map_address(const grpc_resolved_address* address, const grpc_channel_args* args, grpc_resolved_address** new_address, grpc_channel_args** new_args); diff --git a/src/core/ext/filters/client_channel/resolver.cc b/src/core/ext/filters/client_channel/resolver.cc index 8401504fcf6..5936125163b 100644 --- a/src/core/ext/filters/client_channel/resolver.cc +++ b/src/core/ext/filters/client_channel/resolver.cc @@ -48,8 +48,8 @@ void grpc_resolver_ref(grpc_resolver *resolver) { } #ifndef NDEBUG -void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, - const char *file, int line, const char *reason) { +void grpc_resolver_unref(grpc_resolver *resolver, const char *file, int line, + const char *reason) { if (GRPC_TRACER_ON(grpc_trace_resolver_refcount)) { gpr_atm old_refs = gpr_atm_no_barrier_load(&resolver->refs.count); gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, @@ -57,27 +57,25 @@ void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, old_refs, old_refs - 1, reason); } #else -void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver) { +void grpc_resolver_unref(grpc_resolver *resolver) { #endif if (gpr_unref(&resolver->refs)) { grpc_combiner *combiner = resolver->combiner; - resolver->vtable->destroy(exec_ctx, resolver); - GRPC_COMBINER_UNREF(exec_ctx, combiner, "resolver"); + resolver->vtable->destroy(resolver); + GRPC_COMBINER_UNREF(combiner, "resolver"); } } -void grpc_resolver_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { - resolver->vtable->shutdown_locked(exec_ctx, resolver); +void grpc_resolver_shutdown_locked(grpc_resolver *resolver) { + resolver->vtable->shutdown_locked(resolver); } -void grpc_resolver_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { - resolver->vtable->channel_saw_error_locked(exec_ctx, resolver); +void grpc_resolver_channel_saw_error_locked(grpc_resolver *resolver) { + resolver->vtable->channel_saw_error_locked(resolver); } -void grpc_resolver_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, +void grpc_resolver_next_locked(grpc_resolver *resolver, grpc_channel_args **result, grpc_closure *on_complete) { - resolver->vtable->next_locked(exec_ctx, resolver, result, on_complete); + resolver->vtable->next_locked(resolver, result, on_complete); } diff --git a/src/core/ext/filters/client_channel/resolver.h b/src/core/ext/filters/client_channel/resolver.h index 73fbbbbc3b1..4adf60d1b00 100644 --- a/src/core/ext/filters/client_channel/resolver.h +++ b/src/core/ext/filters/client_channel/resolver.h @@ -41,43 +41,40 @@ struct grpc_resolver { }; struct grpc_resolver_vtable { - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver); - void (*shutdown_locked)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver); - void (*channel_saw_error_locked)(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver); - void (*next_locked)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, - grpc_channel_args **result, grpc_closure *on_complete); + void (*destroy)(grpc_resolver *resolver); + void (*shutdown_locked)(grpc_resolver *resolver); + void (*channel_saw_error_locked)(grpc_resolver *resolver); + void (*next_locked)(grpc_resolver *resolver, grpc_channel_args **result, + grpc_closure *on_complete); }; #ifndef NDEBUG #define GRPC_RESOLVER_REF(p, r) grpc_resolver_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_RESOLVER_UNREF(e, p, r) \ - grpc_resolver_unref((e), (p), __FILE__, __LINE__, (r)) +#define GRPC_RESOLVER_UNREF(p, r) \ + grpc_resolver_unref((p), __FILE__, __LINE__, (r)) void grpc_resolver_ref(grpc_resolver *policy, const char *file, int line, const char *reason); -void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *policy, - const char *file, int line, const char *reason); +void grpc_resolver_unref(grpc_resolver *policy, const char *file, int line, + const char *reason); #else #define GRPC_RESOLVER_REF(p, r) grpc_resolver_ref((p)) -#define GRPC_RESOLVER_UNREF(e, p, r) grpc_resolver_unref((e), (p)) +#define GRPC_RESOLVER_UNREF(p, r) grpc_resolver_unref((p)) void grpc_resolver_ref(grpc_resolver *policy); -void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *policy); +void grpc_resolver_unref(grpc_resolver *policy); #endif void grpc_resolver_init(grpc_resolver *resolver, const grpc_resolver_vtable *vtable, grpc_combiner *combiner); -void grpc_resolver_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver); +void grpc_resolver_shutdown_locked(grpc_resolver *resolver); /** Notification that the channel has seen an error on some address. Can be used as a hint that re-resolution is desirable soon. Must be called from the combiner passed as a resolver_arg at construction time.*/ -void grpc_resolver_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver); +void grpc_resolver_channel_saw_error_locked(grpc_resolver *resolver); /** Get the next result from the resolver. Expected to set \a *result with new channel args and then schedule \a on_complete for execution. @@ -87,7 +84,7 @@ void grpc_resolver_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, Must be called from the combiner passed as a resolver_arg at construction time.*/ -void grpc_resolver_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, +void grpc_resolver_next_locked(grpc_resolver *resolver, grpc_channel_args **result, grpc_closure *on_complete); diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc index 5f7ab987cbd..ea193ade368 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc @@ -97,17 +97,14 @@ typedef struct { char *service_config_json; } ares_dns_resolver; -static void dns_ares_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r); +static void dns_ares_destroy(grpc_resolver *r); -static void dns_ares_start_resolving_locked(grpc_exec_ctx *exec_ctx, - ares_dns_resolver *r); -static void dns_ares_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, - ares_dns_resolver *r); +static void dns_ares_start_resolving_locked(ares_dns_resolver *r); +static void dns_ares_maybe_finish_next_locked(ares_dns_resolver *r); -static void dns_ares_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r); -static void dns_ares_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *r); -static void dns_ares_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r, +static void dns_ares_shutdown_locked(grpc_resolver *r); +static void dns_ares_channel_saw_error_locked(grpc_resolver *r); +static void dns_ares_next_locked(grpc_resolver *r, grpc_channel_args **target_result, grpc_closure *on_complete); @@ -115,43 +112,39 @@ static const grpc_resolver_vtable dns_ares_resolver_vtable = { dns_ares_destroy, dns_ares_shutdown_locked, dns_ares_channel_saw_error_locked, dns_ares_next_locked}; -static void dns_ares_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { +static void dns_ares_shutdown_locked(grpc_resolver *resolver) { ares_dns_resolver *r = (ares_dns_resolver *)resolver; if (r->have_retry_timer) { - grpc_timer_cancel(exec_ctx, &r->retry_timer); + grpc_timer_cancel(&r->retry_timer); } if (r->pending_request != NULL) { - grpc_cancel_ares_request(exec_ctx, r->pending_request); + grpc_cancel_ares_request(r->pending_request); } if (r->next_completion != NULL) { *r->target_result = NULL; - GRPC_CLOSURE_SCHED( - exec_ctx, r->next_completion, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown")); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Resolver Shutdown")); r->next_completion = NULL; } } -static void dns_ares_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { +static void dns_ares_channel_saw_error_locked(grpc_resolver *resolver) { ares_dns_resolver *r = (ares_dns_resolver *)resolver; if (!r->resolving) { grpc_backoff_reset(&r->backoff_state); - dns_ares_start_resolving_locked(exec_ctx, r); + dns_ares_start_resolving_locked(r); } } -static void dns_ares_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void dns_ares_on_retry_timer_locked(void *arg, grpc_error *error) { ares_dns_resolver *r = (ares_dns_resolver *)arg; r->have_retry_timer = false; if (error == GRPC_ERROR_NONE) { if (!r->resolving) { - dns_ares_start_resolving_locked(exec_ctx, r); + dns_ares_start_resolving_locked(r); } } - GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "retry-timer"); + GRPC_RESOLVER_UNREF(&r->base, "retry-timer"); } static bool value_in_json_array(grpc_json *array, const char *value) { @@ -225,8 +218,7 @@ static char *choose_service_config(char *service_config_choice_json) { return service_config; } -static void dns_ares_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void dns_ares_on_resolved_locked(void *arg, grpc_error *error) { ares_dns_resolver *r = (ares_dns_resolver *)arg; grpc_channel_args *result = NULL; GPR_ASSERT(r->resolving); @@ -267,12 +259,12 @@ static void dns_ares_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, num_args_to_add); if (service_config != NULL) grpc_service_config_destroy(service_config); gpr_free(service_config_string); - grpc_lb_addresses_destroy(exec_ctx, r->lb_addresses); + grpc_lb_addresses_destroy(r->lb_addresses); } else { const char *msg = grpc_error_string(error); gpr_log(GPR_DEBUG, "dns resolution failed: %s", msg); - grpc_millis next_try = grpc_backoff_step(exec_ctx, &r->backoff_state); - grpc_millis timeout = next_try - grpc_exec_ctx_now(exec_ctx); + grpc_millis next_try = grpc_backoff_step(&r->backoff_state); + grpc_millis timeout = next_try - grpc_exec_ctx_now(); gpr_log(GPR_INFO, "dns resolution failed (will retry): %s", grpc_error_string(error)); GPR_ASSERT(!r->have_retry_timer); @@ -283,20 +275,19 @@ static void dns_ares_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, } else { gpr_log(GPR_DEBUG, "retrying immediately"); } - grpc_timer_init(exec_ctx, &r->retry_timer, next_try, + grpc_timer_init(&r->retry_timer, next_try, &r->dns_ares_on_retry_timer_locked); } if (r->resolved_result != NULL) { - grpc_channel_args_destroy(exec_ctx, r->resolved_result); + grpc_channel_args_destroy(r->resolved_result); } r->resolved_result = result; r->resolved_version++; - dns_ares_maybe_finish_next_locked(exec_ctx, r); - GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "dns-resolving"); + dns_ares_maybe_finish_next_locked(r); + GRPC_RESOLVER_UNREF(&r->base, "dns-resolving"); } -static void dns_ares_next_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver, +static void dns_ares_next_locked(grpc_resolver *resolver, grpc_channel_args **target_result, grpc_closure *on_complete) { gpr_log(GPR_DEBUG, "dns_ares_next is called."); @@ -306,56 +297,53 @@ static void dns_ares_next_locked(grpc_exec_ctx *exec_ctx, r->target_result = target_result; if (r->resolved_version == 0 && !r->resolving) { grpc_backoff_reset(&r->backoff_state); - dns_ares_start_resolving_locked(exec_ctx, r); + dns_ares_start_resolving_locked(r); } else { - dns_ares_maybe_finish_next_locked(exec_ctx, r); + dns_ares_maybe_finish_next_locked(r); } } -static void dns_ares_start_resolving_locked(grpc_exec_ctx *exec_ctx, - ares_dns_resolver *r) { +static void dns_ares_start_resolving_locked(ares_dns_resolver *r) { GRPC_RESOLVER_REF(&r->base, "dns-resolving"); GPR_ASSERT(!r->resolving); r->resolving = true; r->lb_addresses = NULL; r->service_config_json = NULL; r->pending_request = grpc_dns_lookup_ares( - exec_ctx, r->dns_server, r->name_to_resolve, r->default_port, - r->interested_parties, &r->dns_ares_on_resolved_locked, &r->lb_addresses, + r->dns_server, r->name_to_resolve, r->default_port, r->interested_parties, + &r->dns_ares_on_resolved_locked, &r->lb_addresses, true /* check_grpclb */, r->request_service_config ? &r->service_config_json : NULL); } -static void dns_ares_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, - ares_dns_resolver *r) { +static void dns_ares_maybe_finish_next_locked(ares_dns_resolver *r) { if (r->next_completion != NULL && r->resolved_version != r->published_version) { *r->target_result = r->resolved_result == NULL ? NULL : grpc_channel_args_copy(r->resolved_result); gpr_log(GPR_DEBUG, "dns_ares_maybe_finish_next_locked"); - GRPC_CLOSURE_SCHED(exec_ctx, r->next_completion, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE); r->next_completion = NULL; r->published_version = r->resolved_version; } } -static void dns_ares_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) { +static void dns_ares_destroy(grpc_resolver *gr) { gpr_log(GPR_DEBUG, "dns_ares_destroy"); ares_dns_resolver *r = (ares_dns_resolver *)gr; if (r->resolved_result != NULL) { - grpc_channel_args_destroy(exec_ctx, r->resolved_result); + grpc_channel_args_destroy(r->resolved_result); } - grpc_pollset_set_destroy(exec_ctx, r->interested_parties); + grpc_pollset_set_destroy(r->interested_parties); gpr_free(r->dns_server); gpr_free(r->name_to_resolve); gpr_free(r->default_port); - grpc_channel_args_destroy(exec_ctx, r->channel_args); + grpc_channel_args_destroy(r->channel_args); gpr_free(r); } -static grpc_resolver *dns_ares_create(grpc_exec_ctx *exec_ctx, - grpc_resolver_args *args, +static grpc_resolver *dns_ares_create(grpc_resolver_args *args, const char *default_port) { /* Get name from args. */ const char *path = args->uri->path; @@ -376,8 +364,7 @@ static grpc_resolver *dns_ares_create(grpc_exec_ctx *exec_ctx, arg, (grpc_integer_options){false, false, true}); r->interested_parties = grpc_pollset_set_create(); if (args->pollset_set != NULL) { - grpc_pollset_set_add_pollset_set(exec_ctx, r->interested_parties, - args->pollset_set); + grpc_pollset_set_add_pollset_set(r->interested_parties, args->pollset_set); } grpc_backoff_init(&r->backoff_state, GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS, GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER, @@ -402,9 +389,8 @@ static void dns_ares_factory_ref(grpc_resolver_factory *factory) {} static void dns_ares_factory_unref(grpc_resolver_factory *factory) {} static grpc_resolver *dns_factory_create_resolver( - grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory, - grpc_resolver_args *args) { - return dns_ares_create(exec_ctx, args, "https"); + grpc_resolver_factory *factory, grpc_resolver_args *args) { + return dns_ares_create(args, "https"); } static char *dns_ares_factory_get_default_host_name( diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h index 3d4309f2fa3..d26077006e2 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h @@ -31,8 +31,7 @@ typedef struct grpc_ares_ev_driver grpc_ares_ev_driver; /* Start \a ev_driver. It will keep working until all IO on its ares_channel is done, or grpc_ares_ev_driver_destroy() is called. It may notify the callbacks bound to its ares_channel when necessary. */ -void grpc_ares_ev_driver_start(grpc_exec_ctx *exec_ctx, - grpc_ares_ev_driver *ev_driver); +void grpc_ares_ev_driver_start(grpc_ares_ev_driver *ev_driver); /* Returns the ares_channel owned by \a ev_driver. To bind a c-ares query to \a ev_driver, use the ares_channel owned by \a ev_driver as the arg of the @@ -50,8 +49,7 @@ grpc_error *grpc_ares_ev_driver_create(grpc_ares_ev_driver **ev_driver, void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver *ev_driver); /* Shutdown all the grpc_fds used by \a ev_driver */ -void grpc_ares_ev_driver_shutdown(grpc_exec_ctx *exec_ctx, - grpc_ares_ev_driver *ev_driver); +void grpc_ares_ev_driver_shutdown(grpc_ares_ev_driver *ev_driver); #ifdef __cplusplus } diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc index c30cc93b6ff..d9d0791a277 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc @@ -77,8 +77,7 @@ struct grpc_ares_ev_driver { bool shutting_down; }; -static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, - grpc_ares_ev_driver *ev_driver); +static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver *ev_driver); static grpc_ares_ev_driver *grpc_ares_ev_driver_ref( grpc_ares_ev_driver *ev_driver) { @@ -98,7 +97,7 @@ static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver *ev_driver) { } } -static void fd_node_destroy(grpc_exec_ctx *exec_ctx, fd_node *fdn) { +static void fd_node_destroy(fd_node *fdn) { gpr_log(GPR_DEBUG, "delete fd: %d", grpc_fd_wrapped_fd(fdn->fd)); GPR_ASSERT(!fdn->readable_registered); GPR_ASSERT(!fdn->writable_registered); @@ -106,20 +105,20 @@ static void fd_node_destroy(grpc_exec_ctx *exec_ctx, fd_node *fdn) { /* c-ares library has closed the fd inside grpc_fd. This fd may be picked up immediately by another thread, and should not be closed by the following grpc_fd_orphan. */ - grpc_fd_orphan(exec_ctx, fdn->fd, NULL, NULL, true /* already_closed */, + grpc_fd_orphan(fdn->fd, NULL, NULL, true /* already_closed */, "c-ares query finished"); gpr_free(fdn); } -static void fd_node_shutdown(grpc_exec_ctx *exec_ctx, fd_node *fdn) { +static void fd_node_shutdown(fd_node *fdn) { gpr_mu_lock(&fdn->mu); fdn->shutting_down = true; if (!fdn->readable_registered && !fdn->writable_registered) { gpr_mu_unlock(&fdn->mu); - fd_node_destroy(exec_ctx, fdn); + fd_node_destroy(fdn); } else { - grpc_fd_shutdown(exec_ctx, fdn->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "c-ares fd shutdown")); + grpc_fd_shutdown( + fdn->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("c-ares fd shutdown")); gpr_mu_unlock(&fdn->mu); } } @@ -149,7 +148,7 @@ grpc_error *grpc_ares_ev_driver_create(grpc_ares_ev_driver **ev_driver, void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver *ev_driver) { // It's not safe to shut down remaining fds here directly, becauses - // ares_host_callback does not provide an exec_ctx. We mark the event driver + // ares_host_callback does not provide an exec_ctx-> We mark the event driver // as being shut down. If the event driver is working, // grpc_ares_notify_on_event_locked will shut down the fds; if it's not // working, there are no fds to shut down. @@ -159,14 +158,13 @@ void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver *ev_driver) { grpc_ares_ev_driver_unref(ev_driver); } -void grpc_ares_ev_driver_shutdown(grpc_exec_ctx *exec_ctx, - grpc_ares_ev_driver *ev_driver) { +void grpc_ares_ev_driver_shutdown(grpc_ares_ev_driver *ev_driver) { gpr_mu_lock(&ev_driver->mu); ev_driver->shutting_down = true; fd_node *fn = ev_driver->fds; while (fn != NULL) { - grpc_fd_shutdown(exec_ctx, fn->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "grpc_ares_ev_driver_shutdown")); + grpc_fd_shutdown(fn->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "grpc_ares_ev_driver_shutdown")); fn = fn->next; } gpr_mu_unlock(&ev_driver->mu); @@ -197,8 +195,7 @@ static bool grpc_ares_is_fd_still_readable(grpc_ares_ev_driver *ev_driver, return ioctl(fd, FIONREAD, &bytes_available) == 0 && bytes_available > 0; } -static void on_readable_cb(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_readable_cb(void *arg, grpc_error *error) { fd_node *fdn = (fd_node *)arg; grpc_ares_ev_driver *ev_driver = fdn->ev_driver; gpr_mu_lock(&fdn->mu); @@ -206,7 +203,7 @@ static void on_readable_cb(grpc_exec_ctx *exec_ctx, void *arg, fdn->readable_registered = false; if (fdn->shutting_down && !fdn->writable_registered) { gpr_mu_unlock(&fdn->mu); - fd_node_destroy(exec_ctx, fdn); + fd_node_destroy(fdn); grpc_ares_ev_driver_unref(ev_driver); return; } @@ -227,13 +224,12 @@ static void on_readable_cb(grpc_exec_ctx *exec_ctx, void *arg, ares_cancel(ev_driver->channel); } gpr_mu_lock(&ev_driver->mu); - grpc_ares_notify_on_event_locked(exec_ctx, ev_driver); + grpc_ares_notify_on_event_locked(ev_driver); gpr_mu_unlock(&ev_driver->mu); grpc_ares_ev_driver_unref(ev_driver); } -static void on_writable_cb(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_writable_cb(void *arg, grpc_error *error) { fd_node *fdn = (fd_node *)arg; grpc_ares_ev_driver *ev_driver = fdn->ev_driver; gpr_mu_lock(&fdn->mu); @@ -241,7 +237,7 @@ static void on_writable_cb(grpc_exec_ctx *exec_ctx, void *arg, fdn->writable_registered = false; if (fdn->shutting_down && !fdn->readable_registered) { gpr_mu_unlock(&fdn->mu); - fd_node_destroy(exec_ctx, fdn); + fd_node_destroy(fdn); grpc_ares_ev_driver_unref(ev_driver); return; } @@ -260,7 +256,7 @@ static void on_writable_cb(grpc_exec_ctx *exec_ctx, void *arg, ares_cancel(ev_driver->channel); } gpr_mu_lock(&ev_driver->mu); - grpc_ares_notify_on_event_locked(exec_ctx, ev_driver); + grpc_ares_notify_on_event_locked(ev_driver); gpr_mu_unlock(&ev_driver->mu); grpc_ares_ev_driver_unref(ev_driver); } @@ -271,8 +267,7 @@ ares_channel *grpc_ares_ev_driver_get_channel(grpc_ares_ev_driver *ev_driver) { // Get the file descriptors used by the ev_driver's ares channel, register // driver_closure with these filedescriptors. -static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, - grpc_ares_ev_driver *ev_driver) { +static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver *ev_driver) { fd_node *new_list = NULL; if (!ev_driver->shutting_down) { ares_socket_t socks[ARES_GETSOCK_MAXNUM]; @@ -298,7 +293,7 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable_cb, fdn, grpc_schedule_on_exec_ctx); - grpc_pollset_set_add_fd(exec_ctx, ev_driver->pollset_set, fdn->fd); + grpc_pollset_set_add_fd(ev_driver->pollset_set, fdn->fd); gpr_free(fd_name); } fdn->next = new_list; @@ -310,7 +305,7 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, !fdn->readable_registered) { grpc_ares_ev_driver_ref(ev_driver); gpr_log(GPR_DEBUG, "notify read on: %d", grpc_fd_wrapped_fd(fdn->fd)); - grpc_fd_notify_on_read(exec_ctx, fdn->fd, &fdn->read_closure); + grpc_fd_notify_on_read(fdn->fd, &fdn->read_closure); fdn->readable_registered = true; } // Register write_closure if the socket is writable and write_closure @@ -320,7 +315,7 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "notify write on: %d", grpc_fd_wrapped_fd(fdn->fd)); grpc_ares_ev_driver_ref(ev_driver); - grpc_fd_notify_on_write(exec_ctx, fdn->fd, &fdn->write_closure); + grpc_fd_notify_on_write(fdn->fd, &fdn->write_closure); fdn->writable_registered = true; } gpr_mu_unlock(&fdn->mu); @@ -333,7 +328,7 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, while (ev_driver->fds != NULL) { fd_node *cur = ev_driver->fds; ev_driver->fds = ev_driver->fds->next; - fd_node_shutdown(exec_ctx, cur); + fd_node_shutdown(cur); } ev_driver->fds = new_list; // If the ev driver has no working fd, all the tasks are done. @@ -343,12 +338,11 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx, } } -void grpc_ares_ev_driver_start(grpc_exec_ctx *exec_ctx, - grpc_ares_ev_driver *ev_driver) { +void grpc_ares_ev_driver_start(grpc_ares_ev_driver *ev_driver) { gpr_mu_lock(&ev_driver->mu); if (!ev_driver->working) { ev_driver->working = true; - grpc_ares_notify_on_event_locked(exec_ctx, ev_driver); + grpc_ares_notify_on_event_locked(ev_driver); } gpr_mu_unlock(&ev_driver->mu); } diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc index 04379975e1c..fecf2bfebc6 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc @@ -96,23 +96,23 @@ static void grpc_ares_request_ref(grpc_ares_request *r) { gpr_ref(&r->pending_queries); } -static void grpc_ares_request_unref(grpc_exec_ctx *exec_ctx, - grpc_ares_request *r) { +static void grpc_ares_request_unref(grpc_ares_request *r) { /* If there are no pending queries, invoke on_done callback and destroy the request */ if (gpr_unref(&r->pending_queries)) { /* TODO(zyc): Sort results with RFC6724 before invoking on_done. */ - if (exec_ctx == NULL) { + if (/*might be dangerous */ exec_ctx == NULL) { /* A new exec_ctx is created here, as the c-ares interface does not provide one in ares_host_callback. It's safe to schedule on_done with the newly created exec_ctx, since the caller has been warned not to acquire locks in on_done. ares_dns_resolver is using combiner to protect resources needed by on_done. */ - grpc_exec_ctx new_exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_CLOSURE_SCHED(&new_exec_ctx, r->on_done, r->error); - grpc_exec_ctx_finish(&new_exec_ctx); + ExecCtx _local_exec_ctx; + GRPC_CLOSURE_SCHED(/* might be dangerous &new_exec_ctx, */ r->on_done, + r->error); + grpc_exec_ctx_finish(/*&new_exec_ctx*/); } else { - GRPC_CLOSURE_SCHED(exec_ctx, r->on_done, r->error); + GRPC_CLOSURE_SCHED(r->on_done, r->error); } gpr_mu_destroy(&r->mu); grpc_ares_ev_driver_destroy(r->ev_driver); @@ -133,9 +133,8 @@ static grpc_ares_hostbyname_request *create_hostbyname_request( return hr; } -static void destroy_hostbyname_request(grpc_exec_ctx *exec_ctx, - grpc_ares_hostbyname_request *hr) { - grpc_ares_request_unref(exec_ctx, hr->parent_request); +static void destroy_hostbyname_request(grpc_ares_hostbyname_request *hr) { + grpc_ares_request_unref(hr->parent_request); gpr_free(hr->host); gpr_free(hr); } @@ -220,13 +219,13 @@ static void on_hostbyname_done_cb(void *arg, int status, int timeouts, } } gpr_mu_unlock(&r->mu); - destroy_hostbyname_request(NULL, hr); + destroy_hostbyname_request(/* might be dangerous */ hr); } static void on_srv_query_done_cb(void *arg, int status, int timeouts, unsigned char *abuf, int alen) { grpc_ares_request *r = (grpc_ares_request *)arg; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "on_query_srv_done_cb"); if (status == ARES_SUCCESS) { gpr_log(GPR_DEBUG, "on_query_srv_done_cb ARES_SUCCESS"); @@ -246,7 +245,7 @@ static void on_srv_query_done_cb(void *arg, int status, int timeouts, r, srv_it->host, htons(srv_it->port), true /* is_balancer */); ares_gethostbyname(*channel, hr->host, AF_INET, on_hostbyname_done_cb, hr); - grpc_ares_ev_driver_start(&exec_ctx, r->ev_driver); + grpc_ares_ev_driver_start(r->ev_driver); } } if (reply != NULL) { @@ -264,8 +263,8 @@ static void on_srv_query_done_cb(void *arg, int status, int timeouts, r->error = grpc_error_add_child(error, r->error); } } - grpc_ares_request_unref(&exec_ctx, r); - grpc_exec_ctx_finish(&exec_ctx); + grpc_ares_request_unref(r); + grpc_exec_ctx_finish(); } static const char g_service_config_attribute_prefix[] = "grpc_config="; @@ -323,14 +322,13 @@ fail: } done: gpr_mu_unlock(&r->mu); - grpc_ares_request_unref(NULL, r); + grpc_ares_request_unref(r); } static grpc_ares_request *grpc_dns_lookup_ares_impl( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *name, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **addrs, bool check_grpclb, - char **service_config_json) { + const char *dns_server, const char *name, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **addrs, bool check_grpclb, char **service_config_json) { grpc_error *error = GRPC_ERROR_NONE; grpc_ares_hostbyname_request *hr = NULL; grpc_ares_request *r = NULL; @@ -434,28 +432,28 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl( ares_search(*channel, hr->host, ns_c_in, ns_t_txt, on_txt_done_cb, r); } /* TODO(zyc): Handle CNAME records here. */ - grpc_ares_ev_driver_start(exec_ctx, r->ev_driver); - grpc_ares_request_unref(exec_ctx, r); + grpc_ares_ev_driver_start(r->ev_driver); + grpc_ares_request_unref(r); gpr_free(host); gpr_free(port); return r; error_cleanup: - GRPC_CLOSURE_SCHED(exec_ctx, on_done, error); + GRPC_CLOSURE_SCHED(on_done, error); gpr_free(host); gpr_free(port); return NULL; } grpc_ares_request *(*grpc_dns_lookup_ares)( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *name, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **addrs, bool check_grpclb, + const char *dns_server, const char *name, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **addrs, bool check_grpclb, char **service_config_json) = grpc_dns_lookup_ares_impl; -void grpc_cancel_ares_request(grpc_exec_ctx *exec_ctx, grpc_ares_request *r) { +void grpc_cancel_ares_request(grpc_ares_request *r) { if (grpc_dns_lookup_ares == grpc_dns_lookup_ares_impl) { - grpc_ares_ev_driver_shutdown(exec_ctx, r->ev_driver); + grpc_ares_ev_driver_shutdown(r->ev_driver); } } @@ -498,8 +496,7 @@ typedef struct grpc_resolve_address_ares_request { grpc_closure on_dns_lookup_done; } grpc_resolve_address_ares_request; -static void on_dns_lookup_done_cb(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_dns_lookup_done_cb(void *arg, grpc_error *error) { grpc_resolve_address_ares_request *r = (grpc_resolve_address_ares_request *)arg; grpc_resolved_addresses **resolved_addresses = r->addrs_out; @@ -517,14 +514,12 @@ static void on_dns_lookup_done_cb(grpc_exec_ctx *exec_ctx, void *arg, &r->lb_addrs->addresses[i].address, sizeof(grpc_resolved_address)); } } - GRPC_CLOSURE_SCHED(exec_ctx, r->on_resolve_address_done, - GRPC_ERROR_REF(error)); - grpc_lb_addresses_destroy(exec_ctx, r->lb_addrs); + GRPC_CLOSURE_SCHED(r->on_resolve_address_done, GRPC_ERROR_REF(error)); + grpc_lb_addresses_destroy(r->lb_addrs); gpr_free(r); } -static void grpc_resolve_address_ares_impl(grpc_exec_ctx *exec_ctx, - const char *name, +static void grpc_resolve_address_ares_impl(const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, @@ -536,14 +531,14 @@ static void grpc_resolve_address_ares_impl(grpc_exec_ctx *exec_ctx, r->on_resolve_address_done = on_done; GRPC_CLOSURE_INIT(&r->on_dns_lookup_done, on_dns_lookup_done_cb, r, grpc_schedule_on_exec_ctx); - grpc_dns_lookup_ares(exec_ctx, NULL /* dns_server */, name, default_port, + grpc_dns_lookup_ares(NULL /* dns_server */, name, default_port, interested_parties, &r->on_dns_lookup_done, &r->lb_addrs, false /* check_grpclb */, NULL /* service_config_json */); } void (*grpc_resolve_address_ares)( - grpc_exec_ctx *exec_ctx, const char *name, const char *default_port, + const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) = grpc_resolve_address_ares_impl; diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h index 38fbea9aac8..b042d2ed7a1 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h @@ -36,8 +36,7 @@ typedef struct grpc_ares_request grpc_ares_request; must be called at least once before this function. \a on_done may be called directly in this function without being scheduled with \a exec_ctx, so it must not try to acquire locks that are being held by the caller. */ -extern void (*grpc_resolve_address_ares)(grpc_exec_ctx *exec_ctx, - const char *name, +extern void (*grpc_resolve_address_ares)(const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, @@ -51,14 +50,13 @@ extern void (*grpc_resolve_address_ares)(grpc_exec_ctx *exec_ctx, scheduled with \a exec_ctx, so it must not try to acquire locks that are being held by the caller. */ extern grpc_ares_request *(*grpc_dns_lookup_ares)( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *name, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **addresses, bool check_grpclb, + const char *dns_server, const char *name, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **addresses, bool check_grpclb, char **service_config_json); /* Cancel the pending grpc_ares_request \a request */ -void grpc_cancel_ares_request(grpc_exec_ctx *exec_ctx, - grpc_ares_request *request); +void grpc_cancel_ares_request(grpc_ares_request *request); /* Initialize gRPC ares wrapper. Must be called at least once before grpc_resolve_address_ares(). */ diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc index f2587c4520f..11396678de5 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc @@ -26,34 +26,32 @@ struct grpc_ares_request { }; static grpc_ares_request *grpc_dns_lookup_ares_impl( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *name, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **addrs, bool check_grpclb, - char **service_config_json) { + const char *dns_server, const char *name, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **addrs, bool check_grpclb, char **service_config_json) { return NULL; } grpc_ares_request *(*grpc_dns_lookup_ares)( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *name, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **addrs, bool check_grpclb, + const char *dns_server, const char *name, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **addrs, bool check_grpclb, char **service_config_json) = grpc_dns_lookup_ares_impl; -void grpc_cancel_ares_request(grpc_exec_ctx *exec_ctx, grpc_ares_request *r) {} +void grpc_cancel_ares_request(grpc_ares_request *r) {} grpc_error *grpc_ares_init(void) { return GRPC_ERROR_NONE; } void grpc_ares_cleanup(void) {} -static void grpc_resolve_address_ares_impl(grpc_exec_ctx *exec_ctx, - const char *name, +static void grpc_resolve_address_ares_impl(const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) {} void (*grpc_resolve_address_ares)( - grpc_exec_ctx *exec_ctx, const char *name, const char *default_port, + const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) = grpc_resolve_address_ares_impl; diff --git a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc index e669b6dfc7d..dd19f34d564 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc @@ -76,49 +76,42 @@ typedef struct { grpc_resolved_addresses *addresses; } dns_resolver; -static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r); +static void dns_destroy(grpc_resolver *r); -static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx, - dns_resolver *r); -static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, - dns_resolver *r); +static void dns_start_resolving_locked(dns_resolver *r); +static void dns_maybe_finish_next_locked(dns_resolver *r); -static void dns_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r); -static void dns_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *r); -static void dns_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r, - grpc_channel_args **target_result, +static void dns_shutdown_locked(grpc_resolver *r); +static void dns_channel_saw_error_locked(grpc_resolver *r); +static void dns_next_locked(grpc_resolver *r, grpc_channel_args **target_result, grpc_closure *on_complete); static const grpc_resolver_vtable dns_resolver_vtable = { dns_destroy, dns_shutdown_locked, dns_channel_saw_error_locked, dns_next_locked}; -static void dns_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { +static void dns_shutdown_locked(grpc_resolver *resolver) { dns_resolver *r = (dns_resolver *)resolver; if (r->have_retry_timer) { - grpc_timer_cancel(exec_ctx, &r->retry_timer); + grpc_timer_cancel(&r->retry_timer); } if (r->next_completion != NULL) { *r->target_result = NULL; - GRPC_CLOSURE_SCHED( - exec_ctx, r->next_completion, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown")); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Resolver Shutdown")); r->next_completion = NULL; } } -static void dns_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { +static void dns_channel_saw_error_locked(grpc_resolver *resolver) { dns_resolver *r = (dns_resolver *)resolver; if (!r->resolving) { grpc_backoff_reset(&r->backoff_state); - dns_start_resolving_locked(exec_ctx, r); + dns_start_resolving_locked(r); } } -static void dns_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, +static void dns_next_locked(grpc_resolver *resolver, grpc_channel_args **target_result, grpc_closure *on_complete) { dns_resolver *r = (dns_resolver *)resolver; @@ -127,28 +120,26 @@ static void dns_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, r->target_result = target_result; if (r->resolved_version == 0 && !r->resolving) { grpc_backoff_reset(&r->backoff_state); - dns_start_resolving_locked(exec_ctx, r); + dns_start_resolving_locked(r); } else { - dns_maybe_finish_next_locked(exec_ctx, r); + dns_maybe_finish_next_locked(r); } } -static void dns_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void dns_on_retry_timer_locked(void *arg, grpc_error *error) { dns_resolver *r = (dns_resolver *)arg; r->have_retry_timer = false; if (error == GRPC_ERROR_NONE) { if (!r->resolving) { - dns_start_resolving_locked(exec_ctx, r); + dns_start_resolving_locked(r); } } - GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "retry-timer"); + GRPC_RESOLVER_UNREF(&r->base, "retry-timer"); } -static void dns_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void dns_on_resolved_locked(void *arg, grpc_error *error) { dns_resolver *r = (dns_resolver *)arg; grpc_channel_args *result = NULL; GPR_ASSERT(r->resolving); @@ -168,10 +159,10 @@ static void dns_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, grpc_arg new_arg = grpc_lb_addresses_create_channel_arg(addresses); result = grpc_channel_args_copy_and_add(r->channel_args, &new_arg, 1); grpc_resolved_addresses_destroy(r->addresses); - grpc_lb_addresses_destroy(exec_ctx, addresses); + grpc_lb_addresses_destroy(addresses); } else { - grpc_millis next_try = grpc_backoff_step(exec_ctx, &r->backoff_state); - grpc_millis timeout = next_try - grpc_exec_ctx_now(exec_ctx); + grpc_millis next_try = grpc_backoff_step(&r->backoff_state); + grpc_millis timeout = next_try - grpc_exec_ctx_now(); gpr_log(GPR_INFO, "dns resolution failed (will retry): %s", grpc_error_string(error)); GPR_ASSERT(!r->have_retry_timer); @@ -184,59 +175,56 @@ static void dns_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, } GRPC_CLOSURE_INIT(&r->on_retry, dns_on_retry_timer_locked, r, grpc_combiner_scheduler(r->base.combiner)); - grpc_timer_init(exec_ctx, &r->retry_timer, next_try, &r->on_retry); + grpc_timer_init(&r->retry_timer, next_try, &r->on_retry); } if (r->resolved_result != NULL) { - grpc_channel_args_destroy(exec_ctx, r->resolved_result); + grpc_channel_args_destroy(r->resolved_result); } r->resolved_result = result; r->resolved_version++; - dns_maybe_finish_next_locked(exec_ctx, r); + dns_maybe_finish_next_locked(r); GRPC_ERROR_UNREF(error); - GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "dns-resolving"); + GRPC_RESOLVER_UNREF(&r->base, "dns-resolving"); } -static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx, - dns_resolver *r) { +static void dns_start_resolving_locked(dns_resolver *r) { GRPC_RESOLVER_REF(&r->base, "dns-resolving"); GPR_ASSERT(!r->resolving); r->resolving = true; r->addresses = NULL; grpc_resolve_address( - exec_ctx, r->name_to_resolve, r->default_port, r->interested_parties, + r->name_to_resolve, r->default_port, r->interested_parties, GRPC_CLOSURE_CREATE(dns_on_resolved_locked, r, grpc_combiner_scheduler(r->base.combiner)), &r->addresses); } -static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, - dns_resolver *r) { +static void dns_maybe_finish_next_locked(dns_resolver *r) { if (r->next_completion != NULL && r->resolved_version != r->published_version) { *r->target_result = r->resolved_result == NULL ? NULL : grpc_channel_args_copy(r->resolved_result); - GRPC_CLOSURE_SCHED(exec_ctx, r->next_completion, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE); r->next_completion = NULL; r->published_version = r->resolved_version; } } -static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) { +static void dns_destroy(grpc_resolver *gr) { dns_resolver *r = (dns_resolver *)gr; if (r->resolved_result != NULL) { - grpc_channel_args_destroy(exec_ctx, r->resolved_result); + grpc_channel_args_destroy(r->resolved_result); } - grpc_pollset_set_destroy(exec_ctx, r->interested_parties); + grpc_pollset_set_destroy(r->interested_parties); gpr_free(r->name_to_resolve); gpr_free(r->default_port); - grpc_channel_args_destroy(exec_ctx, r->channel_args); + grpc_channel_args_destroy(r->channel_args); gpr_free(r); } -static grpc_resolver *dns_create(grpc_exec_ctx *exec_ctx, - grpc_resolver_args *args, +static grpc_resolver *dns_create(grpc_resolver_args *args, const char *default_port) { if (0 != strcmp(args->uri->authority, "")) { gpr_log(GPR_ERROR, "authority based dns uri's not supported"); @@ -253,8 +241,7 @@ static grpc_resolver *dns_create(grpc_exec_ctx *exec_ctx, r->channel_args = grpc_channel_args_copy(args->args); r->interested_parties = grpc_pollset_set_create(); if (args->pollset_set != NULL) { - grpc_pollset_set_add_pollset_set(exec_ctx, r->interested_parties, - args->pollset_set); + grpc_pollset_set_add_pollset_set(r->interested_parties, args->pollset_set); } grpc_backoff_init(&r->backoff_state, GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS, GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER, @@ -273,9 +260,8 @@ static void dns_factory_ref(grpc_resolver_factory *factory) {} static void dns_factory_unref(grpc_resolver_factory *factory) {} static grpc_resolver *dns_factory_create_resolver( - grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory, - grpc_resolver_args *args) { - return dns_create(exec_ctx, args, "https"); + grpc_resolver_factory *factory, grpc_resolver_args *args) { + return dns_create(args, "https"); } static char *dns_factory_get_default_host_name(grpc_resolver_factory *factory, diff --git a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc index ed5b1011fbb..a35e232719e 100644 --- a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc @@ -67,57 +67,52 @@ typedef struct { grpc_channel_args** target_result; } fake_resolver; -static void fake_resolver_destroy(grpc_exec_ctx* exec_ctx, grpc_resolver* gr) { +static void fake_resolver_destroy(grpc_resolver* gr) { fake_resolver* r = (fake_resolver*)gr; - grpc_channel_args_destroy(exec_ctx, r->next_results); - grpc_channel_args_destroy(exec_ctx, r->results_upon_error); - grpc_channel_args_destroy(exec_ctx, r->channel_args); + grpc_channel_args_destroy(r->next_results); + grpc_channel_args_destroy(r->results_upon_error); + grpc_channel_args_destroy(r->channel_args); gpr_free(r); } -static void fake_resolver_shutdown_locked(grpc_exec_ctx* exec_ctx, - grpc_resolver* resolver) { +static void fake_resolver_shutdown_locked(grpc_resolver* resolver) { fake_resolver* r = (fake_resolver*)resolver; if (r->next_completion != NULL) { *r->target_result = NULL; - GRPC_CLOSURE_SCHED( - exec_ctx, r->next_completion, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown")); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Resolver Shutdown")); r->next_completion = NULL; } } -static void fake_resolver_maybe_finish_next_locked(grpc_exec_ctx* exec_ctx, - fake_resolver* r) { +static void fake_resolver_maybe_finish_next_locked(fake_resolver* r) { if (r->next_completion != NULL && r->next_results != NULL) { *r->target_result = grpc_channel_args_union(r->next_results, r->channel_args); - grpc_channel_args_destroy(exec_ctx, r->next_results); + grpc_channel_args_destroy(r->next_results); r->next_results = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, r->next_completion, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE); r->next_completion = NULL; } } -static void fake_resolver_channel_saw_error_locked(grpc_exec_ctx* exec_ctx, - grpc_resolver* resolver) { +static void fake_resolver_channel_saw_error_locked(grpc_resolver* resolver) { fake_resolver* r = (fake_resolver*)resolver; if (r->next_results == NULL && r->results_upon_error != NULL) { // Pretend we re-resolved. r->next_results = grpc_channel_args_copy(r->results_upon_error); } - fake_resolver_maybe_finish_next_locked(exec_ctx, r); + fake_resolver_maybe_finish_next_locked(r); } -static void fake_resolver_next_locked(grpc_exec_ctx* exec_ctx, - grpc_resolver* resolver, +static void fake_resolver_next_locked(grpc_resolver* resolver, grpc_channel_args** target_result, grpc_closure* on_complete) { fake_resolver* r = (fake_resolver*)resolver; GPR_ASSERT(!r->next_completion); r->next_completion = on_complete; r->target_result = target_result; - fake_resolver_maybe_finish_next_locked(exec_ctx, r); + fake_resolver_maybe_finish_next_locked(r); } static const grpc_resolver_vtable fake_resolver_vtable = { @@ -157,33 +152,31 @@ typedef struct set_response_closure_arg { grpc_channel_args* next_response; } set_response_closure_arg; -static void set_response_closure_fn(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void set_response_closure_fn(void* arg, grpc_error* error) { set_response_closure_arg* closure_arg = (set_response_closure_arg*)arg; grpc_fake_resolver_response_generator* generator = closure_arg->generator; fake_resolver* r = generator->resolver; if (r->next_results != NULL) { - grpc_channel_args_destroy(exec_ctx, r->next_results); + grpc_channel_args_destroy(r->next_results); } r->next_results = closure_arg->next_response; if (r->results_upon_error != NULL) { - grpc_channel_args_destroy(exec_ctx, r->results_upon_error); + grpc_channel_args_destroy(r->results_upon_error); } r->results_upon_error = grpc_channel_args_copy(closure_arg->next_response); gpr_free(closure_arg); - fake_resolver_maybe_finish_next_locked(exec_ctx, r); + fake_resolver_maybe_finish_next_locked(r); } void grpc_fake_resolver_response_generator_set_response( - grpc_exec_ctx* exec_ctx, grpc_fake_resolver_response_generator* generator, + grpc_fake_resolver_response_generator* generator, grpc_channel_args* next_response) { GPR_ASSERT(generator->resolver != NULL); set_response_closure_arg* closure_arg = (set_response_closure_arg*)gpr_zalloc(sizeof(*closure_arg)); closure_arg->generator = generator; closure_arg->next_response = grpc_channel_args_copy(next_response); - GRPC_CLOSURE_SCHED(exec_ctx, - GRPC_CLOSURE_INIT(&closure_arg->set_response_closure, + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_INIT(&closure_arg->set_response_closure, set_response_closure_fn, closure_arg, grpc_combiner_scheduler( generator->resolver->base.combiner)), @@ -195,7 +188,7 @@ static void* response_generator_arg_copy(void* p) { (grpc_fake_resolver_response_generator*)p); } -static void response_generator_arg_destroy(grpc_exec_ctx* exec_ctx, void* p) { +static void response_generator_arg_destroy(void* p) { grpc_fake_resolver_response_generator_unref( (grpc_fake_resolver_response_generator*)p); } @@ -232,8 +225,7 @@ static void fake_resolver_factory_ref(grpc_resolver_factory* factory) {} static void fake_resolver_factory_unref(grpc_resolver_factory* factory) {} -static grpc_resolver* fake_resolver_create(grpc_exec_ctx* exec_ctx, - grpc_resolver_factory* factory, +static grpc_resolver* fake_resolver_create(grpc_resolver_factory* factory, grpc_resolver_args* args) { fake_resolver* r = (fake_resolver*)gpr_zalloc(sizeof(*r)); r->channel_args = grpc_channel_args_copy(args->args); diff --git a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h index 95c3bafed82..85100f307b1 100644 --- a/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +++ b/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h @@ -43,7 +43,7 @@ grpc_fake_resolver_response_generator_create(); // Instruct the fake resolver associated with the \a response_generator instance // to trigger a new resolution for \a uri and \a args. void grpc_fake_resolver_response_generator_set_response( - grpc_exec_ctx* exec_ctx, grpc_fake_resolver_response_generator* generator, + grpc_fake_resolver_response_generator* generator, grpc_channel_args* next_response); // Return a \a grpc_arg for a \a grpc_fake_resolver_response_generator instance. diff --git a/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc b/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc index dda9542325d..5519ed72d94 100644 --- a/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc @@ -52,15 +52,13 @@ typedef struct { grpc_channel_args **target_result; } sockaddr_resolver; -static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r); +static void sockaddr_destroy(grpc_resolver *r); -static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, - sockaddr_resolver *r); +static void sockaddr_maybe_finish_next_locked(sockaddr_resolver *r); -static void sockaddr_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r); -static void sockaddr_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *r); -static void sockaddr_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r, +static void sockaddr_shutdown_locked(grpc_resolver *r); +static void sockaddr_channel_saw_error_locked(grpc_resolver *r); +static void sockaddr_next_locked(grpc_resolver *r, grpc_channel_args **target_result, grpc_closure *on_complete); @@ -68,52 +66,47 @@ static const grpc_resolver_vtable sockaddr_resolver_vtable = { sockaddr_destroy, sockaddr_shutdown_locked, sockaddr_channel_saw_error_locked, sockaddr_next_locked}; -static void sockaddr_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { +static void sockaddr_shutdown_locked(grpc_resolver *resolver) { sockaddr_resolver *r = (sockaddr_resolver *)resolver; if (r->next_completion != NULL) { *r->target_result = NULL; - GRPC_CLOSURE_SCHED( - exec_ctx, r->next_completion, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown")); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Resolver Shutdown")); r->next_completion = NULL; } } -static void sockaddr_channel_saw_error_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver) { +static void sockaddr_channel_saw_error_locked(grpc_resolver *resolver) { sockaddr_resolver *r = (sockaddr_resolver *)resolver; r->published = false; - sockaddr_maybe_finish_next_locked(exec_ctx, r); + sockaddr_maybe_finish_next_locked(r); } -static void sockaddr_next_locked(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver, +static void sockaddr_next_locked(grpc_resolver *resolver, grpc_channel_args **target_result, grpc_closure *on_complete) { sockaddr_resolver *r = (sockaddr_resolver *)resolver; GPR_ASSERT(!r->next_completion); r->next_completion = on_complete; r->target_result = target_result; - sockaddr_maybe_finish_next_locked(exec_ctx, r); + sockaddr_maybe_finish_next_locked(r); } -static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, - sockaddr_resolver *r) { +static void sockaddr_maybe_finish_next_locked(sockaddr_resolver *r) { if (r->next_completion != NULL && !r->published) { r->published = true; grpc_arg arg = grpc_lb_addresses_create_channel_arg(r->addresses); *r->target_result = grpc_channel_args_copy_and_add(r->channel_args, &arg, 1); - GRPC_CLOSURE_SCHED(exec_ctx, r->next_completion, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE); r->next_completion = NULL; } } -static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) { +static void sockaddr_destroy(grpc_resolver *gr) { sockaddr_resolver *r = (sockaddr_resolver *)gr; - grpc_lb_addresses_destroy(exec_ctx, r->addresses); - grpc_channel_args_destroy(exec_ctx, r->channel_args); + grpc_lb_addresses_destroy(r->addresses); + grpc_channel_args_destroy(r->channel_args); gpr_free(r); } @@ -142,8 +135,7 @@ char *unix_get_default_authority(grpc_resolver_factory *factory, static void do_nothing(void *ignored) {} -static grpc_resolver *sockaddr_create(grpc_exec_ctx *exec_ctx, - grpc_resolver_args *args, +static grpc_resolver *sockaddr_create(grpc_resolver_args *args, bool parse(const grpc_uri *uri, grpc_resolved_address *dst)) { if (0 != strcmp(args->uri->authority, "")) { @@ -170,10 +162,10 @@ static grpc_resolver *sockaddr_create(grpc_exec_ctx *exec_ctx, gpr_free(part_str); if (errors_found) break; } - grpc_slice_buffer_destroy_internal(exec_ctx, &path_parts); - grpc_slice_unref_internal(exec_ctx, path_slice); + grpc_slice_buffer_destroy_internal(&path_parts); + grpc_slice_unref_internal(path_slice); if (errors_found) { - grpc_lb_addresses_destroy(exec_ctx, addresses); + grpc_lb_addresses_destroy(addresses); return NULL; } /* Instantiate resolver. */ @@ -195,9 +187,8 @@ static void sockaddr_factory_unref(grpc_resolver_factory *factory) {} #define DECL_FACTORY(name) \ static grpc_resolver *name##_factory_create_resolver( \ - grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory, \ - grpc_resolver_args *args) { \ - return sockaddr_create(exec_ctx, args, grpc_parse_##name); \ + grpc_resolver_factory *factory, grpc_resolver_args *args) { \ + return sockaddr_create(args, grpc_parse_##name); \ } \ static const grpc_resolver_factory_vtable name##_factory_vtable = { \ sockaddr_factory_ref, sockaddr_factory_unref, \ diff --git a/src/core/ext/filters/client_channel/resolver_factory.cc b/src/core/ext/filters/client_channel/resolver_factory.cc index 6f0a7c1e362..5b8ff8db5c0 100644 --- a/src/core/ext/filters/client_channel/resolver_factory.cc +++ b/src/core/ext/filters/client_channel/resolver_factory.cc @@ -28,10 +28,9 @@ void grpc_resolver_factory_unref(grpc_resolver_factory* factory) { /** Create a resolver instance for a name */ grpc_resolver* grpc_resolver_factory_create_resolver( - grpc_exec_ctx* exec_ctx, grpc_resolver_factory* factory, - grpc_resolver_args* args) { + grpc_resolver_factory* factory, grpc_resolver_args* args) { if (factory == NULL) return NULL; - return factory->vtable->create_resolver(exec_ctx, factory, args); + return factory->vtable->create_resolver(factory, args); } char* grpc_resolver_factory_get_default_authority( diff --git a/src/core/ext/filters/client_channel/resolver_factory.h b/src/core/ext/filters/client_channel/resolver_factory.h index c8b2c58db3e..37ab9087e7e 100644 --- a/src/core/ext/filters/client_channel/resolver_factory.h +++ b/src/core/ext/filters/client_channel/resolver_factory.h @@ -47,8 +47,7 @@ struct grpc_resolver_factory_vtable { void (*unref)(grpc_resolver_factory *factory); /** Implementation of grpc_resolver_factory_create_resolver */ - grpc_resolver *(*create_resolver)(grpc_exec_ctx *exec_ctx, - grpc_resolver_factory *factory, + grpc_resolver *(*create_resolver)(grpc_resolver_factory *factory, grpc_resolver_args *args); /** Implementation of grpc_resolver_factory_get_default_authority */ @@ -63,8 +62,7 @@ void grpc_resolver_factory_unref(grpc_resolver_factory *resolver); /** Create a resolver instance for a name */ grpc_resolver *grpc_resolver_factory_create_resolver( - grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory, - grpc_resolver_args *args); + grpc_resolver_factory *factory, grpc_resolver_args *args); /** Return a (freshly allocated with gpr_malloc) string representing the default authority to use for this scheme. */ diff --git a/src/core/ext/filters/client_channel/resolver_registry.cc b/src/core/ext/filters/client_channel/resolver_registry.cc index 1a0fb0bc3cf..05e88abd418 100644 --- a/src/core/ext/filters/client_channel/resolver_registry.cc +++ b/src/core/ext/filters/client_channel/resolver_registry.cc @@ -92,23 +92,22 @@ static grpc_resolver_factory *lookup_factory_by_uri(grpc_uri *uri) { return lookup_factory(uri->scheme); } -static grpc_resolver_factory *resolve_factory(grpc_exec_ctx *exec_ctx, - const char *target, +static grpc_resolver_factory *resolve_factory(const char *target, grpc_uri **uri, char **canonical_target) { grpc_resolver_factory *factory = NULL; GPR_ASSERT(uri != NULL); - *uri = grpc_uri_parse(exec_ctx, target, 1); + *uri = grpc_uri_parse(target, 1); factory = lookup_factory_by_uri(*uri); if (factory == NULL) { grpc_uri_destroy(*uri); gpr_asprintf(canonical_target, "%s%s", g_default_resolver_prefix, target); - *uri = grpc_uri_parse(exec_ctx, *canonical_target, 1); + *uri = grpc_uri_parse(*canonical_target, 1); factory = lookup_factory_by_uri(*uri); if (factory == NULL) { - grpc_uri_destroy(grpc_uri_parse(exec_ctx, target, 0)); - grpc_uri_destroy(grpc_uri_parse(exec_ctx, *canonical_target, 0)); + grpc_uri_destroy(grpc_uri_parse(target, 0)); + grpc_uri_destroy(grpc_uri_parse(*canonical_target, 0)); gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target, *canonical_target); } @@ -116,14 +115,14 @@ static grpc_resolver_factory *resolve_factory(grpc_exec_ctx *exec_ctx, return factory; } -grpc_resolver *grpc_resolver_create(grpc_exec_ctx *exec_ctx, const char *target, +grpc_resolver *grpc_resolver_create(const char *target, const grpc_channel_args *args, grpc_pollset_set *pollset_set, grpc_combiner *combiner) { grpc_uri *uri = NULL; char *canonical_target = NULL; grpc_resolver_factory *factory = - resolve_factory(exec_ctx, target, &uri, &canonical_target); + resolve_factory(target, &uri, &canonical_target); grpc_resolver *resolver; grpc_resolver_args resolver_args; memset(&resolver_args, 0, sizeof(resolver_args)); @@ -131,29 +130,27 @@ grpc_resolver *grpc_resolver_create(grpc_exec_ctx *exec_ctx, const char *target, resolver_args.args = args; resolver_args.pollset_set = pollset_set; resolver_args.combiner = combiner; - resolver = - grpc_resolver_factory_create_resolver(exec_ctx, factory, &resolver_args); + resolver = grpc_resolver_factory_create_resolver(factory, &resolver_args); grpc_uri_destroy(uri); gpr_free(canonical_target); return resolver; } -char *grpc_get_default_authority(grpc_exec_ctx *exec_ctx, const char *target) { +char *grpc_get_default_authority(const char *target) { grpc_uri *uri = NULL; char *canonical_target = NULL; grpc_resolver_factory *factory = - resolve_factory(exec_ctx, target, &uri, &canonical_target); + resolve_factory(target, &uri, &canonical_target); char *authority = grpc_resolver_factory_get_default_authority(factory, uri); grpc_uri_destroy(uri); gpr_free(canonical_target); return authority; } -char *grpc_resolver_factory_add_default_prefix_if_needed( - grpc_exec_ctx *exec_ctx, const char *target) { +char *grpc_resolver_factory_add_default_prefix_if_needed(const char *target) { grpc_uri *uri = NULL; char *canonical_target = NULL; - resolve_factory(exec_ctx, target, &uri, &canonical_target); + resolve_factory(target, &uri, &canonical_target); grpc_uri_destroy(uri); return canonical_target == NULL ? gpr_strdup(target) : canonical_target; } diff --git a/src/core/ext/filters/client_channel/resolver_registry.h b/src/core/ext/filters/client_channel/resolver_registry.h index 06d0b99a355..80283498611 100644 --- a/src/core/ext/filters/client_channel/resolver_registry.h +++ b/src/core/ext/filters/client_channel/resolver_registry.h @@ -52,7 +52,7 @@ void grpc_register_resolver_type(grpc_resolver_factory *factory); (typically the set of arguments passed in from the client API). \a pollset_set is used to drive IO in the name resolution process, it should not be NULL. */ -grpc_resolver *grpc_resolver_create(grpc_exec_ctx *exec_ctx, const char *target, +grpc_resolver *grpc_resolver_create(const char *target, const grpc_channel_args *args, grpc_pollset_set *pollset_set, grpc_combiner *combiner); @@ -63,12 +63,11 @@ grpc_resolver_factory *grpc_resolver_factory_lookup(const char *name); /** Given a target, return a (freshly allocated with gpr_malloc) string representing the default authority to pass from a client. */ -char *grpc_get_default_authority(grpc_exec_ctx *exec_ctx, const char *target); +char *grpc_get_default_authority(const char *target); /** Returns a newly allocated string containing \a target, adding the default prefix if needed. */ -char *grpc_resolver_factory_add_default_prefix_if_needed( - grpc_exec_ctx *exec_ctx, const char *target); +char *grpc_resolver_factory_add_default_prefix_if_needed(const char *target); #ifdef __cplusplus } diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc index 5710a221784..34ac7133ac2 100644 --- a/src/core/ext/filters/client_channel/subchannel.cc +++ b/src/core/ext/filters/client_channel/subchannel.cc @@ -139,8 +139,7 @@ struct grpc_subchannel_call { #define CALLSTACK_TO_SUBCHANNEL_CALL(callstack) \ (((grpc_subchannel_call *)(callstack)) - 1) -static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *subchannel, - grpc_error *error); +static void subchannel_connected(void *subchannel, grpc_error *error); #ifndef NDEBUG #define REF_REASON reason @@ -157,10 +156,9 @@ static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *subchannel, * connection implementation */ -static void connection_destroy(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void connection_destroy(void *arg, grpc_error *error) { grpc_connected_subchannel *c = (grpc_connected_subchannel *)arg; - grpc_channel_stack_destroy(exec_ctx, CHANNEL_STACK_FROM_CONNECTION(c)); + grpc_channel_stack_destroy(CHANNEL_STACK_FROM_CONNECTION(c)); gpr_free(c); } @@ -170,26 +168,23 @@ grpc_connected_subchannel *grpc_connected_subchannel_ref( return c; } -void grpc_connected_subchannel_unref(grpc_exec_ctx *exec_ctx, - grpc_connected_subchannel *c - GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { - GRPC_CHANNEL_STACK_UNREF(exec_ctx, CHANNEL_STACK_FROM_CONNECTION(c), - REF_REASON); +void grpc_connected_subchannel_unref( + grpc_connected_subchannel *c GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { + GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CONNECTION(c), REF_REASON); } /* * grpc_subchannel implementation */ -static void subchannel_destroy(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void subchannel_destroy(void *arg, grpc_error *error) { grpc_subchannel *c = (grpc_subchannel *)arg; gpr_free((void *)c->filters); - grpc_channel_args_destroy(exec_ctx, c->args); - grpc_connectivity_state_destroy(exec_ctx, &c->state_tracker); - grpc_connector_unref(exec_ctx, c->connector); - grpc_pollset_set_destroy(exec_ctx, c->pollset_set); - grpc_subchannel_key_destroy(exec_ctx, c->key); + grpc_channel_args_destroy(c->args); + grpc_connectivity_state_destroy(&c->state_tracker); + grpc_connector_unref(c->connector); + grpc_pollset_set_destroy(c->pollset_set); + grpc_subchannel_key_destroy(c->key); gpr_mu_destroy(&c->mu); gpr_free(c); } @@ -241,58 +236,54 @@ grpc_subchannel *grpc_subchannel_ref_from_weak_ref( } } -static void disconnect(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) { +static void disconnect(grpc_subchannel *c) { grpc_connected_subchannel *con; - grpc_subchannel_index_unregister(exec_ctx, c->key, c); + grpc_subchannel_index_unregister(c->key, c); gpr_mu_lock(&c->mu); GPR_ASSERT(!c->disconnected); c->disconnected = true; - grpc_connector_shutdown( - exec_ctx, c->connector, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Subchannel disconnected")); + grpc_connector_shutdown(c->connector, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Subchannel disconnected")); con = GET_CONNECTED_SUBCHANNEL(c, no_barrier); if (con != NULL) { - GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, con, "connection"); + GRPC_CONNECTED_SUBCHANNEL_UNREF(con, "connection"); gpr_atm_no_barrier_store(&c->connected_subchannel, (gpr_atm)0xdeadbeef); } gpr_mu_unlock(&c->mu); } -void grpc_subchannel_unref(grpc_exec_ctx *exec_ctx, - grpc_subchannel *c GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { +void grpc_subchannel_unref(grpc_subchannel *c GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { gpr_atm old_refs; // add a weak ref and subtract a strong ref (atomically) old_refs = ref_mutate(c, (gpr_atm)1 - (gpr_atm)(1 << INTERNAL_REF_BITS), 1 REF_MUTATE_PURPOSE("STRONG_UNREF")); if ((old_refs & STRONG_REF_MASK) == (1 << INTERNAL_REF_BITS)) { - disconnect(exec_ctx, c); + disconnect(c); } - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "strong-unref"); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "strong-unref"); } -void grpc_subchannel_weak_unref(grpc_exec_ctx *exec_ctx, - grpc_subchannel *c - GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { +void grpc_subchannel_weak_unref( + grpc_subchannel *c GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { gpr_atm old_refs; old_refs = ref_mutate(c, -(gpr_atm)1, 1 REF_MUTATE_PURPOSE("WEAK_UNREF")); if (old_refs == 1) { - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(subchannel_destroy, c, - grpc_schedule_on_exec_ctx), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_CREATE(subchannel_destroy, c, grpc_schedule_on_exec_ctx), + GRPC_ERROR_NONE); } } -grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx, - grpc_connector *connector, +grpc_subchannel *grpc_subchannel_create(grpc_connector *connector, const grpc_subchannel_args *args) { grpc_subchannel_key *key = grpc_subchannel_key_create(args); - grpc_subchannel *c = grpc_subchannel_index_find(exec_ctx, key); + grpc_subchannel *c = grpc_subchannel_index_find(key); if (c) { - grpc_subchannel_key_destroy(exec_ctx, key); + grpc_subchannel_key_destroy(key); return c; } - GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED(exec_ctx); + GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED(); c = (grpc_subchannel *)gpr_zalloc(sizeof(*c)); c->key = key; gpr_atm_no_barrier_store(&c->ref_pair, 1 << INTERNAL_REF_BITS); @@ -310,10 +301,10 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx, c->pollset_set = grpc_pollset_set_create(); grpc_resolved_address *addr = (grpc_resolved_address *)gpr_malloc(sizeof(*addr)); - grpc_get_subchannel_address_arg(exec_ctx, args->args, addr); + grpc_get_subchannel_address_arg(args->args, addr); grpc_resolved_address *new_address = NULL; grpc_channel_args *new_args = NULL; - if (grpc_proxy_mappers_map_address(exec_ctx, addr, args->args, &new_address, + if (grpc_proxy_mappers_map_address(addr, args->args, &new_address, &new_args)) { GPR_ASSERT(new_address != NULL); gpr_free(addr); @@ -326,7 +317,7 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx, new_args != NULL ? new_args : args->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &new_arg, 1); gpr_free(new_arg.value.string); - if (new_args != NULL) grpc_channel_args_destroy(exec_ctx, new_args); + if (new_args != NULL) grpc_channel_args_destroy(new_args); c->root_external_state_watcher.next = c->root_external_state_watcher.prev = &c->root_external_state_watcher; GRPC_CLOSURE_INIT(&c->connected, subchannel_connected, c, @@ -372,21 +363,19 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx, min_backoff_ms, max_backoff_ms); gpr_mu_init(&c->mu); - return grpc_subchannel_index_register(exec_ctx, key, c); + return grpc_subchannel_index_register(key, c); } -static void continue_connect_locked(grpc_exec_ctx *exec_ctx, - grpc_subchannel *c) { +static void continue_connect_locked(grpc_subchannel *c) { grpc_connect_in_args args; args.interested_parties = c->pollset_set; args.deadline = c->next_attempt; args.channel_args = c->args; - grpc_connectivity_state_set(exec_ctx, &c->state_tracker, - GRPC_CHANNEL_CONNECTING, GRPC_ERROR_NONE, - "state_change"); - grpc_connector_connect(exec_ctx, c->connector, &args, &c->connecting_result, + grpc_connectivity_state_set(&c->state_tracker, GRPC_CHANNEL_CONNECTING, + GRPC_ERROR_NONE, "state_change"); + grpc_connector_connect(c->connector, &args, &c->connecting_result, &c->connected); } @@ -399,24 +388,23 @@ grpc_connectivity_state grpc_subchannel_check_connectivity(grpc_subchannel *c, return state; } -static void on_external_state_watcher_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_external_state_watcher_done(void *arg, grpc_error *error) { external_state_watcher *w = (external_state_watcher *)arg; grpc_closure *follow_up = w->notify; if (w->pollset_set != NULL) { - grpc_pollset_set_del_pollset_set(exec_ctx, w->subchannel->pollset_set, + grpc_pollset_set_del_pollset_set(w->subchannel->pollset_set, w->pollset_set); } gpr_mu_lock(&w->subchannel->mu); w->next->prev = w->prev; w->prev->next = w->next; gpr_mu_unlock(&w->subchannel->mu); - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, w->subchannel, "external_state_watcher"); + GRPC_SUBCHANNEL_WEAK_UNREF(w->subchannel, "external_state_watcher"); gpr_free(w); - GRPC_CLOSURE_RUN(exec_ctx, follow_up, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(follow_up, GRPC_ERROR_REF(error)); } -static void on_alarm(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_alarm(void *arg, grpc_error *error) { grpc_subchannel *c = (grpc_subchannel *)arg; gpr_mu_lock(&c->mu); c->have_alarm = false; @@ -428,18 +416,17 @@ static void on_alarm(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { } if (error == GRPC_ERROR_NONE) { gpr_log(GPR_INFO, "Failed to connect to channel, retrying"); - c->next_attempt = grpc_backoff_step(exec_ctx, &c->backoff_state); - continue_connect_locked(exec_ctx, c); + c->next_attempt = grpc_backoff_step(&c->backoff_state); + continue_connect_locked(c); gpr_mu_unlock(&c->mu); } else { gpr_mu_unlock(&c->mu); - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "connecting"); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting"); } GRPC_ERROR_UNREF(error); } -static void maybe_start_connecting_locked(grpc_exec_ctx *exec_ctx, - grpc_subchannel *c) { +static void maybe_start_connecting_locked(grpc_subchannel *c) { if (c->disconnected) { /* Don't try to connect if we're already disconnected */ return; @@ -465,27 +452,25 @@ static void maybe_start_connecting_locked(grpc_exec_ctx *exec_ctx, if (!c->backoff_begun) { c->backoff_begun = true; - c->next_attempt = grpc_backoff_begin(exec_ctx, &c->backoff_state); - continue_connect_locked(exec_ctx, c); + c->next_attempt = grpc_backoff_begin(&c->backoff_state); + continue_connect_locked(c); } else { GPR_ASSERT(!c->have_alarm); c->have_alarm = true; - const grpc_millis time_til_next = - c->next_attempt - grpc_exec_ctx_now(exec_ctx); + const grpc_millis time_til_next = c->next_attempt - grpc_exec_ctx_now(); if (time_til_next <= 0) { gpr_log(GPR_INFO, "Retry immediately"); } else { gpr_log(GPR_INFO, "Retry in %" PRIdPTR " milliseconds", time_til_next); } GRPC_CLOSURE_INIT(&c->on_alarm, on_alarm, c, grpc_schedule_on_exec_ctx); - grpc_timer_init(exec_ctx, &c->alarm, c->next_attempt, &c->on_alarm); + grpc_timer_init(&c->alarm, c->next_attempt, &c->on_alarm); } } void grpc_subchannel_notify_on_state_change( - grpc_exec_ctx *exec_ctx, grpc_subchannel *c, - grpc_pollset_set *interested_parties, grpc_connectivity_state *state, - grpc_closure *notify) { + grpc_subchannel *c, grpc_pollset_set *interested_parties, + grpc_connectivity_state *state, grpc_closure *notify) { external_state_watcher *w; if (state == NULL) { @@ -493,8 +478,8 @@ void grpc_subchannel_notify_on_state_change( for (w = c->root_external_state_watcher.next; w != &c->root_external_state_watcher; w = w->next) { if (w->notify == notify) { - grpc_connectivity_state_notify_on_state_change( - exec_ctx, &c->state_tracker, NULL, &w->closure); + grpc_connectivity_state_notify_on_state_change(&c->state_tracker, NULL, + &w->closure); } } gpr_mu_unlock(&c->mu); @@ -506,31 +491,28 @@ void grpc_subchannel_notify_on_state_change( GRPC_CLOSURE_INIT(&w->closure, on_external_state_watcher_done, w, grpc_schedule_on_exec_ctx); if (interested_parties != NULL) { - grpc_pollset_set_add_pollset_set(exec_ctx, c->pollset_set, - interested_parties); + grpc_pollset_set_add_pollset_set(c->pollset_set, interested_parties); } GRPC_SUBCHANNEL_WEAK_REF(c, "external_state_watcher"); gpr_mu_lock(&c->mu); w->next = &c->root_external_state_watcher; w->prev = w->next->prev; w->next->prev = w->prev->next = w; - grpc_connectivity_state_notify_on_state_change(exec_ctx, &c->state_tracker, - state, &w->closure); - maybe_start_connecting_locked(exec_ctx, c); + grpc_connectivity_state_notify_on_state_change(&c->state_tracker, state, + &w->closure); + maybe_start_connecting_locked(c); gpr_mu_unlock(&c->mu); } } void grpc_connected_subchannel_process_transport_op( - grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *con, - grpc_transport_op *op) { + grpc_connected_subchannel *con, grpc_transport_op *op) { grpc_channel_stack *channel_stack = CHANNEL_STACK_FROM_CONNECTION(con); grpc_channel_element *top_elem = grpc_channel_stack_element(channel_stack, 0); - top_elem->filter->start_transport_op(exec_ctx, top_elem, op); + top_elem->filter->start_transport_op(top_elem, op); } -static void subchannel_on_child_state_changed(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { +static void subchannel_on_child_state_changed(void *p, grpc_error *error) { state_watcher *sw = (state_watcher *)p; grpc_subchannel *c = sw->subchannel; gpr_mu *mu = &c->mu; @@ -542,24 +524,22 @@ static void subchannel_on_child_state_changed(grpc_exec_ctx *exec_ctx, void *p, /* any errors on a subchannel ==> we're done, create a new one */ sw->connectivity_state = GRPC_CHANNEL_SHUTDOWN; } - grpc_connectivity_state_set(exec_ctx, &c->state_tracker, - sw->connectivity_state, GRPC_ERROR_REF(error), - "reflect_child"); + grpc_connectivity_state_set(&c->state_tracker, sw->connectivity_state, + GRPC_ERROR_REF(error), "reflect_child"); if (sw->connectivity_state != GRPC_CHANNEL_SHUTDOWN) { grpc_connected_subchannel_notify_on_state_change( - exec_ctx, GET_CONNECTED_SUBCHANNEL(c, no_barrier), NULL, - &sw->connectivity_state, &sw->closure); + GET_CONNECTED_SUBCHANNEL(c, no_barrier), NULL, &sw->connectivity_state, + &sw->closure); GRPC_SUBCHANNEL_WEAK_REF(c, "state_watcher"); sw = NULL; } gpr_mu_unlock(mu); - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "state_watcher"); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "state_watcher"); gpr_free(sw); } -static void connected_subchannel_state_op(grpc_exec_ctx *exec_ctx, - grpc_connected_subchannel *con, +static void connected_subchannel_state_op(grpc_connected_subchannel *con, grpc_pollset_set *interested_parties, grpc_connectivity_state *state, grpc_closure *closure) { @@ -569,29 +549,25 @@ static void connected_subchannel_state_op(grpc_exec_ctx *exec_ctx, op->on_connectivity_state_change = closure; op->bind_pollset_set = interested_parties; elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CONNECTION(con), 0); - elem->filter->start_transport_op(exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); } void grpc_connected_subchannel_notify_on_state_change( - grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *con, - grpc_pollset_set *interested_parties, grpc_connectivity_state *state, - grpc_closure *closure) { - connected_subchannel_state_op(exec_ctx, con, interested_parties, state, - closure); + grpc_connected_subchannel *con, grpc_pollset_set *interested_parties, + grpc_connectivity_state *state, grpc_closure *closure) { + connected_subchannel_state_op(con, interested_parties, state, closure); } -void grpc_connected_subchannel_ping(grpc_exec_ctx *exec_ctx, - grpc_connected_subchannel *con, +void grpc_connected_subchannel_ping(grpc_connected_subchannel *con, grpc_closure *closure) { grpc_transport_op *op = grpc_make_transport_op(NULL); grpc_channel_element *elem; op->send_ping = closure; elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CONNECTION(con), 0); - elem->filter->start_transport_op(exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); } -static bool publish_transport_locked(grpc_exec_ctx *exec_ctx, - grpc_subchannel *c) { +static bool publish_transport_locked(grpc_subchannel *c) { grpc_connected_subchannel *con; grpc_channel_stack *stk; state_watcher *sw_subchannel; @@ -599,19 +575,18 @@ static bool publish_transport_locked(grpc_exec_ctx *exec_ctx, /* construct channel stack */ grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create(); grpc_channel_stack_builder_set_channel_arguments( - exec_ctx, builder, c->connecting_result.channel_args); + builder, c->connecting_result.channel_args); grpc_channel_stack_builder_set_transport(builder, c->connecting_result.transport); - if (!grpc_channel_init_create_stack(exec_ctx, builder, - GRPC_CLIENT_SUBCHANNEL)) { - grpc_channel_stack_builder_destroy(exec_ctx, builder); + if (!grpc_channel_init_create_stack(builder, GRPC_CLIENT_SUBCHANNEL)) { + grpc_channel_stack_builder_destroy(builder); return false; } grpc_error *error = grpc_channel_stack_builder_finish( - exec_ctx, builder, 0, 1, connection_destroy, NULL, (void **)&con); + builder, 0, 1, connection_destroy, NULL, (void **)&con); if (error != GRPC_ERROR_NONE) { - grpc_transport_destroy(exec_ctx, c->connecting_result.transport); + grpc_transport_destroy(c->connecting_result.transport); gpr_log(GPR_ERROR, "error initializing subchannel stack: %s", grpc_error_string(error)); GRPC_ERROR_UNREF(error); @@ -629,7 +604,7 @@ static bool publish_transport_locked(grpc_exec_ctx *exec_ctx, if (c->disconnected) { gpr_free(sw_subchannel); - grpc_channel_stack_destroy(exec_ctx, stk); + grpc_channel_stack_destroy(stk); gpr_free(con); return false; } @@ -645,33 +620,31 @@ static bool publish_transport_locked(grpc_exec_ctx *exec_ctx, /* setup subchannel watching connected subchannel for changes; subchannel ref for connecting is donated to the state watcher */ GRPC_SUBCHANNEL_WEAK_REF(c, "state_watcher"); - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "connecting"); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting"); grpc_connected_subchannel_notify_on_state_change( - exec_ctx, con, c->pollset_set, &sw_subchannel->connectivity_state, + con, c->pollset_set, &sw_subchannel->connectivity_state, &sw_subchannel->closure); /* signal completion */ - grpc_connectivity_state_set(exec_ctx, &c->state_tracker, GRPC_CHANNEL_READY, + grpc_connectivity_state_set(&c->state_tracker, GRPC_CHANNEL_READY, GRPC_ERROR_NONE, "connected"); return true; } -static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void subchannel_connected(void *arg, grpc_error *error) { grpc_subchannel *c = (grpc_subchannel *)arg; grpc_channel_args *delete_channel_args = c->connecting_result.channel_args; GRPC_SUBCHANNEL_WEAK_REF(c, "connected"); gpr_mu_lock(&c->mu); c->connecting = false; - if (c->connecting_result.transport != NULL && - publish_transport_locked(exec_ctx, c)) { + if (c->connecting_result.transport != NULL && publish_transport_locked(c)) { /* do nothing, transport was published */ } else if (c->disconnected) { - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "connecting"); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting"); } else { grpc_connectivity_state_set( - exec_ctx, &c->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, + &c->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Connect Failed", &error, 1), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE), @@ -680,27 +653,26 @@ static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *arg, const char *errmsg = grpc_error_string(error); gpr_log(GPR_INFO, "Connect failed: %s", errmsg); - maybe_start_connecting_locked(exec_ctx, c); - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "connecting"); + maybe_start_connecting_locked(c); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting"); } gpr_mu_unlock(&c->mu); - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, c, "connected"); - grpc_channel_args_destroy(exec_ctx, delete_channel_args); + GRPC_SUBCHANNEL_WEAK_UNREF(c, "connected"); + grpc_channel_args_destroy(delete_channel_args); } /* * grpc_subchannel_call implementation */ -static void subchannel_call_destroy(grpc_exec_ctx *exec_ctx, void *call, - grpc_error *error) { +static void subchannel_call_destroy(void *call, grpc_error *error) { grpc_subchannel_call *c = (grpc_subchannel_call *)call; GPR_ASSERT(c->schedule_closure_after_destroy != NULL); GPR_TIMER_BEGIN("grpc_subchannel_call_unref.destroy", 0); grpc_connected_subchannel *connection = c->connection; - grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c), NULL, + grpc_call_stack_destroy(SUBCHANNEL_CALL_TO_CALL_STACK(c), NULL, c->schedule_closure_after_destroy); - GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, connection, "subchannel_call"); + GRPC_CONNECTED_SUBCHANNEL_UNREF(connection, "subchannel_call"); GPR_TIMER_END("grpc_subchannel_call_unref.destroy", 0); } @@ -716,20 +688,18 @@ void grpc_subchannel_call_ref( GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(c), REF_REASON); } -void grpc_subchannel_call_unref(grpc_exec_ctx *exec_ctx, - grpc_subchannel_call *c - GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { - GRPC_CALL_STACK_UNREF(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c), REF_REASON); +void grpc_subchannel_call_unref( + grpc_subchannel_call *c GRPC_SUBCHANNEL_REF_EXTRA_ARGS) { + GRPC_CALL_STACK_UNREF(SUBCHANNEL_CALL_TO_CALL_STACK(c), REF_REASON); } -void grpc_subchannel_call_process_op(grpc_exec_ctx *exec_ctx, - grpc_subchannel_call *call, +void grpc_subchannel_call_process_op(grpc_subchannel_call *call, grpc_transport_stream_op_batch *batch) { GPR_TIMER_BEGIN("grpc_subchannel_call_process_op", 0); grpc_call_stack *call_stack = SUBCHANNEL_CALL_TO_CALL_STACK(call); grpc_call_element *top_elem = grpc_call_stack_element(call_stack, 0); GRPC_CALL_LOG_OP(GPR_INFO, top_elem, batch); - top_elem->filter->start_transport_stream_op_batch(exec_ctx, top_elem, batch); + top_elem->filter->start_transport_stream_op_batch(top_elem, batch); GPR_TIMER_END("grpc_subchannel_call_process_op", 0); } @@ -744,7 +714,7 @@ const grpc_subchannel_key *grpc_subchannel_get_key( } grpc_error *grpc_connected_subchannel_create_call( - grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *con, + grpc_connected_subchannel *con, const grpc_connected_subchannel_call_args *args, grpc_subchannel_call **call) { grpc_channel_stack *chanstk = CHANNEL_STACK_FROM_CONNECTION(con); @@ -762,14 +732,14 @@ grpc_error *grpc_connected_subchannel_create_call( args->arena, /* arena */ args->call_combiner /* call_combiner */ }; - grpc_error *error = grpc_call_stack_init( - exec_ctx, chanstk, 1, subchannel_call_destroy, *call, &call_args); + grpc_error *error = grpc_call_stack_init(chanstk, 1, subchannel_call_destroy, + *call, &call_args); if (error != GRPC_ERROR_NONE) { const char *error_string = grpc_error_string(error); gpr_log(GPR_ERROR, "error: %s", error_string); return error; } - grpc_call_stack_set_pollset_or_pollset_set(exec_ctx, callstk, args->pollent); + grpc_call_stack_set_pollset_or_pollset_set(callstk, args->pollent); return GRPC_ERROR_NONE; } @@ -778,21 +748,20 @@ grpc_call_stack *grpc_subchannel_call_get_call_stack( return SUBCHANNEL_CALL_TO_CALL_STACK(subchannel_call); } -static void grpc_uri_to_sockaddr(grpc_exec_ctx *exec_ctx, const char *uri_str, +static void grpc_uri_to_sockaddr(const char *uri_str, grpc_resolved_address *addr) { - grpc_uri *uri = grpc_uri_parse(exec_ctx, uri_str, 0 /* suppress_errors */); + grpc_uri *uri = grpc_uri_parse(uri_str, 0 /* suppress_errors */); GPR_ASSERT(uri != NULL); if (!grpc_parse_uri(uri, addr)) memset(addr, 0, sizeof(*addr)); grpc_uri_destroy(uri); } -void grpc_get_subchannel_address_arg(grpc_exec_ctx *exec_ctx, - const grpc_channel_args *args, +void grpc_get_subchannel_address_arg(const grpc_channel_args *args, grpc_resolved_address *addr) { const char *addr_uri_str = grpc_get_subchannel_address_uri_arg(args); memset(addr, 0, sizeof(*addr)); if (*addr_uri_str != '\0') { - grpc_uri_to_sockaddr(exec_ctx, addr_uri_str, addr); + grpc_uri_to_sockaddr(addr_uri_str, addr); } } diff --git a/src/core/ext/filters/client_channel/subchannel.h b/src/core/ext/filters/client_channel/subchannel.h index 46b29f1fe02..63d3353b7dd 100644 --- a/src/core/ext/filters/client_channel/subchannel.h +++ b/src/core/ext/filters/client_channel/subchannel.h @@ -46,36 +46,34 @@ typedef struct grpc_subchannel_key grpc_subchannel_key; grpc_subchannel_ref((p), __FILE__, __LINE__, (r)) #define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \ grpc_subchannel_ref_from_weak_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_SUBCHANNEL_UNREF(cl, p, r) \ - grpc_subchannel_unref((cl), (p), __FILE__, __LINE__, (r)) +#define GRPC_SUBCHANNEL_UNREF(p, r) \ + grpc_subchannel_unref((p), __FILE__, __LINE__, (r)) #define GRPC_SUBCHANNEL_WEAK_REF(p, r) \ grpc_subchannel_weak_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_SUBCHANNEL_WEAK_UNREF(cl, p, r) \ - grpc_subchannel_weak_unref((cl), (p), __FILE__, __LINE__, (r)) +#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) \ + grpc_subchannel_weak_unref((p), __FILE__, __LINE__, (r)) #define GRPC_CONNECTED_SUBCHANNEL_REF(p, r) \ grpc_connected_subchannel_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_CONNECTED_SUBCHANNEL_UNREF(cl, p, r) \ - grpc_connected_subchannel_unref((cl), (p), __FILE__, __LINE__, (r)) +#define GRPC_CONNECTED_SUBCHANNEL_UNREF(p, r) \ + grpc_connected_subchannel_unref((p), __FILE__, __LINE__, (r)) #define GRPC_SUBCHANNEL_CALL_REF(p, r) \ grpc_subchannel_call_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_SUBCHANNEL_CALL_UNREF(cl, p, r) \ - grpc_subchannel_call_unref((cl), (p), __FILE__, __LINE__, (r)) +#define GRPC_SUBCHANNEL_CALL_UNREF(p, r) \ + grpc_subchannel_call_unref((p), __FILE__, __LINE__, (r)) #define GRPC_SUBCHANNEL_REF_EXTRA_ARGS \ , const char *file, int line, const char *reason #else #define GRPC_SUBCHANNEL_REF(p, r) grpc_subchannel_ref((p)) #define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \ grpc_subchannel_ref_from_weak_ref((p)) -#define GRPC_SUBCHANNEL_UNREF(cl, p, r) grpc_subchannel_unref((cl), (p)) +#define GRPC_SUBCHANNEL_UNREF(p, r) grpc_subchannel_unref((p)) #define GRPC_SUBCHANNEL_WEAK_REF(p, r) grpc_subchannel_weak_ref((p)) -#define GRPC_SUBCHANNEL_WEAK_UNREF(cl, p, r) \ - grpc_subchannel_weak_unref((cl), (p)) +#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) grpc_subchannel_weak_unref((p)) #define GRPC_CONNECTED_SUBCHANNEL_REF(p, r) grpc_connected_subchannel_ref((p)) -#define GRPC_CONNECTED_SUBCHANNEL_UNREF(cl, p, r) \ - grpc_connected_subchannel_unref((cl), (p)) +#define GRPC_CONNECTED_SUBCHANNEL_UNREF(p, r) \ + grpc_connected_subchannel_unref((p)) #define GRPC_SUBCHANNEL_CALL_REF(p, r) grpc_subchannel_call_ref((p)) -#define GRPC_SUBCHANNEL_CALL_UNREF(cl, p, r) \ - grpc_subchannel_call_unref((cl), (p)) +#define GRPC_SUBCHANNEL_CALL_UNREF(p, r) grpc_subchannel_call_unref((p)) #define GRPC_SUBCHANNEL_REF_EXTRA_ARGS #endif @@ -83,24 +81,20 @@ grpc_subchannel *grpc_subchannel_ref( grpc_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); grpc_subchannel *grpc_subchannel_ref_from_weak_ref( grpc_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); -void grpc_subchannel_unref(grpc_exec_ctx *exec_ctx, - grpc_subchannel *channel - GRPC_SUBCHANNEL_REF_EXTRA_ARGS); +void grpc_subchannel_unref( + grpc_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); grpc_subchannel *grpc_subchannel_weak_ref( grpc_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); -void grpc_subchannel_weak_unref(grpc_exec_ctx *exec_ctx, - grpc_subchannel *channel - GRPC_SUBCHANNEL_REF_EXTRA_ARGS); +void grpc_subchannel_weak_unref( + grpc_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); grpc_connected_subchannel *grpc_connected_subchannel_ref( grpc_connected_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); -void grpc_connected_subchannel_unref(grpc_exec_ctx *exec_ctx, - grpc_connected_subchannel *channel - GRPC_SUBCHANNEL_REF_EXTRA_ARGS); +void grpc_connected_subchannel_unref( + grpc_connected_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); void grpc_subchannel_call_ref( grpc_subchannel_call *call GRPC_SUBCHANNEL_REF_EXTRA_ARGS); -void grpc_subchannel_call_unref(grpc_exec_ctx *exec_ctx, - grpc_subchannel_call *call - GRPC_SUBCHANNEL_REF_EXTRA_ARGS); +void grpc_subchannel_call_unref( + grpc_subchannel_call *call GRPC_SUBCHANNEL_REF_EXTRA_ARGS); /** construct a subchannel call */ typedef struct { @@ -114,14 +108,13 @@ typedef struct { } grpc_connected_subchannel_call_args; grpc_error *grpc_connected_subchannel_create_call( - grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *connected_subchannel, + grpc_connected_subchannel *connected_subchannel, const grpc_connected_subchannel_call_args *args, grpc_subchannel_call **subchannel_call); /** process a transport level op */ void grpc_connected_subchannel_process_transport_op( - grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *subchannel, - grpc_transport_op *op); + grpc_connected_subchannel *subchannel, grpc_transport_op *op); /** poll the current connectivity state of a channel */ grpc_connectivity_state grpc_subchannel_check_connectivity( @@ -130,15 +123,12 @@ grpc_connectivity_state grpc_subchannel_check_connectivity( /** call notify when the connectivity state of a channel changes from *state. Updates *state with the new state of the channel */ void grpc_subchannel_notify_on_state_change( - grpc_exec_ctx *exec_ctx, grpc_subchannel *channel, - grpc_pollset_set *interested_parties, grpc_connectivity_state *state, - grpc_closure *notify); + grpc_subchannel *channel, grpc_pollset_set *interested_parties, + grpc_connectivity_state *state, grpc_closure *notify); void grpc_connected_subchannel_notify_on_state_change( - grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *channel, - grpc_pollset_set *interested_parties, grpc_connectivity_state *state, - grpc_closure *notify); -void grpc_connected_subchannel_ping(grpc_exec_ctx *exec_ctx, - grpc_connected_subchannel *channel, + grpc_connected_subchannel *channel, grpc_pollset_set *interested_parties, + grpc_connectivity_state *state, grpc_closure *notify); +void grpc_connected_subchannel_ping(grpc_connected_subchannel *channel, grpc_closure *notify); /** retrieve the grpc_connected_subchannel - or NULL if called before @@ -151,8 +141,7 @@ const grpc_subchannel_key *grpc_subchannel_get_key( const grpc_subchannel *subchannel); /** continue processing a transport op */ -void grpc_subchannel_call_process_op(grpc_exec_ctx *exec_ctx, - grpc_subchannel_call *subchannel_call, +void grpc_subchannel_call_process_op(grpc_subchannel_call *subchannel_call, grpc_transport_stream_op_batch *op); /** Must be called once per call. Sets the 'then_schedule_closure' argument for @@ -176,13 +165,11 @@ struct grpc_subchannel_args { }; /** create a subchannel given a connector */ -grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx, - grpc_connector *connector, +grpc_subchannel *grpc_subchannel_create(grpc_connector *connector, const grpc_subchannel_args *args); /// Sets \a addr from \a args. -void grpc_get_subchannel_address_arg(grpc_exec_ctx *exec_ctx, - const grpc_channel_args *args, +void grpc_get_subchannel_address_arg(const grpc_channel_args *args, grpc_resolved_address *addr); /// Returns the URI string for the address to connect to. diff --git a/src/core/ext/filters/client_channel/subchannel_index.cc b/src/core/ext/filters/client_channel/subchannel_index.cc index 1f466ec0b8f..f7e0725767f 100644 --- a/src/core/ext/filters/client_channel/subchannel_index.cc +++ b/src/core/ext/filters/client_channel/subchannel_index.cc @@ -81,16 +81,14 @@ int grpc_subchannel_key_compare(const grpc_subchannel_key *a, return grpc_channel_args_compare(a->args.args, b->args.args); } -void grpc_subchannel_key_destroy(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *k) { +void grpc_subchannel_key_destroy(grpc_subchannel_key *k) { gpr_free((grpc_channel_args *)k->args.filters); - grpc_channel_args_destroy(exec_ctx, (grpc_channel_args *)k->args.args); + grpc_channel_args_destroy((grpc_channel_args *)k->args.args); gpr_free(k); } static void sck_avl_destroy(void *p, void *user_data) { - grpc_exec_ctx *exec_ctx = (grpc_exec_ctx *)user_data; - grpc_subchannel_key_destroy(exec_ctx, (grpc_subchannel_key *)p); + grpc_subchannel_key_destroy((grpc_subchannel_key *)p); } static void *sck_avl_copy(void *p, void *unused) { @@ -103,9 +101,7 @@ static long sck_avl_compare(void *a, void *b, void *unused) { } static void scv_avl_destroy(void *p, void *user_data) { - grpc_exec_ctx *exec_ctx = (grpc_exec_ctx *)user_data; - GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, (grpc_subchannel *)p, - "subchannel_index"); + GRPC_SUBCHANNEL_WEAK_UNREF((grpc_subchannel *)p, "subchannel_index"); } static void *scv_avl_copy(void *p, void *unused) { @@ -136,32 +132,30 @@ void grpc_subchannel_index_shutdown(void) { void grpc_subchannel_index_unref(void) { if (gpr_unref(&g_refcount)) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_mu_destroy(&g_mu); gpr_avl_unref(g_subchannel_index, &exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } } void grpc_subchannel_index_ref(void) { gpr_ref_non_zero(&g_refcount); } -grpc_subchannel *grpc_subchannel_index_find(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key) { +grpc_subchannel *grpc_subchannel_index_find(grpc_subchannel_key *key) { // Lock, and take a reference to the subchannel index. // We don't need to do the search under a lock as avl's are immutable. gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx); + gpr_avl index = gpr_avl_ref(g_subchannel_index, &exec_ctx); gpr_mu_unlock(&g_mu); grpc_subchannel *c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF( - (grpc_subchannel *)gpr_avl_get(index, key, exec_ctx), "index_find"); - gpr_avl_unref(index, exec_ctx); + (grpc_subchannel *)gpr_avl_get(index, key, &exec_ctx), "index_find"); + gpr_avl_unref(index, &exec_ctx); return c; } -grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key, +grpc_subchannel *grpc_subchannel_index_register(grpc_subchannel_key *key, grpc_subchannel *constructed) { grpc_subchannel *c = NULL; bool need_to_unref_constructed; @@ -172,11 +166,11 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx, // Compare and swap loop: // - take a reference to the current index gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx); + gpr_avl index = gpr_avl_ref(g_subchannel_index, &exec_ctx); gpr_mu_unlock(&g_mu); // - Check to see if a subchannel already exists - c = (grpc_subchannel *)gpr_avl_get(index, key, exec_ctx); + c = (grpc_subchannel *)gpr_avl_get(index, key, &exec_ctx); if (c != NULL) { c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register"); } @@ -186,8 +180,8 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx, } else { // no -> update the avl and compare/swap gpr_avl updated = gpr_avl_add( - gpr_avl_ref(index, exec_ctx), subchannel_key_copy(key), - GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), exec_ctx); + gpr_avl_ref(index, &exec_ctx), subchannel_key_copy(key), + GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), &exec_ctx); // it may happen (but it's expected to be unlikely) // that some other thread has changed the index: @@ -199,41 +193,40 @@ grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx, } gpr_mu_unlock(&g_mu); - gpr_avl_unref(updated, exec_ctx); + gpr_avl_unref(updated, &exec_ctx); } - gpr_avl_unref(index, exec_ctx); + gpr_avl_unref(index, &exec_ctx); } if (need_to_unref_constructed) { - GRPC_SUBCHANNEL_UNREF(exec_ctx, constructed, "index_register"); + GRPC_SUBCHANNEL_UNREF(constructed, "index_register"); } return c; } -void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key, +void grpc_subchannel_index_unregister(grpc_subchannel_key *key, grpc_subchannel *constructed) { bool done = false; while (!done) { // Compare and swap loop: // - take a reference to the current index gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx); + gpr_avl index = gpr_avl_ref(g_subchannel_index, &exec_ctx); gpr_mu_unlock(&g_mu); // Check to see if this key still refers to the previously // registered subchannel - grpc_subchannel *c = (grpc_subchannel *)gpr_avl_get(index, key, exec_ctx); + grpc_subchannel *c = (grpc_subchannel *)gpr_avl_get(index, key, &exec_ctx); if (c != constructed) { - gpr_avl_unref(index, exec_ctx); + gpr_avl_unref(index, &exec_ctx); break; } // compare and swap the update (some other thread may have // mutated the index behind us) gpr_avl updated = - gpr_avl_remove(gpr_avl_ref(index, exec_ctx), key, exec_ctx); + gpr_avl_remove(gpr_avl_ref(index, &exec_ctx), key, &exec_ctx); gpr_mu_lock(&g_mu); if (index.root == g_subchannel_index.root) { @@ -242,8 +235,8 @@ void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx, } gpr_mu_unlock(&g_mu); - gpr_avl_unref(updated, exec_ctx); - gpr_avl_unref(index, exec_ctx); + gpr_avl_unref(updated, &exec_ctx); + gpr_avl_unref(index, &exec_ctx); } } diff --git a/src/core/ext/filters/client_channel/subchannel_index.h b/src/core/ext/filters/client_channel/subchannel_index.h index 05c3878379f..9be618e44fc 100644 --- a/src/core/ext/filters/client_channel/subchannel_index.h +++ b/src/core/ext/filters/client_channel/subchannel_index.h @@ -33,26 +33,22 @@ grpc_subchannel_key *grpc_subchannel_key_create( const grpc_subchannel_args *args); /** Destroy a subchannel key */ -void grpc_subchannel_key_destroy(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key); +void grpc_subchannel_key_destroy(grpc_subchannel_key *key); /** Given a subchannel key, find the subchannel registered for it. Returns NULL if no such channel exists. Thread-safe. */ -grpc_subchannel *grpc_subchannel_index_find(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key); +grpc_subchannel *grpc_subchannel_index_find(grpc_subchannel_key *key); /** Register a subchannel against a key. Takes ownership of \a constructed. Returns the registered subchannel. This may be different from \a constructed in the case of a registration race. */ -grpc_subchannel *grpc_subchannel_index_register(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key, +grpc_subchannel *grpc_subchannel_index_register(grpc_subchannel_key *key, grpc_subchannel *constructed); /** Remove \a constructed as the registered subchannel for \a key. */ -void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx, - grpc_subchannel_key *key, +void grpc_subchannel_index_unregister(grpc_subchannel_key *key, grpc_subchannel *constructed); int grpc_subchannel_key_compare(const grpc_subchannel_key *a, diff --git a/src/core/ext/filters/client_channel/uri_parser.cc b/src/core/ext/filters/client_channel/uri_parser.cc index fb4fb8e694c..4a5f25a7f3d 100644 --- a/src/core/ext/filters/client_channel/uri_parser.cc +++ b/src/core/ext/filters/client_channel/uri_parser.cc @@ -56,15 +56,15 @@ static grpc_uri *bad_uri(const char *uri_text, size_t pos, const char *section, } /** Returns a copy of percent decoded \a src[begin, end) */ -static char *decode_and_copy_component(grpc_exec_ctx *exec_ctx, const char *src, - size_t begin, size_t end) { +static char *decode_and_copy_component(const char *src, size_t begin, + size_t end) { grpc_slice component = grpc_slice_from_copied_buffer(src + begin, end - begin); grpc_slice decoded_component = grpc_permissive_percent_decode_slice(component); char *out = grpc_dump_slice(decoded_component, GPR_DUMP_ASCII); - grpc_slice_unref_internal(exec_ctx, component); - grpc_slice_unref_internal(exec_ctx, decoded_component); + grpc_slice_unref_internal(component); + grpc_slice_unref_internal(decoded_component); return out; } @@ -182,8 +182,7 @@ static void parse_query_parts(grpc_uri *uri) { } } -grpc_uri *grpc_uri_parse(grpc_exec_ctx *exec_ctx, const char *uri_text, - bool suppress_errors) { +grpc_uri *grpc_uri_parse(const char *uri_text, bool suppress_errors) { grpc_uri *uri; size_t scheme_begin = 0; size_t scheme_end = NOT_SET; @@ -271,16 +270,13 @@ grpc_uri *grpc_uri_parse(grpc_exec_ctx *exec_ctx, const char *uri_text, } uri = (grpc_uri *)gpr_zalloc(sizeof(*uri)); - uri->scheme = - decode_and_copy_component(exec_ctx, uri_text, scheme_begin, scheme_end); - uri->authority = decode_and_copy_component(exec_ctx, uri_text, - authority_begin, authority_end); - uri->path = - decode_and_copy_component(exec_ctx, uri_text, path_begin, path_end); - uri->query = - decode_and_copy_component(exec_ctx, uri_text, query_begin, query_end); - uri->fragment = decode_and_copy_component(exec_ctx, uri_text, fragment_begin, - fragment_end); + uri->scheme = decode_and_copy_component(uri_text, scheme_begin, scheme_end); + uri->authority = + decode_and_copy_component(uri_text, authority_begin, authority_end); + uri->path = decode_and_copy_component(uri_text, path_begin, path_end); + uri->query = decode_and_copy_component(uri_text, query_begin, query_end); + uri->fragment = + decode_and_copy_component(uri_text, fragment_begin, fragment_end); parse_query_parts(uri); return uri; diff --git a/src/core/ext/filters/client_channel/uri_parser.h b/src/core/ext/filters/client_channel/uri_parser.h index e78da5928b6..4ef6997c77f 100644 --- a/src/core/ext/filters/client_channel/uri_parser.h +++ b/src/core/ext/filters/client_channel/uri_parser.h @@ -41,8 +41,7 @@ typedef struct { } grpc_uri; /** parse a uri, return NULL on failure */ -grpc_uri *grpc_uri_parse(grpc_exec_ctx *exec_ctx, const char *uri_text, - bool suppress_errors); +grpc_uri *grpc_uri_parse(const char *uri_text, bool suppress_errors); /** return the part of a query string after the '=' in "?key=xxx&...", or NULL * if key is not present */ diff --git a/src/core/ext/filters/deadline/deadline_filter.cc b/src/core/ext/filters/deadline/deadline_filter.cc index dc194ec0684..3333800188e 100644 --- a/src/core/ext/filters/deadline/deadline_filter.cc +++ b/src/core/ext/filters/deadline/deadline_filter.cc @@ -36,18 +36,16 @@ // The on_complete callback used when sending a cancel_error batch down the // filter stack. Yields the call combiner when the batch returns. -static void yield_call_combiner(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* ignored) { +static void yield_call_combiner(void* arg, grpc_error* ignored) { grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg; - GRPC_CALL_COMBINER_STOP(exec_ctx, deadline_state->call_combiner, + GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner, "got on_complete from cancel_stream batch"); - GRPC_CALL_STACK_UNREF(exec_ctx, deadline_state->call_stack, "deadline_timer"); + GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "deadline_timer"); } // This is called via the call combiner, so access to deadline_state is // synchronized. -static void send_cancel_op_in_call_combiner(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void send_cancel_op_in_call_combiner(void* arg, grpc_error* error) { grpc_call_element* elem = (grpc_call_element*)arg; grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data; grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op( @@ -55,37 +53,34 @@ static void send_cancel_op_in_call_combiner(grpc_exec_ctx* exec_ctx, void* arg, deadline_state, grpc_schedule_on_exec_ctx)); batch->cancel_stream = true; batch->payload->cancel_stream.cancel_error = GRPC_ERROR_REF(error); - elem->filter->start_transport_stream_op_batch(exec_ctx, elem, batch); + elem->filter->start_transport_stream_op_batch(elem, batch); } // Timer callback. -static void timer_callback(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void timer_callback(void* arg, grpc_error* error) { grpc_call_element* elem = (grpc_call_element*)arg; grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data; if (error != GRPC_ERROR_CANCELLED) { error = grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Deadline Exceeded"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_DEADLINE_EXCEEDED); - grpc_call_combiner_cancel(exec_ctx, deadline_state->call_combiner, + grpc_call_combiner_cancel(deadline_state->call_combiner, GRPC_ERROR_REF(error)); GRPC_CLOSURE_INIT(&deadline_state->timer_callback, send_cancel_op_in_call_combiner, elem, grpc_schedule_on_exec_ctx); - GRPC_CALL_COMBINER_START(exec_ctx, deadline_state->call_combiner, + GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &deadline_state->timer_callback, error, "deadline exceeded -- sending cancel_stream op"); } else { - GRPC_CALL_STACK_UNREF(exec_ctx, deadline_state->call_stack, - "deadline_timer"); + GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "deadline_timer"); } } // Starts the deadline timer. // This is called via the call combiner, so access to deadline_state is // synchronized. -static void start_timer_if_needed(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static void start_timer_if_needed(grpc_call_element* elem, grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) { return; @@ -113,17 +108,16 @@ static void start_timer_if_needed(grpc_exec_ctx* exec_ctx, } GPR_ASSERT(closure != NULL); GRPC_CALL_STACK_REF(deadline_state->call_stack, "deadline_timer"); - grpc_timer_init(exec_ctx, &deadline_state->timer, deadline, closure); + grpc_timer_init(&deadline_state->timer, deadline, closure); } // Cancels the deadline timer. // This is called via the call combiner, so access to deadline_state is // synchronized. -static void cancel_timer_if_needed(grpc_exec_ctx* exec_ctx, - grpc_deadline_state* deadline_state) { +static void cancel_timer_if_needed(grpc_deadline_state* deadline_state) { if (deadline_state->timer_state == GRPC_DEADLINE_STATE_PENDING) { deadline_state->timer_state = GRPC_DEADLINE_STATE_FINISHED; - grpc_timer_cancel(exec_ctx, &deadline_state->timer); + grpc_timer_cancel(&deadline_state->timer); } else { // timer was either in STATE_INITAL (nothing to cancel) // OR in STATE_FINISHED (again nothing to cancel) @@ -131,12 +125,11 @@ static void cancel_timer_if_needed(grpc_exec_ctx* exec_ctx, } // Callback run when the call is complete. -static void on_complete(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { +static void on_complete(void* arg, grpc_error* error) { grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg; - cancel_timer_if_needed(exec_ctx, deadline_state); + cancel_timer_if_needed(deadline_state); // Invoke the next callback. - GRPC_CLOSURE_RUN(exec_ctx, deadline_state->next_on_complete, - GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(deadline_state->next_on_complete, GRPC_ERROR_REF(error)); } // Inject our own on_complete callback into op. @@ -156,8 +149,7 @@ struct start_timer_after_init_state { grpc_millis deadline; grpc_closure closure; }; -static void start_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void start_timer_after_init(void* arg, grpc_error* error) { struct start_timer_after_init_state* state = (struct start_timer_after_init_state*)arg; grpc_deadline_state* deadline_state = @@ -166,18 +158,18 @@ static void start_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg, // We are initially called without holding the call combiner, so we // need to bounce ourselves into it. state->in_call_combiner = true; - GRPC_CALL_COMBINER_START(exec_ctx, deadline_state->call_combiner, - &state->closure, GRPC_ERROR_REF(error), + GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &state->closure, + GRPC_ERROR_REF(error), "scheduling deadline timer"); return; } - start_timer_if_needed(exec_ctx, state->elem, state->deadline); + start_timer_if_needed(state->elem, state->deadline); gpr_free(state); - GRPC_CALL_COMBINER_STOP(exec_ctx, deadline_state->call_combiner, + GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner, "done scheduling deadline timer"); } -void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +void grpc_deadline_state_init(grpc_call_element* elem, grpc_call_stack* call_stack, grpc_call_combiner* call_combiner, grpc_millis deadline) { @@ -200,29 +192,27 @@ void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, state->deadline = deadline; GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state, grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(exec_ctx, &state->closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&state->closure, GRPC_ERROR_NONE); } } -void grpc_deadline_state_destroy(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem) { +void grpc_deadline_state_destroy(grpc_call_element* elem) { grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data; - cancel_timer_if_needed(exec_ctx, deadline_state); + cancel_timer_if_needed(deadline_state); } -void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +void grpc_deadline_state_reset(grpc_call_element* elem, grpc_millis new_deadline) { grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data; - cancel_timer_if_needed(exec_ctx, deadline_state); - start_timer_if_needed(exec_ctx, elem, new_deadline); + cancel_timer_if_needed(deadline_state); + start_timer_if_needed(elem, new_deadline); } void grpc_deadline_state_client_start_transport_stream_op_batch( - grpc_exec_ctx* exec_ctx, grpc_call_element* elem, - grpc_transport_stream_op_batch* op) { + grpc_call_element* elem, grpc_transport_stream_op_batch* op) { grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data; if (op->cancel_stream) { - cancel_timer_if_needed(exec_ctx, deadline_state); + cancel_timer_if_needed(deadline_state); } else { // Make sure we know when the call is complete, so that we can cancel // the timer. @@ -237,16 +227,14 @@ void grpc_deadline_state_client_start_transport_stream_op_batch( // // Constructor for channel_data. Used for both client and server filters. -static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem, +static grpc_error* init_channel_elem(grpc_channel_element* elem, grpc_channel_element_args* args) { GPR_ASSERT(!args->is_last); return GRPC_ERROR_NONE; } // Destructor for channel_data. Used for both client and server filters. -static void destroy_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem) {} +static void destroy_channel_elem(grpc_channel_element* elem) {} // Call data used for both client and server filter. typedef struct base_call_data { @@ -266,50 +254,45 @@ typedef struct server_call_data { } server_call_data; // Constructor for call_data. Used for both client and server filters. -static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static grpc_error* init_call_elem(grpc_call_element* elem, const grpc_call_element_args* args) { - grpc_deadline_state_init(exec_ctx, elem, args->call_stack, - args->call_combiner, args->deadline); + grpc_deadline_state_init(elem, args->call_stack, args->call_combiner, + args->deadline); return GRPC_ERROR_NONE; } // Destructor for call_data. Used for both client and server filters. -static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +static void destroy_call_elem(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* ignored) { - grpc_deadline_state_destroy(exec_ctx, elem); + grpc_deadline_state_destroy(elem); } // Method for starting a call op for client filter. static void client_start_transport_stream_op_batch( - grpc_exec_ctx* exec_ctx, grpc_call_element* elem, - grpc_transport_stream_op_batch* op) { - grpc_deadline_state_client_start_transport_stream_op_batch(exec_ctx, elem, - op); + grpc_call_element* elem, grpc_transport_stream_op_batch* op) { + grpc_deadline_state_client_start_transport_stream_op_batch(elem, op); // Chain to next filter. - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } // Callback for receiving initial metadata on the server. -static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void recv_initial_metadata_ready(void* arg, grpc_error* error) { grpc_call_element* elem = (grpc_call_element*)arg; server_call_data* calld = (server_call_data*)elem->call_data; // Get deadline from metadata and start the timer if needed. - start_timer_if_needed(exec_ctx, elem, calld->recv_initial_metadata->deadline); + start_timer_if_needed(elem, calld->recv_initial_metadata->deadline); // Invoke the next callback. calld->next_recv_initial_metadata_ready->cb( - exec_ctx, calld->next_recv_initial_metadata_ready->cb_arg, error); + calld->next_recv_initial_metadata_ready->cb_arg, error); } // Method for starting a call op for server filter. static void server_start_transport_stream_op_batch( - grpc_exec_ctx* exec_ctx, grpc_call_element* elem, - grpc_transport_stream_op_batch* op) { + grpc_call_element* elem, grpc_transport_stream_op_batch* op) { server_call_data* calld = (server_call_data*)elem->call_data; if (op->cancel_stream) { - cancel_timer_if_needed(exec_ctx, &calld->base.deadline_state); + cancel_timer_if_needed(&calld->base.deadline_state); } else { // If we're receiving initial metadata, we need to get the deadline // from the recv_initial_metadata_ready callback. So we inject our @@ -335,7 +318,7 @@ static void server_start_transport_stream_op_batch( } } // Chain to next filter. - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } const grpc_channel_filter grpc_client_deadline_filter = { @@ -372,8 +355,7 @@ bool grpc_deadline_checking_enabled(const grpc_channel_args* channel_args) { !grpc_channel_args_want_minimal_stack(channel_args)); } -static bool maybe_add_deadline_filter(grpc_exec_ctx* exec_ctx, - grpc_channel_stack_builder* builder, +static bool maybe_add_deadline_filter(grpc_channel_stack_builder* builder, void* arg) { return grpc_deadline_checking_enabled( grpc_channel_stack_builder_get_channel_arguments(builder)) diff --git a/src/core/ext/filters/deadline/deadline_filter.h b/src/core/ext/filters/deadline/deadline_filter.h index e665dc53ee3..0998614db37 100644 --- a/src/core/ext/filters/deadline/deadline_filter.h +++ b/src/core/ext/filters/deadline/deadline_filter.h @@ -53,13 +53,12 @@ typedef struct grpc_deadline_state { // // assumes elem->call_data is zero'd -void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +void grpc_deadline_state_init(grpc_call_element* elem, grpc_call_stack* call_stack, grpc_call_combiner* call_combiner, grpc_millis deadline); -void grpc_deadline_state_destroy(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem); +void grpc_deadline_state_destroy(grpc_call_element* elem); // Cancels the existing timer and starts a new one with new_deadline. // @@ -70,7 +69,7 @@ void grpc_deadline_state_destroy(grpc_exec_ctx* exec_ctx, // deadline may result in the timer being called twice. // // Note: Must be called while holding the call combiner. -void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +void grpc_deadline_state_reset(grpc_call_element* elem, grpc_millis new_deadline); // To be called from the client-side filter's start_transport_stream_op_batch() @@ -82,8 +81,7 @@ void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, // // Note: Must be called while holding the call combiner. void grpc_deadline_state_client_start_transport_stream_op_batch( - grpc_exec_ctx* exec_ctx, grpc_call_element* elem, - grpc_transport_stream_op_batch* op); + grpc_call_element* elem, grpc_transport_stream_op_batch* op); // Should deadline checking be performed (according to channel args) bool grpc_deadline_checking_enabled(const grpc_channel_args* args); diff --git a/src/core/ext/filters/http/client/http_client_filter.cc b/src/core/ext/filters/http/client/http_client_filter.cc index 6208089f2ec..5f57eb8e99e 100644 --- a/src/core/ext/filters/http/client/http_client_filter.cc +++ b/src/core/ext/filters/http/client/http_client_filter.cc @@ -68,12 +68,11 @@ typedef struct channel_data { size_t max_payload_size_for_get; } channel_data; -static grpc_error *client_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *client_filter_incoming_metadata(grpc_call_element *elem, grpc_metadata_batch *b) { if (b->idx.named.status != NULL) { if (grpc_mdelem_eq(b->idx.named.status->md, GRPC_MDELEM_STATUS_200)) { - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.status); + grpc_metadata_batch_remove(b, b->idx.named.status); } else { char *val = grpc_dump_slice(GRPC_MDVALUE(b->idx.named.status->md), GPR_DUMP_ASCII); @@ -98,10 +97,9 @@ static grpc_error *client_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, GRPC_MDVALUE(b->idx.named.grpc_message->md)); if (grpc_slice_is_equivalent(pct_decoded_msg, GRPC_MDVALUE(b->idx.named.grpc_message->md))) { - grpc_slice_unref_internal(exec_ctx, pct_decoded_msg); + grpc_slice_unref_internal(pct_decoded_msg); } else { - grpc_metadata_batch_set_value(exec_ctx, b->idx.named.grpc_message, - pct_decoded_msg); + grpc_metadata_batch_set_value(b->idx.named.grpc_message, pct_decoded_msg); } } @@ -131,60 +129,53 @@ static grpc_error *client_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, gpr_free(val); } } - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.content_type); + grpc_metadata_batch_remove(b, b->idx.named.content_type); } return GRPC_ERROR_NONE; } -static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, - void *user_data, grpc_error *error) { +static void recv_initial_metadata_ready(void *user_data, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; if (error == GRPC_ERROR_NONE) { - error = client_filter_incoming_metadata(exec_ctx, elem, - calld->recv_initial_metadata); + error = client_filter_incoming_metadata(elem, calld->recv_initial_metadata); } else { GRPC_ERROR_REF(error); } - GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_initial_metadata_ready, - error); + GRPC_CLOSURE_RUN(calld->original_recv_initial_metadata_ready, error); } -static void recv_trailing_metadata_on_complete(grpc_exec_ctx *exec_ctx, - void *user_data, +static void recv_trailing_metadata_on_complete(void *user_data, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; if (error == GRPC_ERROR_NONE) { - error = client_filter_incoming_metadata(exec_ctx, elem, - calld->recv_trailing_metadata); + error = + client_filter_incoming_metadata(elem, calld->recv_trailing_metadata); } else { GRPC_ERROR_REF(error); } - GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_trailing_metadata_on_complete, - error); + GRPC_CLOSURE_RUN(calld->original_recv_trailing_metadata_on_complete, error); } -static void send_message_on_complete(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void send_message_on_complete(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; - grpc_byte_stream_cache_destroy(exec_ctx, &calld->send_message_cache); - GRPC_CLOSURE_RUN(exec_ctx, calld->original_send_message_on_complete, + grpc_byte_stream_cache_destroy(&calld->send_message_cache); + GRPC_CLOSURE_RUN(calld->original_send_message_on_complete, GRPC_ERROR_REF(error)); } // Pulls a slice from the send_message byte stream, updating // calld->send_message_bytes_read. -static grpc_error *pull_slice_from_send_message(grpc_exec_ctx *exec_ctx, - call_data *calld) { +static grpc_error *pull_slice_from_send_message(call_data *calld) { grpc_slice incoming_slice; grpc_error *error = grpc_byte_stream_pull( - exec_ctx, &calld->send_message_caching_stream.base, &incoming_slice); + &calld->send_message_caching_stream.base, &incoming_slice); if (error == GRPC_ERROR_NONE) { calld->send_message_bytes_read += GRPC_SLICE_LENGTH(incoming_slice); - grpc_slice_unref_internal(exec_ctx, incoming_slice); + grpc_slice_unref_internal(incoming_slice); } return error; } @@ -194,12 +185,10 @@ static grpc_error *pull_slice_from_send_message(grpc_exec_ctx *exec_ctx, // calld->send_message_caching_stream.base.length, then we have completed // reading from the byte stream; otherwise, an async read has been dispatched // and on_send_message_next_done() will be invoked when it is complete. -static grpc_error *read_all_available_send_message_data(grpc_exec_ctx *exec_ctx, - call_data *calld) { - while (grpc_byte_stream_next(exec_ctx, - &calld->send_message_caching_stream.base, +static grpc_error *read_all_available_send_message_data(call_data *calld) { + while (grpc_byte_stream_next(&calld->send_message_caching_stream.base, ~(size_t)0, &calld->on_send_message_next_done)) { - grpc_error *error = pull_slice_from_send_message(exec_ctx, calld); + grpc_error *error = pull_slice_from_send_message(calld); if (error != GRPC_ERROR_NONE) return error; if (calld->send_message_bytes_read == calld->send_message_caching_stream.base.length) { @@ -210,19 +199,18 @@ static grpc_error *read_all_available_send_message_data(grpc_exec_ctx *exec_ctx, } // Async callback for grpc_byte_stream_next(). -static void on_send_message_next_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_send_message_next_done(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; if (error != GRPC_ERROR_NONE) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, calld->send_message_batch, error, calld->call_combiner); + calld->send_message_batch, error, calld->call_combiner); return; } - error = pull_slice_from_send_message(exec_ctx, calld); + error = pull_slice_from_send_message(calld); if (error != GRPC_ERROR_NONE) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, calld->send_message_batch, error, calld->call_combiner); + calld->send_message_batch, error, calld->call_combiner); return; } // There may or may not be more to read, but we don't care. If we got @@ -230,7 +218,7 @@ static void on_send_message_next_done(grpc_exec_ctx *exec_ctx, void *arg, // synchronously, so we were not able to do a cached call. Instead, // we just reset the byte stream and then send down the batch as-is. grpc_caching_byte_stream_reset(&calld->send_message_caching_stream); - grpc_call_next_op(exec_ctx, elem, calld->send_message_batch); + grpc_call_next_op(elem, calld->send_message_batch); } static char *slice_buffer_to_string(grpc_slice_buffer *slice_buffer) { @@ -248,8 +236,7 @@ static char *slice_buffer_to_string(grpc_slice_buffer *slice_buffer) { // Modifies the path entry in the batch's send_initial_metadata to // append the base64-encoded query for a GET request. -static grpc_error *update_path_for_get(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *update_path_for_get(grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; grpc_slice path_slice = @@ -282,24 +269,22 @@ static grpc_error *update_path_for_get(grpc_exec_ctx *exec_ctx, grpc_slice_sub_no_ref(path_with_query_slice, 0, strlen(t)); /* substitute previous path with the new path+query */ grpc_mdelem mdelem_path_and_query = - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_PATH, path_with_query_slice); + grpc_mdelem_from_slices(GRPC_MDSTR_PATH, path_with_query_slice); grpc_metadata_batch *b = batch->payload->send_initial_metadata.send_initial_metadata; - return grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path, + return grpc_metadata_batch_substitute(b, b->idx.named.path, mdelem_path_and_query); } -static void remove_if_present(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +static void remove_if_present(grpc_metadata_batch *batch, grpc_metadata_batch_callouts_index idx) { if (batch->idx.array[idx] != NULL) { - grpc_metadata_batch_remove(exec_ctx, batch, batch->idx.array[idx]); + grpc_metadata_batch_remove(batch, batch->idx.array[idx]); } } static void hc_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; channel_data *channeld = (channel_data *)elem->channel_data; GPR_TIMER_BEGIN("hc_start_transport_stream_op_batch", 0); @@ -345,17 +330,16 @@ static void hc_start_transport_stream_op_batch( calld->original_send_message_on_complete = batch->on_complete; batch->on_complete = &calld->send_message_on_complete; calld->send_message_batch = batch; - error = read_all_available_send_message_data(exec_ctx, calld); + error = read_all_available_send_message_data(calld); if (error != GRPC_ERROR_NONE) goto done; // If all the data has been read, then we can use GET. if (calld->send_message_bytes_read == calld->send_message_caching_stream.base.length) { method = GRPC_MDELEM_METHOD_GET; - error = update_path_for_get(exec_ctx, elem, batch); + error = update_path_for_get(elem, batch); if (error != GRPC_ERROR_NONE) goto done; batch->send_message = false; - grpc_byte_stream_destroy(exec_ctx, - &calld->send_message_caching_stream.base); + grpc_byte_stream_destroy(&calld->send_message_caching_stream.base); } else { // Not all data is available. The batch will be sent down // asynchronously in on_send_message_next_done(). @@ -372,41 +356,41 @@ static void hc_start_transport_stream_op_batch( } remove_if_present( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, GRPC_BATCH_METHOD); remove_if_present( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, GRPC_BATCH_SCHEME); remove_if_present( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, GRPC_BATCH_TE); remove_if_present( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, GRPC_BATCH_CONTENT_TYPE); remove_if_present( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, GRPC_BATCH_USER_AGENT); /* Send : prefixed headers, which have to be before any application layer headers. */ error = grpc_metadata_batch_add_head( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, &calld->method, method); if (error != GRPC_ERROR_NONE) goto done; error = grpc_metadata_batch_add_head( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, &calld->scheme, channeld->static_scheme); if (error != GRPC_ERROR_NONE) goto done; error = grpc_metadata_batch_add_tail( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, &calld->te_trailers, GRPC_MDELEM_TE_TRAILERS); if (error != GRPC_ERROR_NONE) goto done; error = grpc_metadata_batch_add_tail( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, &calld->content_type, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC); if (error != GRPC_ERROR_NONE) goto done; error = grpc_metadata_batch_add_tail( - exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata, + batch->payload->send_initial_metadata.send_initial_metadata, &calld->user_agent, GRPC_MDELEM_REF(channeld->user_agent)); if (error != GRPC_ERROR_NONE) goto done; } @@ -414,16 +398,15 @@ static void hc_start_transport_stream_op_batch( done: if (error != GRPC_ERROR_NONE) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, calld->send_message_batch, error, calld->call_combiner); + calld->send_message_batch, error, calld->call_combiner); } else if (!batch_will_be_handled_asynchronously) { - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); } GPR_TIMER_END("hc_start_transport_stream_op_batch", 0); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; calld->call_combiner = args->call_combiner; @@ -441,7 +424,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) {} @@ -533,8 +516,7 @@ static grpc_slice user_agent_from_args(const grpc_channel_args *args, } /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(!args->is_last); @@ -543,17 +525,16 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, chand->max_payload_size_for_get = max_payload_size_from_args(args->channel_args); chand->user_agent = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_USER_AGENT, + GRPC_MDSTR_USER_AGENT, user_agent_from_args(args->channel_args, args->optional_transport->vtable->name)); return GRPC_ERROR_NONE; } /* Destructor for channel data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; - GRPC_MDELEM_UNREF(exec_ctx, chand->user_agent); + GRPC_MDELEM_UNREF(chand->user_agent); } const grpc_channel_filter grpc_http_client_filter = { diff --git a/src/core/ext/filters/http/http_filters_plugin.cc b/src/core/ext/filters/http/http_filters_plugin.cc index 8f5b8563172..3af96da17bc 100644 --- a/src/core/ext/filters/http/http_filters_plugin.cc +++ b/src/core/ext/filters/http/http_filters_plugin.cc @@ -40,8 +40,7 @@ static bool is_building_http_like_transport( return t != NULL && strstr(t->vtable->name, "http"); } -static bool maybe_add_optional_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool maybe_add_optional_filter(grpc_channel_stack_builder *builder, void *arg) { if (!is_building_http_like_transport(builder)) return true; optional_filter *filtarg = (optional_filter *)arg; @@ -55,8 +54,7 @@ static bool maybe_add_optional_filter(grpc_exec_ctx *exec_ctx, : true; } -static bool maybe_add_required_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool maybe_add_required_filter(grpc_channel_stack_builder *builder, void *arg) { return is_building_http_like_transport(builder) ? grpc_channel_stack_builder_prepend_filter( diff --git a/src/core/ext/filters/http/message_compress/message_compress_filter.cc b/src/core/ext/filters/http/message_compress/message_compress_filter.cc index f785e1355d3..bacadb04b35 100644 --- a/src/core/ext/filters/http/message_compress/message_compress_filter.cc +++ b/src/core/ext/filters/http/message_compress/message_compress_filter.cc @@ -100,12 +100,11 @@ static bool skip_compression(grpc_call_element *elem, uint32_t flags, /** Filter initial metadata */ static grpc_error *process_send_initial_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_metadata_batch *initial_metadata, + grpc_call_element *elem, grpc_metadata_batch *initial_metadata, bool *has_compression_algorithm) GRPC_MUST_USE_RESULT; static grpc_error *process_send_initial_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_metadata_batch *initial_metadata, bool *has_compression_algorithm) { + grpc_call_element *elem, grpc_metadata_batch *initial_metadata, + bool *has_compression_algorithm) { call_data *calld = (call_data *)elem->call_data; channel_data *channeld = (channel_data *)elem->channel_data; *has_compression_algorithm = false; @@ -137,13 +136,13 @@ static grpc_error *process_send_initial_metadata( } *has_compression_algorithm = true; grpc_metadata_batch_remove( - exec_ctx, initial_metadata, + initial_metadata, initial_metadata->idx.named.grpc_internal_stream_encoding_request); /* Disable message-wise compression */ calld->compression_algorithm = GRPC_COMPRESS_NONE; if (initial_metadata->idx.named.grpc_internal_encoding_request != NULL) { grpc_metadata_batch_remove( - exec_ctx, initial_metadata, + initial_metadata, initial_metadata->idx.named.grpc_internal_encoding_request); } } else if (initial_metadata->idx.named.grpc_internal_encoding_request != @@ -160,7 +159,7 @@ static grpc_error *process_send_initial_metadata( } *has_compression_algorithm = true; grpc_metadata_batch_remove( - exec_ctx, initial_metadata, + initial_metadata, initial_metadata->idx.named.grpc_internal_encoding_request); } else { /* If no algorithm was found in the metadata and we aren't @@ -181,12 +180,11 @@ static grpc_error *process_send_initial_metadata( /* hint compression algorithm */ if (stream_compression_algorithm != GRPC_STREAM_COMPRESS_NONE) { error = grpc_metadata_batch_add_tail( - exec_ctx, initial_metadata, - &calld->stream_compression_algorithm_storage, + initial_metadata, &calld->stream_compression_algorithm_storage, grpc_stream_compression_encoding_mdelem(stream_compression_algorithm)); } else if (calld->compression_algorithm != GRPC_COMPRESS_NONE) { error = grpc_metadata_batch_add_tail( - exec_ctx, initial_metadata, &calld->compression_algorithm_storage, + initial_metadata, &calld->compression_algorithm_storage, grpc_compression_encoding_mdelem(calld->compression_algorithm)); } @@ -194,7 +192,7 @@ static grpc_error *process_send_initial_metadata( /* convey supported compression algorithms */ error = grpc_metadata_batch_add_tail( - exec_ctx, initial_metadata, &calld->accept_encoding_storage, + initial_metadata, &calld->accept_encoding_storage, GRPC_MDELEM_ACCEPT_ENCODING_FOR_ALGORITHMS( channeld->supported_compression_algorithms)); @@ -203,7 +201,7 @@ static grpc_error *process_send_initial_metadata( /* Do not overwrite accept-encoding header if it already presents. */ if (!initial_metadata->idx.named.accept_encoding) { error = grpc_metadata_batch_add_tail( - exec_ctx, initial_metadata, &calld->accept_stream_encoding_storage, + initial_metadata, &calld->accept_stream_encoding_storage, GRPC_MDELEM_ACCEPT_STREAM_ENCODING_FOR_ALGORITHMS( channeld->supported_stream_compression_algorithms)); } @@ -211,17 +209,15 @@ static grpc_error *process_send_initial_metadata( return error; } -static void send_message_on_complete(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void send_message_on_complete(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &calld->slices); - GRPC_CLOSURE_RUN(exec_ctx, calld->original_send_message_on_complete, + grpc_slice_buffer_reset_and_unref_internal(&calld->slices); + GRPC_CLOSURE_RUN(calld->original_send_message_on_complete, GRPC_ERROR_REF(error)); } -static void send_message_batch_continue(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static void send_message_batch_continue(grpc_call_element *elem) { call_data *calld = (call_data *)elem->call_data; // Note: The call to grpc_call_next_op() results in yielding the // call combiner, so we need to clear calld->send_message_batch @@ -229,19 +225,18 @@ static void send_message_batch_continue(grpc_exec_ctx *exec_ctx, grpc_transport_stream_op_batch *send_message_batch = calld->send_message_batch; calld->send_message_batch = NULL; - grpc_call_next_op(exec_ctx, elem, send_message_batch); + grpc_call_next_op(elem, send_message_batch); } -static void finish_send_message(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static void finish_send_message(grpc_call_element *elem) { call_data *calld = (call_data *)elem->call_data; // Compress the data if appropriate. grpc_slice_buffer tmp; grpc_slice_buffer_init(&tmp); uint32_t send_flags = calld->send_message_batch->payload->send_message.send_message->flags; - bool did_compress = grpc_msg_compress(exec_ctx, calld->compression_algorithm, - &calld->slices, &tmp); + bool did_compress = + grpc_msg_compress(calld->compression_algorithm, &calld->slices, &tmp); if (did_compress) { if (GRPC_TRACER_ON(grpc_compression_trace)) { const char *algo_name; @@ -267,11 +262,11 @@ static void finish_send_message(grpc_exec_ctx *exec_ctx, algo_name, calld->slices.length); } } - grpc_slice_buffer_destroy_internal(exec_ctx, &tmp); + grpc_slice_buffer_destroy_internal(&tmp); // Swap out the original byte stream with our new one and send the // batch down. grpc_byte_stream_destroy( - exec_ctx, calld->send_message_batch->payload->send_message.send_message); + calld->send_message_batch->payload->send_message.send_message); grpc_slice_buffer_stream_init(&calld->replacement_stream, &calld->slices, send_flags); calld->send_message_batch->payload->send_message.send_message = @@ -279,27 +274,24 @@ static void finish_send_message(grpc_exec_ctx *exec_ctx, calld->original_send_message_on_complete = calld->send_message_batch->on_complete; calld->send_message_batch->on_complete = &calld->send_message_on_complete; - send_message_batch_continue(exec_ctx, elem); + send_message_batch_continue(elem); } -static void fail_send_message_batch_in_call_combiner(grpc_exec_ctx *exec_ctx, - void *arg, +static void fail_send_message_batch_in_call_combiner(void *arg, grpc_error *error) { call_data *calld = (call_data *)arg; if (calld->send_message_batch != NULL) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, calld->send_message_batch, GRPC_ERROR_REF(error), - calld->call_combiner); + calld->send_message_batch, GRPC_ERROR_REF(error), calld->call_combiner); calld->send_message_batch = NULL; } } // Pulls a slice from the send_message byte stream and adds it to calld->slices. -static grpc_error *pull_slice_from_send_message(grpc_exec_ctx *exec_ctx, - call_data *calld) { +static grpc_error *pull_slice_from_send_message(call_data *calld) { grpc_slice incoming_slice; grpc_error *error = grpc_byte_stream_pull( - exec_ctx, calld->send_message_batch->payload->send_message.send_message, + calld->send_message_batch->payload->send_message.send_message, &incoming_slice); if (error == GRPC_ERROR_NONE) { grpc_slice_buffer_add(&calld->slices, incoming_slice); @@ -311,69 +303,65 @@ static grpc_error *pull_slice_from_send_message(grpc_exec_ctx *exec_ctx, // If all data has been read, invokes finish_send_message(). Otherwise, // an async call to grpc_byte_stream_next() has been started, which will // eventually result in calling on_send_message_next_done(). -static void continue_reading_send_message(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { +static void continue_reading_send_message(grpc_call_element *elem) { call_data *calld = (call_data *)elem->call_data; while (grpc_byte_stream_next( - exec_ctx, calld->send_message_batch->payload->send_message.send_message, - ~(size_t)0, &calld->on_send_message_next_done)) { - grpc_error *error = pull_slice_from_send_message(exec_ctx, calld); + calld->send_message_batch->payload->send_message.send_message, ~(size_t)0, + &calld->on_send_message_next_done)) { + grpc_error *error = pull_slice_from_send_message(calld); if (error != GRPC_ERROR_NONE) { // Closure callback; does not take ownership of error. - fail_send_message_batch_in_call_combiner(exec_ctx, calld, error); + fail_send_message_batch_in_call_combiner(calld, error); GRPC_ERROR_UNREF(error); return; } if (calld->slices.length == calld->send_message_batch->payload->send_message.send_message->length) { - finish_send_message(exec_ctx, elem); + finish_send_message(elem); break; } } } // Async callback for grpc_byte_stream_next(). -static void on_send_message_next_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_send_message_next_done(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; if (error != GRPC_ERROR_NONE) { // Closure callback; does not take ownership of error. - fail_send_message_batch_in_call_combiner(exec_ctx, calld, error); + fail_send_message_batch_in_call_combiner(calld, error); return; } - error = pull_slice_from_send_message(exec_ctx, calld); + error = pull_slice_from_send_message(calld); if (error != GRPC_ERROR_NONE) { // Closure callback; does not take ownership of error. - fail_send_message_batch_in_call_combiner(exec_ctx, calld, error); + fail_send_message_batch_in_call_combiner(calld, error); GRPC_ERROR_UNREF(error); return; } if (calld->slices.length == calld->send_message_batch->payload->send_message.send_message->length) { - finish_send_message(exec_ctx, elem); + finish_send_message(elem); } else { - continue_reading_send_message(exec_ctx, elem); + continue_reading_send_message(elem); } } -static void start_send_message_batch(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *unused) { +static void start_send_message_batch(void *arg, grpc_error *unused) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; if (skip_compression( elem, calld->send_message_batch->payload->send_message.send_message->flags, calld->send_initial_metadata_state == HAS_COMPRESSION_ALGORITHM)) { - send_message_batch_continue(exec_ctx, elem); + send_message_batch_continue(elem); } else { - continue_reading_send_message(exec_ctx, elem); + continue_reading_send_message(elem); } } static void compress_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; GPR_TIMER_BEGIN("compress_start_transport_stream_op_batch", 0); // Handle cancel_stream. @@ -384,21 +372,19 @@ static void compress_start_transport_stream_op_batch( if (calld->send_message_batch != NULL) { if (calld->send_initial_metadata_state == INITIAL_METADATA_UNSEEN) { GRPC_CALL_COMBINER_START( - exec_ctx, calld->call_combiner, + calld->call_combiner, GRPC_CLOSURE_CREATE(fail_send_message_batch_in_call_combiner, calld, grpc_schedule_on_exec_ctx), GRPC_ERROR_REF(calld->cancel_error), "failing send_message op"); } else { grpc_byte_stream_shutdown( - exec_ctx, calld->send_message_batch->payload->send_message.send_message, GRPC_ERROR_REF(calld->cancel_error)); } } } else if (calld->cancel_error != GRPC_ERROR_NONE) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, batch, GRPC_ERROR_REF(calld->cancel_error), - calld->call_combiner); + batch, GRPC_ERROR_REF(calld->cancel_error), calld->call_combiner); goto done; } // Handle send_initial_metadata. @@ -406,11 +392,10 @@ static void compress_start_transport_stream_op_batch( GPR_ASSERT(calld->send_initial_metadata_state == INITIAL_METADATA_UNSEEN); bool has_compression_algorithm; grpc_error *error = process_send_initial_metadata( - exec_ctx, elem, - batch->payload->send_initial_metadata.send_initial_metadata, + elem, batch->payload->send_initial_metadata.send_initial_metadata, &has_compression_algorithm); if (error != GRPC_ERROR_NONE) { - grpc_transport_stream_op_batch_finish_with_failure(exec_ctx, batch, error, + grpc_transport_stream_op_batch_finish_with_failure(batch, error, calld->call_combiner); goto done; } @@ -424,7 +409,7 @@ static void compress_start_transport_stream_op_batch( // the call stack) will release the call combiner for each batch it sees. if (calld->send_message_batch != NULL) { GRPC_CALL_COMBINER_START( - exec_ctx, calld->call_combiner, + calld->call_combiner, &calld->start_send_message_batch_in_call_combiner, GRPC_ERROR_NONE, "starting send_message after send_initial_metadata"); } @@ -439,22 +424,21 @@ static void compress_start_transport_stream_op_batch( // send_initial_metadata. if (calld->send_initial_metadata_state == INITIAL_METADATA_UNSEEN) { GRPC_CALL_COMBINER_STOP( - exec_ctx, calld->call_combiner, + calld->call_combiner, "send_message batch pending send_initial_metadata"); goto done; } - start_send_message_batch(exec_ctx, elem, GRPC_ERROR_NONE); + start_send_message_batch(elem, GRPC_ERROR_NONE); } else { // Pass control down the stack. - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); } done: GPR_TIMER_END("compress_start_transport_stream_op_batch", 0); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; calld->call_combiner = args->call_combiner; @@ -470,17 +454,16 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *calld = (call_data *)elem->call_data; - grpc_slice_buffer_destroy_internal(exec_ctx, &calld->slices); + grpc_slice_buffer_destroy_internal(&calld->slices); GRPC_ERROR_UNREF(calld->cancel_error); } /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { channel_data *channeld = (channel_data *)elem->channel_data; @@ -530,8 +513,7 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for channel data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} const grpc_channel_filter grpc_message_compress_filter = { compress_start_transport_stream_op_batch, diff --git a/src/core/ext/filters/http/server/http_server_filter.cc b/src/core/ext/filters/http/server/http_server_filter.cc index 03958136b44..7a15b2f787d 100644 --- a/src/core/ext/filters/http/server/http_server_filter.cc +++ b/src/core/ext/filters/http/server/http_server_filter.cc @@ -64,8 +64,7 @@ typedef struct call_data { typedef struct channel_data { uint8_t unused; } channel_data; -static grpc_error *server_filter_outgoing_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *server_filter_outgoing_metadata(grpc_call_element *elem, grpc_metadata_batch *b) { if (b->idx.named.grpc_message != NULL) { grpc_slice pct_encoded_msg = grpc_percent_encode_slice( @@ -73,10 +72,9 @@ static grpc_error *server_filter_outgoing_metadata(grpc_exec_ctx *exec_ctx, grpc_compatible_percent_encoding_unreserved_bytes); if (grpc_slice_is_equivalent(pct_encoded_msg, GRPC_MDVALUE(b->idx.named.grpc_message->md))) { - grpc_slice_unref_internal(exec_ctx, pct_encoded_msg); + grpc_slice_unref_internal(pct_encoded_msg); } else { - grpc_metadata_batch_set_value(exec_ctx, b->idx.named.grpc_message, - pct_encoded_msg); + grpc_metadata_batch_set_value(b->idx.named.grpc_message, pct_encoded_msg); } } return GRPC_ERROR_NONE; @@ -91,8 +89,7 @@ static void add_error(const char *error_name, grpc_error **cumulative, *cumulative = grpc_error_add_child(*cumulative, new_err); } -static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *server_filter_incoming_metadata(grpc_call_element *elem, grpc_metadata_batch *b) { call_data *calld = (call_data *)elem->call_data; grpc_error *error = GRPC_ERROR_NONE; @@ -121,7 +118,7 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"), b->idx.named.method->md)); } - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.method); + grpc_metadata_batch_remove(b, b->idx.named.method); } else { add_error( error_name, &error, @@ -137,7 +134,7 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"), b->idx.named.te->md)); } - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.te); + grpc_metadata_batch_remove(b, b->idx.named.te); } else { add_error(error_name, &error, grpc_error_set_str( @@ -154,7 +151,7 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"), b->idx.named.scheme->md)); } - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.scheme); + grpc_metadata_batch_remove(b, b->idx.named.scheme); } else { add_error( error_name, &error, @@ -189,7 +186,7 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, gpr_free(val); } } - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.content_type); + grpc_metadata_batch_remove(b, b->idx.named.content_type); } if (b->idx.named.path == NULL) { @@ -216,22 +213,21 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, /* substitute path metadata with just the path (not query) */ grpc_mdelem mdelem_path_without_query = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_PATH, grpc_slice_sub(path_slice, 0, offset)); + GRPC_MDSTR_PATH, grpc_slice_sub(path_slice, 0, offset)); - grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path, + grpc_metadata_batch_substitute(b, b->idx.named.path, mdelem_path_without_query); /* decode payload from query and add to the slice buffer to be returned */ const int k_url_safe = 1; - grpc_slice_buffer_add( - &calld->read_slice_buffer, - grpc_base64_decode_with_len( - exec_ctx, (const char *)GRPC_SLICE_START_PTR(query_slice), - GRPC_SLICE_LENGTH(query_slice), k_url_safe)); + grpc_slice_buffer_add(&calld->read_slice_buffer, + grpc_base64_decode_with_len( + (const char *)GRPC_SLICE_START_PTR(query_slice), + GRPC_SLICE_LENGTH(query_slice), k_url_safe)); grpc_slice_buffer_stream_init(&calld->read_stream, &calld->read_slice_buffer, 0); calld->seen_path_with_query = true; - grpc_slice_unref_internal(exec_ctx, query_slice); + grpc_slice_unref_internal(query_slice); } else { gpr_log(GPR_ERROR, "GET request without QUERY"); } @@ -240,14 +236,13 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, if (b->idx.named.host != NULL && b->idx.named.authority == NULL) { grpc_linked_mdelem *el = b->idx.named.host; grpc_mdelem md = GRPC_MDELEM_REF(el->md); - grpc_metadata_batch_remove(exec_ctx, b, el); - add_error( - error_name, &error, - grpc_metadata_batch_add_head( - exec_ctx, b, el, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_AUTHORITY, - grpc_slice_ref_internal(GRPC_MDVALUE(md))))); - GRPC_MDELEM_UNREF(exec_ctx, md); + grpc_metadata_batch_remove(b, el); + add_error(error_name, &error, + grpc_metadata_batch_add_head( + b, el, grpc_mdelem_from_slices( + GRPC_MDSTR_AUTHORITY, + grpc_slice_ref_internal(GRPC_MDVALUE(md))))); + GRPC_MDELEM_UNREF(md); } if (b->idx.named.authority == NULL) { @@ -261,21 +256,18 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx, return error; } -static void hs_on_recv(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *err) { +static void hs_on_recv(void *user_data, grpc_error *err) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; if (err == GRPC_ERROR_NONE) { - err = server_filter_incoming_metadata(exec_ctx, elem, - calld->recv_initial_metadata); + err = server_filter_incoming_metadata(elem, calld->recv_initial_metadata); } else { GRPC_ERROR_REF(err); } - GRPC_CLOSURE_RUN(exec_ctx, calld->on_done_recv, err); + GRPC_CLOSURE_RUN(calld->on_done_recv, err); } -static void hs_on_complete(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *err) { +static void hs_on_complete(void *user_data, grpc_error *err) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; /* Call recv_message_ready if we got the payload via the path field */ @@ -285,17 +277,16 @@ static void hs_on_complete(grpc_exec_ctx *exec_ctx, void *user_data, : (grpc_byte_stream *)&calld->read_stream; // Re-enter call combiner for recv_message_ready, since the surface // code will release the call combiner for each callback it receives. - GRPC_CALL_COMBINER_START(exec_ctx, calld->call_combiner, - calld->recv_message_ready, GRPC_ERROR_REF(err), + GRPC_CALL_COMBINER_START(calld->call_combiner, calld->recv_message_ready, + GRPC_ERROR_REF(err), "resuming recv_message_ready from on_complete"); calld->recv_message_ready = NULL; calld->payload_bin_delivered = true; } - GRPC_CLOSURE_RUN(exec_ctx, calld->on_complete, GRPC_ERROR_REF(err)); + GRPC_CLOSURE_RUN(calld->on_complete, GRPC_ERROR_REF(err)); } -static void hs_recv_message_ready(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *err) { +static void hs_recv_message_ready(void *user_data, grpc_error *err) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; if (calld->seen_path_with_query) { @@ -303,15 +294,14 @@ static void hs_recv_message_ready(grpc_exec_ctx *exec_ctx, void *user_data, // returned in hs_on_complete callback. // Note that we release the call combiner here, so that other // callbacks can run. - GRPC_CALL_COMBINER_STOP(exec_ctx, calld->call_combiner, + GRPC_CALL_COMBINER_STOP(calld->call_combiner, "pausing recv_message_ready until on_complete"); } else { - GRPC_CLOSURE_RUN(exec_ctx, calld->recv_message_ready, GRPC_ERROR_REF(err)); + GRPC_CLOSURE_RUN(calld->recv_message_ready, GRPC_ERROR_REF(err)); } } -static grpc_error *hs_mutate_op(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *hs_mutate_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { /* grab pointers to our data from the call element */ call_data *calld = (call_data *)elem->call_data; @@ -319,21 +309,19 @@ static grpc_error *hs_mutate_op(grpc_exec_ctx *exec_ctx, if (op->send_initial_metadata) { grpc_error *error = GRPC_ERROR_NONE; static const char *error_name = "Failed sending initial metadata"; + add_error(error_name, &error, + grpc_metadata_batch_add_head( + op->payload->send_initial_metadata.send_initial_metadata, + &calld->status, GRPC_MDELEM_STATUS_200)); + add_error(error_name, &error, + grpc_metadata_batch_add_tail( + op->payload->send_initial_metadata.send_initial_metadata, + &calld->content_type, + GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC)); add_error( error_name, &error, - grpc_metadata_batch_add_head( - exec_ctx, op->payload->send_initial_metadata.send_initial_metadata, - &calld->status, GRPC_MDELEM_STATUS_200)); - add_error( - error_name, &error, - grpc_metadata_batch_add_tail( - exec_ctx, op->payload->send_initial_metadata.send_initial_metadata, - &calld->content_type, - GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC)); - add_error(error_name, &error, - server_filter_outgoing_metadata( - exec_ctx, elem, - op->payload->send_initial_metadata.send_initial_metadata)); + server_filter_outgoing_metadata( + elem, op->payload->send_initial_metadata.send_initial_metadata)); if (error != GRPC_ERROR_NONE) return error; } @@ -365,8 +353,7 @@ static grpc_error *hs_mutate_op(grpc_exec_ctx *exec_ctx, if (op->send_trailing_metadata) { grpc_error *error = server_filter_outgoing_metadata( - exec_ctx, elem, - op->payload->send_trailing_metadata.send_trailing_metadata); + elem, op->payload->send_trailing_metadata.send_trailing_metadata); if (error != GRPC_ERROR_NONE) return error; } @@ -374,23 +361,21 @@ static grpc_error *hs_mutate_op(grpc_exec_ctx *exec_ctx, } static void hs_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *op) { + grpc_call_element *elem, grpc_transport_stream_op_batch *op) { call_data *calld = (call_data *)elem->call_data; GPR_TIMER_BEGIN("hs_start_transport_stream_op_batch", 0); - grpc_error *error = hs_mutate_op(exec_ctx, elem, op); + grpc_error *error = hs_mutate_op(elem, op); if (error != GRPC_ERROR_NONE) { - grpc_transport_stream_op_batch_finish_with_failure(exec_ctx, op, error, + grpc_transport_stream_op_batch_finish_with_failure(op, error, calld->call_combiner); } else { - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } GPR_TIMER_END("hs_start_transport_stream_op_batch", 0); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { /* grab pointers to our data from the call element */ call_data *calld = (call_data *)elem->call_data; @@ -407,24 +392,22 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *calld = (call_data *)elem->call_data; - grpc_slice_buffer_destroy_internal(exec_ctx, &calld->read_slice_buffer); + grpc_slice_buffer_destroy_internal(&calld->read_slice_buffer); } /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { GPR_ASSERT(!args->is_last); return GRPC_ERROR_NONE; } /* Destructor for channel data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} const grpc_channel_filter grpc_http_server_filter = { hs_start_transport_stream_op_batch, diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc index ca8a3b2a134..6c93d0e8214 100644 --- a/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +++ b/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc @@ -54,8 +54,7 @@ typedef struct channel_data { intptr_t id; /**< an id unique to the channel */ } channel_data; -static void on_initial_md_ready(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *err) { +static void on_initial_md_ready(void *user_data, grpc_error *err) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; @@ -73,20 +72,19 @@ static void on_initial_md_ready(grpc_exec_ctx *exec_ctx, void *user_data, GRPC_MDVALUE(calld->recv_initial_metadata->idx.named.lb_token->md)); calld->have_initial_md_string = true; grpc_metadata_batch_remove( - exec_ctx, calld->recv_initial_metadata, + calld->recv_initial_metadata, calld->recv_initial_metadata->idx.named.lb_token); } } else { GRPC_ERROR_REF(err); } calld->ops_recv_initial_metadata_ready->cb( - exec_ctx, calld->ops_recv_initial_metadata_ready->cb_arg, err); + calld->ops_recv_initial_metadata_ready->cb_arg, err); GRPC_ERROR_UNREF(err); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; calld->id = (intptr_t)args->call_stack; @@ -108,7 +106,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *calld = (call_data *)elem->call_data; @@ -125,19 +123,18 @@ static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, */ if (calld->have_initial_md_string) { - grpc_slice_unref_internal(exec_ctx, calld->initial_md_string); + grpc_slice_unref_internal(calld->initial_md_string); } if (calld->have_trailing_md_string) { - grpc_slice_unref_internal(exec_ctx, calld->trailing_md_string); + grpc_slice_unref_internal(calld->trailing_md_string); } if (calld->have_service_method) { - grpc_slice_unref_internal(exec_ctx, calld->service_method); + grpc_slice_unref_internal(calld->service_method); } } /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { GPR_ASSERT(!args->is_last); @@ -158,8 +155,7 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for channel data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { /* TODO(dgq): do something with the data channel_data *chand = elem->channel_data; grpc_load_reporting_call_data lr_call_data = { @@ -173,8 +169,7 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, */ } -static grpc_filtered_mdelem lr_trailing_md_filter(grpc_exec_ctx *exec_ctx, - void *user_data, +static grpc_filtered_mdelem lr_trailing_md_filter(void *user_data, grpc_mdelem md) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; @@ -186,8 +181,7 @@ static grpc_filtered_mdelem lr_trailing_md_filter(grpc_exec_ctx *exec_ctx, } static void lr_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *op) { + grpc_call_element *elem, grpc_transport_stream_op_batch *op) { GPR_TIMER_BEGIN("lr_start_transport_stream_op_batch", 0); call_data *calld = (call_data *)elem->call_data; @@ -203,12 +197,11 @@ static void lr_start_transport_stream_op_batch( GRPC_LOG_IF_ERROR( "grpc_metadata_batch_filter", grpc_metadata_batch_filter( - exec_ctx, op->payload->send_trailing_metadata.send_trailing_metadata, lr_trailing_md_filter, elem, "LR trailing metadata filtering error")); } - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); GPR_TIMER_END("lr_start_transport_stream_op_batch", 0); } diff --git a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc index 223fb3ee8b4..6a38b718329 100644 --- a/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +++ b/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc @@ -38,7 +38,7 @@ static bool is_load_reporting_enabled(const grpc_channel_args *a) { } static bool maybe_add_server_load_reporting_filter( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, void *arg) { + grpc_channel_stack_builder *builder, void *arg) { const grpc_channel_args *args = grpc_channel_stack_builder_get_channel_arguments(builder); const grpc_channel_filter *filter = (const grpc_channel_filter *)arg; diff --git a/src/core/ext/filters/max_age/max_age_filter.cc b/src/core/ext/filters/max_age/max_age_filter.cc index ade2e5bc825..1b9ce3b9967 100644 --- a/src/core/ext/filters/max_age/max_age_filter.cc +++ b/src/core/ext/filters/max_age/max_age_filter.cc @@ -88,73 +88,67 @@ typedef struct channel_data { /* Increase the nubmer of active calls. Before the increasement, if there are no calls, the max_idle_timer should be cancelled. */ -static void increase_call_count(grpc_exec_ctx* exec_ctx, channel_data* chand) { +static void increase_call_count(channel_data* chand) { if (gpr_atm_full_fetch_add(&chand->call_count, 1) == 0) { - grpc_timer_cancel(exec_ctx, &chand->max_idle_timer); + grpc_timer_cancel(&chand->max_idle_timer); } } /* Decrease the nubmer of active calls. After the decrement, if there are no calls, the max_idle_timer should be started. */ -static void decrease_call_count(grpc_exec_ctx* exec_ctx, channel_data* chand) { +static void decrease_call_count(channel_data* chand) { if (gpr_atm_full_fetch_add(&chand->call_count, -1) == 1) { GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_idle_timer"); - grpc_timer_init(exec_ctx, &chand->max_idle_timer, - grpc_exec_ctx_now(exec_ctx) + chand->max_connection_idle, + grpc_timer_init(&chand->max_idle_timer, + grpc_exec_ctx_now() + chand->max_connection_idle, &chand->close_max_idle_channel); } } -static void start_max_idle_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void start_max_idle_timer_after_init(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; /* Decrease call_count. If there are no active calls at this time, max_idle_timer will start here. If the number of active calls is not 0, max_idle_timer will start after all the active calls end. */ - decrease_call_count(exec_ctx, chand); - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack, + decrease_call_count(chand); + GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age start_max_idle_timer_after_init"); } -static void start_max_age_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void start_max_age_timer_after_init(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; gpr_mu_lock(&chand->max_age_timer_mu); chand->max_age_timer_pending = true; GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_timer"); - grpc_timer_init(exec_ctx, &chand->max_age_timer, - grpc_exec_ctx_now(exec_ctx) + chand->max_connection_age, + grpc_timer_init(&chand->max_age_timer, + grpc_exec_ctx_now() + chand->max_connection_age, &chand->close_max_age_channel); gpr_mu_unlock(&chand->max_age_timer_mu); grpc_transport_op* op = grpc_make_transport_op(NULL); op->on_connectivity_state_change = &chand->channel_connectivity_changed, op->connectivity_state = &chand->connectivity_state; - grpc_channel_next_op(exec_ctx, - grpc_channel_stack_element(chand->channel_stack, 0), op); - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack, + grpc_channel_next_op(grpc_channel_stack_element(chand->channel_stack, 0), op); + GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age start_max_age_timer_after_init"); } -static void start_max_age_grace_timer_after_goaway_op(grpc_exec_ctx* exec_ctx, - void* arg, +static void start_max_age_grace_timer_after_goaway_op(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; gpr_mu_lock(&chand->max_age_timer_mu); chand->max_age_grace_timer_pending = true; GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_grace_timer"); - grpc_timer_init( - exec_ctx, &chand->max_age_grace_timer, - chand->max_connection_age_grace == GRPC_MILLIS_INF_FUTURE - ? GRPC_MILLIS_INF_FUTURE - : grpc_exec_ctx_now(exec_ctx) + chand->max_connection_age_grace, - &chand->force_close_max_age_channel); + grpc_timer_init(&chand->max_age_grace_timer, + chand->max_connection_age_grace == GRPC_MILLIS_INF_FUTURE + ? GRPC_MILLIS_INF_FUTURE + : grpc_exec_ctx_now() + chand->max_connection_age_grace, + &chand->force_close_max_age_channel); gpr_mu_unlock(&chand->max_age_timer_mu); - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack, + GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age start_max_age_grace_timer_after_goaway_op"); } -static void close_max_idle_channel(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void close_max_idle_channel(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; if (error == GRPC_ERROR_NONE) { /* Prevent the max idle timer from being set again */ @@ -165,16 +159,14 @@ static void close_max_idle_channel(grpc_exec_ctx* exec_ctx, void* arg, GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR); grpc_channel_element* elem = grpc_channel_stack_element(chand->channel_stack, 0); - elem->filter->start_transport_op(exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); } else if (error != GRPC_ERROR_CANCELLED) { GRPC_LOG_IF_ERROR("close_max_idle_channel", error); } - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack, - "max_age max_idle_timer"); + GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_idle_timer"); } -static void close_max_age_channel(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void close_max_age_channel(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; gpr_mu_lock(&chand->max_age_timer_mu); chand->max_age_timer_pending = false; @@ -189,16 +181,14 @@ static void close_max_age_channel(grpc_exec_ctx* exec_ctx, void* arg, GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR); grpc_channel_element* elem = grpc_channel_stack_element(chand->channel_stack, 0); - elem->filter->start_transport_op(exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); } else if (error != GRPC_ERROR_CANCELLED) { GRPC_LOG_IF_ERROR("close_max_age_channel", error); } - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack, - "max_age max_age_timer"); + GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_timer"); } -static void force_close_max_age_channel(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void force_close_max_age_channel(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; gpr_mu_lock(&chand->max_age_timer_mu); chand->max_age_grace_timer_pending = false; @@ -209,38 +199,36 @@ static void force_close_max_age_channel(grpc_exec_ctx* exec_ctx, void* arg, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel reaches max age"); grpc_channel_element* elem = grpc_channel_stack_element(chand->channel_stack, 0); - elem->filter->start_transport_op(exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); } else if (error != GRPC_ERROR_CANCELLED) { GRPC_LOG_IF_ERROR("force_close_max_age_channel", error); } - GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack, - "max_age max_age_grace_timer"); + GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_grace_timer"); } -static void channel_connectivity_changed(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void channel_connectivity_changed(void* arg, grpc_error* error) { channel_data* chand = (channel_data*)arg; if (chand->connectivity_state != GRPC_CHANNEL_SHUTDOWN) { grpc_transport_op* op = grpc_make_transport_op(NULL); op->on_connectivity_state_change = &chand->channel_connectivity_changed, op->connectivity_state = &chand->connectivity_state; - grpc_channel_next_op( - exec_ctx, grpc_channel_stack_element(chand->channel_stack, 0), op); + grpc_channel_next_op(grpc_channel_stack_element(chand->channel_stack, 0), + op); } else { gpr_mu_lock(&chand->max_age_timer_mu); if (chand->max_age_timer_pending) { - grpc_timer_cancel(exec_ctx, &chand->max_age_timer); + grpc_timer_cancel(&chand->max_age_timer); chand->max_age_timer_pending = false; } if (chand->max_age_grace_timer_pending) { - grpc_timer_cancel(exec_ctx, &chand->max_age_grace_timer); + grpc_timer_cancel(&chand->max_age_grace_timer); chand->max_age_grace_timer_pending = false; } gpr_mu_unlock(&chand->max_age_timer_mu); /* If there are no active calls, this increasement will cancel max_idle_timer, and prevent max_idle_timer from being started in the future. */ - increase_call_count(exec_ctx, chand); + increase_call_count(chand); } } @@ -263,25 +251,23 @@ add_random_max_connection_age_jitter_and_convert_to_grpc_millis(int value) { } /* Constructor for call_data. */ -static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static grpc_error* init_call_elem(grpc_call_element* elem, const grpc_call_element_args* args) { channel_data* chand = (channel_data*)elem->channel_data; - increase_call_count(exec_ctx, chand); + increase_call_count(chand); return GRPC_ERROR_NONE; } /* Destructor for call_data. */ -static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +static void destroy_call_elem(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* ignored) { channel_data* chand = (channel_data*)elem->channel_data; - decrease_call_count(exec_ctx, chand); + decrease_call_count(chand); } /* Constructor for channel_data. */ -static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem, +static grpc_error* init_channel_elem(grpc_channel_element* elem, grpc_channel_element_args* args) { channel_data* chand = (channel_data*)elem->channel_data; gpr_mu_init(&chand->max_age_timer_mu); @@ -351,8 +337,7 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, initialization is done. */ GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age start_max_age_timer_after_init"); - GRPC_CLOSURE_SCHED(exec_ctx, &chand->start_max_age_timer_after_init, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&chand->start_max_age_timer_after_init, GRPC_ERROR_NONE); } /* Initialize the number of calls as 1, so that the max_idle_timer will not @@ -361,15 +346,14 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, if (chand->max_connection_idle != GRPC_MILLIS_INF_FUTURE) { GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age start_max_idle_timer_after_init"); - GRPC_CLOSURE_SCHED(exec_ctx, &chand->start_max_idle_timer_after_init, + GRPC_CLOSURE_SCHED(&chand->start_max_idle_timer_after_init, GRPC_ERROR_NONE); } return GRPC_ERROR_NONE; } /* Destructor for channel_data. */ -static void destroy_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem) {} +static void destroy_channel_elem(grpc_channel_element* elem) {} const grpc_channel_filter grpc_max_age_filter = { grpc_call_next_op, @@ -384,8 +368,7 @@ const grpc_channel_filter grpc_max_age_filter = { grpc_channel_next_get_info, "max_age"}; -static bool maybe_add_max_age_filter(grpc_exec_ctx* exec_ctx, - grpc_channel_stack_builder* builder, +static bool maybe_add_max_age_filter(grpc_channel_stack_builder* builder, void* arg) { const grpc_channel_args* channel_args = grpc_channel_stack_builder_get_channel_arguments(builder); diff --git a/src/core/ext/filters/message_size/message_size_filter.cc b/src/core/ext/filters/message_size/message_size_filter.cc index 5dc131b9f6c..b5c0efe6b9f 100644 --- a/src/core/ext/filters/message_size/message_size_filter.cc +++ b/src/core/ext/filters/message_size/message_size_filter.cc @@ -35,9 +35,7 @@ typedef struct message_size_limits { int max_recv_size; } message_size_limits; -static void message_size_limits_free(grpc_exec_ctx* exec_ctx, void* value) { - gpr_free(value); -} +static void message_size_limits_free(void* value) { gpr_free(value); } static void* message_size_limits_create_from_json(const grpc_json* json) { int max_request_message_bytes = -1; @@ -88,8 +86,7 @@ typedef struct channel_data { // Callback invoked when we receive a message. Here we check the max // receive message size. -static void recv_message_ready(grpc_exec_ctx* exec_ctx, void* user_data, - grpc_error* error) { +static void recv_message_ready(void* user_data, grpc_error* error) { grpc_call_element* elem = (grpc_call_element*)user_data; call_data* calld = (call_data*)elem->call_data; if (*calld->recv_message != NULL && calld->limits.max_recv_size >= 0 && @@ -112,13 +109,12 @@ static void recv_message_ready(grpc_exec_ctx* exec_ctx, void* user_data, GRPC_ERROR_REF(error); } // Invoke the next callback. - GRPC_CLOSURE_RUN(exec_ctx, calld->next_recv_message_ready, error); + GRPC_CLOSURE_RUN(calld->next_recv_message_ready, error); } // Start transport stream op. static void start_transport_stream_op_batch( - grpc_exec_ctx* exec_ctx, grpc_call_element* elem, - grpc_transport_stream_op_batch* op) { + grpc_call_element* elem, grpc_transport_stream_op_batch* op) { call_data* calld = (call_data*)elem->call_data; // Check max send message size. if (op->send_message && calld->limits.max_send_size >= 0 && @@ -129,10 +125,9 @@ static void start_transport_stream_op_batch( op->payload->send_message.send_message->length, calld->limits.max_send_size); grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, op, - grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(message_string), - GRPC_ERROR_INT_GRPC_STATUS, - GRPC_STATUS_RESOURCE_EXHAUSTED), + op, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_COPIED_STRING(message_string), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED), calld->call_combiner); gpr_free(message_string); return; @@ -145,12 +140,11 @@ static void start_transport_stream_op_batch( op->payload->recv_message.recv_message_ready = &calld->recv_message_ready; } // Chain to the next filter. - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } // Constructor for call_data. -static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static grpc_error* init_call_elem(grpc_call_element* elem, const grpc_call_element_args* args) { channel_data* chand = (channel_data*)elem->channel_data; call_data* calld = (call_data*)elem->call_data; @@ -166,7 +160,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, if (chand->method_limit_table != NULL) { message_size_limits* limits = (message_size_limits*)grpc_method_config_table_get( - exec_ctx, chand->method_limit_table, args->path); + chand->method_limit_table, args->path); if (limits != NULL) { if (limits->max_send_size >= 0 && (limits->max_send_size < calld->limits.max_send_size || @@ -184,7 +178,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, } // Destructor for call_data. -static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +static void destroy_call_elem(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* ignored) {} @@ -221,8 +215,7 @@ message_size_limits get_message_size_limits( } // Constructor for channel_data. -static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem, +static grpc_error* init_channel_elem(grpc_channel_element* elem, grpc_channel_element_args* args) { GPR_ASSERT(!args->is_last); channel_data* chand = (channel_data*)elem->channel_data; @@ -237,7 +230,7 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, if (service_config != NULL) { chand->method_limit_table = grpc_service_config_create_method_config_table( - exec_ctx, service_config, message_size_limits_create_from_json, + service_config, message_size_limits_create_from_json, message_size_limits_free); grpc_service_config_destroy(service_config); } @@ -246,10 +239,9 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, } // Destructor for channel_data. -static void destroy_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem) { +static void destroy_channel_elem(grpc_channel_element* elem) { channel_data* chand = (channel_data*)elem->channel_data; - grpc_slice_hash_table_unref(exec_ctx, chand->method_limit_table); + grpc_slice_hash_table_unref(chand->method_limit_table); } const grpc_channel_filter grpc_message_size_filter = { @@ -265,8 +257,7 @@ const grpc_channel_filter grpc_message_size_filter = { grpc_channel_next_get_info, "message_size"}; -static bool maybe_add_message_size_filter(grpc_exec_ctx* exec_ctx, - grpc_channel_stack_builder* builder, +static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder, void* arg) { const grpc_channel_args* channel_args = grpc_channel_stack_builder_get_channel_arguments(builder); diff --git a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc index f77ed024211..95e4719e668 100644 --- a/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +++ b/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc @@ -50,8 +50,7 @@ static bool get_user_agent_mdelem(const grpc_metadata_batch* batch, } // Callback invoked when we receive an initial metadata. -static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, - void* user_data, grpc_error* error) { +static void recv_initial_metadata_ready(void* user_data, grpc_error* error) { grpc_call_element* elem = (grpc_call_element*)user_data; call_data* calld = (call_data*)elem->call_data; @@ -67,14 +66,13 @@ static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, } // Invoke the next callback. - GRPC_CLOSURE_RUN(exec_ctx, calld->next_recv_initial_metadata_ready, + GRPC_CLOSURE_RUN(calld->next_recv_initial_metadata_ready, GRPC_ERROR_REF(error)); } // Start transport stream op. static void start_transport_stream_op_batch( - grpc_exec_ctx* exec_ctx, grpc_call_element* elem, - grpc_transport_stream_op_batch* op) { + grpc_call_element* elem, grpc_transport_stream_op_batch* op) { call_data* calld = (call_data*)elem->call_data; // Inject callback for receiving initial metadata @@ -96,12 +94,11 @@ static void start_transport_stream_op_batch( } // Chain to the next filter. - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } // Constructor for call_data. -static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static grpc_error* init_call_elem(grpc_call_element* elem, const grpc_call_element_args* args) { call_data* calld = (call_data*)elem->call_data; calld->next_recv_initial_metadata_ready = NULL; @@ -113,20 +110,18 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx, } // Destructor for call_data. -static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +static void destroy_call_elem(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* ignored) {} // Constructor for channel_data. -static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem, +static grpc_error* init_channel_elem(grpc_channel_element* elem, grpc_channel_element_args* args) { return GRPC_ERROR_NONE; } // Destructor for channel_data. -static void destroy_channel_elem(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem) {} +static void destroy_channel_elem(grpc_channel_element* elem) {} // Parse the user agent static bool parse_user_agent(grpc_mdelem md) { @@ -181,7 +176,7 @@ const grpc_channel_filter grpc_workaround_cronet_compression_filter = { "workaround_cronet_compression"}; static bool register_workaround_cronet_compression( - grpc_exec_ctx* exec_ctx, grpc_channel_stack_builder* builder, void* arg) { + grpc_channel_stack_builder* builder, void* arg) { const grpc_channel_args* channel_args = grpc_channel_stack_builder_get_channel_arguments(builder); const grpc_arg* a = grpc_channel_args_find( diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.cc b/src/core/ext/transport/chttp2/client/chttp2_connector.cc index 202bcd47f5c..edeb59a702f 100644 --- a/src/core/ext/transport/chttp2/client/chttp2_connector.cc +++ b/src/core/ext/transport/chttp2/client/chttp2_connector.cc @@ -61,38 +61,34 @@ static void chttp2_connector_ref(grpc_connector *con) { gpr_ref(&c->refs); } -static void chttp2_connector_unref(grpc_exec_ctx *exec_ctx, - grpc_connector *con) { +static void chttp2_connector_unref(grpc_connector *con) { chttp2_connector *c = (chttp2_connector *)con; if (gpr_unref(&c->refs)) { gpr_mu_destroy(&c->mu); // If handshaking is not yet in progress, destroy the endpoint. // Otherwise, the handshaker will do this for us. - if (c->endpoint != NULL) grpc_endpoint_destroy(exec_ctx, c->endpoint); + if (c->endpoint != NULL) grpc_endpoint_destroy(c->endpoint); gpr_free(c); } } -static void chttp2_connector_shutdown(grpc_exec_ctx *exec_ctx, - grpc_connector *con, grpc_error *why) { +static void chttp2_connector_shutdown(grpc_connector *con, grpc_error *why) { chttp2_connector *c = (chttp2_connector *)con; gpr_mu_lock(&c->mu); c->shutdown = true; if (c->handshake_mgr != NULL) { - grpc_handshake_manager_shutdown(exec_ctx, c->handshake_mgr, - GRPC_ERROR_REF(why)); + grpc_handshake_manager_shutdown(c->handshake_mgr, GRPC_ERROR_REF(why)); } // If handshaking is not yet in progress, shutdown the endpoint. // Otherwise, the handshaker will do this for us. if (!c->connecting && c->endpoint != NULL) { - grpc_endpoint_shutdown(exec_ctx, c->endpoint, GRPC_ERROR_REF(why)); + grpc_endpoint_shutdown(c->endpoint, GRPC_ERROR_REF(why)); } gpr_mu_unlock(&c->mu); GRPC_ERROR_UNREF(why); } -static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_handshake_done(void *arg, grpc_error *error) { grpc_handshaker_args *args = (grpc_handshaker_args *)arg; chttp2_connector *c = (chttp2_connector *)args->user_data; gpr_mu_lock(&c->mu); @@ -105,10 +101,10 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, // before destroying them, even if we know that there are no // pending read/write callbacks. This should be fixed, at which // point this can be removed. - grpc_endpoint_shutdown(exec_ctx, args->endpoint, GRPC_ERROR_REF(error)); - grpc_endpoint_destroy(exec_ctx, args->endpoint); - grpc_channel_args_destroy(exec_ctx, args->args); - grpc_slice_buffer_destroy_internal(exec_ctx, args->read_buffer); + grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_REF(error)); + grpc_endpoint_destroy(args->endpoint); + grpc_channel_args_destroy(args->args); + grpc_slice_buffer_destroy_internal(args->read_buffer); gpr_free(args->read_buffer); } else { error = GRPC_ERROR_REF(error); @@ -116,33 +112,32 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, memset(c->result, 0, sizeof(*c->result)); } else { c->result->transport = - grpc_create_chttp2_transport(exec_ctx, args->args, args->endpoint, 1); + grpc_create_chttp2_transport(args->args, args->endpoint, 1); GPR_ASSERT(c->result->transport); - grpc_chttp2_transport_start_reading(exec_ctx, c->result->transport, + grpc_chttp2_transport_start_reading(c->result->transport, args->read_buffer); c->result->channel_args = args->args; } grpc_closure *notify = c->notify; c->notify = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, notify, error); - grpc_handshake_manager_destroy(exec_ctx, c->handshake_mgr); + GRPC_CLOSURE_SCHED(notify, error); + grpc_handshake_manager_destroy(c->handshake_mgr); c->handshake_mgr = NULL; gpr_mu_unlock(&c->mu); - chttp2_connector_unref(exec_ctx, (grpc_connector *)c); + chttp2_connector_unref((grpc_connector *)c); } -static void start_handshake_locked(grpc_exec_ctx *exec_ctx, - chttp2_connector *c) { +static void start_handshake_locked(chttp2_connector *c) { c->handshake_mgr = grpc_handshake_manager_create(); - grpc_handshakers_add(exec_ctx, HANDSHAKER_CLIENT, c->args.channel_args, + grpc_handshakers_add(HANDSHAKER_CLIENT, c->args.channel_args, c->handshake_mgr); grpc_handshake_manager_do_handshake( - exec_ctx, c->handshake_mgr, c->endpoint, c->args.channel_args, - c->args.deadline, NULL /* acceptor */, on_handshake_done, c); + c->handshake_mgr, c->endpoint, c->args.channel_args, c->args.deadline, + NULL /* acceptor */, on_handshake_done, c); c->endpoint = NULL; // Endpoint handed off to handshake manager. } -static void connected(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void connected(void *arg, grpc_error *error) { chttp2_connector *c = (chttp2_connector *)arg; gpr_mu_lock(&c->mu); GPR_ASSERT(c->connecting); @@ -156,27 +151,26 @@ static void connected(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { memset(c->result, 0, sizeof(*c->result)); grpc_closure *notify = c->notify; c->notify = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, notify, error); + GRPC_CLOSURE_SCHED(notify, error); if (c->endpoint != NULL) { - grpc_endpoint_shutdown(exec_ctx, c->endpoint, GRPC_ERROR_REF(error)); + grpc_endpoint_shutdown(c->endpoint, GRPC_ERROR_REF(error)); } gpr_mu_unlock(&c->mu); - chttp2_connector_unref(exec_ctx, (grpc_connector *)arg); + chttp2_connector_unref((grpc_connector *)arg); } else { GPR_ASSERT(c->endpoint != NULL); - start_handshake_locked(exec_ctx, c); + start_handshake_locked(c); gpr_mu_unlock(&c->mu); } } -static void chttp2_connector_connect(grpc_exec_ctx *exec_ctx, - grpc_connector *con, +static void chttp2_connector_connect(grpc_connector *con, const grpc_connect_in_args *args, grpc_connect_out_args *result, grpc_closure *notify) { chttp2_connector *c = (chttp2_connector *)con; grpc_resolved_address addr; - grpc_get_subchannel_address_arg(exec_ctx, args->channel_args, &addr); + grpc_get_subchannel_address_arg(args->channel_args, &addr); gpr_mu_lock(&c->mu); GPR_ASSERT(c->notify == NULL); c->notify = notify; @@ -187,9 +181,8 @@ static void chttp2_connector_connect(grpc_exec_ctx *exec_ctx, GRPC_CLOSURE_INIT(&c->connected, connected, c, grpc_schedule_on_exec_ctx); GPR_ASSERT(!c->connecting); c->connecting = true; - grpc_tcp_client_connect(exec_ctx, &c->connected, &c->endpoint, - args->interested_parties, args->channel_args, &addr, - args->deadline); + grpc_tcp_client_connect(&c->connected, &c->endpoint, args->interested_parties, + args->channel_args, &addr, args->deadline); gpr_mu_unlock(&c->mu); } diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc index 6410a6043db..b23c58d1c67 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc @@ -34,21 +34,19 @@ static void client_channel_factory_ref( grpc_client_channel_factory *cc_factory) {} static void client_channel_factory_unref( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory) {} + grpc_client_channel_factory *cc_factory) {} static grpc_subchannel *client_channel_factory_create_subchannel( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory, - const grpc_subchannel_args *args) { + grpc_client_channel_factory *cc_factory, const grpc_subchannel_args *args) { grpc_connector *connector = grpc_chttp2_connector_create(); - grpc_subchannel *s = grpc_subchannel_create(exec_ctx, connector, args); - grpc_connector_unref(exec_ctx, connector); + grpc_subchannel *s = grpc_subchannel_create(connector, args); + grpc_connector_unref(connector); return s; } static grpc_channel *client_channel_factory_create_channel( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory, - const char *target, grpc_client_channel_type type, - const grpc_channel_args *args) { + grpc_client_channel_factory *cc_factory, const char *target, + grpc_client_channel_type type, const grpc_channel_args *args) { if (target == NULL) { gpr_log(GPR_ERROR, "cannot create channel with NULL target name"); return NULL; @@ -56,14 +54,14 @@ static grpc_channel *client_channel_factory_create_channel( // Add channel arg containing the server URI. grpc_arg arg = grpc_channel_arg_string_create( (char *)GRPC_ARG_SERVER_URI, - grpc_resolver_factory_add_default_prefix_if_needed(exec_ctx, target)); + grpc_resolver_factory_add_default_prefix_if_needed(target)); const char *to_remove[] = {GRPC_ARG_SERVER_URI}; grpc_channel_args *new_args = grpc_channel_args_copy_and_add_and_remove(args, to_remove, 1, &arg, 1); gpr_free(arg.value.string); - grpc_channel *channel = grpc_channel_create(exec_ctx, target, new_args, - GRPC_CLIENT_CHANNEL, NULL); - grpc_channel_args_destroy(exec_ctx, new_args); + grpc_channel *channel = + grpc_channel_create(target, new_args, GRPC_CLIENT_CHANNEL, NULL); + grpc_channel_args_destroy(new_args); return channel; } @@ -82,7 +80,7 @@ static grpc_client_channel_factory client_channel_factory = { grpc_channel *grpc_insecure_channel_create(const char *target, const grpc_channel_args *args, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_insecure_channel_create(target=%s, args=%p, reserved=%p)", 3, (target, args, reserved)); @@ -93,11 +91,11 @@ grpc_channel *grpc_insecure_channel_create(const char *target, grpc_channel_args *new_args = grpc_channel_args_copy_and_add(args, &arg, 1); // Create channel. grpc_channel *channel = client_channel_factory_create_channel( - &exec_ctx, &client_channel_factory, target, - GRPC_CLIENT_CHANNEL_TYPE_REGULAR, new_args); + &client_channel_factory, target, GRPC_CLIENT_CHANNEL_TYPE_REGULAR, + new_args); // Clean up. - grpc_channel_args_destroy(&exec_ctx, new_args); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(new_args); + grpc_exec_ctx_finish(); return channel != NULL ? channel : grpc_lame_client_channel_create( target, GRPC_STATUS_INTERNAL, "Failed to create client channel"); diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc index dd88136f7b5..c438413961c 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc @@ -37,7 +37,7 @@ grpc_channel *grpc_insecure_channel_create_from_fd( const char *target, int fd, const grpc_channel_args *args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_insecure_channel_create(target=%p, fd=%d, args=%p)", 3, (target, fd, args)); @@ -50,17 +50,17 @@ grpc_channel *grpc_insecure_channel_create_from_fd( GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0); grpc_endpoint *client = grpc_tcp_client_create_from_fd( - &exec_ctx, grpc_fd_create(fd, "client"), args, "fd-client"); + grpc_fd_create(fd, "client"), args, "fd-client"); grpc_transport *transport = - grpc_create_chttp2_transport(&exec_ctx, final_args, client, 1); + grpc_create_chttp2_transport(final_args, client, 1); GPR_ASSERT(transport); grpc_channel *channel = grpc_channel_create( - &exec_ctx, target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); - grpc_channel_args_destroy(&exec_ctx, final_args); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); + grpc_channel_args_destroy(final_args); + grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return channel != NULL ? channel : grpc_lame_client_channel_create( target, GRPC_STATUS_INTERNAL, diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc index fe296cf4ff3..8d975cbfcdd 100644 --- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc @@ -41,10 +41,10 @@ static void client_channel_factory_ref( grpc_client_channel_factory *cc_factory) {} static void client_channel_factory_unref( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory) {} + grpc_client_channel_factory *cc_factory) {} static grpc_subchannel_args *get_secure_naming_subchannel_args( - grpc_exec_ctx *exec_ctx, const grpc_subchannel_args *args) { + const grpc_subchannel_args *args) { grpc_channel_credentials *channel_credentials = grpc_channel_credentials_find_in_args(args->args); if (channel_credentials == NULL) { @@ -68,7 +68,7 @@ static grpc_subchannel_args *get_secure_naming_subchannel_args( const char *server_uri_str = server_uri_arg->value.string; GPR_ASSERT(server_uri_str != NULL); grpc_uri *server_uri = - grpc_uri_parse(exec_ctx, server_uri_str, true /* supress errors */); + grpc_uri_parse(server_uri_str, true /* supress errors */); GPR_ASSERT(server_uri != NULL); const char *server_uri_path; server_uri_path = @@ -81,7 +81,7 @@ static grpc_subchannel_args *get_secure_naming_subchannel_args( const char *target_uri_str = grpc_get_subchannel_address_uri_arg(args->args); grpc_uri *target_uri = - grpc_uri_parse(exec_ctx, target_uri_str, false /* suppress errors */); + grpc_uri_parse(target_uri_str, false /* suppress errors */); GPR_ASSERT(target_uri != NULL); if (target_uri->path[0] != '\0') { // "path" may be empty const grpc_slice key = grpc_slice_from_static_string( @@ -89,7 +89,7 @@ static grpc_subchannel_args *get_secure_naming_subchannel_args( const char *value = (const char *)grpc_slice_hash_table_get(targets_info, key); if (value != NULL) target_name_to_check = gpr_strdup(value); - grpc_slice_unref_internal(exec_ctx, key); + grpc_slice_unref_internal(key); } if (target_name_to_check == NULL) { // If the target name to check hasn't already been set, fall back to using @@ -107,7 +107,7 @@ static grpc_subchannel_args *get_secure_naming_subchannel_args( grpc_channel_args *new_args_from_connector = NULL; const grpc_security_status security_status = grpc_channel_credentials_create_security_connector( - exec_ctx, channel_credentials, target_name_to_check, args->args, + channel_credentials, target_name_to_check, args->args, &subchannel_security_connector, &new_args_from_connector); if (security_status != GRPC_SECURITY_OK) { gpr_log(GPR_ERROR, @@ -123,10 +123,10 @@ static grpc_subchannel_args *get_secure_naming_subchannel_args( grpc_channel_args *new_args = grpc_channel_args_copy_and_add( new_args_from_connector != NULL ? new_args_from_connector : args->args, &new_security_connector_arg, 1); - GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, &subchannel_security_connector->base, + GRPC_SECURITY_CONNECTOR_UNREF(&subchannel_security_connector->base, "lb_channel_create"); if (new_args_from_connector != NULL) { - grpc_channel_args_destroy(exec_ctx, new_args_from_connector); + grpc_channel_args_destroy(new_args_from_connector); } grpc_subchannel_args *final_sc_args = (grpc_subchannel_args *)gpr_malloc(sizeof(*final_sc_args)); @@ -136,10 +136,9 @@ static grpc_subchannel_args *get_secure_naming_subchannel_args( } static grpc_subchannel *client_channel_factory_create_subchannel( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory, - const grpc_subchannel_args *args) { + grpc_client_channel_factory *cc_factory, const grpc_subchannel_args *args) { grpc_subchannel_args *subchannel_args = - get_secure_naming_subchannel_args(exec_ctx, args); + get_secure_naming_subchannel_args(args); if (subchannel_args == NULL) { gpr_log( GPR_ERROR, @@ -147,19 +146,16 @@ static grpc_subchannel *client_channel_factory_create_subchannel( return NULL; } grpc_connector *connector = grpc_chttp2_connector_create(); - grpc_subchannel *s = - grpc_subchannel_create(exec_ctx, connector, subchannel_args); - grpc_connector_unref(exec_ctx, connector); - grpc_channel_args_destroy(exec_ctx, - (grpc_channel_args *)subchannel_args->args); + grpc_subchannel *s = grpc_subchannel_create(connector, subchannel_args); + grpc_connector_unref(connector); + grpc_channel_args_destroy((grpc_channel_args *)subchannel_args->args); gpr_free(subchannel_args); return s; } static grpc_channel *client_channel_factory_create_channel( - grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *cc_factory, - const char *target, grpc_client_channel_type type, - const grpc_channel_args *args) { + grpc_client_channel_factory *cc_factory, const char *target, + grpc_client_channel_type type, const grpc_channel_args *args) { if (target == NULL) { gpr_log(GPR_ERROR, "cannot create channel with NULL target name"); return NULL; @@ -167,14 +163,14 @@ static grpc_channel *client_channel_factory_create_channel( // Add channel arg containing the server URI. grpc_arg arg = grpc_channel_arg_string_create( (char *)GRPC_ARG_SERVER_URI, - grpc_resolver_factory_add_default_prefix_if_needed(exec_ctx, target)); + grpc_resolver_factory_add_default_prefix_if_needed(target)); const char *to_remove[] = {GRPC_ARG_SERVER_URI}; grpc_channel_args *new_args = grpc_channel_args_copy_and_add_and_remove(args, to_remove, 1, &arg, 1); gpr_free(arg.value.string); - grpc_channel *channel = grpc_channel_create(exec_ctx, target, new_args, - GRPC_CLIENT_CHANNEL, NULL); - grpc_channel_args_destroy(exec_ctx, new_args); + grpc_channel *channel = + grpc_channel_create(target, new_args, GRPC_CLIENT_CHANNEL, NULL); + grpc_channel_args_destroy(new_args); return channel; } @@ -194,7 +190,7 @@ grpc_channel *grpc_secure_channel_create(grpc_channel_credentials *creds, const char *target, const grpc_channel_args *args, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_secure_channel_create(creds=%p, target=%s, args=%p, " "reserved=%p)", @@ -211,11 +207,11 @@ grpc_channel *grpc_secure_channel_create(grpc_channel_credentials *creds, args, args_to_add, GPR_ARRAY_SIZE(args_to_add)); // Create channel. channel = client_channel_factory_create_channel( - &exec_ctx, &client_channel_factory, target, - GRPC_CLIENT_CHANNEL_TYPE_REGULAR, new_args); + &client_channel_factory, target, GRPC_CLIENT_CHANNEL_TYPE_REGULAR, + new_args); // Clean up. - grpc_channel_args_destroy(&exec_ctx, new_args); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(new_args); + grpc_exec_ctx_finish(); } return channel != NULL ? channel : grpc_lame_client_channel_create( diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc index 7ac7f4ece82..a11e95cc728 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.cc +++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc @@ -59,8 +59,7 @@ typedef struct { grpc_handshake_manager *handshake_mgr; } server_connection_state; -static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_handshake_done(void *arg, grpc_error *error) { grpc_handshaker_args *args = (grpc_handshaker_args *)arg; server_connection_state *connection_state = (server_connection_state *)args->user_data; @@ -76,10 +75,10 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, // before destroying them, even if we know that there are no // pending read/write callbacks. This should be fixed, at which // point this can be removed. - grpc_endpoint_shutdown(exec_ctx, args->endpoint, GRPC_ERROR_NONE); - grpc_endpoint_destroy(exec_ctx, args->endpoint); - grpc_channel_args_destroy(exec_ctx, args->args); - grpc_slice_buffer_destroy_internal(exec_ctx, args->read_buffer); + grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_NONE); + grpc_endpoint_destroy(args->endpoint); + grpc_channel_args_destroy(args->args); + grpc_slice_buffer_destroy_internal(args->read_buffer); gpr_free(args->read_buffer); } } else { @@ -88,34 +87,33 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, // code, so we can just clean up here without creating a transport. if (args->endpoint != NULL) { grpc_transport *transport = - grpc_create_chttp2_transport(exec_ctx, args->args, args->endpoint, 0); + grpc_create_chttp2_transport(args->args, args->endpoint, 0); grpc_server_setup_transport( - exec_ctx, connection_state->svr_state->server, transport, + connection_state->svr_state->server, transport, connection_state->accepting_pollset, args->args); - grpc_chttp2_transport_start_reading(exec_ctx, transport, - args->read_buffer); - grpc_channel_args_destroy(exec_ctx, args->args); + grpc_chttp2_transport_start_reading(transport, args->read_buffer); + grpc_channel_args_destroy(args->args); } } grpc_handshake_manager_pending_list_remove( &connection_state->svr_state->pending_handshake_mgrs, connection_state->handshake_mgr); gpr_mu_unlock(&connection_state->svr_state->mu); - grpc_handshake_manager_destroy(exec_ctx, connection_state->handshake_mgr); - grpc_tcp_server_unref(exec_ctx, connection_state->svr_state->tcp_server); + grpc_handshake_manager_destroy(connection_state->handshake_mgr); + grpc_tcp_server_unref(connection_state->svr_state->tcp_server); gpr_free(connection_state->acceptor); gpr_free(connection_state); } -static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, +static void on_accept(void *arg, grpc_endpoint *tcp, grpc_pollset *accepting_pollset, grpc_tcp_server_acceptor *acceptor) { server_state *state = (server_state *)arg; gpr_mu_lock(&state->mu); if (state->shutdown) { gpr_mu_unlock(&state->mu); - grpc_endpoint_shutdown(exec_ctx, tcp, GRPC_ERROR_NONE); - grpc_endpoint_destroy(exec_ctx, tcp); + grpc_endpoint_shutdown(tcp, GRPC_ERROR_NONE); + grpc_endpoint_destroy(tcp); gpr_free(acceptor); return; } @@ -130,55 +128,52 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, connection_state->accepting_pollset = accepting_pollset; connection_state->acceptor = acceptor; connection_state->handshake_mgr = handshake_mgr; - grpc_handshakers_add(exec_ctx, HANDSHAKER_SERVER, state->args, + grpc_handshakers_add(HANDSHAKER_SERVER, state->args, connection_state->handshake_mgr); // TODO(roth): We should really get this timeout value from channel // args instead of hard-coding it. - const grpc_millis deadline = - grpc_exec_ctx_now(exec_ctx) + 120 * GPR_MS_PER_SEC; - grpc_handshake_manager_do_handshake(exec_ctx, connection_state->handshake_mgr, - tcp, state->args, deadline, acceptor, + const grpc_millis deadline = grpc_exec_ctx_now() + 120 * GPR_MS_PER_SEC; + grpc_handshake_manager_do_handshake(connection_state->handshake_mgr, tcp, + state->args, deadline, acceptor, on_handshake_done, connection_state); } /* Server callback: start listening on our ports */ -static void server_start_listener(grpc_exec_ctx *exec_ctx, grpc_server *server, - void *arg, grpc_pollset **pollsets, +static void server_start_listener(grpc_server *server, void *arg, + grpc_pollset **pollsets, size_t pollset_count) { server_state *state = (server_state *)arg; gpr_mu_lock(&state->mu); state->shutdown = false; gpr_mu_unlock(&state->mu); - grpc_tcp_server_start(exec_ctx, state->tcp_server, pollsets, pollset_count, - on_accept, state); + grpc_tcp_server_start(state->tcp_server, pollsets, pollset_count, on_accept, + state); } -static void tcp_server_shutdown_complete(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void tcp_server_shutdown_complete(void *arg, grpc_error *error) { server_state *state = (server_state *)arg; /* ensure all threads have unlocked */ gpr_mu_lock(&state->mu); grpc_closure *destroy_done = state->server_destroy_listener_done; GPR_ASSERT(state->shutdown); grpc_handshake_manager_pending_list_shutdown_all( - exec_ctx, state->pending_handshake_mgrs, GRPC_ERROR_REF(error)); + state->pending_handshake_mgrs, GRPC_ERROR_REF(error)); gpr_mu_unlock(&state->mu); // Flush queued work before destroying handshaker factory, since that // may do a synchronous unref. - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); if (destroy_done != NULL) { - destroy_done->cb(exec_ctx, destroy_done->cb_arg, GRPC_ERROR_REF(error)); - grpc_exec_ctx_flush(exec_ctx); + destroy_done->cb(destroy_done->cb_arg, GRPC_ERROR_REF(error)); + grpc_exec_ctx_flush(); } - grpc_channel_args_destroy(exec_ctx, state->args); + grpc_channel_args_destroy(state->args); gpr_mu_destroy(&state->mu); gpr_free(state); } /* Server callback: destroy the tcp listener (so we don't generate further callbacks) */ -static void server_destroy_listener(grpc_exec_ctx *exec_ctx, - grpc_server *server, void *arg, +static void server_destroy_listener(grpc_server *server, void *arg, grpc_closure *destroy_done) { server_state *state = (server_state *)arg; gpr_mu_lock(&state->mu); @@ -186,12 +181,11 @@ static void server_destroy_listener(grpc_exec_ctx *exec_ctx, state->server_destroy_listener_done = destroy_done; grpc_tcp_server *tcp_server = state->tcp_server; gpr_mu_unlock(&state->mu); - grpc_tcp_server_shutdown_listeners(exec_ctx, tcp_server); - grpc_tcp_server_unref(exec_ctx, tcp_server); + grpc_tcp_server_shutdown_listeners(tcp_server); + grpc_tcp_server_unref(tcp_server); } -grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx, - grpc_server *server, const char *addr, +grpc_error *grpc_chttp2_server_add_port(grpc_server *server, const char *addr, grpc_channel_args *args, int *port_num) { grpc_resolved_addresses *resolved = NULL; @@ -215,8 +209,8 @@ grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx, GRPC_CLOSURE_INIT(&state->tcp_server_shutdown_complete, tcp_server_shutdown_complete, state, grpc_schedule_on_exec_ctx); - err = grpc_tcp_server_create(exec_ctx, &state->tcp_server_shutdown_complete, - args, &tcp_server); + err = grpc_tcp_server_create(&state->tcp_server_shutdown_complete, args, + &tcp_server); if (err != GRPC_ERROR_NONE) { goto error; } @@ -264,7 +258,7 @@ grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx, grpc_resolved_addresses_destroy(resolved); /* Register with the server only upon success */ - grpc_server_add_listener(exec_ctx, server, state, server_start_listener, + grpc_server_add_listener(server, state, server_start_listener, server_destroy_listener); goto done; @@ -275,9 +269,9 @@ error: grpc_resolved_addresses_destroy(resolved); } if (tcp_server) { - grpc_tcp_server_unref(exec_ctx, tcp_server); + grpc_tcp_server_unref(tcp_server); } else { - grpc_channel_args_destroy(exec_ctx, args); + grpc_channel_args_destroy(args); gpr_free(state); } *port_num = 0; diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.h b/src/core/ext/transport/chttp2/server/chttp2_server.h index 2ac155160fc..a85d7e5a182 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.h +++ b/src/core/ext/transport/chttp2/server/chttp2_server.h @@ -29,8 +29,7 @@ extern "C" { /// Adds a port to \a server. Sets \a port_num to the port number. /// Takes ownership of \a args. -grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx, - grpc_server *server, const char *addr, +grpc_error *grpc_chttp2_server_add_port(grpc_server *server, const char *addr, grpc_channel_args *args, int *port_num); #ifdef __cplusplus diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc index d42b2d123e6..a766b316bb9 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc @@ -26,12 +26,12 @@ #include "src/core/lib/surface/server.h" int grpc_server_add_insecure_http2_port(grpc_server *server, const char *addr) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; int port_num = 0; GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2, (server, addr)); grpc_error *err = grpc_chttp2_server_add_port( - &exec_ctx, server, addr, + server, addr, grpc_channel_args_copy(grpc_server_get_channel_args(server)), &port_num); if (err != GRPC_ERROR_NONE) { const char *msg = grpc_error_string(err); @@ -39,6 +39,6 @@ int grpc_server_add_insecure_http2_port(grpc_server *server, const char *addr) { GRPC_ERROR_UNREF(err); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return port_num; } diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc index e647067f733..836365238a1 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc @@ -38,31 +38,30 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server *server, void *reserved, int fd) { GPR_ASSERT(reserved == NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; char *name; gpr_asprintf(&name, "fd:%d", fd); - grpc_endpoint *server_endpoint = - grpc_tcp_create(&exec_ctx, grpc_fd_create(fd, name), - grpc_server_get_channel_args(server), name); + grpc_endpoint *server_endpoint = grpc_tcp_create( + grpc_fd_create(fd, name), grpc_server_get_channel_args(server), name); gpr_free(name); const grpc_channel_args *server_args = grpc_server_get_channel_args(server); grpc_transport *transport = grpc_create_chttp2_transport( - &exec_ctx, server_args, server_endpoint, 0 /* is_client */); + server_args, server_endpoint, 0 /* is_client */); grpc_pollset **pollsets; size_t num_pollsets = 0; grpc_server_get_pollsets(server, &pollsets, &num_pollsets); for (size_t i = 0; i < num_pollsets; i++) { - grpc_endpoint_add_to_pollset(&exec_ctx, server_endpoint, pollsets[i]); + grpc_endpoint_add_to_pollset(server_endpoint, pollsets[i]); } - grpc_server_setup_transport(&exec_ctx, server, transport, NULL, server_args); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_server_setup_transport(server, transport, NULL, server_args); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } #else // !GPR_SUPPORT_CHANNELS_FROM_FD diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc index e74a138d232..95ab9eed769 100644 --- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc @@ -36,7 +36,7 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr, grpc_server_credentials *creds) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_error *err = GRPC_ERROR_NONE; grpc_server_security_connector *sc = NULL; int port_num = 0; @@ -52,8 +52,7 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr, "No credentials specified for secure server port (creds==NULL)"); goto done; } - status = - grpc_server_credentials_create_security_connector(&exec_ctx, creds, &sc); + status = grpc_server_credentials_create_security_connector(creds, &sc); if (status != GRPC_SECURITY_OK) { char *msg; gpr_asprintf(&msg, @@ -72,12 +71,12 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr, grpc_channel_args_copy_and_add(grpc_server_get_channel_args(server), args_to_add, GPR_ARRAY_SIZE(args_to_add)); // Add server port. - err = grpc_chttp2_server_add_port(&exec_ctx, server, addr, args, &port_num); + err = grpc_chttp2_server_add_port(server, addr, args, &port_num); done: if (sc != NULL) { - GRPC_SECURITY_CONNECTOR_UNREF(&exec_ctx, &sc->base, "server"); + GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "server"); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); if (err != GRPC_ERROR_NONE) { const char *msg = grpc_error_string(err); gpr_log(GPR_ERROR, "%s", msg); diff --git a/src/core/ext/transport/chttp2/transport/bin_decoder.cc b/src/core/ext/transport/chttp2/transport/bin_decoder.cc index 5a99cbeffcf..4c2a228060a 100644 --- a/src/core/ext/transport/chttp2/transport/bin_decoder.cc +++ b/src/core/ext/transport/chttp2/transport/bin_decoder.cc @@ -130,8 +130,7 @@ bool grpc_base64_decode_partial(struct grpc_base64_decode_context *ctx) { return true; } -grpc_slice grpc_chttp2_base64_decode(grpc_exec_ctx *exec_ctx, - grpc_slice input) { +grpc_slice grpc_chttp2_base64_decode(grpc_slice input) { size_t input_length = GRPC_SLICE_LENGTH(input); size_t output_length = input_length / 4 * 3; struct grpc_base64_decode_context ctx; @@ -167,7 +166,7 @@ grpc_slice grpc_chttp2_base64_decode(grpc_exec_ctx *exec_ctx, char *s = grpc_slice_to_c_string(input); gpr_log(GPR_ERROR, "Base64 decoding failed, input string:\n%s\n", s); gpr_free(s); - grpc_slice_unref_internal(exec_ctx, output); + grpc_slice_unref_internal(output); return grpc_empty_slice(); } GPR_ASSERT(ctx.output_cur == GRPC_SLICE_END_PTR(output)); @@ -175,8 +174,7 @@ grpc_slice grpc_chttp2_base64_decode(grpc_exec_ctx *exec_ctx, return output; } -grpc_slice grpc_chttp2_base64_decode_with_length(grpc_exec_ctx *exec_ctx, - grpc_slice input, +grpc_slice grpc_chttp2_base64_decode_with_length(grpc_slice input, size_t output_length) { size_t input_length = GRPC_SLICE_LENGTH(input); grpc_slice output = GRPC_SLICE_MALLOC(output_length); @@ -189,7 +187,7 @@ grpc_slice grpc_chttp2_base64_decode_with_length(grpc_exec_ctx *exec_ctx, "grpc_chttp2_base64_decode_with_length has a length of %d, which " "has a tail of 1 byte.\n", (int)input_length); - grpc_slice_unref_internal(exec_ctx, output); + grpc_slice_unref_internal(output); return grpc_empty_slice(); } @@ -199,7 +197,7 @@ grpc_slice grpc_chttp2_base64_decode_with_length(grpc_exec_ctx *exec_ctx, "than the max possible output length %d.\n", (int)output_length, (int)(input_length / 4 * 3 + tail_xtra[input_length % 4])); - grpc_slice_unref_internal(exec_ctx, output); + grpc_slice_unref_internal(output); return grpc_empty_slice(); } @@ -213,7 +211,7 @@ grpc_slice grpc_chttp2_base64_decode_with_length(grpc_exec_ctx *exec_ctx, char *s = grpc_slice_to_c_string(input); gpr_log(GPR_ERROR, "Base64 decoding failed, input string:\n%s\n", s); gpr_free(s); - grpc_slice_unref_internal(exec_ctx, output); + grpc_slice_unref_internal(output); return grpc_empty_slice(); } GPR_ASSERT(ctx.output_cur == GRPC_SLICE_END_PTR(output)); diff --git a/src/core/ext/transport/chttp2/transport/bin_decoder.h b/src/core/ext/transport/chttp2/transport/bin_decoder.h index 1c0b2b7e97a..48f206436b9 100644 --- a/src/core/ext/transport/chttp2/transport/bin_decoder.h +++ b/src/core/ext/transport/chttp2/transport/bin_decoder.h @@ -44,13 +44,12 @@ bool grpc_base64_decode_partial(struct grpc_base64_decode_context *ctx); /* base64 decode a slice with pad chars. Returns a new slice, does not take ownership of the input. Returns an empty slice if decoding is failed. */ -grpc_slice grpc_chttp2_base64_decode(grpc_exec_ctx *exec_ctx, grpc_slice input); +grpc_slice grpc_chttp2_base64_decode(grpc_slice input); /* base64 decode a slice without pad chars, data length is needed. Returns a new slice, does not take ownership of the input. Returns an empty slice if decoding is failed. */ -grpc_slice grpc_chttp2_base64_decode_with_length(grpc_exec_ctx *exec_ctx, - grpc_slice input, +grpc_slice grpc_chttp2_base64_decode_with_length(grpc_slice input, size_t output_length); #ifdef __cplusplus diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.h b/src/core/ext/transport/chttp2/transport/bin_encoder.h index 0be3633354e..2b71af2846d 100644 --- a/src/core/ext/transport/chttp2/transport/bin_encoder.h +++ b/src/core/ext/transport/chttp2/transport/bin_encoder.h @@ -36,7 +36,7 @@ grpc_slice grpc_chttp2_huffman_compress(grpc_slice input); /* equivalent to: grpc_slice x = grpc_chttp2_base64_encode(input); grpc_slice y = grpc_chttp2_huffman_compress(x); - grpc_slice_unref_internal(exec_ctx, x); + grpc_slice_unref_internal( x); return y; */ grpc_slice grpc_chttp2_base64_encode_and_huffman_compress(grpc_slice input); diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index 9462d1085eb..6f8493b58cb 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -100,105 +100,77 @@ grpc_tracer_flag grpc_trace_chttp2_refcount = #endif /* forward declarations of various callbacks that we'll build closures around */ -static void write_action_begin_locked(grpc_exec_ctx *exec_ctx, void *t, - grpc_error *error); -static void write_action(grpc_exec_ctx *exec_ctx, void *t, grpc_error *error); -static void write_action_end_locked(grpc_exec_ctx *exec_ctx, void *t, - grpc_error *error); +static void write_action_begin_locked(void *t, grpc_error *error); +static void write_action(void *t, grpc_error *error); +static void write_action_end_locked(void *t, grpc_error *error); -static void read_action_locked(grpc_exec_ctx *exec_ctx, void *t, - grpc_error *error); +static void read_action_locked(void *t, grpc_error *error); -static void complete_fetch_locked(grpc_exec_ctx *exec_ctx, void *gs, - grpc_error *error); +static void complete_fetch_locked(void *gs, grpc_error *error); /** Set a transport level setting, and push it to our peer */ -static void queue_setting_update(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void queue_setting_update(grpc_chttp2_transport *t, grpc_chttp2_setting_id id, uint32_t value); -static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_error *error); +static void close_from_api(grpc_chttp2_transport *t, grpc_chttp2_stream *s, + grpc_error *error); /** Start new streams that have been created if we can */ -static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); +static void maybe_start_some_streams(grpc_chttp2_transport *t); -static void connectivity_state_set(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void connectivity_state_set(grpc_chttp2_transport *t, grpc_connectivity_state state, grpc_error *error, const char *reason); -static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx, - void *byte_stream, +static void incoming_byte_stream_destroy_locked(void *byte_stream, grpc_error *error_ignored); static void incoming_byte_stream_publish_error( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_error *error); -static void incoming_byte_stream_unref(grpc_exec_ctx *exec_ctx, - grpc_chttp2_incoming_byte_stream *bs); - -static void benign_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *t, - grpc_error *error); -static void destructive_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *t, - grpc_error *error); - -static void post_benign_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static void post_destructive_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); - -static void close_transport_locked(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, grpc_error *error); -static void end_all_the_calls(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error); - -static void schedule_bdp_ping_locked(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static void start_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error); -static void finish_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error); -static void next_bdp_ping_timer_expired_locked(grpc_exec_ctx *exec_ctx, - void *tp, grpc_error *error); - -static void cancel_pings(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error); -static void send_ping_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, + grpc_chttp2_incoming_byte_stream *bs, grpc_error *error); +static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs); + +static void benign_reclaimer_locked(void *t, grpc_error *error); +static void destructive_reclaimer_locked(void *t, grpc_error *error); + +static void post_benign_reclaimer(grpc_chttp2_transport *t); +static void post_destructive_reclaimer(grpc_chttp2_transport *t); + +static void close_transport_locked(grpc_chttp2_transport *t, grpc_error *error); +static void end_all_the_calls(grpc_chttp2_transport *t, grpc_error *error); + +static void schedule_bdp_ping_locked(grpc_chttp2_transport *t); +static void start_bdp_ping_locked(void *tp, grpc_error *error); +static void finish_bdp_ping_locked(void *tp, grpc_error *error); +static void next_bdp_ping_timer_expired_locked(void *tp, grpc_error *error); + +static void cancel_pings(grpc_chttp2_transport *t, grpc_error *error); +static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_initiate, grpc_closure *on_complete); -static void retry_initiate_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error); +static void retry_initiate_ping_locked(void *tp, grpc_error *error); /** keepalive-relevant functions */ -static void init_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); -static void start_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); -static void finish_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); -static void keepalive_watchdog_fired_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); - -static void reset_byte_stream(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); +static void init_keepalive_ping_locked(void *arg, grpc_error *error); +static void start_keepalive_ping_locked(void *arg, grpc_error *error); +static void finish_keepalive_ping_locked(void *arg, grpc_error *error); +static void keepalive_watchdog_fired_locked(void *arg, grpc_error *error); + +static void reset_byte_stream(void *arg, grpc_error *error); /******************************************************************************* * CONSTRUCTION/DESTRUCTION/REFCOUNTING */ -static void destruct_transport(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static void destruct_transport(grpc_chttp2_transport *t) { size_t i; - grpc_endpoint_destroy(exec_ctx, t->ep); + grpc_endpoint_destroy(t->ep); - grpc_slice_buffer_destroy_internal(exec_ctx, &t->qbuf); + grpc_slice_buffer_destroy_internal(&t->qbuf); - grpc_slice_buffer_destroy_internal(exec_ctx, &t->outbuf); - grpc_chttp2_hpack_compressor_destroy(exec_ctx, &t->hpack_compressor); + grpc_slice_buffer_destroy_internal(&t->outbuf); + grpc_chttp2_hpack_compressor_destroy(&t->hpack_compressor); - grpc_slice_buffer_destroy_internal(exec_ctx, &t->read_buffer); - grpc_chttp2_hpack_parser_destroy(exec_ctx, &t->hpack_parser); + grpc_slice_buffer_destroy_internal(&t->read_buffer); + grpc_chttp2_hpack_parser_destroy(&t->hpack_parser); grpc_chttp2_goaway_parser_destroy(&t->goaway_parser); for (i = 0; i < STREAM_LIST_COUNT; i++) { @@ -209,12 +181,11 @@ static void destruct_transport(grpc_exec_ctx *exec_ctx, GPR_ASSERT(grpc_chttp2_stream_map_size(&t->stream_map) == 0); grpc_chttp2_stream_map_destroy(&t->stream_map); - grpc_connectivity_state_destroy(exec_ctx, &t->channel_callback.state_tracker); + grpc_connectivity_state_destroy(&t->channel_callback.state_tracker); - GRPC_COMBINER_UNREF(exec_ctx, t->combiner, "chttp2_transport"); + GRPC_COMBINER_UNREF(t->combiner, "chttp2_transport"); - cancel_pings(exec_ctx, t, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed")); + cancel_pings(t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed")); while (t->write_cb_pool) { grpc_chttp2_write_cb *next = t->write_cb_pool->next; @@ -231,8 +202,7 @@ static void destruct_transport(grpc_exec_ctx *exec_ctx, } #ifndef NDEBUG -void grpc_chttp2_unref_transport(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, const char *reason, +void grpc_chttp2_unref_transport(grpc_chttp2_transport *t, const char *reason, const char *file, int line) { if (GRPC_TRACER_ON(grpc_trace_chttp2_refcount)) { gpr_atm val = gpr_atm_no_barrier_load(&t->refs.count); @@ -240,7 +210,7 @@ void grpc_chttp2_unref_transport(grpc_exec_ctx *exec_ctx, t, val, val - 1, reason, file, line); } if (!gpr_unref(&t->refs)) return; - destruct_transport(exec_ctx, t); + destruct_transport(t); } void grpc_chttp2_ref_transport(grpc_chttp2_transport *t, const char *reason, @@ -253,10 +223,9 @@ void grpc_chttp2_ref_transport(grpc_chttp2_transport *t, const char *reason, gpr_ref(&t->refs); } #else -void grpc_chttp2_unref_transport(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +void grpc_chttp2_unref_transport(grpc_chttp2_transport *t) { if (!gpr_unref(&t->refs)) return; - destruct_transport(exec_ctx, t); + destruct_transport(t); } void grpc_chttp2_ref_transport(grpc_chttp2_transport *t) { gpr_ref(&t->refs); } @@ -264,7 +233,7 @@ void grpc_chttp2_ref_transport(grpc_chttp2_transport *t) { gpr_ref(&t->refs); } static const grpc_transport_vtable *get_vtable(void); -static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, +static void init_transport(grpc_chttp2_transport *t, const grpc_channel_args *channel_args, grpc_endpoint *ep, bool is_client) { size_t i; @@ -328,7 +297,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, t->flow_control.bdp_estimator.Init(t->peer_string); grpc_chttp2_goaway_parser_init(&t->goaway_parser); - grpc_chttp2_hpack_parser_init(exec_ctx, &t->hpack_parser); + grpc_chttp2_hpack_parser_init(&t->hpack_parser); grpc_slice_buffer_init(&t->read_buffer); @@ -360,14 +329,13 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, /* configure http2 the way we like it */ if (is_client) { - queue_setting_update(exec_ctx, t, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0); - queue_setting_update(exec_ctx, t, - GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0); + queue_setting_update(t, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0); + queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0); } - queue_setting_update(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE, + queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE, DEFAULT_MAX_HEADER_LIST_SIZE); - queue_setting_update(exec_ctx, t, - GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA, 1); + queue_setting_update(t, GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA, + 1); t->ping_policy.max_pings_without_data = g_default_max_pings_without_data; t->ping_policy.min_sent_ping_interval_without_data = @@ -541,7 +509,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, int value = grpc_channel_arg_get_integer( &channel_args->args[i], settings_map[j].integer_options); if (value >= 0) { - queue_setting_update(exec_ctx, t, settings_map[j].setting_id, + queue_setting_update(t, settings_map[j].setting_id, (uint32_t)value); } } @@ -563,8 +531,8 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, if (t->keepalive_time != GRPC_MILLIS_INF_FUTURE) { t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING; GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); - grpc_timer_init(exec_ctx, &t->keepalive_ping_timer, - grpc_exec_ctx_now(exec_ctx) + t->keepalive_time, + grpc_timer_init(&t->keepalive_ping_timer, + grpc_exec_ctx_now() + t->keepalive_time, &t->init_keepalive_ping_locked); } else { /* Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no @@ -574,44 +542,37 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, if (t->flow_control.enable_bdp_probe) { GRPC_CHTTP2_REF_TRANSPORT(t, "bdp_ping"); - schedule_bdp_ping_locked(exec_ctx, t); + schedule_bdp_ping_locked(t); } grpc_chttp2_act_on_flowctl_action( - exec_ctx, - grpc_chttp2_flowctl_get_action(exec_ctx, &t->flow_control, NULL), t, - NULL); + grpc_chttp2_flowctl_get_action(&t->flow_control, NULL), t, NULL); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE); - post_benign_reclaimer(exec_ctx, t); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE); + post_benign_reclaimer(t); } -static void destroy_transport_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error) { +static void destroy_transport_locked(void *tp, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; t->destroying = 1; close_transport_locked( - exec_ctx, t, - grpc_error_set_int( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"), - GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state)); - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "destroy"); + t, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"), + GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state)); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy"); } -static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) { +static void destroy_transport(grpc_transport *gt) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; - GRPC_CLOSURE_SCHED(exec_ctx, - GRPC_CLOSURE_CREATE(destroy_transport_locked, t, + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(destroy_transport_locked, t, grpc_combiner_scheduler(t->combiner)), GRPC_ERROR_NONE); } -static void close_transport_locked(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void close_transport_locked(grpc_chttp2_transport *t, grpc_error *error) { - end_all_the_calls(exec_ctx, t, GRPC_ERROR_REF(error)); - cancel_pings(exec_ctx, t, GRPC_ERROR_REF(error)); + end_all_the_calls(t, GRPC_ERROR_REF(error)); + cancel_pings(t, GRPC_ERROR_REF(error)); if (t->closed_with_error == GRPC_ERROR_NONE) { if (!grpc_error_has_clear_grpc_status(error)) { error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, @@ -629,21 +590,22 @@ static void close_transport_locked(grpc_exec_ctx *exec_ctx, } GPR_ASSERT(error != GRPC_ERROR_NONE); t->closed_with_error = GRPC_ERROR_REF(error); - connectivity_state_set(exec_ctx, t, GRPC_CHANNEL_SHUTDOWN, - GRPC_ERROR_REF(error), "close_transport"); + + connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_REF(error), + "close_transport"); if (t->ping_state.is_delayed_ping_timer_set) { - grpc_timer_cancel(exec_ctx, &t->ping_state.delayed_ping_timer); + grpc_timer_cancel(&t->ping_state.delayed_ping_timer); } if (t->have_next_bdp_ping_timer) { - grpc_timer_cancel(exec_ctx, &t->next_bdp_ping_timer); + grpc_timer_cancel(&t->next_bdp_ping_timer); } switch (t->keepalive_state) { case GRPC_CHTTP2_KEEPALIVE_STATE_WAITING: - grpc_timer_cancel(exec_ctx, &t->keepalive_ping_timer); + grpc_timer_cancel(&t->keepalive_ping_timer); break; case GRPC_CHTTP2_KEEPALIVE_STATE_PINGING: - grpc_timer_cancel(exec_ctx, &t->keepalive_ping_timer); - grpc_timer_cancel(exec_ctx, &t->keepalive_watchdog_timer); + grpc_timer_cancel(&t->keepalive_ping_timer); + grpc_timer_cancel(&t->keepalive_watchdog_timer); break; case GRPC_CHTTP2_KEEPALIVE_STATE_DYING: case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED: @@ -654,10 +616,11 @@ static void close_transport_locked(grpc_exec_ctx *exec_ctx, /* flush writable stream list to avoid dangling references */ grpc_chttp2_stream *s; while (grpc_chttp2_list_pop_writable_stream(t, &s)) { - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2_writing:close"); + GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close"); } + GPR_ASSERT(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE); - grpc_endpoint_shutdown(exec_ctx, t->ep, GRPC_ERROR_REF(error)); + grpc_endpoint_shutdown(t->ep, GRPC_ERROR_REF(error)); } GRPC_ERROR_UNREF(error); } @@ -666,22 +629,21 @@ static void close_transport_locked(grpc_exec_ctx *exec_ctx, void grpc_chttp2_stream_ref(grpc_chttp2_stream *s, const char *reason) { grpc_stream_ref(s->refcount, reason); } -void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s, - const char *reason) { - grpc_stream_unref(exec_ctx, s->refcount, reason); +void grpc_chttp2_stream_unref(grpc_chttp2_stream *s, const char *reason) { + grpc_stream_unref(s->refcount, reason); } #else void grpc_chttp2_stream_ref(grpc_chttp2_stream *s) { grpc_stream_ref(s->refcount); } -void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s) { - grpc_stream_unref(exec_ctx, s->refcount); +void grpc_chttp2_stream_unref(grpc_chttp2_stream *s) { + grpc_stream_unref(s->refcount); } #endif -static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_stream_refcount *refcount, - const void *server_data, gpr_arena *arena) { +static int init_stream(grpc_transport *gt, grpc_stream *gs, + grpc_stream_refcount *refcount, const void *server_data, + gpr_arena *arena) { GPR_TIMER_BEGIN("init_stream", 0); grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs; @@ -715,7 +677,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, s->id = (uint32_t)(uintptr_t)server_data; *t->accepting_stream = s; grpc_chttp2_stream_map_add(&t->stream_map, s->id, s); - post_destructive_reclaimer(exec_ctx, t); + post_destructive_reclaimer(t); } s->flow_control.s = s; @@ -724,8 +686,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, return 0; } -static void destroy_stream_locked(grpc_exec_ctx *exec_ctx, void *sp, - grpc_error *error) { +static void destroy_stream_locked(void *sp, grpc_error *error) { grpc_chttp2_stream *s = (grpc_chttp2_stream *)sp; grpc_chttp2_transport *t = s->t; @@ -736,11 +697,10 @@ static void destroy_stream_locked(grpc_exec_ctx *exec_ctx, void *sp, GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, s->id) == NULL); } - grpc_slice_buffer_destroy_internal(exec_ctx, - &s->unprocessed_incoming_frames_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &s->frame_storage); - grpc_slice_buffer_destroy_internal(exec_ctx, &s->compressed_data_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &s->decompressed_data_buffer); + grpc_slice_buffer_destroy_internal(&s->unprocessed_incoming_frames_buffer); + grpc_slice_buffer_destroy_internal(&s->frame_storage); + grpc_slice_buffer_destroy_internal(&s->compressed_data_buffer); + grpc_slice_buffer_destroy_internal(&s->decompressed_data_buffer); grpc_chttp2_list_remove_stalled_by_transport(t, s); grpc_chttp2_list_remove_stalled_by_stream(t, s); @@ -759,27 +719,24 @@ static void destroy_stream_locked(grpc_exec_ctx *exec_ctx, void *sp, GPR_ASSERT(s->recv_initial_metadata_ready == NULL); GPR_ASSERT(s->recv_message_ready == NULL); GPR_ASSERT(s->recv_trailing_metadata_finished == NULL); - grpc_chttp2_data_parser_destroy(exec_ctx, &s->data_parser); - grpc_chttp2_incoming_metadata_buffer_destroy(exec_ctx, - &s->metadata_buffer[0]); - grpc_chttp2_incoming_metadata_buffer_destroy(exec_ctx, - &s->metadata_buffer[1]); - grpc_slice_buffer_destroy_internal(exec_ctx, &s->flow_controlled_buffer); + grpc_chttp2_data_parser_destroy(&s->data_parser); + grpc_chttp2_incoming_metadata_buffer_destroy(&s->metadata_buffer[0]); + grpc_chttp2_incoming_metadata_buffer_destroy(&s->metadata_buffer[1]); + grpc_slice_buffer_destroy_internal(&s->flow_controlled_buffer); GRPC_ERROR_UNREF(s->read_closed_error); GRPC_ERROR_UNREF(s->write_closed_error); GRPC_ERROR_UNREF(s->byte_stream_error); grpc_chttp2_flowctl_destroy_stream(&t->flow_control, &s->flow_control); - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "stream"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream"); GPR_TIMER_END("destroy_stream", 0); - GRPC_CLOSURE_SCHED(exec_ctx, s->destroy_stream_arg, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->destroy_stream_arg, GRPC_ERROR_NONE); } -static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, +static void destroy_stream(grpc_transport *gt, grpc_stream *gs, grpc_closure *then_schedule_closure) { GPR_TIMER_BEGIN("destroy_stream", 0); grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; @@ -796,8 +753,8 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, s->destroy_stream_arg = then_schedule_closure; GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, - grpc_combiner_scheduler(t->combiner)), + GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, + grpc_combiner_scheduler(t->combiner)), GRPC_ERROR_NONE); GPR_TIMER_END("destroy_stream", 0); } @@ -807,8 +764,7 @@ grpc_chttp2_stream *grpc_chttp2_parsing_lookup_stream(grpc_chttp2_transport *t, return (grpc_chttp2_stream *)grpc_chttp2_stream_map_find(&t->stream_map, id); } -grpc_chttp2_stream *grpc_chttp2_parsing_accept_stream(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +grpc_chttp2_stream *grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport *t, uint32_t id) { if (t->channel_callback.accept_stream == NULL) { return NULL; @@ -816,8 +772,7 @@ grpc_chttp2_stream *grpc_chttp2_parsing_accept_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *accepting; GPR_ASSERT(t->accepting_stream == NULL); t->accepting_stream = &accepting; - t->channel_callback.accept_stream(exec_ctx, - t->channel_callback.accept_stream_user_data, + t->channel_callback.accept_stream(t->channel_callback.accept_stream_user_data, &t->base, (void *)(uintptr_t)id); t->accepting_stream = NULL; return accepting; @@ -839,7 +794,7 @@ static const char *write_state_name(grpc_chttp2_write_state st) { GPR_UNREACHABLE_CODE(return "UNKNOWN"); } -static void set_write_state(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, +static void set_write_state(grpc_chttp2_transport *t, grpc_chttp2_write_state st, const char *reason) { GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_DEBUG, "W:%p %s state %s -> %s [%s]", t, t->is_client ? "CLIENT" : "SERVER", @@ -847,108 +802,100 @@ static void set_write_state(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, write_state_name(st), reason)); t->write_state = st; if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) { - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &t->run_after_write); + GRPC_CLOSURE_LIST_SCHED(&t->run_after_write); if (t->close_transport_on_writes_finished != NULL) { grpc_error *err = t->close_transport_on_writes_finished; t->close_transport_on_writes_finished = NULL; - close_transport_locked(exec_ctx, t, err); + close_transport_locked(t, err); } } } static void inc_initiate_write_reason( - grpc_exec_ctx *exec_ctx, grpc_chttp2_initiate_write_reason reason) { + grpc_chttp2_initiate_write_reason reason) { switch (reason) { case GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE(); break; case GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM(); break; case GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE(); break; case GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA( - exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA(); break; case GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA( - exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA(); break; case GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING(); break; case GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS(); break; case GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT(); break; case GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM(); break; case GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API(); break; case GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL(); break; case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL( - exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL(); break; case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS(); break; case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING( - exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING(); break; case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE( - exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE(); break; case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING(); break; case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING(); break; case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED( - exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED(); break; case GRPC_CHTTP2_INITIATE_WRITE_PING_RESPONSE: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE(); break; case GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM: - GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM(exec_ctx); + GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM(); break; } } -void grpc_chttp2_initiate_write(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_initiate_write(grpc_chttp2_transport *t, grpc_chttp2_initiate_write_reason reason) { GPR_TIMER_BEGIN("grpc_chttp2_initiate_write", 0); switch (t->write_state) { case GRPC_CHTTP2_WRITE_STATE_IDLE: - inc_initiate_write_reason(exec_ctx, reason); - set_write_state(exec_ctx, t, GRPC_CHTTP2_WRITE_STATE_WRITING, + inc_initiate_write_reason(reason); + set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING, grpc_chttp2_initiate_write_reason_string(reason)); t->is_first_write_in_batch = true; GRPC_CHTTP2_REF_TRANSPORT(t, "writing"); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&t->write_action_begin_locked, write_action_begin_locked, t, grpc_combiner_finally_scheduler(t->combiner)), GRPC_ERROR_NONE); break; case GRPC_CHTTP2_WRITE_STATE_WRITING: - set_write_state(exec_ctx, t, GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE, + set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE, grpc_chttp2_initiate_write_reason_string(reason)); break; case GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE: @@ -957,8 +904,7 @@ void grpc_chttp2_initiate_write(grpc_exec_ctx *exec_ctx, GPR_TIMER_END("grpc_chttp2_initiate_write", 0); } -void grpc_chttp2_mark_stream_writable(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { if (t->closed_with_error == GRPC_ERROR_NONE && grpc_chttp2_list_add_writable_stream(t, s)) { @@ -1008,8 +954,7 @@ static const char *begin_writing_desc(bool partial, bool inlined) { GPR_UNREACHABLE_CODE(return "bad state tuple"); } -static void write_action_begin_locked(grpc_exec_ctx *exec_ctx, void *gt, - grpc_error *error_ignored) { +static void write_action_begin_locked(void *gt, grpc_error *error_ignored) { GPR_TIMER_BEGIN("write_action_begin_locked", 0); grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE); @@ -1017,60 +962,58 @@ static void write_action_begin_locked(grpc_exec_ctx *exec_ctx, void *gt, if (t->closed_with_error != GRPC_ERROR_NONE) { r.writing = false; } else { - r = grpc_chttp2_begin_write(exec_ctx, t); + r = grpc_chttp2_begin_write(t); } if (r.writing) { if (r.partial) { - GRPC_STATS_INC_HTTP2_PARTIAL_WRITES(exec_ctx); + GRPC_STATS_INC_HTTP2_PARTIAL_WRITES(); } if (!t->is_first_write_in_batch) { - GRPC_STATS_INC_HTTP2_WRITES_CONTINUED(exec_ctx); + GRPC_STATS_INC_HTTP2_WRITES_CONTINUED(); } grpc_closure_scheduler *scheduler = write_scheduler(t, r.early_results_scheduled, r.partial); if (scheduler != grpc_schedule_on_exec_ctx) { - GRPC_STATS_INC_HTTP2_WRITES_OFFLOADED(exec_ctx); + GRPC_STATS_INC_HTTP2_WRITES_OFFLOADED(); } set_write_state( - exec_ctx, t, r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE - : GRPC_CHTTP2_WRITE_STATE_WRITING, + t, r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE + : GRPC_CHTTP2_WRITE_STATE_WRITING, begin_writing_desc(r.partial, scheduler == grpc_schedule_on_exec_ctx)); - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_INIT(&t->write_action, - write_action, t, scheduler), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_INIT(&t->write_action, write_action, t, scheduler), + GRPC_ERROR_NONE); } else { - GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN(exec_ctx); - set_write_state(exec_ctx, t, GRPC_CHTTP2_WRITE_STATE_IDLE, - "begin writing nothing"); - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "writing"); + GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN(); + set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "begin writing nothing"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing"); } GPR_TIMER_END("write_action_begin_locked", 0); } -static void write_action(grpc_exec_ctx *exec_ctx, void *gt, grpc_error *error) { +static void write_action(void *gt, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; GPR_TIMER_BEGIN("write_action", 0); grpc_endpoint_write( - exec_ctx, t->ep, &t->outbuf, + t->ep, &t->outbuf, GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end_locked, t, grpc_combiner_scheduler(t->combiner))); GPR_TIMER_END("write_action", 0); } -static void write_action_end_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error) { +static void write_action_end_locked(void *tp, grpc_error *error) { GPR_TIMER_BEGIN("terminate_writing_with_lock", 0); grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; if (error != GRPC_ERROR_NONE) { - close_transport_locked(exec_ctx, t, GRPC_ERROR_REF(error)); + close_transport_locked(t, GRPC_ERROR_REF(error)); } if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED) { t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SENT; if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) { close_transport_locked( - exec_ctx, t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("goaway sent")); + t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("goaway sent")); } } @@ -1079,17 +1022,14 @@ static void write_action_end_locked(grpc_exec_ctx *exec_ctx, void *tp, GPR_UNREACHABLE_CODE(break); case GRPC_CHTTP2_WRITE_STATE_WRITING: GPR_TIMER_MARK("state=writing", 0); - set_write_state(exec_ctx, t, GRPC_CHTTP2_WRITE_STATE_IDLE, - "finish writing"); + set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing"); break; case GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE: GPR_TIMER_MARK("state=writing_stale_no_poller", 0); - set_write_state(exec_ctx, t, GRPC_CHTTP2_WRITE_STATE_WRITING, - "continue writing"); + set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING, "continue writing"); t->is_first_write_in_batch = false; GRPC_CHTTP2_REF_TRANSPORT(t, "writing"); GRPC_CLOSURE_RUN( - exec_ctx, GRPC_CLOSURE_INIT(&t->write_action_begin_locked, write_action_begin_locked, t, grpc_combiner_finally_scheduler(t->combiner)), @@ -1097,16 +1037,15 @@ static void write_action_end_locked(grpc_exec_ctx *exec_ctx, void *tp, break; } - grpc_chttp2_end_write(exec_ctx, t, GRPC_ERROR_REF(error)); + grpc_chttp2_end_write(t, GRPC_ERROR_REF(error)); - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "writing"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing"); GPR_TIMER_END("terminate_writing_with_lock", 0); } // Dirties an HTTP2 setting to be sent out next time a writing path occurs. // If the change needs to occur immediately, manually initiate a write. -static void queue_setting_update(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void queue_setting_update(grpc_chttp2_transport *t, grpc_chttp2_setting_id id, uint32_t value) { const grpc_chttp2_setting_parameters *sp = &grpc_chttp2_settings_parameters[id]; @@ -1121,8 +1060,7 @@ static void queue_setting_update(grpc_exec_ctx *exec_ctx, } } -void grpc_chttp2_add_incoming_goaway(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport *t, uint32_t goaway_error, grpc_slice goaway_text) { // GRPC_CHTTP2_IF_TRACING( @@ -1149,7 +1087,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_exec_ctx *exec_ctx, /* lie: use transient failure from the transport to indicate goaway has been * received */ connectivity_state_set( - exec_ctx, t, GRPC_CHANNEL_TRANSIENT_FAILURE, + t, GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_set_str( grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"), @@ -1158,8 +1096,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_exec_ctx *exec_ctx, "got_goaway"); } -static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static void maybe_start_some_streams(grpc_chttp2_transport *t) { grpc_chttp2_stream *s; /* start streams where we have free grpc_chttp2_stream ids and free * concurrency */ @@ -1179,25 +1116,23 @@ static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx, if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) { connectivity_state_set( - exec_ctx, t, GRPC_CHANNEL_TRANSIENT_FAILURE, + t, GRPC_CHANNEL_TRANSIENT_FAILURE, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"), "no_more_stream_ids"); } grpc_chttp2_stream_map_add(&t->stream_map, s->id, s); - post_destructive_reclaimer(exec_ctx, t); - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM); + post_destructive_reclaimer(t); + grpc_chttp2_mark_stream_writable(t, s); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM); } /* cancel out streams that will never be started */ while (t->next_stream_id >= MAX_CLIENT_STREAM_ID && grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) { grpc_chttp2_cancel_stream( - exec_ctx, t, s, - grpc_error_set_int( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"), - GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); + t, s, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); } } @@ -1216,15 +1151,13 @@ static grpc_closure *add_closure_barrier(grpc_closure *closure) { return closure; } -static void null_then_run_closure(grpc_exec_ctx *exec_ctx, - grpc_closure **closure, grpc_error *error) { +static void null_then_run_closure(grpc_closure **closure, grpc_error *error) { grpc_closure *c = *closure; *closure = NULL; - GRPC_CLOSURE_RUN(exec_ctx, c, error); + GRPC_CLOSURE_RUN(c, error); } -void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_complete_closure_step(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_closure **pclosure, grpc_error *error, const char *desc) { @@ -1264,7 +1197,7 @@ void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx, } if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) || !(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) { - GRPC_CLOSURE_RUN(exec_ctx, closure, closure->error_data.error); + GRPC_CLOSURE_RUN(closure, closure->error_data.error); } else { grpc_closure_list_append(&t->run_after_write, closure, closure->error_data.error); @@ -1280,28 +1213,24 @@ static bool contains_non_ok_status(grpc_metadata_batch *batch) { return false; } -static void maybe_become_writable_due_to_send_msg(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void maybe_become_writable_due_to_send_msg(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { if (s->id != 0 && (!s->write_buffering || s->flow_controlled_buffer.length > t->write_buffer_size)) { - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE); + grpc_chttp2_mark_stream_writable(t, s); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE); } } -static void add_fetched_slice_locked(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void add_fetched_slice_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { s->fetched_send_message_length += (uint32_t)GRPC_SLICE_LENGTH(s->fetching_slice); grpc_slice_buffer_add(&s->flow_controlled_buffer, s->fetching_slice); - maybe_become_writable_due_to_send_msg(exec_ctx, t, s); + maybe_become_writable_due_to_send_msg(t, s); } -static void continue_fetching_send_locked(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void continue_fetching_send_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { for (;;) { if (s->fetching_send_message == NULL) { @@ -1310,11 +1239,11 @@ static void continue_fetching_send_locked(grpc_exec_ctx *exec_ctx, return; /* early out */ } if (s->fetched_send_message_length == s->fetching_send_message->length) { - grpc_byte_stream_destroy(exec_ctx, s->fetching_send_message); + grpc_byte_stream_destroy(s->fetching_send_message); int64_t notify_offset = s->next_message_end_offset; if (notify_offset <= s->flow_controlled_bytes_written) { grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->fetching_send_message_finished, GRPC_ERROR_NONE, + t, s, &s->fetching_send_message_finished, GRPC_ERROR_NONE, "fetching_send_message_finished"); } else { grpc_chttp2_write_cb *cb = t->write_cb_pool; @@ -1335,39 +1264,37 @@ static void continue_fetching_send_locked(grpc_exec_ctx *exec_ctx, } s->fetching_send_message = NULL; return; /* early out */ - } else if (grpc_byte_stream_next(exec_ctx, s->fetching_send_message, - UINT32_MAX, &s->complete_fetch_locked)) { - grpc_error *error = grpc_byte_stream_pull( - exec_ctx, s->fetching_send_message, &s->fetching_slice); + } else if (grpc_byte_stream_next(s->fetching_send_message, UINT32_MAX, + &s->complete_fetch_locked)) { + grpc_error *error = + grpc_byte_stream_pull(s->fetching_send_message, &s->fetching_slice); if (error != GRPC_ERROR_NONE) { - grpc_byte_stream_destroy(exec_ctx, s->fetching_send_message); - grpc_chttp2_cancel_stream(exec_ctx, t, s, error); + grpc_byte_stream_destroy(s->fetching_send_message); + grpc_chttp2_cancel_stream(t, s, error); } else { - add_fetched_slice_locked(exec_ctx, t, s); + add_fetched_slice_locked(t, s); } } } } -static void complete_fetch_locked(grpc_exec_ctx *exec_ctx, void *gs, - grpc_error *error) { +static void complete_fetch_locked(void *gs, grpc_error *error) { grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs; grpc_chttp2_transport *t = s->t; if (error == GRPC_ERROR_NONE) { - error = grpc_byte_stream_pull(exec_ctx, s->fetching_send_message, - &s->fetching_slice); + error = grpc_byte_stream_pull(s->fetching_send_message, &s->fetching_slice); if (error == GRPC_ERROR_NONE) { - add_fetched_slice_locked(exec_ctx, t, s); - continue_fetching_send_locked(exec_ctx, t, s); + add_fetched_slice_locked(t, s); + continue_fetching_send_locked(t, s); } } if (error != GRPC_ERROR_NONE) { - grpc_byte_stream_destroy(exec_ctx, s->fetching_send_message); - grpc_chttp2_cancel_stream(exec_ctx, t, s, error); + grpc_byte_stream_destroy(s->fetching_send_message); + grpc_chttp2_cancel_stream(t, s, error); } } -static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +static void do_nothing(void *arg, grpc_error *error) {} static void log_metadata(const grpc_metadata_batch *md_batch, uint32_t id, bool is_client, bool is_initial) { @@ -1382,7 +1309,7 @@ static void log_metadata(const grpc_metadata_batch *md_batch, uint32_t id, } } -static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, +static void perform_stream_op_locked(void *stream_op, grpc_error *error_ignored) { GPR_TIMER_BEGIN("perform_stream_op_locked", 0); @@ -1392,7 +1319,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, grpc_transport_stream_op_batch_payload *op_payload = op->payload; grpc_chttp2_transport *t = s->t; - GRPC_STATS_INC_HTTP2_OP_BATCHES(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_BATCHES(); if (GRPC_TRACER_ON(grpc_http_trace)) { char *str = grpc_transport_stream_op_batch_string(op); @@ -1427,13 +1354,12 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, } if (op->cancel_stream) { - GRPC_STATS_INC_HTTP2_OP_CANCEL(exec_ctx); - grpc_chttp2_cancel_stream(exec_ctx, t, s, - op_payload->cancel_stream.cancel_error); + GRPC_STATS_INC_HTTP2_OP_CANCEL(); + grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error); } if (op->send_initial_metadata) { - GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA(); GPR_ASSERT(s->send_initial_metadata_finished == NULL); on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE; @@ -1461,7 +1387,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, } if (metadata_size > metadata_peer_limit) { grpc_chttp2_cancel_stream( - exec_ctx, t, s, + t, s, grpc_error_set_int( grpc_error_set_int( grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -1480,29 +1406,28 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, if (t->closed_with_error == GRPC_ERROR_NONE) { GPR_ASSERT(s->id == 0); grpc_chttp2_list_add_waiting_for_concurrency(t, s); - maybe_start_some_streams(exec_ctx, t); + maybe_start_some_streams(t); } else { grpc_chttp2_cancel_stream( - exec_ctx, t, s, - grpc_error_set_int( - GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Transport closed", &t->closed_with_error, 1), - GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); + t, s, grpc_error_set_int( + GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Transport closed", &t->closed_with_error, 1), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); } } else { GPR_ASSERT(s->id != 0); - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); + grpc_chttp2_mark_stream_writable(t, s); if (!(op->send_message && (op->payload->send_message.send_message->flags & GRPC_WRITE_BUFFER_HINT))) { grpc_chttp2_initiate_write( - exec_ctx, t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA); + t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA); } } } else { s->send_initial_metadata = NULL; grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->send_initial_metadata_finished, + t, s, &s->send_initial_metadata_finished, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Attempt to send initial metadata after stream was closed", &s->write_closed_error, 1), @@ -1516,9 +1441,9 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, } if (op->send_message) { - GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE(); GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE( - exec_ctx, op->payload->send_message.send_message->length); + op->payload->send_message.send_message->length); on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE; s->fetching_send_message_finished = add_closure_barrier(op->on_complete); if (s->write_closed) { @@ -1528,7 +1453,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, // recv_message failure, breaking out of its loop, and then // starting recv_trailing_metadata. grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->fetching_send_message_finished, + t, s, &s->fetching_send_message_finished, t->is_client && s->received_trailing_metadata ? GRPC_ERROR_NONE : GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( @@ -1557,13 +1482,13 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, } else { s->write_buffering = false; } - continue_fetching_send_locked(exec_ctx, t, s); - maybe_become_writable_due_to_send_msg(exec_ctx, t, s); + continue_fetching_send_locked(t, s); + maybe_become_writable_due_to_send_msg(t, s); } } if (op->send_trailing_metadata) { - GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA(); GPR_ASSERT(s->send_trailing_metadata_finished == NULL); on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE; s->send_trailing_metadata_finished = add_closure_barrier(on_complete); @@ -1577,7 +1502,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE]; if (metadata_size > metadata_peer_limit) { grpc_chttp2_cancel_stream( - exec_ctx, t, s, + t, s, grpc_error_set_int( grpc_error_set_int( grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING( @@ -1594,7 +1519,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, if (s->write_closed) { s->send_trailing_metadata = NULL; grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->send_trailing_metadata_finished, + t, s, &s->send_trailing_metadata_finished, grpc_metadata_batch_is_empty( op->payload->send_trailing_metadata.send_trailing_metadata) ? GRPC_ERROR_NONE @@ -1605,15 +1530,15 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, } else if (s->id != 0) { /* TODO(ctiller): check if there's flow control for any outstanding bytes before going writable */ - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); + grpc_chttp2_mark_stream_writable(t, s); grpc_chttp2_initiate_write( - exec_ctx, t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA); + t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA); } } } if (op->recv_initial_metadata) { - GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA(); GPR_ASSERT(s->recv_initial_metadata_ready == NULL); s->recv_initial_metadata_ready = op_payload->recv_initial_metadata.recv_initial_metadata_ready; @@ -1625,11 +1550,11 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string, (gpr_atm)gpr_strdup(t->peer_string)); } - grpc_chttp2_maybe_complete_recv_initial_metadata(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_initial_metadata(t, s); } if (op->recv_message) { - GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE(); size_t already_received; GPR_ASSERT(s->recv_message_ready == NULL); GPR_ASSERT(!s->pending_byte_stream); @@ -1642,33 +1567,31 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op, &t->flow_control, &s->flow_control, GRPC_HEADER_SIZE_IN_BYTES, already_received); grpc_chttp2_act_on_flowctl_action( - exec_ctx, grpc_chttp2_flowctl_get_action(exec_ctx, &t->flow_control, - &s->flow_control), + grpc_chttp2_flowctl_get_action(&t->flow_control, &s->flow_control), t, s); } } - grpc_chttp2_maybe_complete_recv_message(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_message(t, s); } if (op->recv_trailing_metadata) { - GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA(exec_ctx); + GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA(); GPR_ASSERT(s->recv_trailing_metadata_finished == NULL); s->recv_trailing_metadata_finished = add_closure_barrier(on_complete); s->recv_trailing_metadata = op_payload->recv_trailing_metadata.recv_trailing_metadata; s->final_metadata_requested = true; - grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s); } - grpc_chttp2_complete_closure_step(exec_ctx, t, s, &on_complete, - GRPC_ERROR_NONE, "op->on_complete"); + grpc_chttp2_complete_closure_step(t, s, &on_complete, GRPC_ERROR_NONE, + "op->on_complete"); GPR_TIMER_END("perform_stream_op_locked", 0); - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "perform_stream_op"); + GRPC_CHTTP2_STREAM_UNREF(s, "perform_stream_op"); } -static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, +static void perform_stream_op(grpc_transport *gt, grpc_stream *gs, grpc_transport_stream_op_batch *op) { GPR_TIMER_BEGIN("perform_stream_op", 0); grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; @@ -1696,32 +1619,30 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, op->handler_private.extra_arg = gs; GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op"); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&op->handler_private.closure, perform_stream_op_locked, op, grpc_combiner_scheduler(t->combiner)), GRPC_ERROR_NONE); GPR_TIMER_END("perform_stream_op", 0); } -static void cancel_pings(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error) { +static void cancel_pings(grpc_chttp2_transport *t, grpc_error *error) { /* callback remaining pings: they're not allowed to call into the transpot, and maybe they hold resources that need to be freed */ grpc_chttp2_ping_queue *pq = &t->ping_queue; GPR_ASSERT(error != GRPC_ERROR_NONE); for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) { grpc_closure_list_fail_all(&pq->lists[j], GRPC_ERROR_REF(error)); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &pq->lists[j]); + GRPC_CLOSURE_LIST_SCHED(&pq->lists[j]); } GRPC_ERROR_UNREF(error); } -static void send_ping_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, +static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_initiate, grpc_closure *on_ack) { if (t->closed_with_error != GRPC_ERROR_NONE) { - GRPC_CLOSURE_SCHED(exec_ctx, on_initiate, - GRPC_ERROR_REF(t->closed_with_error)); - GRPC_CLOSURE_SCHED(exec_ctx, on_ack, GRPC_ERROR_REF(t->closed_with_error)); + GRPC_CLOSURE_SCHED(on_initiate, GRPC_ERROR_REF(t->closed_with_error)); + GRPC_CLOSURE_SCHED(on_ack, GRPC_ERROR_REF(t->closed_with_error)); + return; } grpc_chttp2_ping_queue *pq = &t->ping_queue; @@ -1731,18 +1652,15 @@ static void send_ping_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, GRPC_ERROR_NONE); } -static void retry_initiate_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error) { +static void retry_initiate_ping_locked(void *tp, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; t->ping_state.is_delayed_ping_timer_set = false; if (error == GRPC_ERROR_NONE) { - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING); } } -void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - uint64_t id) { +void grpc_chttp2_ack_ping(grpc_chttp2_transport *t, uint64_t id) { grpc_chttp2_ping_queue *pq = &t->ping_queue; if (pq->inflight_id != id) { char *from = grpc_endpoint_get_peer(t->ep); @@ -1750,46 +1668,41 @@ void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, gpr_free(from); return; } - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]); + GRPC_CLOSURE_LIST_SCHED(&pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]); if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_NEXT])) { - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS); } } -static void send_goaway(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error) { +static void send_goaway(grpc_chttp2_transport *t, grpc_error *error) { t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED; grpc_http2_error_code http_error; grpc_slice slice; - grpc_error_get_status(exec_ctx, error, GRPC_MILLIS_INF_FUTURE, NULL, &slice, + grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, NULL, &slice, &http_error); grpc_chttp2_goaway_append(t->last_new_stream_id, (uint32_t)http_error, grpc_slice_ref_internal(slice), &t->qbuf); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT); GRPC_ERROR_UNREF(error); } -void grpc_chttp2_add_ping_strike(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +void grpc_chttp2_add_ping_strike(grpc_chttp2_transport *t) { t->ping_recv_state.ping_strikes++; if (++t->ping_recv_state.ping_strikes > t->ping_policy.max_ping_strikes && t->ping_policy.max_ping_strikes != 0) { - send_goaway(exec_ctx, t, + send_goaway(t, grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"), GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM)); /*The transport will be closed after the write is done */ close_transport_locked( - exec_ctx, t, grpc_error_set_int( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"), - GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); + t, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); } } -static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx, - void *stream_op, +static void perform_transport_op_locked(void *stream_op, grpc_error *error_ignored) { grpc_transport_op *op = (grpc_transport_op *)stream_op; grpc_chttp2_transport *t = @@ -1797,7 +1710,7 @@ static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx, grpc_error *close_transport = op->disconnect_with_error; if (op->goaway_error) { - send_goaway(exec_ctx, t, op->goaway_error); + send_goaway(t, op->goaway_error); } if (op->set_accept_stream) { @@ -1807,43 +1720,40 @@ static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx, } if (op->bind_pollset) { - grpc_endpoint_add_to_pollset(exec_ctx, t->ep, op->bind_pollset); + grpc_endpoint_add_to_pollset(t->ep, op->bind_pollset); } if (op->bind_pollset_set) { - grpc_endpoint_add_to_pollset_set(exec_ctx, t->ep, op->bind_pollset_set); + grpc_endpoint_add_to_pollset_set(t->ep, op->bind_pollset_set); } if (op->send_ping) { - send_ping_locked(exec_ctx, t, NULL, op->send_ping); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING); + send_ping_locked(t, NULL, op->send_ping); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING); } if (op->on_connectivity_state_change != NULL) { grpc_connectivity_state_notify_on_state_change( - exec_ctx, &t->channel_callback.state_tracker, op->connectivity_state, + &t->channel_callback.state_tracker, op->connectivity_state, op->on_connectivity_state_change); } if (close_transport != GRPC_ERROR_NONE) { - close_transport_locked(exec_ctx, t, close_transport); + close_transport_locked(t, close_transport); } - GRPC_CLOSURE_RUN(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN(op->on_consumed, GRPC_ERROR_NONE); - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "transport_op"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "transport_op"); } -static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_transport_op *op) { +static void perform_transport_op(grpc_transport *gt, grpc_transport_op *op) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; char *msg = grpc_transport_op_string(op); gpr_free(msg); op->handler_private.extra_arg = gt; GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op"); - GRPC_CLOSURE_SCHED(exec_ctx, - GRPC_CLOSURE_INIT(&op->handler_private.closure, + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_INIT(&op->handler_private.closure, perform_transport_op_locked, op, grpc_combiner_scheduler(t->combiner)), GRPC_ERROR_NONE); @@ -1853,36 +1763,33 @@ static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, * INPUT PROCESSING - GENERAL */ -void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { if (s->recv_initial_metadata_ready != NULL && s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) { if (s->seen_error) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &s->frame_storage); + grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage); if (!s->pending_byte_stream) { grpc_slice_buffer_reset_and_unref_internal( - exec_ctx, &s->unprocessed_incoming_frames_buffer); + &s->unprocessed_incoming_frames_buffer); } } - grpc_chttp2_incoming_metadata_buffer_publish( - exec_ctx, &s->metadata_buffer[0], s->recv_initial_metadata); - null_then_run_closure(exec_ctx, &s->recv_initial_metadata_ready, - GRPC_ERROR_NONE); + grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[0], + s->recv_initial_metadata); + null_then_run_closure(&s->recv_initial_metadata_ready, GRPC_ERROR_NONE); } } -void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { grpc_error *error = GRPC_ERROR_NONE; if (s->recv_message_ready != NULL) { *s->recv_message = NULL; if (s->final_metadata_requested && s->seen_error) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &s->frame_storage); + grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage); if (!s->pending_byte_stream) { grpc_slice_buffer_reset_and_unref_internal( - exec_ctx, &s->unprocessed_incoming_frames_buffer); + &s->unprocessed_incoming_frames_buffer); } } if (!s->pending_byte_stream) { @@ -1909,10 +1816,9 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx, &s->decompressed_data_buffer, NULL, GRPC_HEADER_SIZE_IN_BYTES - s->decompressed_header_bytes, &end_of_context)) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, - &s->frame_storage); + grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage); grpc_slice_buffer_reset_and_unref_internal( - exec_ctx, &s->unprocessed_incoming_frames_buffer); + &s->unprocessed_incoming_frames_buffer); error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Stream decompression error."); } else { @@ -1921,8 +1827,8 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx, s->decompressed_header_bytes = 0; } error = grpc_deframe_unprocessed_incoming_frames( - exec_ctx, &s->data_parser, s, &s->decompressed_data_buffer, - NULL, s->recv_message); + &s->data_parser, s, &s->decompressed_data_buffer, NULL, + s->recv_message); if (end_of_context) { grpc_stream_compression_context_destroy( s->stream_decompression_ctx); @@ -1931,15 +1837,14 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx, } } else { error = grpc_deframe_unprocessed_incoming_frames( - exec_ctx, &s->data_parser, s, - &s->unprocessed_incoming_frames_buffer, NULL, s->recv_message); + &s->data_parser, s, &s->unprocessed_incoming_frames_buffer, NULL, + s->recv_message); } if (error != GRPC_ERROR_NONE) { s->seen_error = true; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, - &s->frame_storage); + grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage); grpc_slice_buffer_reset_and_unref_internal( - exec_ctx, &s->unprocessed_incoming_frames_buffer); + &s->unprocessed_incoming_frames_buffer); break; } else if (*s->recv_message != NULL) { break; @@ -1947,26 +1852,25 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx, } } if (error == GRPC_ERROR_NONE && *s->recv_message != NULL) { - null_then_run_closure(exec_ctx, &s->recv_message_ready, GRPC_ERROR_NONE); + null_then_run_closure(&s->recv_message_ready, GRPC_ERROR_NONE); } else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) { *s->recv_message = NULL; - null_then_run_closure(exec_ctx, &s->recv_message_ready, GRPC_ERROR_NONE); + null_then_run_closure(&s->recv_message_ready, GRPC_ERROR_NONE); } GRPC_ERROR_UNREF(error); } } -void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport *t, grpc_chttp2_stream *s) { - grpc_chttp2_maybe_complete_recv_message(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_message(t, s); if (s->recv_trailing_metadata_finished != NULL && s->read_closed && s->write_closed) { if (s->seen_error) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &s->frame_storage); + grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage); if (!s->pending_byte_stream) { grpc_slice_buffer_reset_and_unref_internal( - exec_ctx, &s->unprocessed_incoming_frames_buffer); + &s->unprocessed_incoming_frames_buffer); } } bool pending_data = s->pending_byte_stream || @@ -1984,9 +1888,9 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_exec_ctx *exec_ctx, &s->frame_storage, &s->unprocessed_incoming_frames_buffer, NULL, GRPC_HEADER_SIZE_IN_BYTES, &end_of_context)) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &s->frame_storage); + grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage); grpc_slice_buffer_reset_and_unref_internal( - exec_ctx, &s->unprocessed_incoming_frames_buffer); + &s->unprocessed_incoming_frames_buffer); s->seen_error = true; } else { if (s->unprocessed_incoming_frames_buffer.length > 0) { @@ -2001,23 +1905,23 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_exec_ctx *exec_ctx, } if (s->read_closed && s->frame_storage.length == 0 && !pending_data && s->recv_trailing_metadata_finished != NULL) { - grpc_chttp2_incoming_metadata_buffer_publish( - exec_ctx, &s->metadata_buffer[1], s->recv_trailing_metadata); + grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[1], + s->recv_trailing_metadata); grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->recv_trailing_metadata_finished, GRPC_ERROR_NONE, + t, s, &s->recv_trailing_metadata_finished, GRPC_ERROR_NONE, "recv_trailing_metadata_finished"); } } } -static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - uint32_t id, grpc_error *error) { +static void remove_stream(grpc_chttp2_transport *t, uint32_t id, + grpc_error *error) { grpc_chttp2_stream *s = (grpc_chttp2_stream *)grpc_chttp2_stream_map_delete(&t->stream_map, id); GPR_ASSERT(s); if (t->incoming_stream == s) { t->incoming_stream = NULL; - grpc_chttp2_parsing_become_skip_parser(exec_ctx, t); + grpc_chttp2_parsing_become_skip_parser(t); } if (s->pending_byte_stream) { if (s->on_next != NULL) { @@ -2025,8 +1929,8 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, if (error == GRPC_ERROR_NONE) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message"); } - incoming_byte_stream_publish_error(exec_ctx, bs, error); - incoming_byte_stream_unref(exec_ctx, bs); + incoming_byte_stream_publish_error(bs, error); + incoming_byte_stream_unref(bs); s->data_parser.parsing_frame = NULL; } else { GRPC_ERROR_UNREF(s->byte_stream_error); @@ -2035,55 +1939,51 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, } if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) { - post_benign_reclaimer(exec_ctx, t); + post_benign_reclaimer(t); if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SENT) { close_transport_locked( - exec_ctx, t, - GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Last stream closed after sending GOAWAY", &error, 1)); + t, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Last stream closed after sending GOAWAY", &error, 1)); } } if (grpc_chttp2_list_remove_writable_stream(t, s)) { - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2_writing:remove_stream"); + GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream"); } GRPC_ERROR_UNREF(error); - maybe_start_some_streams(exec_ctx, t); + maybe_start_some_streams(t); } -void grpc_chttp2_cancel_stream(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, grpc_chttp2_stream *s, +void grpc_chttp2_cancel_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *due_to_error) { if (!t->is_client && !s->sent_trailing_metadata && grpc_error_has_clear_grpc_status(due_to_error)) { - close_from_api(exec_ctx, t, s, due_to_error); + close_from_api(t, s, due_to_error); return; } if (!s->read_closed || !s->write_closed) { if (s->id != 0) { grpc_http2_error_code http_error; - grpc_error_get_status(exec_ctx, due_to_error, s->deadline, NULL, NULL, - &http_error); + grpc_error_get_status(due_to_error, s->deadline, NULL, NULL, &http_error); grpc_slice_buffer_add( &t->qbuf, grpc_chttp2_rst_stream_create(s->id, (uint32_t)http_error, &s->stats.outgoing)); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM); } } if (due_to_error != GRPC_ERROR_NONE && !s->seen_error) { s->seen_error = true; } - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, 1, 1, due_to_error); + grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error); } -void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_error *error) { +void grpc_chttp2_fake_status(grpc_chttp2_transport *t, grpc_chttp2_stream *s, + grpc_error *error) { grpc_status_code status; grpc_slice slice; - grpc_error_get_status(exec_ctx, error, s->deadline, &status, &slice, NULL); + grpc_error_get_status(error, s->deadline, &status, &slice, NULL); if (status != GRPC_STATUS_OK) { s->seen_error = true; @@ -2100,20 +2000,20 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, gpr_ltoa(status, status_string); GRPC_LOG_IF_ERROR("add_status", grpc_chttp2_incoming_metadata_buffer_replace_or_add( - exec_ctx, &s->metadata_buffer[1], + &s->metadata_buffer[1], grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_GRPC_STATUS, + GRPC_MDSTR_GRPC_STATUS, grpc_slice_from_copied_string(status_string)))); if (!GRPC_SLICE_IS_EMPTY(slice)) { GRPC_LOG_IF_ERROR( "add_status_message", grpc_chttp2_incoming_metadata_buffer_replace_or_add( - exec_ctx, &s->metadata_buffer[1], - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_GRPC_MESSAGE, + &s->metadata_buffer[1], + grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_MESSAGE, grpc_slice_ref_internal(slice)))); } s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE; - grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s); } GRPC_ERROR_UNREF(error); @@ -2146,14 +2046,12 @@ static grpc_error *removal_error(grpc_error *extra_error, grpc_chttp2_stream *s, return error; } -static void flush_write_list(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_chttp2_write_cb **list, - grpc_error *error) { +static void flush_write_list(grpc_chttp2_transport *t, grpc_chttp2_stream *s, + grpc_chttp2_write_cb **list, grpc_error *error) { while (*list) { grpc_chttp2_write_cb *cb = *list; *list = cb->next; - grpc_chttp2_complete_closure_step(exec_ctx, t, s, &cb->closure, - GRPC_ERROR_REF(error), + grpc_chttp2_complete_closure_step(t, s, &cb->closure, GRPC_ERROR_REF(error), "on_write_finished_cb"); cb->next = t->write_cb_pool; t->write_cb_pool = cb; @@ -2161,37 +2059,34 @@ static void flush_write_list(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, GRPC_ERROR_UNREF(error); } -void grpc_chttp2_fail_pending_writes(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *error) { error = removal_error(error, s, "Pending writes failed due to stream closure"); s->send_initial_metadata = NULL; - grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->send_initial_metadata_finished, GRPC_ERROR_REF(error), - "send_initial_metadata_finished"); + grpc_chttp2_complete_closure_step(t, s, &s->send_initial_metadata_finished, + GRPC_ERROR_REF(error), + "send_initial_metadata_finished"); s->send_trailing_metadata = NULL; - grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->send_trailing_metadata_finished, - GRPC_ERROR_REF(error), "send_trailing_metadata_finished"); + grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished, + GRPC_ERROR_REF(error), + "send_trailing_metadata_finished"); s->fetching_send_message = NULL; - grpc_chttp2_complete_closure_step( - exec_ctx, t, s, &s->fetching_send_message_finished, GRPC_ERROR_REF(error), - "fetching_send_message_finished"); - flush_write_list(exec_ctx, t, s, &s->on_write_finished_cbs, - GRPC_ERROR_REF(error)); - flush_write_list(exec_ctx, t, s, &s->on_flow_controlled_cbs, error); + grpc_chttp2_complete_closure_step(t, s, &s->fetching_send_message_finished, + GRPC_ERROR_REF(error), + "fetching_send_message_finished"); + flush_write_list(t, s, &s->on_write_finished_cbs, GRPC_ERROR_REF(error)); + flush_write_list(t, s, &s->on_flow_controlled_cbs, error); } -void grpc_chttp2_mark_stream_closed(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport *t, grpc_chttp2_stream *s, int close_reads, int close_writes, grpc_error *error) { if (s->read_closed && s->write_closed) { /* already closed */ - grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s); GRPC_ERROR_UNREF(error); return; } @@ -2205,20 +2100,20 @@ void grpc_chttp2_mark_stream_closed(grpc_exec_ctx *exec_ctx, if (close_writes && !s->write_closed) { s->write_closed_error = GRPC_ERROR_REF(error); s->write_closed = true; - grpc_chttp2_fail_pending_writes(exec_ctx, t, s, GRPC_ERROR_REF(error)); + grpc_chttp2_fail_pending_writes(t, s, GRPC_ERROR_REF(error)); } if (s->read_closed && s->write_closed) { became_closed = true; grpc_error *overall_error = removal_error(GRPC_ERROR_REF(error), s, "Stream removed"); if (s->id != 0) { - remove_stream(exec_ctx, t, s->id, GRPC_ERROR_REF(overall_error)); + remove_stream(t, s->id, GRPC_ERROR_REF(overall_error)); } else { /* Purge streams waiting on concurrency still waiting for id assignment */ grpc_chttp2_list_remove_waiting_for_concurrency(t, s); } if (overall_error != GRPC_ERROR_NONE) { - grpc_chttp2_fake_status(exec_ctx, t, s, overall_error); + grpc_chttp2_fake_status(t, s, overall_error); } } if (closed_read) { @@ -2227,18 +2122,18 @@ void grpc_chttp2_mark_stream_closed(grpc_exec_ctx *exec_ctx, s->published_metadata[i] = GPRC_METADATA_PUBLISHED_AT_CLOSE; } } - grpc_chttp2_maybe_complete_recv_initial_metadata(exec_ctx, t, s); - grpc_chttp2_maybe_complete_recv_message(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_initial_metadata(t, s); + grpc_chttp2_maybe_complete_recv_message(t, s); } if (became_closed) { - grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, t, s); - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2"); + grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s); + GRPC_CHTTP2_STREAM_UNREF(s, "chttp2"); } GRPC_ERROR_UNREF(error); } -static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_error *error) { +static void close_from_api(grpc_chttp2_transport *t, grpc_chttp2_stream *s, + grpc_error *error) { grpc_slice hdr; grpc_slice status_hdr; grpc_slice http_status_hdr; @@ -2248,8 +2143,7 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, uint32_t len = 0; grpc_status_code grpc_status; grpc_slice slice; - grpc_error_get_status(exec_ctx, error, s->deadline, &grpc_status, &slice, - NULL); + grpc_error_get_status(error, s->deadline, &grpc_status, &slice, NULL); GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100); @@ -2391,13 +2285,12 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, &t->qbuf, grpc_chttp2_rst_stream_create(s->id, GRPC_HTTP2_NO_ERROR, &s->stats.outgoing)); - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, 1, 1, error); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API); + grpc_chttp2_mark_stream_closed(t, s, 1, 1, error); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API); } typedef struct { - grpc_exec_ctx *exec_ctx; + ExecCtx *exec_ctx; grpc_error *error; grpc_chttp2_transport *t; } cancel_stream_cb_args; @@ -2405,12 +2298,10 @@ typedef struct { static void cancel_stream_cb(void *user_data, uint32_t key, void *stream) { cancel_stream_cb_args *args = (cancel_stream_cb_args *)user_data; grpc_chttp2_stream *s = (grpc_chttp2_stream *)stream; - grpc_chttp2_cancel_stream(args->exec_ctx, args->t, s, - GRPC_ERROR_REF(args->error)); + grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error)); } -static void end_all_the_calls(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error) { +static void end_all_the_calls(grpc_chttp2_transport *t, grpc_error *error) { cancel_stream_cb_args args = {exec_ctx, error, t}; grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args); GRPC_ERROR_UNREF(error); @@ -2420,20 +2311,19 @@ static void end_all_the_calls(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, * INPUT PROCESSING - PARSING */ -void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx, - grpc_chttp2_flowctl_action action, +void grpc_chttp2_act_on_flowctl_action(grpc_chttp2_flowctl_action action, grpc_chttp2_transport *t, grpc_chttp2_stream *s) { switch (action.send_stream_update) { case GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED: break; case GRPC_CHTTP2_FLOWCTL_UPDATE_IMMEDIATELY: - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); + grpc_chttp2_mark_stream_writable(t, s); grpc_chttp2_initiate_write( - exec_ctx, t, GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL); + t, GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL); break; case GRPC_CHTTP2_FLOWCTL_QUEUE_UPDATE: - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); + grpc_chttp2_mark_stream_writable(t, s); break; } switch (action.send_transport_update) { @@ -2441,7 +2331,7 @@ void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx, break; case GRPC_CHTTP2_FLOWCTL_UPDATE_IMMEDIATELY: grpc_chttp2_initiate_write( - exec_ctx, t, GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL); + t, GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL); break; // this is the same as no action b/c every time the transport enters the // writing path it will maybe do an update @@ -2450,23 +2340,20 @@ void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx, } if (action.send_setting_update != GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED) { if (action.initial_window_size > 0) { - queue_setting_update(exec_ctx, t, - GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, + queue_setting_update(t, GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, (uint32_t)action.initial_window_size); } if (action.max_frame_size > 0) { - queue_setting_update(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE, + queue_setting_update(t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE, (uint32_t)action.max_frame_size); } if (action.send_setting_update == GRPC_CHTTP2_FLOWCTL_UPDATE_IMMEDIATELY) { - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS); } } } -static grpc_error *try_http_parsing(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *try_http_parsing(grpc_chttp2_transport *t) { grpc_http_parser parser; size_t i = 0; grpc_error *error = GRPC_ERROR_NONE; @@ -2495,8 +2382,7 @@ static grpc_error *try_http_parsing(grpc_exec_ctx *exec_ctx, return error; } -static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error) { +static void read_action_locked(void *tp, grpc_error *error) { GPR_TIMER_BEGIN("reading_action_locked", 0); grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; @@ -2520,11 +2406,10 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp, for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) { t->flow_control.bdp_estimator->AddIncomingBytes( (int64_t)GRPC_SLICE_LENGTH(t->read_buffer.slices[i])); - errors[1] = - grpc_chttp2_perform_read(exec_ctx, t, t->read_buffer.slices[i]); + errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]); } if (errors[1] != GRPC_ERROR_NONE) { - errors[2] = try_http_parsing(exec_ctx, t); + errors[2] = try_http_parsing(t); GRPC_ERROR_UNREF(error); error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Failed parsing HTTP/2", errors, GPR_ARRAY_SIZE(errors)); @@ -2539,10 +2424,9 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp, if (t->flow_control.initial_window_update > 0) { grpc_chttp2_stream *s; while (grpc_chttp2_list_pop_stalled_by_stream(t, &s)) { - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); + grpc_chttp2_mark_stream_writable(t, s); grpc_chttp2_initiate_write( - exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING); + t, GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING); } } t->flow_control.initial_window_update = 0; @@ -2557,24 +2441,21 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp, "Transport closed", &t->closed_with_error, 1); } if (error != GRPC_ERROR_NONE) { - close_transport_locked(exec_ctx, t, GRPC_ERROR_REF(error)); + close_transport_locked(t, GRPC_ERROR_REF(error)); t->endpoint_reading = 0; } else if (t->closed_with_error == GRPC_ERROR_NONE) { keep_reading = true; GRPC_CHTTP2_REF_TRANSPORT(t, "keep_reading"); } - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &t->read_buffer); + grpc_slice_buffer_reset_and_unref_internal(&t->read_buffer); if (keep_reading) { - grpc_endpoint_read(exec_ctx, t->ep, &t->read_buffer, - &t->read_action_locked); + grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked); grpc_chttp2_act_on_flowctl_action( - exec_ctx, - grpc_chttp2_flowctl_get_action(exec_ctx, &t->flow_control, NULL), t, - NULL); - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "keep_reading"); + grpc_chttp2_flowctl_get_action(&t->flow_control, NULL), t, NULL); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "keep_reading"); } else { - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "reading_action"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action"); } GPR_TIMER_END("post_reading_action_locked", 0); @@ -2586,15 +2467,12 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp, // t is reffed prior to calling the first time, and once the callback chain // that kicks off finishes, it's unreffed -static void schedule_bdp_ping_locked(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static void schedule_bdp_ping_locked(grpc_chttp2_transport *t) { t->flow_control.bdp_estimator->SchedulePing(); - send_ping_locked(exec_ctx, t, &t->start_bdp_ping_locked, - &t->finish_bdp_ping_locked); + send_ping_locked(t, &t->start_bdp_ping_locked, &t->finish_bdp_ping_locked); } -static void start_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error) { +static void start_bdp_ping_locked(void *tp, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; if (GRPC_TRACER_ON(grpc_http_trace)) { gpr_log(GPR_DEBUG, "%s: Start BDP ping err=%s", t->peer_string, @@ -2602,39 +2480,37 @@ static void start_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, } /* Reset the keepalive ping timer */ if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) { - grpc_timer_cancel(exec_ctx, &t->keepalive_ping_timer); + grpc_timer_cancel(&t->keepalive_ping_timer); } t->flow_control.bdp_estimator->StartPing(); } -static void finish_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp, - grpc_error *error) { +static void finish_bdp_ping_locked(void *tp, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; if (GRPC_TRACER_ON(grpc_http_trace)) { gpr_log(GPR_DEBUG, "%s: Complete BDP ping err=%s", t->peer_string, grpc_error_string(error)); } if (error != GRPC_ERROR_NONE) { - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "bdp_ping"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping"); return; } - grpc_millis next_ping = t->flow_control.bdp_estimator->CompletePing(exec_ctx); + grpc_millis next_ping = t->flow_control.bdp_estimator->CompletePing(); GPR_ASSERT(!t->have_next_bdp_ping_timer); t->have_next_bdp_ping_timer = true; - grpc_timer_init(exec_ctx, &t->next_bdp_ping_timer, next_ping, + grpc_timer_init(&t->next_bdp_ping_timer, next_ping, &t->next_bdp_ping_timer_expired_locked); } -static void next_bdp_ping_timer_expired_locked(grpc_exec_ctx *exec_ctx, - void *tp, grpc_error *error) { +static void next_bdp_ping_timer_expired_locked(void *tp, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; GPR_ASSERT(t->have_next_bdp_ping_timer); t->have_next_bdp_ping_timer = false; if (error != GRPC_ERROR_NONE) { - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "bdp_ping"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping"); return; } - schedule_bdp_ping_locked(exec_ctx, t); + schedule_bdp_ping_locked(t); } void grpc_chttp2_config_default_keepalive_args(grpc_channel_args *args, @@ -2695,8 +2571,7 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args *args, } } -static void init_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void init_keepalive_ping_locked(void *arg, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)arg; GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING); if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) { @@ -2706,59 +2581,60 @@ static void init_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, grpc_chttp2_stream_map_size(&t->stream_map) > 0) { t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING; GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive ping end"); - send_ping_locked(exec_ctx, t, &t->start_keepalive_ping_locked, + send_ping_locked(t, &t->start_keepalive_ping_locked, &t->finish_keepalive_ping_locked); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING); } else { GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); - grpc_timer_init(exec_ctx, &t->keepalive_ping_timer, - grpc_exec_ctx_now(exec_ctx) + t->keepalive_time, + grpc_timer_init(&t->keepalive_ping_timer, + grpc_exec_ctx_now() + t->keepalive_time, &t->init_keepalive_ping_locked); } } else if (error == GRPC_ERROR_CANCELLED) { /* The keepalive ping timer may be cancelled by bdp */ GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); - grpc_timer_init(exec_ctx, &t->keepalive_ping_timer, - grpc_exec_ctx_now(exec_ctx) + t->keepalive_time, + grpc_timer_init(&t->keepalive_ping_timer, + grpc_exec_ctx_now() + t->keepalive_time, &t->init_keepalive_ping_locked); } - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "init keepalive ping"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping"); } -static void start_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void start_keepalive_ping_locked(void *arg, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)arg; GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog"); - grpc_timer_init(exec_ctx, &t->keepalive_watchdog_timer, - grpc_exec_ctx_now(exec_ctx) + t->keepalive_time, + grpc_timer_init(&t->keepalive_watchdog_timer, + grpc_exec_ctx_now() + t->keepalive_time, &t->keepalive_watchdog_fired_locked); } -static void finish_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void finish_keepalive_ping_locked(void *arg, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)arg; if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) { if (error == GRPC_ERROR_NONE) { t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING; - grpc_timer_cancel(exec_ctx, &t->keepalive_watchdog_timer); + grpc_timer_cancel(&t->keepalive_watchdog_timer); GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); - grpc_timer_init(exec_ctx, &t->keepalive_ping_timer, - grpc_exec_ctx_now(exec_ctx) + t->keepalive_time, + grpc_timer_init(&t->keepalive_ping_timer, + grpc_exec_ctx_now() + t->keepalive_time, &t->init_keepalive_ping_locked); } } - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "keepalive ping end"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end"); } -static void keepalive_watchdog_fired_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void keepalive_watchdog_fired_locked(void *arg, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)arg; if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) { if (error == GRPC_ERROR_NONE) { t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING; close_transport_locked( - exec_ctx, t, + t, + grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "keepalive watchdog timeout"), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL)); + close_transport_locked( + t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "keepalive watchdog timeout"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL)); @@ -2771,71 +2647,67 @@ static void keepalive_watchdog_fired_locked(grpc_exec_ctx *exec_ctx, void *arg, t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING); } } - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "keepalive watchdog"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog"); } /******************************************************************************* * CALLBACK LOOP */ -static void connectivity_state_set(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void connectivity_state_set(grpc_chttp2_transport *t, grpc_connectivity_state state, grpc_error *error, const char *reason) { GRPC_CHTTP2_IF_TRACING( gpr_log(GPR_DEBUG, "set connectivity_state=%d", state)); - grpc_connectivity_state_set(exec_ctx, &t->channel_callback.state_tracker, - state, error, reason); + grpc_connectivity_state_set(&t->channel_callback.state_tracker, state, error, + reason); } /******************************************************************************* * POLLSET STUFF */ -static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_pollset *pollset) { +static void set_pollset(grpc_transport *gt, grpc_stream *gs, + grpc_pollset *pollset) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; - grpc_endpoint_add_to_pollset(exec_ctx, t->ep, pollset); + grpc_endpoint_add_to_pollset(t->ep, pollset); } -static void set_pollset_set(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_pollset_set *pollset_set) { +static void set_pollset_set(grpc_transport *gt, grpc_stream *gs, + grpc_pollset_set *pollset_set) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt; - grpc_endpoint_add_to_pollset_set(exec_ctx, t->ep, pollset_set); + grpc_endpoint_add_to_pollset_set(t->ep, pollset_set); } /******************************************************************************* * BYTE STREAM */ -static void reset_byte_stream(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void reset_byte_stream(void *arg, grpc_error *error) { grpc_chttp2_stream *s = (grpc_chttp2_stream *)arg; s->pending_byte_stream = false; if (error == GRPC_ERROR_NONE) { - grpc_chttp2_maybe_complete_recv_message(exec_ctx, s->t, s); - grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, s->t, s); + grpc_chttp2_maybe_complete_recv_message(s->t, s); + grpc_chttp2_maybe_complete_recv_trailing_metadata(s->t, s); } else { GPR_ASSERT(error != GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(exec_ctx, s->on_next, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(s->on_next, GRPC_ERROR_REF(error)); s->on_next = NULL; GRPC_ERROR_UNREF(s->byte_stream_error); s->byte_stream_error = GRPC_ERROR_NONE; - grpc_chttp2_cancel_stream(exec_ctx, s->t, s, GRPC_ERROR_REF(error)); + grpc_chttp2_cancel_stream(s->t, s, GRPC_ERROR_REF(error)); s->byte_stream_error = GRPC_ERROR_REF(error); } } -static void incoming_byte_stream_unref(grpc_exec_ctx *exec_ctx, - grpc_chttp2_incoming_byte_stream *bs) { +static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) { if (gpr_unref(&bs->refs)) { gpr_free(bs); } } -static void incoming_byte_stream_next_locked(grpc_exec_ctx *exec_ctx, - void *argp, +static void incoming_byte_stream_next_locked(void *argp, grpc_error *error_ignored) { grpc_chttp2_incoming_byte_stream *bs = (grpc_chttp2_incoming_byte_stream *)argp; @@ -2848,31 +2720,30 @@ static void incoming_byte_stream_next_locked(grpc_exec_ctx *exec_ctx, bs->next_action.max_size_hint, cur_length); grpc_chttp2_act_on_flowctl_action( - exec_ctx, grpc_chttp2_flowctl_get_action(exec_ctx, &t->flow_control, - &s->flow_control), - t, s); + grpc_chttp2_flowctl_get_action(&t->flow_control, &s->flow_control), t, + s); } GPR_ASSERT(s->unprocessed_incoming_frames_buffer.length == 0); if (s->frame_storage.length > 0) { grpc_slice_buffer_swap(&s->frame_storage, &s->unprocessed_incoming_frames_buffer); s->unprocessed_incoming_frames_decompressed = false; - GRPC_CLOSURE_SCHED(exec_ctx, bs->next_action.on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(bs->next_action.on_complete, GRPC_ERROR_NONE); } else if (s->byte_stream_error != GRPC_ERROR_NONE) { - GRPC_CLOSURE_SCHED(exec_ctx, bs->next_action.on_complete, + GRPC_CLOSURE_SCHED(bs->next_action.on_complete, GRPC_ERROR_REF(s->byte_stream_error)); if (s->data_parser.parsing_frame != NULL) { - incoming_byte_stream_unref(exec_ctx, s->data_parser.parsing_frame); + incoming_byte_stream_unref(s->data_parser.parsing_frame); s->data_parser.parsing_frame = NULL; } } else if (s->read_closed) { if (bs->remaining_bytes != 0) { s->byte_stream_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message"); - GRPC_CLOSURE_SCHED(exec_ctx, bs->next_action.on_complete, + GRPC_CLOSURE_SCHED(bs->next_action.on_complete, GRPC_ERROR_REF(s->byte_stream_error)); if (s->data_parser.parsing_frame != NULL) { - incoming_byte_stream_unref(exec_ctx, s->data_parser.parsing_frame); + incoming_byte_stream_unref(s->data_parser.parsing_frame); s->data_parser.parsing_frame = NULL; } } else { @@ -2882,11 +2753,10 @@ static void incoming_byte_stream_next_locked(grpc_exec_ctx *exec_ctx, } else { s->on_next = bs->next_action.on_complete; } - incoming_byte_stream_unref(exec_ctx, bs); + incoming_byte_stream_unref(bs); } -static bool incoming_byte_stream_next(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static bool incoming_byte_stream_next(grpc_byte_stream *byte_stream, size_t max_size_hint, grpc_closure *on_complete) { GPR_TIMER_BEGIN("incoming_byte_stream_next", 0); @@ -2901,7 +2771,6 @@ static bool incoming_byte_stream_next(grpc_exec_ctx *exec_ctx, bs->next_action.max_size_hint = max_size_hint; bs->next_action.on_complete = on_complete; GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&bs->next_action.closure, incoming_byte_stream_next_locked, bs, grpc_combiner_scheduler(bs->transport->combiner)), @@ -2911,8 +2780,7 @@ static bool incoming_byte_stream_next(grpc_exec_ctx *exec_ctx, } } -static grpc_error *incoming_byte_stream_pull(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static grpc_error *incoming_byte_stream_pull(grpc_byte_stream *byte_stream, grpc_slice *slice) { GPR_TIMER_BEGIN("incoming_byte_stream_pull", 0); grpc_chttp2_incoming_byte_stream *bs = @@ -2948,62 +2816,58 @@ static grpc_error *incoming_byte_stream_pull(grpc_exec_ctx *exec_ctx, } } error = grpc_deframe_unprocessed_incoming_frames( - exec_ctx, &s->data_parser, s, &s->unprocessed_incoming_frames_buffer, - slice, NULL); + &s->data_parser, s, &s->unprocessed_incoming_frames_buffer, slice, + NULL); if (error != GRPC_ERROR_NONE) { return error; } } else { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message"); - GRPC_CLOSURE_SCHED(exec_ctx, &s->reset_byte_stream, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(&s->reset_byte_stream, GRPC_ERROR_REF(error)); return error; } GPR_TIMER_END("incoming_byte_stream_pull", 0); return GRPC_ERROR_NONE; } -static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx, - void *byte_stream, +static void incoming_byte_stream_destroy_locked(void *byte_stream, grpc_error *error_ignored); -static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream) { +static void incoming_byte_stream_destroy(grpc_byte_stream *byte_stream) { GPR_TIMER_BEGIN("incoming_byte_stream_destroy", 0); grpc_chttp2_incoming_byte_stream *bs = (grpc_chttp2_incoming_byte_stream *)byte_stream; GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT( - &bs->destroy_action, incoming_byte_stream_destroy_locked, - bs, grpc_combiner_scheduler(bs->transport->combiner)), + GRPC_CLOSURE_INIT(&bs->destroy_action, + incoming_byte_stream_destroy_locked, bs, + grpc_combiner_scheduler(bs->transport->combiner)), GRPC_ERROR_NONE); GPR_TIMER_END("incoming_byte_stream_destroy", 0); } static void incoming_byte_stream_publish_error( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_error *error) { + grpc_chttp2_incoming_byte_stream *bs, grpc_error *error) { grpc_chttp2_stream *s = bs->stream; GPR_ASSERT(error != GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(exec_ctx, s->on_next, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(s->on_next, GRPC_ERROR_REF(error)); s->on_next = NULL; GRPC_ERROR_UNREF(s->byte_stream_error); s->byte_stream_error = GRPC_ERROR_REF(error); - grpc_chttp2_cancel_stream(exec_ctx, bs->transport, bs->stream, - GRPC_ERROR_REF(error)); + grpc_chttp2_cancel_stream(bs->transport, bs->stream, GRPC_ERROR_REF(error)); } grpc_error *grpc_chttp2_incoming_byte_stream_push( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_slice slice, grpc_slice *slice_out) { + grpc_chttp2_incoming_byte_stream *bs, grpc_slice slice, + grpc_slice *slice_out) { grpc_chttp2_stream *s = bs->stream; if (bs->remaining_bytes < GRPC_SLICE_LENGTH(slice)) { grpc_error *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream"); - GRPC_CLOSURE_SCHED(exec_ctx, &s->reset_byte_stream, GRPC_ERROR_REF(error)); - grpc_slice_unref_internal(exec_ctx, slice); + GRPC_CLOSURE_SCHED(&s->reset_byte_stream, GRPC_ERROR_REF(error)); + grpc_slice_unref_internal(slice); return error; } else { bs->remaining_bytes -= (uint32_t)GRPC_SLICE_LENGTH(slice); @@ -3015,8 +2879,8 @@ grpc_error *grpc_chttp2_incoming_byte_stream_push( } grpc_error *grpc_chttp2_incoming_byte_stream_finished( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_error *error, bool reset_on_error) { + grpc_chttp2_incoming_byte_stream *bs, grpc_error *error, + bool reset_on_error) { grpc_chttp2_stream *s = bs->stream; if (error == GRPC_ERROR_NONE) { @@ -3025,27 +2889,25 @@ grpc_error *grpc_chttp2_incoming_byte_stream_finished( } } if (error != GRPC_ERROR_NONE && reset_on_error) { - GRPC_CLOSURE_SCHED(exec_ctx, &s->reset_byte_stream, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(&s->reset_byte_stream, GRPC_ERROR_REF(error)); } - incoming_byte_stream_unref(exec_ctx, bs); + incoming_byte_stream_unref(bs); return error; } -static void incoming_byte_stream_shutdown(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static void incoming_byte_stream_shutdown(grpc_byte_stream *byte_stream, grpc_error *error) { grpc_chttp2_incoming_byte_stream *bs = (grpc_chttp2_incoming_byte_stream *)byte_stream; GRPC_ERROR_UNREF(grpc_chttp2_incoming_byte_stream_finished( - exec_ctx, bs, error, true /* reset_on_error */)); + bs, error, true /* reset_on_error */)); } static const grpc_byte_stream_vtable grpc_chttp2_incoming_byte_stream_vtable = { incoming_byte_stream_next, incoming_byte_stream_pull, incoming_byte_stream_shutdown, incoming_byte_stream_destroy}; -static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx, - void *byte_stream, +static void incoming_byte_stream_destroy_locked(void *byte_stream, grpc_error *error_ignored) { grpc_chttp2_incoming_byte_stream *bs = (grpc_chttp2_incoming_byte_stream *)byte_stream; @@ -3053,15 +2915,15 @@ static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t = s->t; GPR_ASSERT(bs->base.vtable == &grpc_chttp2_incoming_byte_stream_vtable); - incoming_byte_stream_unref(exec_ctx, bs); + incoming_byte_stream_unref(bs); s->pending_byte_stream = false; - grpc_chttp2_maybe_complete_recv_message(exec_ctx, t, s); - grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_message(t, s); + grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s); } grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create( - grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s, - uint32_t frame_size, uint32_t flags) { + grpc_chttp2_transport *t, grpc_chttp2_stream *s, uint32_t frame_size, + uint32_t flags) { grpc_chttp2_incoming_byte_stream *incoming_byte_stream = (grpc_chttp2_incoming_byte_stream *)gpr_malloc( sizeof(*incoming_byte_stream)); @@ -3081,30 +2943,25 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create( * RESOURCE QUOTAS */ -static void post_benign_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static void post_benign_reclaimer(grpc_chttp2_transport *t) { if (!t->benign_reclaimer_registered) { t->benign_reclaimer_registered = true; GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer"); - grpc_resource_user_post_reclaimer(exec_ctx, - grpc_endpoint_get_resource_user(t->ep), + grpc_resource_user_post_reclaimer(grpc_endpoint_get_resource_user(t->ep), false, &t->benign_reclaimer_locked); } } -static void post_destructive_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static void post_destructive_reclaimer(grpc_chttp2_transport *t) { if (!t->destructive_reclaimer_registered) { t->destructive_reclaimer_registered = true; GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer"); - grpc_resource_user_post_reclaimer(exec_ctx, - grpc_endpoint_get_resource_user(t->ep), + grpc_resource_user_post_reclaimer(grpc_endpoint_get_resource_user(t->ep), true, &t->destructive_reclaimer_locked); } } -static void benign_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void benign_reclaimer_locked(void *arg, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)arg; if (error == GRPC_ERROR_NONE && grpc_chttp2_stream_map_size(&t->stream_map) == 0) { @@ -3114,7 +2971,7 @@ static void benign_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg, gpr_log(GPR_DEBUG, "HTTP2: %s - send goaway to free memory", t->peer_string); } - send_goaway(exec_ctx, t, + send_goaway(t, grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"), GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM)); @@ -3128,13 +2985,12 @@ static void benign_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg, t->benign_reclaimer_registered = false; if (error != GRPC_ERROR_CANCELLED) { grpc_resource_user_finish_reclamation( - exec_ctx, grpc_endpoint_get_resource_user(t->ep)); + grpc_endpoint_get_resource_user(t->ep)); } - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "benign_reclaimer"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer"); } -static void destructive_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void destructive_reclaimer_locked(void *arg, grpc_error *error) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)arg; size_t n = grpc_chttp2_stream_map_size(&t->stream_map); t->destructive_reclaimer_registered = false; @@ -3146,23 +3002,22 @@ static void destructive_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg, s->id); } grpc_chttp2_cancel_stream( - exec_ctx, t, s, - grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"), - GRPC_ERROR_INT_HTTP2_ERROR, - GRPC_HTTP2_ENHANCE_YOUR_CALM)); + t, s, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"), + GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM)); if (n > 1) { /* Since we cancel one stream per destructive reclamation, if there are more streams left, we can immediately post a new reclaimer in case the resource quota needs to free more memory */ - post_destructive_reclaimer(exec_ctx, t); + post_destructive_reclaimer(t); } } if (error != GRPC_ERROR_CANCELLED) { grpc_resource_user_finish_reclamation( - exec_ctx, grpc_endpoint_get_resource_user(t->ep)); + grpc_endpoint_get_resource_user(t->ep)); } - GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "destructive_reclaimer"); + GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer"); } /******************************************************************************* @@ -3216,8 +3071,7 @@ const char *grpc_chttp2_initiate_write_reason_string( GPR_UNREACHABLE_CODE(return "unknown"); } -static grpc_endpoint *chttp2_get_endpoint(grpc_exec_ctx *exec_ctx, - grpc_transport *t) { +static grpc_endpoint *chttp2_get_endpoint(grpc_transport *t) { return ((grpc_chttp2_transport *)t)->ep; } @@ -3235,16 +3089,14 @@ static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream), static const grpc_transport_vtable *get_vtable(void) { return &vtable; } grpc_transport *grpc_create_chttp2_transport( - grpc_exec_ctx *exec_ctx, const grpc_channel_args *channel_args, - grpc_endpoint *ep, int is_client) { + const grpc_channel_args *channel_args, grpc_endpoint *ep, int is_client) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)gpr_zalloc(sizeof(grpc_chttp2_transport)); - init_transport(exec_ctx, t, channel_args, ep, is_client != 0); + init_transport(t, channel_args, ep, is_client != 0); return &t->base; } -void grpc_chttp2_transport_start_reading(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_chttp2_transport_start_reading(grpc_transport *transport, grpc_slice_buffer *read_buffer) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)transport; GRPC_CHTTP2_REF_TRANSPORT( @@ -3253,5 +3105,5 @@ void grpc_chttp2_transport_start_reading(grpc_exec_ctx *exec_ctx, grpc_slice_buffer_move_into(read_buffer, &t->read_buffer); gpr_free(read_buffer); } - GRPC_CLOSURE_SCHED(exec_ctx, &t->read_action_locked, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&t->read_action_locked, GRPC_ERROR_NONE); } diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.h b/src/core/ext/transport/chttp2/transport/chttp2_transport.h index 321fca4c825..400c58066da 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.h +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.h @@ -36,13 +36,11 @@ extern grpc_tracer_flag grpc_trace_chttp2_refcount; #endif grpc_transport *grpc_create_chttp2_transport( - grpc_exec_ctx *exec_ctx, const grpc_channel_args *channel_args, - grpc_endpoint *ep, int is_client); + const grpc_channel_args *channel_args, grpc_endpoint *ep, int is_client); /// Takes ownership of \a read_buffer, which (if non-NULL) contains /// leftover bytes previously read from the endpoint (e.g., by handshakers). -void grpc_chttp2_transport_start_reading(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_chttp2_transport_start_reading(grpc_transport *transport, grpc_slice_buffer *read_buffer); #ifdef __cplusplus diff --git a/src/core/ext/transport/chttp2/transport/flow_control.cc b/src/core/ext/transport/chttp2/transport/flow_control.cc index d0e80c4bd5d..0d8a52f9246 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.cc +++ b/src/core/ext/transport/chttp2/transport/flow_control.cc @@ -392,10 +392,9 @@ static grpc_chttp2_flowctl_urgency delta_is_significant( // Takes in a target and uses the pid controller to return a stabilized // guess at the new bdp. -static double get_pid_controller_guess(grpc_exec_ctx* exec_ctx, - grpc_chttp2_transport_flowctl* tfc, +static double get_pid_controller_guess(grpc_chttp2_transport_flowctl* tfc, double target) { - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); if (!tfc->pid_controller_initialized) { tfc->last_pid_update = now; tfc->pid_controller_initialized = true; @@ -440,8 +439,7 @@ static double get_target_under_memory_pressure( } grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_action( - grpc_exec_ctx* exec_ctx, grpc_chttp2_transport_flowctl* tfc, - grpc_chttp2_stream_flowctl* sfc) { + grpc_chttp2_transport_flowctl* tfc, grpc_chttp2_stream_flowctl* sfc) { grpc_chttp2_flowctl_action action; memset(&action, 0, sizeof(action)); // TODO(ncteisen): tune this @@ -471,7 +469,7 @@ grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_action( // run our target through the pid controller to stabilize change. // TODO(ncteisen): experiment with other controllers here. - double bdp_guess = get_pid_controller_guess(exec_ctx, tfc, target); + double bdp_guess = get_pid_controller_guess(tfc, target); // Though initial window 'could' drop to 0, we keep the floor at 128 tfc->target_initial_window_size = diff --git a/src/core/ext/transport/chttp2/transport/frame_data.cc b/src/core/ext/transport/chttp2/transport/frame_data.cc index 73aaab18025..04cf7eec934 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.cc +++ b/src/core/ext/transport/chttp2/transport/frame_data.cc @@ -36,11 +36,10 @@ grpc_error *grpc_chttp2_data_parser_init(grpc_chttp2_data_parser *parser) { return GRPC_ERROR_NONE; } -void grpc_chttp2_data_parser_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_data_parser *parser) { +void grpc_chttp2_data_parser_destroy(grpc_chttp2_data_parser *parser) { if (parser->parsing_frame != NULL) { GRPC_ERROR_UNREF(grpc_chttp2_incoming_byte_stream_finished( - exec_ctx, parser->parsing_frame, + parser->parsing_frame, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Parser destroyed"), false)); } GRPC_ERROR_UNREF(parser->error); @@ -98,7 +97,7 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer *inbuf, } grpc_error *grpc_deframe_unprocessed_incoming_frames( - grpc_exec_ctx *exec_ctx, grpc_chttp2_data_parser *p, grpc_chttp2_stream *s, + grpc_chttp2_data_parser *p, grpc_chttp2_stream *s, grpc_slice_buffer *slices, grpc_slice *slice_out, grpc_byte_stream **stream_out) { grpc_error *error = GRPC_ERROR_NONE; @@ -118,14 +117,14 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( char *msg; if (cur == end) { - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); continue; } switch (p->state) { case GRPC_CHTTP2_DATA_ERROR: p->state = GRPC_CHTTP2_DATA_ERROR; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return GRPC_ERROR_REF(p->error); case GRPC_CHTTP2_DATA_FH_0: s->stats.incoming.framing_bytes++; @@ -150,12 +149,12 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( p->error = grpc_error_set_int(p->error, GRPC_ERROR_INT_OFFSET, cur - beg); p->state = GRPC_CHTTP2_DATA_ERROR; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return GRPC_ERROR_REF(p->error); } if (++cur == end) { p->state = GRPC_CHTTP2_DATA_FH_1; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); continue; } /* fallthrough */ @@ -164,7 +163,7 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( p->frame_size = ((uint32_t)*cur) << 24; if (++cur == end) { p->state = GRPC_CHTTP2_DATA_FH_2; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); continue; } /* fallthrough */ @@ -173,7 +172,7 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( p->frame_size |= ((uint32_t)*cur) << 16; if (++cur == end) { p->state = GRPC_CHTTP2_DATA_FH_3; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); continue; } /* fallthrough */ @@ -182,7 +181,7 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( p->frame_size |= ((uint32_t)*cur) << 8; if (++cur == end) { p->state = GRPC_CHTTP2_DATA_FH_4; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); continue; } /* fallthrough */ @@ -198,11 +197,11 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( message_flags |= GRPC_WRITE_INTERNAL_COMPRESS; } p->parsing_frame = grpc_chttp2_incoming_byte_stream_create( - exec_ctx, t, s, p->frame_size, message_flags); + t, s, p->frame_size, message_flags); *stream_out = &p->parsing_frame->base; if (p->parsing_frame->remaining_bytes == 0) { GRPC_ERROR_UNREF(grpc_chttp2_incoming_byte_stream_finished( - exec_ctx, p->parsing_frame, GRPC_ERROR_NONE, true)); + p->parsing_frame, GRPC_ERROR_NONE, true)); p->parsing_frame = NULL; p->state = GRPC_CHTTP2_DATA_FH_0; } @@ -213,64 +212,64 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( slices, grpc_slice_sub(slice, (size_t)(cur - beg), (size_t)(end - beg))); } - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return GRPC_ERROR_NONE; case GRPC_CHTTP2_DATA_FRAME: { GPR_ASSERT(p->parsing_frame != NULL); GPR_ASSERT(slice_out != NULL); if (cur == end) { - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); continue; } uint32_t remaining = (uint32_t)(end - cur); if (remaining == p->frame_size) { s->stats.incoming.data_bytes += remaining; - if (GRPC_ERROR_NONE != (error = grpc_chttp2_incoming_byte_stream_push( - exec_ctx, p->parsing_frame, - grpc_slice_sub(slice, (size_t)(cur - beg), - (size_t)(end - beg)), - slice_out))) { - grpc_slice_unref_internal(exec_ctx, slice); + if (GRPC_ERROR_NONE != + (error = grpc_chttp2_incoming_byte_stream_push( + p->parsing_frame, grpc_slice_sub(slice, (size_t)(cur - beg), + (size_t)(end - beg)), + slice_out))) { + grpc_slice_unref_internal(slice); return error; } if (GRPC_ERROR_NONE != (error = grpc_chttp2_incoming_byte_stream_finished( - exec_ctx, p->parsing_frame, GRPC_ERROR_NONE, true))) { - grpc_slice_unref_internal(exec_ctx, slice); + p->parsing_frame, GRPC_ERROR_NONE, true))) { + grpc_slice_unref_internal(slice); return error; } p->parsing_frame = NULL; p->state = GRPC_CHTTP2_DATA_FH_0; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return GRPC_ERROR_NONE; } else if (remaining < p->frame_size) { s->stats.incoming.data_bytes += remaining; - if (GRPC_ERROR_NONE != (error = grpc_chttp2_incoming_byte_stream_push( - exec_ctx, p->parsing_frame, - grpc_slice_sub(slice, (size_t)(cur - beg), - (size_t)(end - beg)), - slice_out))) { + if (GRPC_ERROR_NONE != + (error = grpc_chttp2_incoming_byte_stream_push( + p->parsing_frame, grpc_slice_sub(slice, (size_t)(cur - beg), + (size_t)(end - beg)), + slice_out))) { return error; } p->frame_size -= remaining; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return GRPC_ERROR_NONE; } else { GPR_ASSERT(remaining > p->frame_size); s->stats.incoming.data_bytes += p->frame_size; if (GRPC_ERROR_NONE != (grpc_chttp2_incoming_byte_stream_push( - exec_ctx, p->parsing_frame, + p->parsing_frame, grpc_slice_sub(slice, (size_t)(cur - beg), (size_t)(cur + p->frame_size - beg)), slice_out))) { - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return error; } if (GRPC_ERROR_NONE != (error = grpc_chttp2_incoming_byte_stream_finished( - exec_ctx, p->parsing_frame, GRPC_ERROR_NONE, true))) { - grpc_slice_unref_internal(exec_ctx, slice); + p->parsing_frame, GRPC_ERROR_NONE, true))) { + grpc_slice_unref_internal(slice); return error; } p->parsing_frame = NULL; @@ -279,7 +278,7 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( grpc_slice_buffer_undo_take_first( slices, grpc_slice_sub(slice, (size_t)(cur - beg), (size_t)(end - beg))); - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); return GRPC_ERROR_NONE; } } @@ -289,19 +288,19 @@ grpc_error *grpc_deframe_unprocessed_incoming_frames( return GRPC_ERROR_NONE; } -grpc_error *grpc_chttp2_data_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, +grpc_error *grpc_chttp2_data_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last) { if (!s->pending_byte_stream) { grpc_slice_ref_internal(slice); grpc_slice_buffer_add(&s->frame_storage, slice); - grpc_chttp2_maybe_complete_recv_message(exec_ctx, t, s); + grpc_chttp2_maybe_complete_recv_message(t, s); } else if (s->on_next) { GPR_ASSERT(s->frame_storage.length == 0); grpc_slice_ref_internal(slice); grpc_slice_buffer_add(&s->unprocessed_incoming_frames_buffer, slice); - GRPC_CLOSURE_SCHED(exec_ctx, s->on_next, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->on_next, GRPC_ERROR_NONE); s->on_next = NULL; s->unprocessed_incoming_frames_decompressed = false; } else { @@ -310,8 +309,7 @@ grpc_error *grpc_chttp2_data_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, } if (is_last && s->received_last_frame) { - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, true, false, - GRPC_ERROR_NONE); + grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE); } return GRPC_ERROR_NONE; diff --git a/src/core/ext/transport/chttp2/transport/frame_data.h b/src/core/ext/transport/chttp2/transport/frame_data.h index 81ec5361a39..b5c30fd1dbf 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.h +++ b/src/core/ext/transport/chttp2/transport/frame_data.h @@ -58,8 +58,7 @@ typedef struct { /* initialize per-stream state for data frame parsing */ grpc_error *grpc_chttp2_data_parser_init(grpc_chttp2_data_parser *parser); -void grpc_chttp2_data_parser_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_data_parser *parser); +void grpc_chttp2_data_parser_destroy(grpc_chttp2_data_parser *parser); /* start processing a new data frame */ grpc_error *grpc_chttp2_data_parser_begin_frame(grpc_chttp2_data_parser *parser, @@ -69,7 +68,7 @@ grpc_error *grpc_chttp2_data_parser_begin_frame(grpc_chttp2_data_parser *parser, /* handle a slice of a data frame - is_last indicates the last slice of a frame */ -grpc_error *grpc_chttp2_data_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, +grpc_error *grpc_chttp2_data_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last); @@ -80,7 +79,7 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer *inbuf, grpc_slice_buffer *outbuf); grpc_error *grpc_deframe_unprocessed_incoming_frames( - grpc_exec_ctx *exec_ctx, grpc_chttp2_data_parser *p, grpc_chttp2_stream *s, + grpc_chttp2_data_parser *p, grpc_chttp2_stream *s, grpc_slice_buffer *slices, grpc_slice *slice_out, grpc_byte_stream **stream_out); diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.cc b/src/core/ext/transport/chttp2/transport/frame_goaway.cc index 78ec08e177f..8eda3611d16 100644 --- a/src/core/ext/transport/chttp2/transport/frame_goaway.cc +++ b/src/core/ext/transport/chttp2/transport/frame_goaway.cc @@ -52,8 +52,7 @@ grpc_error *grpc_chttp2_goaway_parser_begin_frame(grpc_chttp2_goaway_parser *p, return GRPC_ERROR_NONE; } -grpc_error *grpc_chttp2_goaway_parser_parse(grpc_exec_ctx *exec_ctx, - void *parser, +grpc_error *grpc_chttp2_goaway_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last) { @@ -135,7 +134,7 @@ grpc_error *grpc_chttp2_goaway_parser_parse(grpc_exec_ctx *exec_ctx, p->state = GRPC_CHTTP2_GOAWAY_DEBUG; if (is_last) { grpc_chttp2_add_incoming_goaway( - exec_ctx, t, (uint32_t)p->error_code, + t, (uint32_t)p->error_code, grpc_slice_new(p->debug_data, p->debug_length, gpr_free)); p->debug_data = NULL; } diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.h b/src/core/ext/transport/chttp2/transport/frame_goaway.h index 7b3aa45f3f2..135d6ec6ff1 100644 --- a/src/core/ext/transport/chttp2/transport/frame_goaway.h +++ b/src/core/ext/transport/chttp2/transport/frame_goaway.h @@ -54,8 +54,7 @@ void grpc_chttp2_goaway_parser_init(grpc_chttp2_goaway_parser *p); void grpc_chttp2_goaway_parser_destroy(grpc_chttp2_goaway_parser *p); grpc_error *grpc_chttp2_goaway_parser_begin_frame( grpc_chttp2_goaway_parser *parser, uint32_t length, uint8_t flags); -grpc_error *grpc_chttp2_goaway_parser_parse(grpc_exec_ctx *exec_ctx, - void *parser, +grpc_error *grpc_chttp2_goaway_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last); diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.cc b/src/core/ext/transport/chttp2/transport/frame_ping.cc index 1cfa883ee15..1a5f2b8b3bd 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.cc +++ b/src/core/ext/transport/chttp2/transport/frame_ping.cc @@ -68,7 +68,7 @@ grpc_error *grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser *parser, return GRPC_ERROR_NONE; } -grpc_error *grpc_chttp2_ping_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, +grpc_error *grpc_chttp2_ping_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last) { @@ -86,10 +86,10 @@ grpc_error *grpc_chttp2_ping_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, if (p->byte == 8) { GPR_ASSERT(is_last); if (p->is_ack) { - grpc_chttp2_ack_ping(exec_ctx, t, p->opaque_8bytes); + grpc_chttp2_ack_ping(t, p->opaque_8bytes); } else { if (!t->is_client) { - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); grpc_millis next_allowed_ping = t->ping_recv_state.last_ping_recv_time + t->ping_policy.min_recv_ping_interval_without_data; @@ -104,7 +104,7 @@ grpc_error *grpc_chttp2_ping_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, } if (next_allowed_ping > now) { - grpc_chttp2_add_ping_strike(exec_ctx, t); + grpc_chttp2_add_ping_strike(t); } t->ping_recv_state.last_ping_recv_time = now; @@ -116,8 +116,7 @@ grpc_error *grpc_chttp2_ping_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, t->ping_acks, t->ping_ack_capacity * sizeof(*t->ping_acks)); } t->ping_acks[t->ping_ack_count++] = p->opaque_8bytes; - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_PING_RESPONSE); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_PING_RESPONSE); } } } diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.h b/src/core/ext/transport/chttp2/transport/frame_ping.h index ffc2f0cf2ff..89fc0df000c 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.h +++ b/src/core/ext/transport/chttp2/transport/frame_ping.h @@ -37,7 +37,7 @@ grpc_slice grpc_chttp2_ping_create(uint8_t ack, uint64_t opaque_8bytes); grpc_error *grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser *parser, uint32_t length, uint8_t flags); -grpc_error *grpc_chttp2_ping_parser_parse(grpc_exec_ctx *exec_ctx, void *parser, +grpc_error *grpc_chttp2_ping_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last); diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc index 0133b6efa25..222f0e2615e 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc @@ -69,8 +69,7 @@ grpc_error *grpc_chttp2_rst_stream_parser_begin_frame( return GRPC_ERROR_NONE; } -grpc_error *grpc_chttp2_rst_stream_parser_parse(grpc_exec_ctx *exec_ctx, - void *parser, +grpc_error *grpc_chttp2_rst_stream_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last) { @@ -103,7 +102,7 @@ grpc_error *grpc_chttp2_rst_stream_parser_parse(grpc_exec_ctx *exec_ctx, GRPC_ERROR_INT_HTTP2_ERROR, (intptr_t)reason); gpr_free(message); } - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, true, true, error); + grpc_chttp2_mark_stream_closed(t, s, true, true, error); } return GRPC_ERROR_NONE; diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h index 102ffdb3f36..c72d342de30 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.h @@ -38,8 +38,7 @@ grpc_slice grpc_chttp2_rst_stream_create(uint32_t stream_id, uint32_t code, grpc_error *grpc_chttp2_rst_stream_parser_begin_frame( grpc_chttp2_rst_stream_parser *parser, uint32_t length, uint8_t flags); -grpc_error *grpc_chttp2_rst_stream_parser_parse(grpc_exec_ctx *exec_ctx, - void *parser, +grpc_error *grpc_chttp2_rst_stream_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last); diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.cc b/src/core/ext/transport/chttp2/transport/frame_settings.cc index 2995bf73102..2dc7d2cde5b 100644 --- a/src/core/ext/transport/chttp2/transport/frame_settings.cc +++ b/src/core/ext/transport/chttp2/transport/frame_settings.cc @@ -108,8 +108,7 @@ grpc_error *grpc_chttp2_settings_parser_begin_frame( } } -grpc_error *grpc_chttp2_settings_parser_parse(grpc_exec_ctx *exec_ctx, void *p, - grpc_chttp2_transport *t, +grpc_error *grpc_chttp2_settings_parser_parse(void *p, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last) { grpc_chttp2_settings_parser *parser = (grpc_chttp2_settings_parser *)p; diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.h b/src/core/ext/transport/chttp2/transport/frame_settings.h index 3364da15207..3123e2422f6 100644 --- a/src/core/ext/transport/chttp2/transport/frame_settings.h +++ b/src/core/ext/transport/chttp2/transport/frame_settings.h @@ -56,8 +56,7 @@ grpc_slice grpc_chttp2_settings_ack_create(void); grpc_error *grpc_chttp2_settings_parser_begin_frame( grpc_chttp2_settings_parser *parser, uint32_t length, uint8_t flags, uint32_t *settings); -grpc_error *grpc_chttp2_settings_parser_parse(grpc_exec_ctx *exec_ctx, - void *parser, +grpc_error *grpc_chttp2_settings_parser_parse(void *parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last); diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.cc b/src/core/ext/transport/chttp2/transport/frame_window_update.cc index c9ab8d1b50f..0480e6b5dad 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.cc +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.cc @@ -64,9 +64,11 @@ grpc_error *grpc_chttp2_window_update_parser_begin_frame( return GRPC_ERROR_NONE; } -grpc_error *grpc_chttp2_window_update_parser_parse( - grpc_exec_ctx *exec_ctx, void *parser, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_slice slice, int is_last) { +grpc_error *grpc_chttp2_window_update_parser_parse(void *parser, + grpc_chttp2_transport *t, + grpc_chttp2_stream *s, + grpc_slice slice, + int is_last) { uint8_t *const beg = GRPC_SLICE_START_PTR(slice); uint8_t *const end = GRPC_SLICE_END_PTR(slice); uint8_t *cur = beg; @@ -99,10 +101,9 @@ grpc_error *grpc_chttp2_window_update_parser_parse( grpc_chttp2_flowctl_recv_stream_update( &t->flow_control, &s->flow_control, received_update); if (grpc_chttp2_list_remove_stalled_by_stream(t, s)) { - grpc_chttp2_mark_stream_writable(exec_ctx, t, s); + grpc_chttp2_mark_stream_writable(t, s); grpc_chttp2_initiate_write( - exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE); + t, GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE); } } } else { @@ -112,8 +113,7 @@ grpc_error *grpc_chttp2_window_update_parser_parse( bool is_zero = t->flow_control.remote_window <= 0; if (was_zero && !is_zero) { grpc_chttp2_initiate_write( - exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED); + t, GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED); } } } diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.h b/src/core/ext/transport/chttp2/transport/frame_window_update.h index 400f9f53989..0d7f7098c0a 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.h +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.h @@ -39,9 +39,11 @@ grpc_slice grpc_chttp2_window_update_create( grpc_error *grpc_chttp2_window_update_parser_begin_frame( grpc_chttp2_window_update_parser *parser, uint32_t length, uint8_t flags); -grpc_error *grpc_chttp2_window_update_parser_parse( - grpc_exec_ctx *exec_ctx, void *parser, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_slice slice, int is_last); +grpc_error *grpc_chttp2_window_update_parser_parse(void *parser, + grpc_chttp2_transport *t, + grpc_chttp2_stream *s, + grpc_slice slice, + int is_last); #ifdef __cplusplus } diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc index 17b8c4ab85e..60cd8d94007 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc @@ -179,8 +179,7 @@ static void evict_entry(grpc_chttp2_hpack_compressor *c) { } /* add an element to the decoder table */ -static void add_elem(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, - grpc_mdelem elem) { +static void add_elem(grpc_chttp2_hpack_compressor *c, grpc_mdelem elem) { GPR_ASSERT(GRPC_MDELEM_IS_INTERNED(elem)); uint32_t key_hash = grpc_slice_hash(GRPC_MDKEY(elem)); @@ -228,12 +227,12 @@ static void add_elem(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, } else if (c->indices_elems[HASH_FRAGMENT_2(elem_hash)] < c->indices_elems[HASH_FRAGMENT_3(elem_hash)]) { /* not there: replace oldest */ - GRPC_MDELEM_UNREF(exec_ctx, c->entries_elems[HASH_FRAGMENT_2(elem_hash)]); + GRPC_MDELEM_UNREF(c->entries_elems[HASH_FRAGMENT_2(elem_hash)]); c->entries_elems[HASH_FRAGMENT_2(elem_hash)] = GRPC_MDELEM_REF(elem); c->indices_elems[HASH_FRAGMENT_2(elem_hash)] = new_index; } else { /* not there: replace oldest */ - GRPC_MDELEM_UNREF(exec_ctx, c->entries_elems[HASH_FRAGMENT_3(elem_hash)]); + GRPC_MDELEM_UNREF(c->entries_elems[HASH_FRAGMENT_3(elem_hash)]); c->entries_elems[HASH_FRAGMENT_3(elem_hash)] = GRPC_MDELEM_REF(elem); c->indices_elems[HASH_FRAGMENT_3(elem_hash)] = new_index; } @@ -258,24 +257,21 @@ static void add_elem(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, c->indices_keys[HASH_FRAGMENT_3(key_hash)] = new_index; } else if (c->indices_keys[HASH_FRAGMENT_2(key_hash)] < c->indices_keys[HASH_FRAGMENT_3(key_hash)]) { - grpc_slice_unref_internal(exec_ctx, - c->entries_keys[HASH_FRAGMENT_2(key_hash)]); + grpc_slice_unref_internal(c->entries_keys[HASH_FRAGMENT_2(key_hash)]); c->entries_keys[HASH_FRAGMENT_2(key_hash)] = grpc_slice_ref_internal(GRPC_MDKEY(elem)); c->indices_keys[HASH_FRAGMENT_2(key_hash)] = new_index; } else { - grpc_slice_unref_internal(exec_ctx, - c->entries_keys[HASH_FRAGMENT_3(key_hash)]); + grpc_slice_unref_internal(c->entries_keys[HASH_FRAGMENT_3(key_hash)]); c->entries_keys[HASH_FRAGMENT_3(key_hash)] = grpc_slice_ref_internal(GRPC_MDKEY(elem)); c->indices_keys[HASH_FRAGMENT_3(key_hash)] = new_index; } } -static void emit_indexed(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, uint32_t elem_index, +static void emit_indexed(grpc_chttp2_hpack_compressor *c, uint32_t elem_index, framer_state *st) { - GRPC_STATS_INC_HPACK_SEND_INDEXED(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_INDEXED(); uint32_t len = GRPC_CHTTP2_VARINT_LENGTH(elem_index, 1); GRPC_CHTTP2_WRITE_VARINT(elem_index, 1, 0x80, add_tiny_header_data(st, len), len); @@ -287,18 +283,17 @@ typedef struct { bool insert_null_before_wire_value; } wire_value; -static wire_value get_wire_value(grpc_exec_ctx *exec_ctx, grpc_mdelem elem, - bool true_binary_enabled) { +static wire_value get_wire_value(grpc_mdelem elem, bool true_binary_enabled) { wire_value wire_val; if (grpc_is_binary_header(GRPC_MDKEY(elem))) { if (true_binary_enabled) { - GRPC_STATS_INC_HPACK_SEND_BINARY(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_BINARY(); wire_val.huffman_prefix = 0x00; wire_val.insert_null_before_wire_value = true; wire_val.data = grpc_slice_ref_internal(GRPC_MDVALUE(elem)); } else { - GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64(); wire_val.huffman_prefix = 0x80; wire_val.insert_null_before_wire_value = false; wire_val.data = @@ -306,7 +301,7 @@ static wire_value get_wire_value(grpc_exec_ctx *exec_ctx, grpc_mdelem elem, } } else { /* TODO(ctiller): opportunistically compress non-binary headers */ - GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(); wire_val.huffman_prefix = 0x00; wire_val.insert_null_before_wire_value = false; wire_val.data = grpc_slice_ref_internal(GRPC_MDVALUE(elem)); @@ -323,14 +318,12 @@ static void add_wire_value(framer_state *st, wire_value v) { add_header_data(st, v.data); } -static void emit_lithdr_incidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, +static void emit_lithdr_incidx(grpc_chttp2_hpack_compressor *c, uint32_t key_index, grpc_mdelem elem, framer_state *st) { - GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX(); uint32_t len_pfx = GRPC_CHTTP2_VARINT_LENGTH(key_index, 2); - wire_value value = - get_wire_value(exec_ctx, elem, st->use_true_binary_metadata); + wire_value value = get_wire_value(elem, st->use_true_binary_metadata); size_t len_val = wire_value_length(value); uint32_t len_val_len; GPR_ASSERT(len_val <= UINT32_MAX); @@ -342,14 +335,12 @@ static void emit_lithdr_incidx(grpc_exec_ctx *exec_ctx, add_wire_value(st, value); } -static void emit_lithdr_noidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, +static void emit_lithdr_noidx(grpc_chttp2_hpack_compressor *c, uint32_t key_index, grpc_mdelem elem, framer_state *st) { - GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX(); uint32_t len_pfx = GRPC_CHTTP2_VARINT_LENGTH(key_index, 4); - wire_value value = - get_wire_value(exec_ctx, elem, st->use_true_binary_metadata); + wire_value value = get_wire_value(elem, st->use_true_binary_metadata); size_t len_val = wire_value_length(value); uint32_t len_val_len; GPR_ASSERT(len_val <= UINT32_MAX); @@ -361,14 +352,12 @@ static void emit_lithdr_noidx(grpc_exec_ctx *exec_ctx, add_wire_value(st, value); } -static void emit_lithdr_incidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, +static void emit_lithdr_incidx_v(grpc_chttp2_hpack_compressor *c, grpc_mdelem elem, framer_state *st) { - GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V(exec_ctx); - GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V(); + GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(); uint32_t len_key = (uint32_t)GRPC_SLICE_LENGTH(GRPC_MDKEY(elem)); - wire_value value = - get_wire_value(exec_ctx, elem, st->use_true_binary_metadata); + wire_value value = get_wire_value(elem, st->use_true_binary_metadata); uint32_t len_val = (uint32_t)wire_value_length(value); uint32_t len_key_len = GRPC_CHTTP2_VARINT_LENGTH(len_key, 1); uint32_t len_val_len = GRPC_CHTTP2_VARINT_LENGTH(len_val, 1); @@ -383,14 +372,12 @@ static void emit_lithdr_incidx_v(grpc_exec_ctx *exec_ctx, add_wire_value(st, value); } -static void emit_lithdr_noidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, +static void emit_lithdr_noidx_v(grpc_chttp2_hpack_compressor *c, grpc_mdelem elem, framer_state *st) { - GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V(exec_ctx); - GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(exec_ctx); + GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V(); + GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(); uint32_t len_key = (uint32_t)GRPC_SLICE_LENGTH(GRPC_MDKEY(elem)); - wire_value value = - get_wire_value(exec_ctx, elem, st->use_true_binary_metadata); + wire_value value = get_wire_value(elem, st->use_true_binary_metadata); uint32_t len_val = (uint32_t)wire_value_length(value); uint32_t len_key_len = GRPC_CHTTP2_VARINT_LENGTH(len_key, 1); uint32_t len_val_len = GRPC_CHTTP2_VARINT_LENGTH(len_val, 1); @@ -419,8 +406,8 @@ static uint32_t dynidx(grpc_chttp2_hpack_compressor *c, uint32_t elem_index) { } /* encode an mdelem */ -static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, - grpc_mdelem elem, framer_state *st) { +static void hpack_enc(grpc_chttp2_hpack_compressor *c, grpc_mdelem elem, + framer_state *st) { GPR_ASSERT(GRPC_SLICE_LENGTH(GRPC_MDKEY(elem)) > 0); if (GRPC_SLICE_START_PTR(GRPC_MDKEY(elem))[0] != ':') { /* regular header */ st->seen_regular_header = 1; @@ -443,7 +430,7 @@ static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, gpr_free(v); } if (!GRPC_MDELEM_IS_INTERNED(elem)) { - emit_lithdr_noidx_v(exec_ctx, c, elem, st); + emit_lithdr_noidx_v(c, elem, st); return; } @@ -465,16 +452,16 @@ static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, if (grpc_mdelem_eq(c->entries_elems[HASH_FRAGMENT_2(elem_hash)], elem) && c->indices_elems[HASH_FRAGMENT_2(elem_hash)] > c->tail_remote_index) { /* HIT: complete element (first cuckoo hash) */ - emit_indexed(exec_ctx, c, - dynidx(c, c->indices_elems[HASH_FRAGMENT_2(elem_hash)]), st); + emit_indexed(c, dynidx(c, c->indices_elems[HASH_FRAGMENT_2(elem_hash)]), + st); return; } if (grpc_mdelem_eq(c->entries_elems[HASH_FRAGMENT_3(elem_hash)], elem) && c->indices_elems[HASH_FRAGMENT_3(elem_hash)] > c->tail_remote_index) { /* HIT: complete element (second cuckoo hash) */ - emit_indexed(exec_ctx, c, - dynidx(c, c->indices_elems[HASH_FRAGMENT_3(elem_hash)]), st); + emit_indexed(c, dynidx(c, c->indices_elems[HASH_FRAGMENT_3(elem_hash)]), + st); return; } @@ -492,11 +479,11 @@ static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, indices_key > c->tail_remote_index) { /* HIT: key (first cuckoo hash) */ if (should_add_elem) { - emit_lithdr_incidx(exec_ctx, c, dynidx(c, indices_key), elem, st); - add_elem(exec_ctx, c, elem); + emit_lithdr_incidx(c, dynidx(c, indices_key), elem, st); + add_elem(c, elem); return; } else { - emit_lithdr_noidx(exec_ctx, c, dynidx(c, indices_key), elem, st); + emit_lithdr_noidx(c, dynidx(c, indices_key), elem, st); return; } GPR_UNREACHABLE_CODE(return ); @@ -508,11 +495,11 @@ static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, indices_key > c->tail_remote_index) { /* HIT: key (first cuckoo hash) */ if (should_add_elem) { - emit_lithdr_incidx(exec_ctx, c, dynidx(c, indices_key), elem, st); - add_elem(exec_ctx, c, elem); + emit_lithdr_incidx(c, dynidx(c, indices_key), elem, st); + add_elem(c, elem); return; } else { - emit_lithdr_noidx(exec_ctx, c, dynidx(c, indices_key), elem, st); + emit_lithdr_noidx(c, dynidx(c, indices_key), elem, st); return; } GPR_UNREACHABLE_CODE(return ); @@ -521,11 +508,11 @@ static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, /* no elem, key in the table... fall back to literal emission */ if (should_add_elem) { - emit_lithdr_incidx_v(exec_ctx, c, elem, st); - add_elem(exec_ctx, c, elem); + emit_lithdr_incidx_v(c, elem, st); + add_elem(c, elem); return; } else { - emit_lithdr_noidx_v(exec_ctx, c, elem, st); + emit_lithdr_noidx_v(c, elem, st); return; } GPR_UNREACHABLE_CODE(return ); @@ -534,17 +521,15 @@ static void hpack_enc(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_compressor *c, #define STRLEN_LIT(x) (sizeof(x) - 1) #define TIMEOUT_KEY "grpc-timeout" -static void deadline_enc(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, grpc_millis deadline, +static void deadline_enc(grpc_chttp2_hpack_compressor *c, grpc_millis deadline, framer_state *st) { char timeout_str[GRPC_HTTP2_TIMEOUT_ENCODE_MIN_BUFSIZE]; grpc_mdelem mdelem; - grpc_http2_encode_timeout(deadline - grpc_exec_ctx_now(exec_ctx), - timeout_str); - mdelem = grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_GRPC_TIMEOUT, + grpc_http2_encode_timeout(deadline - grpc_exec_ctx_now(), timeout_str); + mdelem = grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_TIMEOUT, grpc_slice_from_copied_string(timeout_str)); - hpack_enc(exec_ctx, c, mdelem, st); - GRPC_MDELEM_UNREF(exec_ctx, mdelem); + hpack_enc(c, mdelem, st); + GRPC_MDELEM_UNREF(mdelem); } static uint32_t elems_for_bytes(uint32_t bytes) { return (bytes + 31) / 32; } @@ -564,14 +549,13 @@ void grpc_chttp2_hpack_compressor_init(grpc_chttp2_hpack_compressor *c) { } } -void grpc_chttp2_hpack_compressor_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c) { +void grpc_chttp2_hpack_compressor_destroy(grpc_chttp2_hpack_compressor *c) { int i; for (i = 0; i < GRPC_CHTTP2_HPACKC_NUM_VALUES; i++) { if (c->entries_keys[i].refcount != &terminal_slice_refcount) { - grpc_slice_unref_internal(exec_ctx, c->entries_keys[i]); + grpc_slice_unref_internal(c->entries_keys[i]); } - GRPC_MDELEM_UNREF(exec_ctx, c->entries_elems[i]); + GRPC_MDELEM_UNREF(c->entries_elems[i]); } gpr_free(c->table_elem_size); } @@ -627,8 +611,7 @@ void grpc_chttp2_hpack_compressor_set_max_table_size( } } -void grpc_chttp2_encode_header(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, +void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c, grpc_mdelem **extra_headers, size_t extra_headers_size, grpc_metadata_batch *metadata, @@ -654,15 +637,15 @@ void grpc_chttp2_encode_header(grpc_exec_ctx *exec_ctx, emit_advertise_table_size_change(c, &st); } for (size_t i = 0; i < extra_headers_size; ++i) { - hpack_enc(exec_ctx, c, *extra_headers[i], &st); + hpack_enc(c, *extra_headers[i], &st); } grpc_metadata_batch_assert_ok(metadata); for (grpc_linked_mdelem *l = metadata->list.head; l; l = l->next) { - hpack_enc(exec_ctx, c, l->md, &st); + hpack_enc(c, l->md, &st); } grpc_millis deadline = metadata->deadline; if (deadline != GRPC_MILLIS_INF_FUTURE) { - deadline_enc(exec_ctx, c, deadline, &st); + deadline_enc(c, deadline, &st); } finish_frame(&st, 1, options->is_eof); diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.h b/src/core/ext/transport/chttp2/transport/hpack_encoder.h index 16316b63f7c..eb8f80b7bd9 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder.h +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.h @@ -72,8 +72,7 @@ typedef struct { } grpc_chttp2_hpack_compressor; void grpc_chttp2_hpack_compressor_init(grpc_chttp2_hpack_compressor *c); -void grpc_chttp2_hpack_compressor_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c); +void grpc_chttp2_hpack_compressor_destroy(grpc_chttp2_hpack_compressor *c); void grpc_chttp2_hpack_compressor_set_max_table_size( grpc_chttp2_hpack_compressor *c, uint32_t max_table_size); void grpc_chttp2_hpack_compressor_set_max_usable_size( @@ -87,8 +86,7 @@ typedef struct { grpc_transport_one_way_stats *stats; } grpc_encode_header_options; -void grpc_chttp2_encode_header(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_compressor *c, +void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c, grpc_mdelem **extra_headers, size_t extra_headers_size, grpc_metadata_batch *metadata, diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc index 3d1df19bc38..97e3e85046b 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc @@ -60,96 +60,69 @@ typedef enum { a set of indirect jumps, and so not waste stack space. */ /* forward declarations for parsing states */ -static grpc_error *parse_begin(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_begin(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_error(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_error(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end, grpc_error *error); -static grpc_error *still_parse_error(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *still_parse_error(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_illegal_op(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_illegal_op(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_string_prefix(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_string_prefix(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_key_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_key_string(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); static grpc_error *parse_value_string_with_indexed_key( - grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, const uint8_t *cur, - const uint8_t *end); + grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); static grpc_error *parse_value_string_with_literal_key( - grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, const uint8_t *cur, - const uint8_t *end); + grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_value0(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value0(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_value1(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value1(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_value2(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value2(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_value3(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value3(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_value4(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value4(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_value5up(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_value5up(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_indexed_field(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_indexed_field(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_indexed_field_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_indexed_field_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_incidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_incidx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_incidx_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_incidx_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_incidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_incidx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_notidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_notidx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_notidx_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_notidx_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_notidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_notidx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_nvridx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_nvridx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_nvridx_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_lithdr_nvridx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_max_tbl_size(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_max_tbl_size(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); -static grpc_error *parse_max_tbl_size_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_max_tbl_size_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end); /* we translate the first byte of a hpack field into one of these decoding @@ -648,8 +621,8 @@ static const uint8_t inverse_base64[256] = { }; /* emission helpers */ -static grpc_error *on_hdr(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, - grpc_mdelem md, int add_to_table) { +static grpc_error *on_hdr(grpc_chttp2_hpack_parser *p, grpc_mdelem md, + int add_to_table) { if (GRPC_TRACER_ON(grpc_http_trace) && !GRPC_MDELEM_IS_INTERNED(md)) { char *k = grpc_slice_to_c_string(GRPC_MDKEY(md)); char *v = grpc_slice_to_c_string(GRPC_MDVALUE(md)); @@ -665,26 +638,25 @@ static grpc_error *on_hdr(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, if (add_to_table) { GPR_ASSERT(GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_INTERNED || GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_STATIC); - grpc_error *err = grpc_chttp2_hptbl_add(exec_ctx, &p->table, md); + grpc_error *err = grpc_chttp2_hptbl_add(&p->table, md); if (err != GRPC_ERROR_NONE) return err; } if (p->on_header == NULL) { - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); return GRPC_ERROR_CREATE_FROM_STATIC_STRING("on_header callback not set"); } - p->on_header(exec_ctx, p->on_header_user_data, md); + p->on_header(p->on_header_user_data, md); return GRPC_ERROR_NONE; } -static grpc_slice take_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_slice take_string(grpc_chttp2_hpack_parser *p, grpc_chttp2_hpack_parser_string *str, bool intern) { grpc_slice s; if (!str->copied) { if (intern) { s = grpc_slice_intern(str->data.referenced); - grpc_slice_unref_internal(exec_ctx, str->data.referenced); + grpc_slice_unref_internal(str->data.referenced); } else { s = str->data.referenced; } @@ -702,85 +674,77 @@ static grpc_slice take_string(grpc_exec_ctx *exec_ctx, } /* jump to the next state */ -static grpc_error *parse_next(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_next(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { p->state = *p->next_state++; - return p->state(exec_ctx, p, cur, end); + return p->state(p, cur, end); } /* begin parsing a header: all functionality is encoded into lookup tables above */ -static grpc_error *parse_begin(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_begin(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_begin; return GRPC_ERROR_NONE; } - return first_byte_action[first_byte_lut[*cur]](exec_ctx, p, cur, end); + return first_byte_action[first_byte_lut[*cur]](p, cur, end); } /* stream dependency and prioritization data: we just skip it */ -static grpc_error *parse_stream_weight(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_stream_weight(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_stream_weight; return GRPC_ERROR_NONE; } - return p->after_prioritization(exec_ctx, p, cur + 1, end); + return p->after_prioritization(p, cur + 1, end); } -static grpc_error *parse_stream_dep3(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_stream_dep3(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_stream_dep3; return GRPC_ERROR_NONE; } - return parse_stream_weight(exec_ctx, p, cur + 1, end); + return parse_stream_weight(p, cur + 1, end); } -static grpc_error *parse_stream_dep2(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_stream_dep2(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_stream_dep2; return GRPC_ERROR_NONE; } - return parse_stream_dep3(exec_ctx, p, cur + 1, end); + return parse_stream_dep3(p, cur + 1, end); } -static grpc_error *parse_stream_dep1(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_stream_dep1(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_stream_dep1; return GRPC_ERROR_NONE; } - return parse_stream_dep2(exec_ctx, p, cur + 1, end); + return parse_stream_dep2(p, cur + 1, end); } -static grpc_error *parse_stream_dep0(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_stream_dep0(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_stream_dep0; return GRPC_ERROR_NONE; } - return parse_stream_dep1(exec_ctx, p, cur + 1, end); + return parse_stream_dep1(p, cur + 1, end); } /* emit an indexed field; jumps to begin the next field on completion */ -static grpc_error *finish_indexed_field(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_indexed_field(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { grpc_mdelem md = grpc_chttp2_hptbl_lookup(&p->table, p->index); @@ -792,24 +756,22 @@ static grpc_error *finish_indexed_field(grpc_exec_ctx *exec_ctx, GRPC_ERROR_INT_SIZE, (intptr_t)p->table.num_ents); } GRPC_MDELEM_REF(md); - GRPC_STATS_INC_HPACK_RECV_INDEXED(exec_ctx); - grpc_error *err = on_hdr(exec_ctx, p, md, 0); + GRPC_STATS_INC_HPACK_RECV_INDEXED(); + grpc_error *err = on_hdr(p, md, 0); if (err != GRPC_ERROR_NONE) return err; - return parse_begin(exec_ctx, p, cur, end); + return parse_begin(p, cur, end); } /* parse an indexed field with index < 127 */ -static grpc_error *parse_indexed_field(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_indexed_field(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { p->dynamic_table_update_allowed = 0; p->index = (*cur) & 0x7f; - return finish_indexed_field(exec_ctx, p, cur + 1, end); + return finish_indexed_field(p, cur + 1, end); } /* parse an indexed field with index >= 127 */ -static grpc_error *parse_indexed_field_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_indexed_field_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -818,56 +780,50 @@ static grpc_error *parse_indexed_field_x(grpc_exec_ctx *exec_ctx, p->next_state = and_then; p->index = 0x7f; p->parsing.value = &p->index; - return parse_value0(exec_ctx, p, cur + 1, end); + return parse_value0(p, cur + 1, end); } /* finish a literal header with incremental indexing */ -static grpc_error *finish_lithdr_incidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_lithdr_incidx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { grpc_mdelem md = grpc_chttp2_hptbl_lookup(&p->table, p->index); GPR_ASSERT(!GRPC_MDISNULL(md)); /* handled in string parsing */ - GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX(exec_ctx); - grpc_error *err = on_hdr( - exec_ctx, p, - grpc_mdelem_from_slices(exec_ctx, grpc_slice_ref_internal(GRPC_MDKEY(md)), - take_string(exec_ctx, p, &p->value, true)), - 1); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX(); + grpc_error *err = + on_hdr(p, grpc_mdelem_from_slices(grpc_slice_ref_internal(GRPC_MDKEY(md)), + take_string(p, &p->value, true)), + 1); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* finish a literal header with incremental indexing with no index */ -static grpc_error *finish_lithdr_incidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_lithdr_incidx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { - GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V(exec_ctx); - grpc_error *err = on_hdr( - exec_ctx, p, - grpc_mdelem_from_slices(exec_ctx, take_string(exec_ctx, p, &p->key, true), - take_string(exec_ctx, p, &p->value, true)), - 1); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V(); + grpc_error *err = + on_hdr(p, grpc_mdelem_from_slices(take_string(p, &p->key, true), + take_string(p, &p->value, true)), + 1); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* parse a literal header with incremental indexing; index < 63 */ -static grpc_error *parse_lithdr_incidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_incidx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_value_string_with_indexed_key, finish_lithdr_incidx}; p->dynamic_table_update_allowed = 0; p->next_state = and_then; p->index = (*cur) & 0x3f; - return parse_string_prefix(exec_ctx, p, cur + 1, end); + return parse_string_prefix(p, cur + 1, end); } /* parse a literal header with incremental indexing; index >= 63 */ -static grpc_error *parse_lithdr_incidx_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_incidx_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -877,12 +833,11 @@ static grpc_error *parse_lithdr_incidx_x(grpc_exec_ctx *exec_ctx, p->next_state = and_then; p->index = 0x3f; p->parsing.value = &p->index; - return parse_value0(exec_ctx, p, cur + 1, end); + return parse_value0(p, cur + 1, end); } /* parse a literal header with incremental indexing; index = 0 */ -static grpc_error *parse_lithdr_incidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_incidx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -890,56 +845,50 @@ static grpc_error *parse_lithdr_incidx_v(grpc_exec_ctx *exec_ctx, parse_value_string_with_literal_key, finish_lithdr_incidx_v}; p->dynamic_table_update_allowed = 0; p->next_state = and_then; - return parse_string_prefix(exec_ctx, p, cur + 1, end); + return parse_string_prefix(p, cur + 1, end); } /* finish a literal header without incremental indexing */ -static grpc_error *finish_lithdr_notidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_lithdr_notidx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { grpc_mdelem md = grpc_chttp2_hptbl_lookup(&p->table, p->index); GPR_ASSERT(!GRPC_MDISNULL(md)); /* handled in string parsing */ - GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX(exec_ctx); - grpc_error *err = on_hdr( - exec_ctx, p, - grpc_mdelem_from_slices(exec_ctx, grpc_slice_ref_internal(GRPC_MDKEY(md)), - take_string(exec_ctx, p, &p->value, false)), - 0); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX(); + grpc_error *err = + on_hdr(p, grpc_mdelem_from_slices(grpc_slice_ref_internal(GRPC_MDKEY(md)), + take_string(p, &p->value, false)), + 0); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* finish a literal header without incremental indexing with index = 0 */ -static grpc_error *finish_lithdr_notidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_lithdr_notidx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { - GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V(exec_ctx); - grpc_error *err = on_hdr( - exec_ctx, p, - grpc_mdelem_from_slices(exec_ctx, take_string(exec_ctx, p, &p->key, true), - take_string(exec_ctx, p, &p->value, false)), - 0); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V(); + grpc_error *err = + on_hdr(p, grpc_mdelem_from_slices(take_string(p, &p->key, true), + take_string(p, &p->value, false)), + 0); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* parse a literal header without incremental indexing; index < 15 */ -static grpc_error *parse_lithdr_notidx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_notidx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_value_string_with_indexed_key, finish_lithdr_notidx}; p->dynamic_table_update_allowed = 0; p->next_state = and_then; p->index = (*cur) & 0xf; - return parse_string_prefix(exec_ctx, p, cur + 1, end); + return parse_string_prefix(p, cur + 1, end); } /* parse a literal header without incremental indexing; index >= 15 */ -static grpc_error *parse_lithdr_notidx_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_notidx_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -949,12 +898,11 @@ static grpc_error *parse_lithdr_notidx_x(grpc_exec_ctx *exec_ctx, p->next_state = and_then; p->index = 0xf; p->parsing.value = &p->index; - return parse_value0(exec_ctx, p, cur + 1, end); + return parse_value0(p, cur + 1, end); } /* parse a literal header without incremental indexing; index == 0 */ -static grpc_error *parse_lithdr_notidx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_notidx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -962,56 +910,50 @@ static grpc_error *parse_lithdr_notidx_v(grpc_exec_ctx *exec_ctx, parse_value_string_with_literal_key, finish_lithdr_notidx_v}; p->dynamic_table_update_allowed = 0; p->next_state = and_then; - return parse_string_prefix(exec_ctx, p, cur + 1, end); + return parse_string_prefix(p, cur + 1, end); } /* finish a literal header that is never indexed */ -static grpc_error *finish_lithdr_nvridx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_lithdr_nvridx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { grpc_mdelem md = grpc_chttp2_hptbl_lookup(&p->table, p->index); GPR_ASSERT(!GRPC_MDISNULL(md)); /* handled in string parsing */ - GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX(exec_ctx); - grpc_error *err = on_hdr( - exec_ctx, p, - grpc_mdelem_from_slices(exec_ctx, grpc_slice_ref_internal(GRPC_MDKEY(md)), - take_string(exec_ctx, p, &p->value, false)), - 0); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX(); + grpc_error *err = + on_hdr(p, grpc_mdelem_from_slices(grpc_slice_ref_internal(GRPC_MDKEY(md)), + take_string(p, &p->value, false)), + 0); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* finish a literal header that is never indexed with an extra value */ -static grpc_error *finish_lithdr_nvridx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_lithdr_nvridx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { - GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V(exec_ctx); - grpc_error *err = on_hdr( - exec_ctx, p, - grpc_mdelem_from_slices(exec_ctx, take_string(exec_ctx, p, &p->key, true), - take_string(exec_ctx, p, &p->value, false)), - 0); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V(); + grpc_error *err = + on_hdr(p, grpc_mdelem_from_slices(take_string(p, &p->key, true), + take_string(p, &p->value, false)), + 0); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* parse a literal header that is never indexed; index < 15 */ -static grpc_error *parse_lithdr_nvridx(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_nvridx(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { parse_value_string_with_indexed_key, finish_lithdr_nvridx}; p->dynamic_table_update_allowed = 0; p->next_state = and_then; p->index = (*cur) & 0xf; - return parse_string_prefix(exec_ctx, p, cur + 1, end); + return parse_string_prefix(p, cur + 1, end); } /* parse a literal header that is never indexed; index >= 15 */ -static grpc_error *parse_lithdr_nvridx_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -1021,12 +963,11 @@ static grpc_error *parse_lithdr_nvridx_x(grpc_exec_ctx *exec_ctx, p->next_state = and_then; p->index = 0xf; p->parsing.value = &p->index; - return parse_value0(exec_ctx, p, cur + 1, end); + return parse_value0(p, cur + 1, end); } /* parse a literal header that is never indexed; index == 0 */ -static grpc_error *parse_lithdr_nvridx_v(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { @@ -1034,47 +975,44 @@ static grpc_error *parse_lithdr_nvridx_v(grpc_exec_ctx *exec_ctx, parse_value_string_with_literal_key, finish_lithdr_nvridx_v}; p->dynamic_table_update_allowed = 0; p->next_state = and_then; - return parse_string_prefix(exec_ctx, p, cur + 1, end); + return parse_string_prefix(p, cur + 1, end); } /* finish parsing a max table size change */ -static grpc_error *finish_max_tbl_size(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *finish_max_tbl_size(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (GRPC_TRACER_ON(grpc_http_trace)) { gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", p->index); } grpc_error *err = - grpc_chttp2_hptbl_set_current_table_size(exec_ctx, &p->table, p->index); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_begin(exec_ctx, p, cur, end); + grpc_chttp2_hptbl_set_current_table_size(&p->table, p->index); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_begin(p, cur, end); } /* parse a max table size change, max size < 15 */ -static grpc_error *parse_max_tbl_size(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_max_tbl_size(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (p->dynamic_table_update_allowed == 0) { return parse_error( - exec_ctx, p, cur, end, + p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "More than two max table size changes in a single frame")); } p->dynamic_table_update_allowed--; p->index = (*cur) & 0x1f; - return finish_max_tbl_size(exec_ctx, p, cur + 1, end); + return finish_max_tbl_size(p, cur + 1, end); } /* parse a max table size change, max size >= 15 */ -static grpc_error *parse_max_tbl_size_x(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_max_tbl_size_x(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { static const grpc_chttp2_hpack_parser_state and_then[] = { finish_max_tbl_size}; if (p->dynamic_table_update_allowed == 0) { return parse_error( - exec_ctx, p, cur, end, + p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "More than two max table size changes in a single frame")); } @@ -1082,12 +1020,11 @@ static grpc_error *parse_max_tbl_size_x(grpc_exec_ctx *exec_ctx, p->next_state = and_then; p->index = 0x1f; p->parsing.value = &p->index; - return parse_value0(exec_ctx, p, cur + 1, end); + return parse_value0(p, cur + 1, end); } /* a parse error: jam the parse state into parse_error, and return error */ -static grpc_error *parse_error(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_error(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end, grpc_error *err) { GPR_ASSERT(err != GRPC_ERROR_NONE); if (p->last_error == GRPC_ERROR_NONE) { @@ -1097,27 +1034,24 @@ static grpc_error *parse_error(grpc_exec_ctx *exec_ctx, return err; } -static grpc_error *still_parse_error(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *still_parse_error(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { return GRPC_ERROR_REF(p->last_error); } -static grpc_error *parse_illegal_op(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_illegal_op(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { GPR_ASSERT(cur != end); char *msg; gpr_asprintf(&msg, "Illegal hpack op code %d", *cur); grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - return parse_error(exec_ctx, p, cur, end, err); + return parse_error(p, cur, end, err); } /* parse the 1st byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error *parse_value0(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value0(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_value0; @@ -1127,16 +1061,15 @@ static grpc_error *parse_value0(grpc_exec_ctx *exec_ctx, *p->parsing.value += (*cur) & 0x7f; if ((*cur) & 0x80) { - return parse_value1(exec_ctx, p, cur + 1, end); + return parse_value1(p, cur + 1, end); } else { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } } /* parse the 2nd byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error *parse_value1(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value1(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_value1; @@ -1146,16 +1079,15 @@ static grpc_error *parse_value1(grpc_exec_ctx *exec_ctx, *p->parsing.value += (((uint32_t)*cur) & 0x7f) << 7; if ((*cur) & 0x80) { - return parse_value2(exec_ctx, p, cur + 1, end); + return parse_value2(p, cur + 1, end); } else { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } } /* parse the 3rd byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error *parse_value2(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value2(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_value2; @@ -1165,16 +1097,15 @@ static grpc_error *parse_value2(grpc_exec_ctx *exec_ctx, *p->parsing.value += (((uint32_t)*cur) & 0x7f) << 14; if ((*cur) & 0x80) { - return parse_value3(exec_ctx, p, cur + 1, end); + return parse_value3(p, cur + 1, end); } else { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } } /* parse the 4th byte of a varint into p->parsing.value no overflow is possible */ -static grpc_error *parse_value3(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value3(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_value3; @@ -1184,16 +1115,15 @@ static grpc_error *parse_value3(grpc_exec_ctx *exec_ctx, *p->parsing.value += (((uint32_t)*cur) & 0x7f) << 21; if ((*cur) & 0x80) { - return parse_value4(exec_ctx, p, cur + 1, end); + return parse_value4(p, cur + 1, end); } else { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } } /* parse the 5th byte of a varint into p->parsing.value depending on the byte, we may overflow, and care must be taken */ -static grpc_error *parse_value4(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_value4(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { uint8_t c; uint32_t cur_value; @@ -1219,9 +1149,9 @@ static grpc_error *parse_value4(grpc_exec_ctx *exec_ctx, *p->parsing.value = cur_value + add_value; if ((*cur) & 0x80) { - return parse_value5up(exec_ctx, p, cur + 1, end); + return parse_value5up(p, cur + 1, end); } else { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } error: @@ -1231,14 +1161,13 @@ error: *p->parsing.value, *cur); grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - return parse_error(exec_ctx, p, cur, end, err); + return parse_error(p, cur, end, err); } /* parse any trailing bytes in a varint: it's possible to append an arbitrary number of 0x80's and not affect the value - a zero will terminate - and anything else will overflow */ -static grpc_error *parse_value5up(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_value5up(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { while (cur != end && *cur == 0x80) { ++cur; @@ -1250,7 +1179,7 @@ static grpc_error *parse_value5up(grpc_exec_ctx *exec_ctx, } if (*cur == 0) { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } char *msg; @@ -1260,12 +1189,11 @@ static grpc_error *parse_value5up(grpc_exec_ctx *exec_ctx, *p->parsing.value, *cur); grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - return parse_error(exec_ctx, p, cur, end, err); + return parse_error(p, cur, end, err); } /* parse a string prefix */ -static grpc_error *parse_string_prefix(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_string_prefix(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (cur == end) { p->state = parse_string_prefix; @@ -1276,9 +1204,9 @@ static grpc_error *parse_string_prefix(grpc_exec_ctx *exec_ctx, p->huff = (*cur) >> 7; if (p->strlen == 0x7f) { p->parsing.value = &p->strlen; - return parse_value0(exec_ctx, p, cur + 1, end); + return parse_value0(p, cur + 1, end); } else { - return parse_next(exec_ctx, p, cur + 1, end); + return parse_next(p, cur + 1, end); } } @@ -1297,8 +1225,7 @@ static void append_bytes(grpc_chttp2_hpack_parser_string *str, str->data.copied.length += (uint32_t)length; } -static grpc_error *append_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *append_string(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { grpc_chttp2_hpack_parser_string *str = p->parsing.str; uint32_t bits; @@ -1316,11 +1243,11 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx, /* 'true-binary' case */ ++cur; p->binary = NOT_BINARY; - GRPC_STATS_INC_HPACK_RECV_BINARY(exec_ctx); + GRPC_STATS_INC_HPACK_RECV_BINARY(); append_bytes(str, cur, (size_t)(end - cur)); return GRPC_ERROR_NONE; } - GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64(exec_ctx); + GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64(); /* fallthrough */ b64_byte0: case B64_BYTE0: @@ -1331,9 +1258,8 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx, bits = inverse_base64[*cur]; ++cur; if (bits == 255) - return parse_error( - exec_ctx, p, cur, end, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character")); + return parse_error(p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Illegal base64 character")); else if (bits == 64) goto b64_byte0; p->base64_buffer = bits << 18; @@ -1347,9 +1273,8 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx, bits = inverse_base64[*cur]; ++cur; if (bits == 255) - return parse_error( - exec_ctx, p, cur, end, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character")); + return parse_error(p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Illegal base64 character")); else if (bits == 64) goto b64_byte1; p->base64_buffer |= bits << 12; @@ -1363,9 +1288,8 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx, bits = inverse_base64[*cur]; ++cur; if (bits == 255) - return parse_error( - exec_ctx, p, cur, end, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character")); + return parse_error(p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Illegal base64 character")); else if (bits == 64) goto b64_byte2; p->base64_buffer |= bits << 6; @@ -1379,9 +1303,8 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx, bits = inverse_base64[*cur]; ++cur; if (bits == 255) - return parse_error( - exec_ctx, p, cur, end, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character")); + return parse_error(p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Illegal base64 character")); else if (bits == 64) goto b64_byte3; p->base64_buffer |= bits; @@ -1393,12 +1316,11 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx, goto b64_byte0; } GPR_UNREACHABLE_CODE(return parse_error( - exec_ctx, p, cur, end, + p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"))); } -static grpc_error *finish_str(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *finish_str(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { uint8_t decoded[2]; uint32_t bits; @@ -1411,7 +1333,7 @@ static grpc_error *finish_str(grpc_exec_ctx *exec_ctx, case B64_BYTE0: break; case B64_BYTE1: - return parse_error(exec_ctx, p, cur, end, + return parse_error(p, cur, end, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "illegal base64 encoding")); /* illegal encoding */ case B64_BYTE2: @@ -1422,7 +1344,7 @@ static grpc_error *finish_str(grpc_exec_ctx *exec_ctx, bits & 0xffff); grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - return parse_error(exec_ctx, p, cur, end, err); + return parse_error(p, cur, end, err); } decoded[0] = (uint8_t)(bits >> 16); append_bytes(str, decoded, 1); @@ -1435,7 +1357,7 @@ static grpc_error *finish_str(grpc_exec_ctx *exec_ctx, bits & 0xff); grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - return parse_error(exec_ctx, p, cur, end, err); + return parse_error(p, cur, end, err); } decoded[0] = (uint8_t)(bits >> 16); decoded[1] = (uint8_t)(bits >> 8); @@ -1446,14 +1368,13 @@ static grpc_error *finish_str(grpc_exec_ctx *exec_ctx, } /* decode a nibble from a huffman encoded stream */ -static grpc_error *huff_nibble(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, uint8_t nibble) { +static grpc_error *huff_nibble(grpc_chttp2_hpack_parser *p, uint8_t nibble) { int16_t emit = emit_sub_tbl[16 * emit_tbl[p->huff_state] + nibble]; int16_t next = next_sub_tbl[16 * next_tbl[p->huff_state] + nibble]; if (emit != -1) { if (emit >= 0 && emit < 256) { uint8_t c = (uint8_t)emit; - grpc_error *err = append_string(exec_ctx, p, &c, (&c) + 1); + grpc_error *err = append_string(p, &c, (&c) + 1); if (err != GRPC_ERROR_NONE) return err; } else { assert(emit == 256); @@ -1464,45 +1385,42 @@ static grpc_error *huff_nibble(grpc_exec_ctx *exec_ctx, } /* decode full bytes from a huffman encoded stream */ -static grpc_error *add_huff_bytes(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *add_huff_bytes(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { for (; cur != end; ++cur) { - grpc_error *err = huff_nibble(exec_ctx, p, *cur >> 4); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - err = huff_nibble(exec_ctx, p, *cur & 0xf); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); + grpc_error *err = huff_nibble(p, *cur >> 4); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + err = huff_nibble(p, *cur & 0xf); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); } return GRPC_ERROR_NONE; } /* decode some string bytes based on the current decoding mode (huffman or not) */ -static grpc_error *add_str_bytes(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *add_str_bytes(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { if (p->huff) { - return add_huff_bytes(exec_ctx, p, cur, end); + return add_huff_bytes(p, cur, end); } else { - return append_string(exec_ctx, p, cur, end); + return append_string(p, cur, end); } } /* parse a string - tries to do large chunks at a time */ -static grpc_error *parse_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, const uint8_t *cur, +static grpc_error *parse_string(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { size_t remaining = p->strlen - p->strgot; size_t given = (size_t)(end - cur); if (remaining <= given) { - grpc_error *err = add_str_bytes(exec_ctx, p, cur, cur + remaining); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - err = finish_str(exec_ctx, p, cur + remaining, end); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_next(exec_ctx, p, cur + remaining, end); + grpc_error *err = add_str_bytes(p, cur, cur + remaining); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + err = finish_str(p, cur + remaining, end); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_next(p, cur + remaining, end); } else { - grpc_error *err = add_str_bytes(exec_ctx, p, cur, cur + given); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); + grpc_error *err = add_str_bytes(p, cur, cur + given); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); GPR_ASSERT(given <= UINT32_MAX - p->strgot); p->strgot += (uint32_t)given; p->state = parse_string; @@ -1511,20 +1429,19 @@ static grpc_error *parse_string(grpc_exec_ctx *exec_ctx, } /* begin parsing a string - performs setup, calls parse_string */ -static grpc_error *begin_parse_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *begin_parse_string(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end, uint8_t binary, grpc_chttp2_hpack_parser_string *str) { if (!p->huff && binary == NOT_BINARY && (end - cur) >= (intptr_t)p->strlen && p->current_slice_refcount != NULL) { - GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED(exec_ctx); + GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED(); str->copied = false; str->data.referenced.refcount = p->current_slice_refcount; str->data.referenced.data.refcounted.bytes = (uint8_t *)cur; str->data.referenced.data.refcounted.length = p->strlen; grpc_slice_ref_internal(str->data.referenced); - return parse_next(exec_ctx, p, cur + p->strlen, end); + return parse_next(p, cur + p->strlen, end); } p->strgot = 0; str->copied = true; @@ -1535,9 +1452,9 @@ static grpc_error *begin_parse_string(grpc_exec_ctx *exec_ctx, switch (p->binary) { case NOT_BINARY: if (p->huff) { - GRPC_STATS_INC_HPACK_RECV_HUFFMAN(exec_ctx); + GRPC_STATS_INC_HPACK_RECV_HUFFMAN(); } else { - GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED(exec_ctx); + GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED(); } break; case BINARY_BEGIN: @@ -1546,14 +1463,13 @@ static grpc_error *begin_parse_string(grpc_exec_ctx *exec_ctx, default: abort(); } - return parse_string(exec_ctx, p, cur, end); + return parse_string(p, cur, end); } /* parse the key string */ -static grpc_error *parse_key_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_key_string(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { - return begin_parse_string(exec_ctx, p, cur, end, NOT_BINARY, &p->key); + return begin_parse_string(p, cur, end, NOT_BINARY, &p->key); } /* check if a key represents a binary header or not */ @@ -1580,33 +1496,29 @@ static grpc_error *is_binary_indexed_header(grpc_chttp2_hpack_parser *p, } /* parse the value string */ -static grpc_error *parse_value_string(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +static grpc_error *parse_value_string(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end, bool is_binary) { - return begin_parse_string(exec_ctx, p, cur, end, - is_binary ? BINARY_BEGIN : NOT_BINARY, &p->value); + return begin_parse_string(p, cur, end, is_binary ? BINARY_BEGIN : NOT_BINARY, + &p->value); } static grpc_error *parse_value_string_with_indexed_key( - grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, const uint8_t *cur, - const uint8_t *end) { + grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { bool is_binary = false; grpc_error *err = is_binary_indexed_header(p, &is_binary); - if (err != GRPC_ERROR_NONE) return parse_error(exec_ctx, p, cur, end, err); - return parse_value_string(exec_ctx, p, cur, end, is_binary); + if (err != GRPC_ERROR_NONE) return parse_error(p, cur, end, err); + return parse_value_string(p, cur, end, is_binary); } static grpc_error *parse_value_string_with_literal_key( - grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, const uint8_t *cur, - const uint8_t *end) { - return parse_value_string(exec_ctx, p, cur, end, is_binary_literal_header(p)); + grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { + return parse_value_string(p, cur, end, is_binary_literal_header(p)); } /* PUBLIC INTERFACE */ -void grpc_chttp2_hpack_parser_init(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p) { +void grpc_chttp2_hpack_parser_init(grpc_chttp2_hpack_parser *p) { p->on_header = NULL; p->on_header_user_data = NULL; p->state = parse_begin; @@ -1620,7 +1532,7 @@ void grpc_chttp2_hpack_parser_init(grpc_exec_ctx *exec_ctx, p->value.data.copied.length = 0; p->dynamic_table_update_allowed = 2; p->last_error = GRPC_ERROR_NONE; - grpc_chttp2_hptbl_init(exec_ctx, &p->table); + grpc_chttp2_hptbl_init(&p->table); } void grpc_chttp2_hpack_parser_set_has_priority(grpc_chttp2_hpack_parser *p) { @@ -1628,18 +1540,16 @@ void grpc_chttp2_hpack_parser_set_has_priority(grpc_chttp2_hpack_parser *p) { p->state = parse_stream_dep0; } -void grpc_chttp2_hpack_parser_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p) { - grpc_chttp2_hptbl_destroy(exec_ctx, &p->table); +void grpc_chttp2_hpack_parser_destroy(grpc_chttp2_hpack_parser *p) { + grpc_chttp2_hptbl_destroy(&p->table); GRPC_ERROR_UNREF(p->last_error); - grpc_slice_unref_internal(exec_ctx, p->key.data.referenced); - grpc_slice_unref_internal(exec_ctx, p->value.data.referenced); + grpc_slice_unref_internal(p->key.data.referenced); + grpc_slice_unref_internal(p->value.data.referenced); gpr_free(p->key.data.copied.str); gpr_free(p->value.data.copied.str); } -grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +grpc_error *grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser *p, grpc_slice slice) { /* max number of bytes to parse at a time... limits call stack depth on * compilers without TCO */ @@ -1650,37 +1560,33 @@ grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, grpc_error *error = GRPC_ERROR_NONE; while (start != end && error == GRPC_ERROR_NONE) { uint8_t *target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start); - error = p->state(exec_ctx, p, start, target); + error = p->state(p, start, target); start = target; } p->current_slice_refcount = NULL; return error; } -typedef void (*maybe_complete_func_type)(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +typedef void (*maybe_complete_func_type)(grpc_chttp2_transport *t, grpc_chttp2_stream *s); static const maybe_complete_func_type maybe_complete_funcs[] = { grpc_chttp2_maybe_complete_recv_initial_metadata, grpc_chttp2_maybe_complete_recv_trailing_metadata}; -static void force_client_rst_stream(grpc_exec_ctx *exec_ctx, void *sp, - grpc_error *error) { +static void force_client_rst_stream(void *sp, grpc_error *error) { grpc_chttp2_stream *s = (grpc_chttp2_stream *)sp; grpc_chttp2_transport *t = s->t; if (!s->write_closed) { grpc_slice_buffer_add( &t->qbuf, grpc_chttp2_rst_stream_create(s->id, GRPC_HTTP2_NO_ERROR, &s->stats.outgoing)); - grpc_chttp2_initiate_write(exec_ctx, t, - GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM); - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, true, true, GRPC_ERROR_NONE); + grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM); + grpc_chttp2_mark_stream_closed(t, s, true, true, GRPC_ERROR_NONE); } - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "final_rst"); + GRPC_CHTTP2_STREAM_UNREF(s, "final_rst"); } -static void parse_stream_compression_md(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static void parse_stream_compression_md(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_metadata_batch *initial_metadata) { if (initial_metadata->idx.named.content_encoding == NULL || @@ -1692,8 +1598,7 @@ static void parse_stream_compression_md(grpc_exec_ctx *exec_ctx, } } -grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx, - void *hpack_parser, +grpc_error *grpc_chttp2_header_parser_parse(void *hpack_parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last) { @@ -1702,7 +1607,7 @@ grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx, if (s != NULL) { s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice); } - grpc_error *error = grpc_chttp2_hpack_parser_parse(exec_ctx, parser, slice); + grpc_error *error = grpc_chttp2_hpack_parser_parse(parser, slice); if (error != GRPC_ERROR_NONE) { GPR_TIMER_END("grpc_chttp2_hpack_parser_parse", 0); return error; @@ -1725,12 +1630,11 @@ grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx, /* Process stream compression md element if it exists */ if (s->header_frames_received == 0) { /* Only acts on initial metadata */ - parse_stream_compression_md(exec_ctx, t, s, - &s->metadata_buffer[0].batch); + parse_stream_compression_md(t, s, &s->metadata_buffer[0].batch); } s->published_metadata[s->header_frames_received] = GRPC_METADATA_PUBLISHED_FROM_WIRE; - maybe_complete_funcs[s->header_frames_received](exec_ctx, t, s); + maybe_complete_funcs[s->header_frames_received](t, s); s->header_frames_received++; } if (parser->is_eof) { @@ -1741,13 +1645,11 @@ grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx, and can avoid the extra write */ GRPC_CHTTP2_STREAM_REF(s, "final_rst"); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_CREATE(force_client_rst_stream, s, grpc_combiner_finally_scheduler(t->combiner)), GRPC_ERROR_NONE); } - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, true, false, - GRPC_ERROR_NONE); + grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE); } } parser->on_header = NULL; diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.h b/src/core/ext/transport/chttp2/transport/hpack_parser.h index 52014175a06..6756f2a1b31 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.h +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.h @@ -34,8 +34,7 @@ extern "C" { typedef struct grpc_chttp2_hpack_parser grpc_chttp2_hpack_parser; typedef grpc_error *(*grpc_chttp2_hpack_parser_state)( - grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, const uint8_t *beg, - const uint8_t *end); + grpc_chttp2_hpack_parser *p, const uint8_t *beg, const uint8_t *end); typedef struct { bool copied; @@ -51,7 +50,7 @@ typedef struct { struct grpc_chttp2_hpack_parser { /* user specified callback for each header output */ - void (*on_header)(grpc_exec_ctx *exec_ctx, void *user_data, grpc_mdelem md); + void (*on_header)(void *user_data, grpc_mdelem md); void *on_header_user_data; grpc_error *last_error; @@ -96,21 +95,17 @@ struct grpc_chttp2_hpack_parser { grpc_chttp2_hptbl table; }; -void grpc_chttp2_hpack_parser_init(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p); -void grpc_chttp2_hpack_parser_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p); +void grpc_chttp2_hpack_parser_init(grpc_chttp2_hpack_parser *p); +void grpc_chttp2_hpack_parser_destroy(grpc_chttp2_hpack_parser *p); void grpc_chttp2_hpack_parser_set_has_priority(grpc_chttp2_hpack_parser *p); -grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hpack_parser *p, +grpc_error *grpc_chttp2_hpack_parser_parse(grpc_chttp2_hpack_parser *p, grpc_slice slice); /* wraps grpc_chttp2_hpack_parser_parse to provide a frame level parser for the transport */ -grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx, - void *hpack_parser, +grpc_error *grpc_chttp2_header_parser_parse(void *hpack_parser, grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_slice slice, int is_last); diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.cc b/src/core/ext/transport/chttp2/transport/hpack_table.cc index 82c284b36e3..c63b7d4c4ee 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_table.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_table.cc @@ -165,7 +165,7 @@ static uint32_t entries_for_bytes(uint32_t bytes) { GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD; } -void grpc_chttp2_hptbl_init(grpc_exec_ctx *exec_ctx, grpc_chttp2_hptbl *tbl) { +void grpc_chttp2_hptbl_init(grpc_chttp2_hptbl *tbl) { size_t i; memset(tbl, 0, sizeof(*tbl)); @@ -177,22 +177,19 @@ void grpc_chttp2_hptbl_init(grpc_exec_ctx *exec_ctx, grpc_chttp2_hptbl *tbl) { memset(tbl->ents, 0, sizeof(*tbl->ents) * tbl->cap_entries); for (i = 1; i <= GRPC_CHTTP2_LAST_STATIC_ENTRY; i++) { tbl->static_ents[i - 1] = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(static_table[i].key)), grpc_slice_intern( grpc_slice_from_static_string(static_table[i].value))); } } -void grpc_chttp2_hptbl_destroy(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl) { +void grpc_chttp2_hptbl_destroy(grpc_chttp2_hptbl *tbl) { size_t i; for (i = 0; i < GRPC_CHTTP2_LAST_STATIC_ENTRY; i++) { - GRPC_MDELEM_UNREF(exec_ctx, tbl->static_ents[i]); + GRPC_MDELEM_UNREF(tbl->static_ents[i]); } for (i = 0; i < tbl->num_ents; i++) { - GRPC_MDELEM_UNREF(exec_ctx, - tbl->ents[(tbl->first_ent + i) % tbl->cap_entries]); + GRPC_MDELEM_UNREF(tbl->ents[(tbl->first_ent + i) % tbl->cap_entries]); } gpr_free(tbl->ents); } @@ -215,7 +212,7 @@ grpc_mdelem grpc_chttp2_hptbl_lookup(const grpc_chttp2_hptbl *tbl, } /* Evict one element from the table */ -static void evict1(grpc_exec_ctx *exec_ctx, grpc_chttp2_hptbl *tbl) { +static void evict1(grpc_chttp2_hptbl *tbl) { grpc_mdelem first_ent = tbl->ents[tbl->first_ent]; size_t elem_bytes = GRPC_SLICE_LENGTH(GRPC_MDKEY(first_ent)) + GRPC_SLICE_LENGTH(GRPC_MDVALUE(first_ent)) + @@ -224,7 +221,7 @@ static void evict1(grpc_exec_ctx *exec_ctx, grpc_chttp2_hptbl *tbl) { tbl->mem_used -= (uint32_t)elem_bytes; tbl->first_ent = ((tbl->first_ent + 1) % tbl->cap_entries); tbl->num_ents--; - GRPC_MDELEM_UNREF(exec_ctx, first_ent); + GRPC_MDELEM_UNREF(first_ent); } static void rebuild_ents(grpc_chttp2_hptbl *tbl, uint32_t new_cap) { @@ -240,8 +237,7 @@ static void rebuild_ents(grpc_chttp2_hptbl *tbl, uint32_t new_cap) { tbl->first_ent = 0; } -void grpc_chttp2_hptbl_set_max_bytes(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl, +void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl, uint32_t max_bytes) { if (tbl->max_bytes == max_bytes) { return; @@ -250,13 +246,12 @@ void grpc_chttp2_hptbl_set_max_bytes(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "Update hpack parser max size to %d", max_bytes); } while (tbl->mem_used > max_bytes) { - evict1(exec_ctx, tbl); + evict1(tbl); } tbl->max_bytes = max_bytes; } -grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl, +grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl *tbl, uint32_t bytes) { if (tbl->current_table_bytes == bytes) { return GRPC_ERROR_NONE; @@ -274,7 +269,7 @@ grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "Update hpack parser table size to %d", bytes); } while (tbl->mem_used > bytes) { - evict1(exec_ctx, tbl); + evict1(tbl); } tbl->current_table_bytes = bytes; tbl->max_entries = entries_for_bytes(bytes); @@ -289,8 +284,7 @@ grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -grpc_error *grpc_chttp2_hptbl_add(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl, grpc_mdelem md) { +grpc_error *grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl, grpc_mdelem md) { /* determine how many bytes of buffer this entry represents */ size_t elem_bytes = GRPC_SLICE_LENGTH(GRPC_MDKEY(md)) + GRPC_SLICE_LENGTH(GRPC_MDVALUE(md)) + @@ -320,14 +314,14 @@ grpc_error *grpc_chttp2_hptbl_add(grpc_exec_ctx *exec_ctx, * empty table. */ while (tbl->num_ents) { - evict1(exec_ctx, tbl); + evict1(tbl); } return GRPC_ERROR_NONE; } /* evict entries to ensure no overflow */ while (elem_bytes > (size_t)tbl->current_table_bytes - tbl->mem_used) { - evict1(exec_ctx, tbl); + evict1(tbl); } /* copy the finalized entry in */ diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.h b/src/core/ext/transport/chttp2/transport/hpack_table.h index a3ce2730a89..02bc2afdc4a 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_table.h +++ b/src/core/ext/transport/chttp2/transport/hpack_table.h @@ -73,21 +73,18 @@ typedef struct { } grpc_chttp2_hptbl; /* initialize a hpack table */ -void grpc_chttp2_hptbl_init(grpc_exec_ctx *exec_ctx, grpc_chttp2_hptbl *tbl); -void grpc_chttp2_hptbl_destroy(grpc_exec_ctx *exec_ctx, grpc_chttp2_hptbl *tbl); -void grpc_chttp2_hptbl_set_max_bytes(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl, +void grpc_chttp2_hptbl_init(grpc_chttp2_hptbl *tbl); +void grpc_chttp2_hptbl_destroy(grpc_chttp2_hptbl *tbl); +void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl, uint32_t max_bytes); -grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl, +grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl *tbl, uint32_t bytes); /* lookup a table entry based on its hpack index */ grpc_mdelem grpc_chttp2_hptbl_lookup(const grpc_chttp2_hptbl *tbl, uint32_t index); /* add a table entry to the index */ -grpc_error *grpc_chttp2_hptbl_add(grpc_exec_ctx *exec_ctx, - grpc_chttp2_hptbl *tbl, +grpc_error *grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl, grpc_mdelem md) GRPC_MUST_USE_RESULT; /* Find a key/value pair in the table... returns the index in the table of the most similar entry, or 0 if the value was not found */ diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.cc b/src/core/ext/transport/chttp2/transport/incoming_metadata.cc index 187ce0ea874..af690dabb25 100644 --- a/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.cc @@ -33,32 +33,30 @@ void grpc_chttp2_incoming_metadata_buffer_init( } void grpc_chttp2_incoming_metadata_buffer_destroy( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer) { - grpc_metadata_batch_destroy(exec_ctx, &buffer->batch); + grpc_chttp2_incoming_metadata_buffer *buffer) { + grpc_metadata_batch_destroy(&buffer->batch); } grpc_error *grpc_chttp2_incoming_metadata_buffer_add( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer, - grpc_mdelem elem) { + grpc_chttp2_incoming_metadata_buffer *buffer, grpc_mdelem elem) { buffer->size += GRPC_MDELEM_LENGTH(elem); return grpc_metadata_batch_add_tail( - exec_ctx, &buffer->batch, (grpc_linked_mdelem *)gpr_arena_alloc( - buffer->arena, sizeof(grpc_linked_mdelem)), + &buffer->batch, (grpc_linked_mdelem *)gpr_arena_alloc( + buffer->arena, sizeof(grpc_linked_mdelem)), elem); } grpc_error *grpc_chttp2_incoming_metadata_buffer_replace_or_add( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer, - grpc_mdelem elem) { + grpc_chttp2_incoming_metadata_buffer *buffer, grpc_mdelem elem) { for (grpc_linked_mdelem *l = buffer->batch.list.head; l != NULL; l = l->next) { if (grpc_slice_eq(GRPC_MDKEY(l->md), GRPC_MDKEY(elem))) { - GRPC_MDELEM_UNREF(exec_ctx, l->md); + GRPC_MDELEM_UNREF(l->md); l->md = elem; return GRPC_ERROR_NONE; } } - return grpc_chttp2_incoming_metadata_buffer_add(exec_ctx, buffer, elem); + return grpc_chttp2_incoming_metadata_buffer_add(buffer, elem); } void grpc_chttp2_incoming_metadata_buffer_set_deadline( @@ -67,8 +65,7 @@ void grpc_chttp2_incoming_metadata_buffer_set_deadline( } void grpc_chttp2_incoming_metadata_buffer_publish( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer, - grpc_metadata_batch *batch) { + grpc_chttp2_incoming_metadata_buffer *buffer, grpc_metadata_batch *batch) { *batch = buffer->batch; grpc_metadata_batch_init(&buffer->batch); } diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h index a0e01f2c4d2..0075a9b0816 100644 --- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h +++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h @@ -35,16 +35,15 @@ typedef struct { void grpc_chttp2_incoming_metadata_buffer_init( grpc_chttp2_incoming_metadata_buffer *buffer, gpr_arena *arena); void grpc_chttp2_incoming_metadata_buffer_destroy( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer); + grpc_chttp2_incoming_metadata_buffer *buffer); void grpc_chttp2_incoming_metadata_buffer_publish( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer, - grpc_metadata_batch *batch); + grpc_chttp2_incoming_metadata_buffer *buffer, grpc_metadata_batch *batch); grpc_error *grpc_chttp2_incoming_metadata_buffer_add( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer, + grpc_chttp2_incoming_metadata_buffer *buffer, grpc_mdelem elem) GRPC_MUST_USE_RESULT; grpc_error *grpc_chttp2_incoming_metadata_buffer_replace_or_add( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer, + grpc_chttp2_incoming_metadata_buffer *buffer, grpc_mdelem elem) GRPC_MUST_USE_RESULT; void grpc_chttp2_incoming_metadata_buffer_set_deadline( grpc_chttp2_incoming_metadata_buffer *buffer, grpc_millis deadline); diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h index 703f3ba348e..1d5413e7b37 100644 --- a/src/core/ext/transport/chttp2/transport/internal.h +++ b/src/core/ext/transport/chttp2/transport/internal.h @@ -327,8 +327,8 @@ struct grpc_chttp2_transport { struct { /* accept stream callback */ - void (*accept_stream)(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_transport *transport, const void *server_data); + void (*accept_stream)(void *user_data, grpc_transport *transport, + const void *server_data); void *accept_stream_user_data; /** connectivity tracking */ @@ -410,9 +410,8 @@ struct grpc_chttp2_transport { /* active parser */ void *parser_data; grpc_chttp2_stream *incoming_stream; - grpc_error *(*parser)(grpc_exec_ctx *exec_ctx, void *parser_user_data, - grpc_chttp2_transport *t, grpc_chttp2_stream *s, - grpc_slice slice, int is_last); + grpc_error *(*parser)(void *parser_user_data, grpc_chttp2_transport *t, + grpc_chttp2_stream *s, grpc_slice slice, int is_last); /* goaway data */ grpc_status_code goaway_error; @@ -633,8 +632,7 @@ struct grpc_chttp2_stream { The actual call chain is documented in the implementation of this function. */ -void grpc_chttp2_initiate_write(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_initiate_write(grpc_chttp2_transport *t, grpc_chttp2_initiate_write_reason reason); typedef struct { @@ -647,14 +645,12 @@ typedef struct { } grpc_chttp2_begin_write_result; grpc_chttp2_begin_write_result grpc_chttp2_begin_write( - grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t); -void grpc_chttp2_end_write(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error); + grpc_chttp2_transport *t); +void grpc_chttp2_end_write(grpc_chttp2_transport *t, grpc_error *error); /** Process one slice of incoming data; return 1 if the connection is still viable after reading, or 0 if the connection should be torn down */ -grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +grpc_error *grpc_chttp2_perform_read(grpc_chttp2_transport *t, grpc_slice slice); bool grpc_chttp2_list_add_writable_stream(grpc_chttp2_transport *t, @@ -759,12 +755,10 @@ typedef struct { // Reads the flow control data and returns and actionable struct that will tell // chttp2 exactly what it needs to do grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_action( - grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_flowctl *tfc, - grpc_chttp2_stream_flowctl *sfc); + grpc_chttp2_transport_flowctl *tfc, grpc_chttp2_stream_flowctl *sfc); // Takes in a flow control action and performs all the needed operations. -void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx, - grpc_chttp2_flowctl_action action, +void grpc_chttp2_act_on_flowctl_action(grpc_chttp2_flowctl_action action, grpc_chttp2_transport *t, grpc_chttp2_stream *s); @@ -772,20 +766,16 @@ void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *grpc_chttp2_parsing_lookup_stream(grpc_chttp2_transport *t, uint32_t id); -grpc_chttp2_stream *grpc_chttp2_parsing_accept_stream(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +grpc_chttp2_stream *grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport *t, uint32_t id); -void grpc_chttp2_add_incoming_goaway(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport *t, uint32_t goaway_error, grpc_slice goaway_text); -void grpc_chttp2_parsing_become_skip_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); +void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport *t); -void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_complete_closure_step(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_closure **pclosure, grpc_error *error, const char *desc); @@ -816,29 +806,26 @@ extern grpc_tracer_flag grpc_flowctl_trace; else \ stmt -void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, +void grpc_chttp2_fake_status(grpc_chttp2_transport *t, grpc_chttp2_stream *stream, grpc_error *error); -void grpc_chttp2_mark_stream_closed(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport *t, grpc_chttp2_stream *s, int close_reads, int close_writes, grpc_error *error); -void grpc_chttp2_start_writing(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); +void grpc_chttp2_start_writing(grpc_chttp2_transport *t); #ifndef NDEBUG #define GRPC_CHTTP2_STREAM_REF(stream, reason) \ grpc_chttp2_stream_ref(stream, reason) -#define GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream, reason) \ - grpc_chttp2_stream_unref(exec_ctx, stream, reason) +#define GRPC_CHTTP2_STREAM_UNREF(stream, reason) \ + grpc_chttp2_stream_unref(stream, reason) void grpc_chttp2_stream_ref(grpc_chttp2_stream *s, const char *reason); -void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s, - const char *reason); +void grpc_chttp2_stream_unref(grpc_chttp2_stream *s, const char *reason); #else #define GRPC_CHTTP2_STREAM_REF(stream, reason) grpc_chttp2_stream_ref(stream) -#define GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream, reason) \ - grpc_chttp2_stream_unref(exec_ctx, stream) +#define GRPC_CHTTP2_STREAM_UNREF(stream, reason) \ + grpc_chttp2_stream_unref(stream) void grpc_chttp2_stream_ref(grpc_chttp2_stream *s); -void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s); +void grpc_chttp2_stream_unref(grpc_chttp2_stream *s); #endif #ifndef NDEBUG @@ -846,64 +833,53 @@ void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s); grpc_chttp2_ref_transport(t, r, __FILE__, __LINE__) #define GRPC_CHTTP2_UNREF_TRANSPORT(cl, t, r) \ grpc_chttp2_unref_transport(cl, t, r, __FILE__, __LINE__) -void grpc_chttp2_unref_transport(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, const char *reason, +void grpc_chttp2_unref_transport(grpc_chttp2_transport *t, const char *reason, const char *file, int line); void grpc_chttp2_ref_transport(grpc_chttp2_transport *t, const char *reason, const char *file, int line); #else #define GRPC_CHTTP2_REF_TRANSPORT(t, r) grpc_chttp2_ref_transport(t) -#define GRPC_CHTTP2_UNREF_TRANSPORT(cl, t, r) grpc_chttp2_unref_transport(cl, t) -void grpc_chttp2_unref_transport(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); +#define GRPC_CHTTP2_UNREF_TRANSPORT(t, r) grpc_chttp2_unref_transport(t) +void grpc_chttp2_unref_transport(grpc_chttp2_transport *t); void grpc_chttp2_ref_transport(grpc_chttp2_transport *t); #endif grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create( - grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s, - uint32_t frame_size, uint32_t flags); + grpc_chttp2_transport *t, grpc_chttp2_stream *s, uint32_t frame_size, + uint32_t flags); grpc_error *grpc_chttp2_incoming_byte_stream_push( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_slice slice, grpc_slice *slice_out); + grpc_chttp2_incoming_byte_stream *bs, grpc_slice slice, + grpc_slice *slice_out); grpc_error *grpc_chttp2_incoming_byte_stream_finished( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_error *error, bool reset_on_error); + grpc_chttp2_incoming_byte_stream *bs, grpc_error *error, + bool reset_on_error); void grpc_chttp2_incoming_byte_stream_notify( - grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, - grpc_error *error); + grpc_chttp2_incoming_byte_stream *bs, grpc_error *error); -void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - uint64_t id); +void grpc_chttp2_ack_ping(grpc_chttp2_transport *t, uint64_t id); /** Add a new ping strike to ping_recv_state.ping_strikes. If ping_recv_state.ping_strikes > ping_policy.max_ping_strikes, it sends GOAWAY with error code ENHANCE_YOUR_CALM and additional debug data resembling "too_many_pings" followed by immediately closing the connection. */ -void grpc_chttp2_add_ping_strike(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); +void grpc_chttp2_add_ping_strike(grpc_chttp2_transport *t); /** add a ref to the stream and add it to the writable list; ref will be dropped in writing.c */ -void grpc_chttp2_mark_stream_writable(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport *t, grpc_chttp2_stream *s); -void grpc_chttp2_cancel_stream(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, grpc_chttp2_stream *s, +void grpc_chttp2_cancel_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *due_to_error); -void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport *t, grpc_chttp2_stream *s); -void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport *t, grpc_chttp2_stream *s); -void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport *t, grpc_chttp2_stream *s); -void grpc_chttp2_fail_pending_writes(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *error); /** Set the default keepalive configurations, must only be called at diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc index 78886b497a7..cbc8d736f4a 100644 --- a/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/src/core/ext/transport/chttp2/transport/parsing.cc @@ -31,33 +31,22 @@ #include "src/core/lib/transport/status_conversion.h" #include "src/core/lib/transport/timeout_encoding.h" -static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static grpc_error *init_frame_parser(grpc_chttp2_transport *t); +static grpc_error *init_header_frame_parser(grpc_chttp2_transport *t, int is_continuation); -static grpc_error *init_data_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_rst_stream_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_settings_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_window_update_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_ping_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_goaway_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t); -static grpc_error *init_skip_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static grpc_error *init_data_frame_parser(grpc_chttp2_transport *t); +static grpc_error *init_rst_stream_parser(grpc_chttp2_transport *t); +static grpc_error *init_settings_frame_parser(grpc_chttp2_transport *t); +static grpc_error *init_window_update_frame_parser(grpc_chttp2_transport *t); +static grpc_error *init_ping_parser(grpc_chttp2_transport *t); +static grpc_error *init_goaway_parser(grpc_chttp2_transport *t); +static grpc_error *init_skip_frame_parser(grpc_chttp2_transport *t, int is_header); -static grpc_error *parse_frame_slice(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, grpc_slice slice, +static grpc_error *parse_frame_slice(grpc_chttp2_transport *t, grpc_slice slice, int is_last); -grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +grpc_error *grpc_chttp2_perform_read(grpc_chttp2_transport *t, grpc_slice slice) { uint8_t *beg = GRPC_SLICE_START_PTR(slice); uint8_t *end = GRPC_SLICE_END_PTR(slice); @@ -182,12 +171,12 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, GPR_ASSERT(cur < end); t->incoming_stream_id |= ((uint32_t)*cur); t->deframe_state = GRPC_DTS_FRAME; - err = init_frame_parser(exec_ctx, t); + err = init_frame_parser(t); if (err != GRPC_ERROR_NONE) { return err; } if (t->incoming_frame_size == 0) { - err = parse_frame_slice(exec_ctx, t, grpc_empty_slice(), 1); + err = parse_frame_slice(t, grpc_empty_slice(), 1); if (err != GRPC_ERROR_NONE) { return err; } @@ -217,8 +206,8 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, GPR_ASSERT(cur < end); if ((uint32_t)(end - cur) == t->incoming_frame_size) { err = parse_frame_slice( - exec_ctx, t, grpc_slice_sub_no_ref(slice, (size_t)(cur - beg), - (size_t)(end - beg)), + t, grpc_slice_sub_no_ref(slice, (size_t)(cur - beg), + (size_t)(end - beg)), 1); if (err != GRPC_ERROR_NONE) { return err; @@ -229,9 +218,8 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, } else if ((uint32_t)(end - cur) > t->incoming_frame_size) { size_t cur_offset = (size_t)(cur - beg); err = parse_frame_slice( - exec_ctx, t, - grpc_slice_sub_no_ref(slice, cur_offset, - cur_offset + t->incoming_frame_size), + t, grpc_slice_sub_no_ref(slice, cur_offset, + cur_offset + t->incoming_frame_size), 1); if (err != GRPC_ERROR_NONE) { return err; @@ -241,8 +229,8 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, goto dts_fh_0; /* loop */ } else { err = parse_frame_slice( - exec_ctx, t, grpc_slice_sub_no_ref(slice, (size_t)(cur - beg), - (size_t)(end - beg)), + t, grpc_slice_sub_no_ref(slice, (size_t)(cur - beg), + (size_t)(end - beg)), 0); if (err != GRPC_ERROR_NONE) { return err; @@ -256,8 +244,7 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx, GPR_UNREACHABLE_CODE(return 0); } -static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_frame_parser(grpc_chttp2_transport *t) { if (t->is_first_frame && t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) { char *msg; @@ -289,46 +276,43 @@ static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx, gpr_free(msg); return err; } - return init_header_frame_parser(exec_ctx, t, 1); + return init_header_frame_parser(t, 1); } switch (t->incoming_frame_type) { case GRPC_CHTTP2_FRAME_DATA: - return init_data_frame_parser(exec_ctx, t); + return init_data_frame_parser(t); case GRPC_CHTTP2_FRAME_HEADER: - return init_header_frame_parser(exec_ctx, t, 0); + return init_header_frame_parser(t, 0); case GRPC_CHTTP2_FRAME_CONTINUATION: return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Unexpected CONTINUATION frame"); case GRPC_CHTTP2_FRAME_RST_STREAM: - return init_rst_stream_parser(exec_ctx, t); + return init_rst_stream_parser(t); case GRPC_CHTTP2_FRAME_SETTINGS: - return init_settings_frame_parser(exec_ctx, t); + return init_settings_frame_parser(t); case GRPC_CHTTP2_FRAME_WINDOW_UPDATE: - return init_window_update_frame_parser(exec_ctx, t); + return init_window_update_frame_parser(t); case GRPC_CHTTP2_FRAME_PING: - return init_ping_parser(exec_ctx, t); + return init_ping_parser(t); case GRPC_CHTTP2_FRAME_GOAWAY: - return init_goaway_parser(exec_ctx, t); + return init_goaway_parser(t); default: if (GRPC_TRACER_ON(grpc_http_trace)) { gpr_log(GPR_ERROR, "Unknown frame type %02x", t->incoming_frame_type); } - return init_skip_frame_parser(exec_ctx, t, 0); + return init_skip_frame_parser(t, 0); } } -static grpc_error *skip_parser(grpc_exec_ctx *exec_ctx, void *parser, - grpc_chttp2_transport *t, grpc_chttp2_stream *s, - grpc_slice slice, int is_last) { +static grpc_error *skip_parser(void *parser, grpc_chttp2_transport *t, + grpc_chttp2_stream *s, grpc_slice slice, + int is_last) { return GRPC_ERROR_NONE; } -static void skip_header(grpc_exec_ctx *exec_ctx, void *tp, grpc_mdelem md) { - GRPC_MDELEM_UNREF(exec_ctx, md); -} +static void skip_header(void *tp, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); } -static grpc_error *init_skip_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static grpc_error *init_skip_frame_parser(grpc_chttp2_transport *t, int is_header) { if (is_header) { uint8_t is_eoh = t->expect_continuation_stream_id != 0; @@ -344,14 +328,11 @@ static grpc_error *init_skip_frame_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -void grpc_chttp2_parsing_become_skip_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { - init_skip_frame_parser(exec_ctx, t, - t->parser == grpc_chttp2_header_parser_parse); +void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport *t) { + init_skip_frame_parser(t, t->parser == grpc_chttp2_header_parser_parse); } -static grpc_error *init_data_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_data_frame_parser(grpc_chttp2_transport *t) { grpc_chttp2_stream *s = grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id); grpc_error *err = GRPC_ERROR_NONE; @@ -359,20 +340,19 @@ static grpc_error *init_data_frame_parser(grpc_exec_ctx *exec_ctx, s == NULL ? NULL : &s->flow_control, t->incoming_frame_size); grpc_chttp2_act_on_flowctl_action( - exec_ctx, - grpc_chttp2_flowctl_get_action(exec_ctx, &t->flow_control, + grpc_chttp2_flowctl_get_action(&t->flow_control, s == NULL ? NULL : &s->flow_control), t, s); if (err != GRPC_ERROR_NONE) { goto error_handler; } if (s == NULL) { - return init_skip_frame_parser(exec_ctx, t, 0); + return init_skip_frame_parser(t, 0); } s->received_bytes += t->incoming_frame_size; s->stats.incoming.framing_bytes += 9; if (err == GRPC_ERROR_NONE && s->read_closed) { - return init_skip_frame_parser(exec_ctx, t, 0); + return init_skip_frame_parser(t, 0); } if (err == GRPC_ERROR_NONE) { err = grpc_chttp2_data_parser_begin_frame( @@ -391,13 +371,13 @@ error_handler: } else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, NULL)) { /* handle stream errors by closing the stream */ if (s != NULL) { - grpc_chttp2_mark_stream_closed(exec_ctx, t, s, true, false, err); + grpc_chttp2_mark_stream_closed(t, s, true, false, err); } grpc_slice_buffer_add( &t->qbuf, grpc_chttp2_rst_stream_create(t->incoming_stream_id, GRPC_HTTP2_PROTOCOL_ERROR, &s->stats.outgoing)); - return init_skip_frame_parser(exec_ctx, t, 0); + return init_skip_frame_parser(t, 0); } else { return err; } @@ -405,8 +385,7 @@ error_handler: static void free_timeout(void *p) { gpr_free(p); } -static void on_initial_header(grpc_exec_ctx *exec_ctx, void *tp, - grpc_mdelem md) { +static void on_initial_header(void *tp, grpc_mdelem md) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; grpc_chttp2_stream *s = t->incoming_stream; @@ -450,9 +429,9 @@ static void on_initial_header(grpc_exec_ctx *exec_ctx, void *tp, } if (timeout != GRPC_MILLIS_INF_FUTURE) { grpc_chttp2_incoming_metadata_buffer_set_deadline( - &s->metadata_buffer[0], grpc_exec_ctx_now(exec_ctx) + timeout); + &s->metadata_buffer[0], grpc_exec_ctx_now() + timeout); } - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } else { const size_t new_size = s->metadata_buffer[0].size + GRPC_MDELEM_LENGTH(md); const size_t metadata_size_limit = @@ -464,22 +443,22 @@ static void on_initial_header(grpc_exec_ctx *exec_ctx, void *tp, " vs. %" PRIuPTR ")", new_size, metadata_size_limit); grpc_chttp2_cancel_stream( - exec_ctx, t, s, + t, s, grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "received initial metadata size exceeds limit"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED)); - grpc_chttp2_parsing_become_skip_parser(exec_ctx, t); + grpc_chttp2_parsing_become_skip_parser(t); s->seen_error = true; - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } else { - grpc_error *error = grpc_chttp2_incoming_metadata_buffer_add( - exec_ctx, &s->metadata_buffer[0], md); + grpc_error *error = + grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[0], md); if (error != GRPC_ERROR_NONE) { - grpc_chttp2_cancel_stream(exec_ctx, t, s, error); - grpc_chttp2_parsing_become_skip_parser(exec_ctx, t); + grpc_chttp2_cancel_stream(t, s, error); + grpc_chttp2_parsing_become_skip_parser(t); s->seen_error = true; - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } } } @@ -487,8 +466,7 @@ static void on_initial_header(grpc_exec_ctx *exec_ctx, void *tp, GPR_TIMER_END("on_initial_header", 0); } -static void on_trailing_header(grpc_exec_ctx *exec_ctx, void *tp, - grpc_mdelem md) { +static void on_trailing_header(void *tp, grpc_mdelem md) { grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp; grpc_chttp2_stream *s = t->incoming_stream; @@ -522,30 +500,28 @@ static void on_trailing_header(grpc_exec_ctx *exec_ctx, void *tp, " vs. %" PRIuPTR ")", new_size, metadata_size_limit); grpc_chttp2_cancel_stream( - exec_ctx, t, s, - grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "received trailing metadata size exceeds limit"), - GRPC_ERROR_INT_GRPC_STATUS, - GRPC_STATUS_RESOURCE_EXHAUSTED)); - grpc_chttp2_parsing_become_skip_parser(exec_ctx, t); + t, s, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "received trailing metadata size exceeds limit"), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED)); + grpc_chttp2_parsing_become_skip_parser(t); s->seen_error = true; - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } else { - grpc_error *error = grpc_chttp2_incoming_metadata_buffer_add( - exec_ctx, &s->metadata_buffer[1], md); + grpc_error *error = + grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[1], md); if (error != GRPC_ERROR_NONE) { - grpc_chttp2_cancel_stream(exec_ctx, t, s, error); - grpc_chttp2_parsing_become_skip_parser(exec_ctx, t); + grpc_chttp2_cancel_stream(t, s, error); + grpc_chttp2_parsing_become_skip_parser(t); s->seen_error = true; - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } } GPR_TIMER_END("on_trailing_header", 0); } -static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, +static grpc_error *init_header_frame_parser(grpc_chttp2_transport *t, int is_continuation) { uint8_t is_eoh = (t->incoming_frame_flags & GRPC_CHTTP2_DATA_FLAG_END_HEADERS) != 0; @@ -575,7 +551,7 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, GRPC_CHTTP2_IF_TRACING( gpr_log(GPR_ERROR, "grpc_chttp2_stream disbanded before CONTINUATION received")); - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } if (t->is_client) { if ((t->incoming_stream_id & 1) && @@ -585,7 +561,7 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, GRPC_CHTTP2_IF_TRACING(gpr_log( GPR_ERROR, "ignoring new grpc_chttp2_stream creation on client")); } - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } else if (t->last_new_stream_id >= t->incoming_stream_id) { GRPC_CHTTP2_IF_TRACING(gpr_log( GPR_ERROR, @@ -593,13 +569,13 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, "last grpc_chttp2_stream " "id=%d, new grpc_chttp2_stream id=%d", t->last_new_stream_id, t->incoming_stream_id)); - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } else if ((t->incoming_stream_id & 1) == 0) { GRPC_CHTTP2_IF_TRACING(gpr_log( GPR_ERROR, "ignoring grpc_chttp2_stream with non-client generated index %d", t->incoming_stream_id)); - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } else if (grpc_chttp2_stream_map_size(&t->stream_map) >= t->settings[GRPC_ACKED_SETTINGS] [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS]) { @@ -607,11 +583,11 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, } t->last_new_stream_id = t->incoming_stream_id; s = t->incoming_stream = - grpc_chttp2_parsing_accept_stream(exec_ctx, t, t->incoming_stream_id); + grpc_chttp2_parsing_accept_stream(t, t->incoming_stream_id); if (s == NULL) { GRPC_CHTTP2_IF_TRACING( gpr_log(GPR_ERROR, "grpc_chttp2_stream not accepted")); - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } } else { t->incoming_stream = s; @@ -622,7 +598,7 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, GRPC_CHTTP2_IF_TRACING(gpr_log( GPR_ERROR, "skipping already closed grpc_chttp2_stream header")); t->incoming_stream = NULL; - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } t->parser = grpc_chttp2_header_parser_parse; t->parser_data = &t->hpack_parser; @@ -647,7 +623,7 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, break; case 2: gpr_log(GPR_ERROR, "too many header frames received"); - return init_skip_frame_parser(exec_ctx, t, 1); + return init_skip_frame_parser(t, 1); } t->hpack_parser.on_header_user_data = t; t->hpack_parser.is_boundary = is_eoh; @@ -659,8 +635,7 @@ static grpc_error *init_header_frame_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *init_window_update_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_window_update_frame_parser(grpc_chttp2_transport *t) { grpc_error *err = grpc_chttp2_window_update_parser_begin_frame( &t->simple.window_update, t->incoming_frame_size, t->incoming_frame_flags); @@ -669,7 +644,7 @@ static grpc_error *init_window_update_frame_parser(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s = t->incoming_stream = grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id); if (s == NULL) { - return init_skip_frame_parser(exec_ctx, t, 0); + return init_skip_frame_parser(t, 0); } s->stats.incoming.framing_bytes += 9; } @@ -678,8 +653,7 @@ static grpc_error *init_window_update_frame_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *init_ping_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_ping_parser(grpc_chttp2_transport *t) { grpc_error *err = grpc_chttp2_ping_parser_begin_frame( &t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; @@ -688,15 +662,14 @@ static grpc_error *init_ping_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *init_rst_stream_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_rst_stream_parser(grpc_chttp2_transport *t) { grpc_error *err = grpc_chttp2_rst_stream_parser_begin_frame( &t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; grpc_chttp2_stream *s = t->incoming_stream = grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id); if (!t->incoming_stream) { - return init_skip_frame_parser(exec_ctx, t, 0); + return init_skip_frame_parser(t, 0); } s->stats.incoming.framing_bytes += 9; t->parser = grpc_chttp2_rst_stream_parser_parse; @@ -704,8 +677,7 @@ static grpc_error *init_rst_stream_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *init_goaway_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_goaway_parser(grpc_chttp2_transport *t) { grpc_error *err = grpc_chttp2_goaway_parser_begin_frame( &t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags); if (err != GRPC_ERROR_NONE) return err; @@ -714,8 +686,7 @@ static grpc_error *init_goaway_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *init_settings_frame_parser(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static grpc_error *init_settings_frame_parser(grpc_chttp2_transport *t) { if (t->incoming_stream_id != 0) { return GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Settings frame received for grpc_chttp2_stream"); @@ -731,7 +702,7 @@ static grpc_error *init_settings_frame_parser(grpc_exec_ctx *exec_ctx, memcpy(t->settings[GRPC_ACKED_SETTINGS], t->settings[GRPC_SENT_SETTINGS], GRPC_CHTTP2_NUM_SETTINGS * sizeof(uint32_t)); grpc_chttp2_hptbl_set_max_bytes( - exec_ctx, &t->hpack_parser.table, + &t->hpack_parser.table, t->settings[GRPC_ACKED_SETTINGS] [GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]); t->sent_local_settings = 0; @@ -741,11 +712,10 @@ static grpc_error *init_settings_frame_parser(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *parse_frame_slice(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t, grpc_slice slice, +static grpc_error *parse_frame_slice(grpc_chttp2_transport *t, grpc_slice slice, int is_last) { grpc_chttp2_stream *s = t->incoming_stream; - grpc_error *err = t->parser(exec_ctx, t->parser_data, t, s, slice, is_last); + grpc_error *err = t->parser(t->parser_data, t, s, slice, is_last); if (err == GRPC_ERROR_NONE) { return err; } else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, NULL)) { @@ -753,7 +723,7 @@ static grpc_error *parse_frame_slice(grpc_exec_ctx *exec_ctx, const char *msg = grpc_error_string(err); gpr_log(GPR_ERROR, "%s", msg); } - grpc_chttp2_parsing_become_skip_parser(exec_ctx, t); + grpc_chttp2_parsing_become_skip_parser(t); if (s) { s->forced_close_error = err; grpc_slice_buffer_add( diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index c6fecf2ee90..10e080dd352 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -33,17 +33,15 @@ static void add_to_write_list(grpc_chttp2_write_cb **list, *list = cb; } -static void finish_write_cb(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, grpc_chttp2_write_cb *cb, - grpc_error *error) { - grpc_chttp2_complete_closure_step(exec_ctx, t, s, &cb->closure, error, +static void finish_write_cb(grpc_chttp2_transport *t, grpc_chttp2_stream *s, + grpc_chttp2_write_cb *cb, grpc_error *error) { + grpc_chttp2_complete_closure_step(t, s, &cb->closure, error, "finish_write_cb"); cb->next = t->write_cb_pool; t->write_cb_pool = cb; } -static void maybe_initiate_ping(grpc_exec_ctx *exec_ctx, - grpc_chttp2_transport *t) { +static void maybe_initiate_ping(grpc_chttp2_transport *t) { grpc_chttp2_ping_queue *pq = &t->ping_queue; if (grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_NEXT])) { /* no ping needed: wait */ @@ -70,7 +68,7 @@ static void maybe_initiate_ping(grpc_exec_ctx *exec_ctx, } return; } - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); grpc_millis next_allowed_ping = t->ping_state.last_ping_sent_time + t->ping_policy.min_sent_ping_interval_without_data; @@ -89,19 +87,19 @@ static void maybe_initiate_ping(grpc_exec_ctx *exec_ctx, } if (!t->ping_state.is_delayed_ping_timer_set) { t->ping_state.is_delayed_ping_timer_set = true; - grpc_timer_init(exec_ctx, &t->ping_state.delayed_ping_timer, - next_allowed_ping, &t->retry_initiate_ping_locked); + grpc_timer_init(&t->ping_state.delayed_ping_timer, next_allowed_ping, + &t->retry_initiate_ping_locked); } return; } pq->inflight_id = t->ping_ctr; t->ping_ctr++; - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &pq->lists[GRPC_CHTTP2_PCL_INITIATE]); + GRPC_CLOSURE_LIST_SCHED(&pq->lists[GRPC_CHTTP2_PCL_INITIATE]); grpc_closure_list_move(&pq->lists[GRPC_CHTTP2_PCL_NEXT], &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]); grpc_slice_buffer_add(&t->outbuf, grpc_chttp2_ping_create(false, pq->inflight_id)); - GRPC_STATS_INC_HTTP2_PINGS_SENT(exec_ctx); + GRPC_STATS_INC_HTTP2_PINGS_SENT(); t->ping_state.last_ping_sent_time = now; if (GRPC_TRACER_ON(grpc_http_trace) || GRPC_TRACER_ON(grpc_bdp_estimator_trace)) { @@ -114,10 +112,9 @@ static void maybe_initiate_ping(grpc_exec_ctx *exec_ctx, (t->ping_state.pings_before_data_required != 0); } -static bool update_list(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_chttp2_stream *s, int64_t send_bytes, - grpc_chttp2_write_cb **list, int64_t *ctr, - grpc_error *error) { +static bool update_list(grpc_chttp2_transport *t, grpc_chttp2_stream *s, + int64_t send_bytes, grpc_chttp2_write_cb **list, + int64_t *ctr, grpc_error *error) { bool sched_any = false; grpc_chttp2_write_cb *cb = *list; *list = NULL; @@ -126,7 +123,7 @@ static bool update_list(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_write_cb *next = cb->next; if (cb->call_at_byte <= *ctr) { sched_any = true; - finish_write_cb(exec_ctx, t, s, cb, GRPC_ERROR_REF(error)); + finish_write_cb(t, s, cb, GRPC_ERROR_REF(error)); } else { add_to_write_list(list, cb); } @@ -179,22 +176,22 @@ class StreamWriteContext; class WriteContext { public: - WriteContext(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) : t_(t) { - GRPC_STATS_INC_HTTP2_WRITES_BEGUN(exec_ctx); + WriteContext(grpc_chttp2_transport *t) : t_(t) { + GRPC_STATS_INC_HTTP2_WRITES_BEGUN(); GPR_TIMER_BEGIN("grpc_chttp2_begin_write", 0); } // TODO(ctiller): make this the destructor - void FlushStats(grpc_exec_ctx *exec_ctx) { + void FlushStats() { GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE( - exec_ctx, initial_metadata_writes_); - GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(exec_ctx, message_writes_); + initial_metadata_writes_); + GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(message_writes_); GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE( - exec_ctx, trailing_metadata_writes_); - GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(exec_ctx, flow_control_writes_); + trailing_metadata_writes_); + GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(flow_control_writes_); } - void FlushSettings(grpc_exec_ctx *exec_ctx) { + void FlushSettings() { if (t_->dirtied_local_settings && !t_->sent_local_settings) { grpc_slice_buffer_add( &t_->outbuf, grpc_chttp2_settings_create( @@ -204,17 +201,17 @@ class WriteContext { t_->force_send_settings = false; t_->dirtied_local_settings = false; t_->sent_local_settings = true; - GRPC_STATS_INC_HTTP2_SETTINGS_WRITES(exec_ctx); + GRPC_STATS_INC_HTTP2_SETTINGS_WRITES(); } } - void FlushQueuedBuffers(grpc_exec_ctx *exec_ctx) { + void FlushQueuedBuffers() { /* simple writes are queued to qbuf, and flushed here */ grpc_slice_buffer_move_into(&t_->qbuf, &t_->outbuf); GPR_ASSERT(t_->qbuf.count == 0); } - void FlushWindowUpdates(grpc_exec_ctx *exec_ctx) { + void FlushWindowUpdates() { uint32_t transport_announce = grpc_chttp2_flowctl_maybe_send_transport_update(&t_->flow_control, t_->outbuf.count > 0); @@ -235,7 +232,7 @@ class WriteContext { t_->ping_ack_count = 0; } - void EnactHpackSettings(grpc_exec_ctx *exec_ctx) { + void EnactHpackSettings() { grpc_chttp2_hpack_compressor_set_max_table_size( &t_->hpack_compressor, t_->settings[GRPC_PEER_SETTINGS] @@ -375,8 +372,8 @@ class DataSendContext { bool is_last_frame() const { return is_last_frame_; } - void CallCallbacks(grpc_exec_ctx *exec_ctx) { - if (update_list(exec_ctx, t_, s_, + void CallCallbacks() { + if (update_list(t_, s_, (int64_t)(s_->sending_bytes - sending_bytes_before_), &s_->on_flow_controlled_cbs, &s_->flow_controlled_bytes_flowed, GRPC_ERROR_NONE)) { @@ -404,7 +401,7 @@ class StreamWriteContext { s->flow_control.announced_window_delta))); } - void FlushInitialMetadata(grpc_exec_ctx *exec_ctx) { + void FlushInitialMetadata() { /* send initial metadata if it's available */ if (s_->sent_initial_metadata) return; if (s_->send_initial_metadata == nullptr) return; @@ -431,7 +428,7 @@ class StreamWriteContext { [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE], // max_frame_size &s_->stats.outgoing // stats }; - grpc_chttp2_encode_header(exec_ctx, &t_->hpack_compressor, NULL, 0, + grpc_chttp2_encode_header(&t_->hpack_compressor, NULL, 0, s_->send_initial_metadata, &hopt, &t_->outbuf); write_context_->ResetPingRecvClock(); write_context_->IncInitialMetadataWrites(); @@ -441,11 +438,11 @@ class StreamWriteContext { s_->sent_initial_metadata = true; write_context_->NoteScheduledResults(); grpc_chttp2_complete_closure_step( - exec_ctx, t_, s_, &s_->send_initial_metadata_finished, GRPC_ERROR_NONE, + t_, s_, &s_->send_initial_metadata_finished, GRPC_ERROR_NONE, "send_initial_metadata_finished"); } - void FlushWindowUpdates(grpc_exec_ctx *exec_ctx) { + void FlushWindowUpdates() { /* send any window updates */ uint32_t stream_announce = grpc_chttp2_flowctl_maybe_send_stream_update( &t_->flow_control, &s_->flow_control); @@ -458,7 +455,7 @@ class StreamWriteContext { write_context_->IncWindowUpdateWrites(); } - void FlushData(grpc_exec_ctx *exec_ctx) { + void FlushData() { if (!s_->sent_initial_metadata) return; if (s_->flow_controlled_buffer.length == 0 && @@ -490,9 +487,9 @@ class StreamWriteContext { } write_context_->ResetPingRecvClock(); if (data_send_context.is_last_frame()) { - SentLastFrame(exec_ctx); + SentLastFrame(); } - data_send_context.CallCallbacks(exec_ctx); + data_send_context.CallCallbacks(); stream_became_writable_ = true; if (s_->flow_controlled_buffer.length > 0 || s_->compressed_data_buffer.length > 0) { @@ -502,7 +499,7 @@ class StreamWriteContext { write_context_->IncMessageWrites(); } - void FlushTrailingMetadata(grpc_exec_ctx *exec_ctx) { + void FlushTrailingMetadata() { if (!s_->sent_initial_metadata) return; if (s_->send_trailing_metadata == NULL) return; @@ -523,18 +520,18 @@ class StreamWriteContext { t_->settings[GRPC_PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE], &s_->stats.outgoing}; - grpc_chttp2_encode_header(exec_ctx, &t_->hpack_compressor, + grpc_chttp2_encode_header(&t_->hpack_compressor, extra_headers_for_trailing_metadata_, num_extra_headers_for_trailing_metadata_, s_->send_trailing_metadata, &hopt, &t_->outbuf); } write_context_->IncTrailingMetadataWrites(); write_context_->ResetPingRecvClock(); - SentLastFrame(exec_ctx); + SentLastFrame(); write_context_->NoteScheduledResults(); grpc_chttp2_complete_closure_step( - exec_ctx, t_, s_, &s_->send_trailing_metadata_finished, GRPC_ERROR_NONE, + t_, s_, &s_->send_trailing_metadata_finished, GRPC_ERROR_NONE, "send_trailing_metadata_finished"); } @@ -558,7 +555,7 @@ class StreamWriteContext { } } - void SentLastFrame(grpc_exec_ctx *exec_ctx) { + void SentLastFrame() { s_->send_trailing_metadata = NULL; s_->sent_trailing_metadata = true; @@ -567,7 +564,7 @@ class StreamWriteContext { &t_->outbuf, grpc_chttp2_rst_stream_create( s_->id, GRPC_HTTP2_NO_ERROR, &s_->stats.outgoing)); } - grpc_chttp2_mark_stream_closed(exec_ctx, t_, s_, !t_->is_client, true, + grpc_chttp2_mark_stream_closed(t_, s_, !t_->is_client, true, GRPC_ERROR_NONE); } @@ -581,12 +578,12 @@ class StreamWriteContext { } // namespace grpc_chttp2_begin_write_result grpc_chttp2_begin_write( - grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) { - WriteContext ctx(exec_ctx, t); - ctx.FlushSettings(exec_ctx); + grpc_chttp2_transport *t) { + WriteContext ctx(t); + ctx.FlushSettings(); ctx.FlushPingAcks(); - ctx.FlushQueuedBuffers(exec_ctx); - ctx.EnactHpackSettings(exec_ctx); + ctx.FlushQueuedBuffers(); + ctx.EnactHpackSettings(); if (t->flow_control.remote_window > 0) { ctx.UpdateStreamsNoLongerStalled(); @@ -596,47 +593,45 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write( (according to available window sizes) and add to the output buffer */ while (grpc_chttp2_stream *s = ctx.NextStream()) { StreamWriteContext stream_ctx(&ctx, s); - stream_ctx.FlushInitialMetadata(exec_ctx); - stream_ctx.FlushWindowUpdates(exec_ctx); - stream_ctx.FlushData(exec_ctx); - stream_ctx.FlushTrailingMetadata(exec_ctx); + stream_ctx.FlushInitialMetadata(); + stream_ctx.FlushWindowUpdates(); + stream_ctx.FlushData(); + stream_ctx.FlushTrailingMetadata(); if (stream_ctx.stream_became_writable()) { if (!grpc_chttp2_list_add_writing_stream(t, s)) { /* already in writing list: drop ref */ - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2_writing:already_writing"); + GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:already_writing"); } else { /* ref will be dropped at end of write */ } } else { - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2_writing:no_write"); + GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:no_write"); } } - ctx.FlushWindowUpdates(exec_ctx); + ctx.FlushWindowUpdates(); - maybe_initiate_ping(exec_ctx, t); + maybe_initiate_ping(t); GPR_TIMER_END("grpc_chttp2_begin_write", 0); return ctx.Result(); } -void grpc_chttp2_end_write(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, - grpc_error *error) { +void grpc_chttp2_end_write(grpc_chttp2_transport *t, grpc_error *error) { GPR_TIMER_BEGIN("grpc_chttp2_end_write", 0); grpc_chttp2_stream *s; while (grpc_chttp2_list_pop_writing_stream(t, &s)) { if (s->sending_bytes != 0) { - update_list(exec_ctx, t, s, (int64_t)s->sending_bytes, - &s->on_write_finished_cbs, &s->flow_controlled_bytes_written, - GRPC_ERROR_REF(error)); + update_list(t, s, (int64_t)s->sending_bytes, &s->on_write_finished_cbs, + &s->flow_controlled_bytes_written, GRPC_ERROR_REF(error)); s->sending_bytes = 0; } - GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2_writing:end"); + GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:end"); } - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &t->outbuf); + grpc_slice_buffer_reset_and_unref_internal(&t->outbuf); GRPC_ERROR_UNREF(error); GPR_TIMER_END("grpc_chttp2_end_write", 0); } diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc index b280487ca3e..59d91a3318e 100644 --- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc +++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc @@ -49,7 +49,6 @@ GRPCAPI grpc_channel *grpc_cronet_secure_channel_create( grpc_transport *ct = grpc_create_cronet_transport(engine, target, args, reserved); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - return grpc_channel_create(&exec_ctx, target, args, - GRPC_CLIENT_DIRECT_CHANNEL, ct); + ExecCtx _local_exec_ctx; + return grpc_channel_create(target, args, GRPC_CLIENT_DIRECT_CHANNEL, ct); } diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc index ff1367fb285..fa7c9db7103 100644 --- a/src/core/ext/transport/cronet/transport/cronet_transport.cc +++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -197,27 +197,23 @@ typedef struct stream_obj stream_obj; #ifndef NDEBUG #define GRPC_CRONET_STREAM_REF(stream, reason) \ grpc_cronet_stream_ref((stream), (reason)) -#define GRPC_CRONET_STREAM_UNREF(exec_ctx, stream, reason) \ - grpc_cronet_stream_unref((exec_ctx), (stream), (reason)) +#define GRPC_CRONET_STREAM_UNREF(stream, reason) \ + grpc_cronet_stream_unref((stream), (reason)) void grpc_cronet_stream_ref(stream_obj *s, const char *reason) { grpc_stream_ref(s->refcount, reason); } -void grpc_cronet_stream_unref(grpc_exec_ctx *exec_ctx, stream_obj *s, - const char *reason) { - grpc_stream_unref(exec_ctx, s->refcount, reason); +void grpc_cronet_stream_unref(stream_obj *s, const char *reason) { + grpc_stream_unref(s->refcount, reason); } #else #define GRPC_CRONET_STREAM_REF(stream, reason) grpc_cronet_stream_ref((stream)) -#define GRPC_CRONET_STREAM_UNREF(exec_ctx, stream, reason) \ - grpc_cronet_stream_unref((exec_ctx), (stream)) +#define GRPC_CRONET_STREAM_UNREF(stream, reason) \ + grpc_cronet_stream_unref((stream)) void grpc_cronet_stream_ref(stream_obj *s) { grpc_stream_ref(s->refcount); } -void grpc_cronet_stream_unref(grpc_exec_ctx *exec_ctx, stream_obj *s) { - grpc_stream_unref(exec_ctx, s->refcount); -} +void grpc_cronet_stream_unref(stream_obj *s) { grpc_stream_unref(s->refcount); } #endif -static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, - struct op_and_state *oas); +static enum e_op_result execute_stream_op(struct op_and_state *oas); /* Utility function to translate enum into string for printing @@ -373,12 +369,12 @@ static void remove_from_storage(struct stream_obj *s, This can get executed from the Cronet network thread via cronet callback or on the application supplied thread via the perform_stream_op function. */ -static void execute_from_storage(grpc_exec_ctx *exec_ctx, stream_obj *s) { +static void execute_from_storage(stream_obj *s) { gpr_mu_lock(&s->mu); for (struct op_and_state *curr = s->storage.head; curr != NULL;) { CRONET_LOG(GPR_DEBUG, "calling op at %p. done = %d", curr, curr->done); GPR_ASSERT(curr->done == 0); - enum e_op_result result = execute_stream_op(exec_ctx, curr); + enum e_op_result result = execute_stream_op(curr); CRONET_LOG(GPR_DEBUG, "execute_stream_op[%p] returns %s", curr, op_result_string(result)); /* if this op is done, then remove it and free memory */ @@ -402,7 +398,7 @@ static void execute_from_storage(grpc_exec_ctx *exec_ctx, stream_obj *s) { */ static void on_failed(bidirectional_stream *stream, int net_error) { CRONET_LOG(GPR_DEBUG, "on_failed(%p, %d)", stream, net_error); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; stream_obj *s = (stream_obj *)stream->annotation; gpr_mu_lock(&s->mu); @@ -419,9 +415,9 @@ static void on_failed(bidirectional_stream *stream, int net_error) { } null_and_maybe_free_read_buffer(s); gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); - GRPC_CRONET_STREAM_UNREF(&exec_ctx, s, "cronet transport"); - grpc_exec_ctx_finish(&exec_ctx); + execute_from_storage(s); + GRPC_CRONET_STREAM_UNREF(s, "cronet transport"); + grpc_exec_ctx_finish(); } /* @@ -429,7 +425,7 @@ static void on_failed(bidirectional_stream *stream, int net_error) { */ static void on_canceled(bidirectional_stream *stream) { CRONET_LOG(GPR_DEBUG, "on_canceled(%p)", stream); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; stream_obj *s = (stream_obj *)stream->annotation; gpr_mu_lock(&s->mu); @@ -446,9 +442,9 @@ static void on_canceled(bidirectional_stream *stream) { } null_and_maybe_free_read_buffer(s); gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); - GRPC_CRONET_STREAM_UNREF(&exec_ctx, s, "cronet transport"); - grpc_exec_ctx_finish(&exec_ctx); + execute_from_storage(s); + GRPC_CRONET_STREAM_UNREF(s, "cronet transport"); + grpc_exec_ctx_finish(); } /* @@ -456,7 +452,7 @@ static void on_canceled(bidirectional_stream *stream) { */ static void on_succeeded(bidirectional_stream *stream) { CRONET_LOG(GPR_DEBUG, "on_succeeded(%p)", stream); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; stream_obj *s = (stream_obj *)stream->annotation; gpr_mu_lock(&s->mu); @@ -465,9 +461,9 @@ static void on_succeeded(bidirectional_stream *stream) { s->cbs = NULL; null_and_maybe_free_read_buffer(s); gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); - GRPC_CRONET_STREAM_UNREF(&exec_ctx, s, "cronet transport"); - grpc_exec_ctx_finish(&exec_ctx); + execute_from_storage(s); + GRPC_CRONET_STREAM_UNREF(s, "cronet transport"); + grpc_exec_ctx_finish(); } /* @@ -475,7 +471,7 @@ static void on_succeeded(bidirectional_stream *stream) { */ static void on_stream_ready(bidirectional_stream *stream) { CRONET_LOG(GPR_DEBUG, "W: on_stream_ready(%p)", stream); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; stream_obj *s = (stream_obj *)stream->annotation; grpc_cronet_transport *t = (grpc_cronet_transport *)s->curr_ct; gpr_mu_lock(&s->mu); @@ -495,8 +491,8 @@ static void on_stream_ready(bidirectional_stream *stream) { } } gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + execute_from_storage(s); + grpc_exec_ctx_finish(); } /* @@ -506,7 +502,7 @@ static void on_response_headers_received( bidirectional_stream *stream, const bidirectional_stream_header_array *headers, const char *negotiated_protocol) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; CRONET_LOG(GPR_DEBUG, "R: on_response_headers_received(%p, %p, %s)", stream, headers, negotiated_protocol); stream_obj *s = (stream_obj *)stream->annotation; @@ -526,15 +522,14 @@ static void on_response_headers_received( grpc_chttp2_incoming_metadata_buffer_init(&s->state.rs.initial_metadata, s->arena); for (size_t i = 0; i < headers->count; i++) { - GRPC_LOG_IF_ERROR( - "on_response_headers_received", - grpc_chttp2_incoming_metadata_buffer_add( - &exec_ctx, &s->state.rs.initial_metadata, - grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string( - headers->headers[i].key)), - grpc_slice_intern(grpc_slice_from_static_string( - headers->headers[i].value))))); + GRPC_LOG_IF_ERROR("on_response_headers_received", + grpc_chttp2_incoming_metadata_buffer_add( + &s->state.rs.initial_metadata, + grpc_mdelem_from_slices( + grpc_slice_intern(grpc_slice_from_static_string( + headers->headers[i].key)), + grpc_slice_intern(grpc_slice_from_static_string( + headers->headers[i].value))))); } s->state.state_callback_received[OP_RECV_INITIAL_METADATA] = true; if (!(s->state.state_op_done[OP_CANCEL_ERROR] || @@ -552,15 +547,15 @@ static void on_response_headers_received( s->state.pending_read_from_cronet = true; } gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + execute_from_storage(s); + grpc_exec_ctx_finish(); } /* Cronet callback */ static void on_write_completed(bidirectional_stream *stream, const char *data) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; stream_obj *s = (stream_obj *)stream->annotation; CRONET_LOG(GPR_DEBUG, "W: on_write_completed(%p, %s)", stream, data); gpr_mu_lock(&s->mu); @@ -570,8 +565,8 @@ static void on_write_completed(bidirectional_stream *stream, const char *data) { } s->state.state_callback_received[OP_SEND_MESSAGE] = true; gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + execute_from_storage(s); + grpc_exec_ctx_finish(); } /* @@ -579,7 +574,7 @@ static void on_write_completed(bidirectional_stream *stream, const char *data) { */ static void on_read_completed(bidirectional_stream *stream, char *data, int count) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; stream_obj *s = (stream_obj *)stream->annotation; CRONET_LOG(GPR_DEBUG, "R: on_read_completed(%p, %p, %d)", stream, data, count); @@ -605,15 +600,15 @@ static void on_read_completed(bidirectional_stream *stream, char *data, gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); + execute_from_storage(s); } } else { null_and_maybe_free_read_buffer(s); s->state.rs.read_stream_closed = true; gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); + execute_from_storage(s); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } /* @@ -622,7 +617,7 @@ static void on_read_completed(bidirectional_stream *stream, char *data, static void on_response_trailers_received( bidirectional_stream *stream, const bidirectional_stream_header_array *trailers) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; CRONET_LOG(GPR_DEBUG, "R: on_response_trailers_received(%p,%p)", stream, trailers); stream_obj *s = (stream_obj *)stream->annotation; @@ -636,15 +631,14 @@ static void on_response_trailers_received( for (size_t i = 0; i < trailers->count; i++) { CRONET_LOG(GPR_DEBUG, "trailer key=%s, value=%s", trailers->headers[i].key, trailers->headers[i].value); - GRPC_LOG_IF_ERROR( - "on_response_trailers_received", - grpc_chttp2_incoming_metadata_buffer_add( - &exec_ctx, &s->state.rs.trailing_metadata, - grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string( - trailers->headers[i].key)), - grpc_slice_intern(grpc_slice_from_static_string( - trailers->headers[i].value))))); + GRPC_LOG_IF_ERROR("on_response_trailers_received", + grpc_chttp2_incoming_metadata_buffer_add( + &s->state.rs.trailing_metadata, + grpc_mdelem_from_slices( + grpc_slice_intern(grpc_slice_from_static_string( + trailers->headers[i].key)), + grpc_slice_intern(grpc_slice_from_static_string( + trailers->headers[i].value))))); s->state.rs.trailing_metadata_valid = true; if (0 == strcmp(trailers->headers[i].key, "grpc-status") && 0 != strcmp(trailers->headers[i].value, "0")) { @@ -670,17 +664,16 @@ static void on_response_trailers_received( gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); - execute_from_storage(&exec_ctx, s); + execute_from_storage(s); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } /* Utility function that takes the data from s->write_slice_buffer and assembles into a contiguous byte stream with 5 byte gRPC header prepended. */ -static void create_grpc_frame(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *write_slice_buffer, +static void create_grpc_frame(grpc_slice_buffer *write_slice_buffer, char **pp_write_buffer, size_t *p_write_buffer_size, uint32_t flags) { grpc_slice slice = grpc_slice_buffer_take_first(write_slice_buffer); @@ -700,7 +693,7 @@ static void create_grpc_frame(grpc_exec_ctx *exec_ctx, *p++ = (uint8_t)(length); /* append actual data */ memcpy(p, GRPC_SLICE_START_PTR(slice), length); - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); } /* @@ -981,8 +974,7 @@ static bool op_can_be_run(grpc_transport_stream_op_batch *curr_op, /* TODO (makdharma): Break down this function in smaller chunks for readability. */ -static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, - struct op_and_state *oas) { +static enum e_op_result execute_stream_op(struct op_and_state *oas) { grpc_transport_stream_op_batch *stream_op = &oas->op; struct stream_obj *s = oas->s; grpc_cronet_transport *t = (grpc_cronet_transport *)s->curr_ct; @@ -1040,15 +1032,14 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, grpc_slice slice; grpc_slice_buffer_init(&write_slice_buffer); if (1 != grpc_byte_stream_next( - exec_ctx, stream_op->payload->send_message.send_message, + stream_op->payload->send_message.send_message, stream_op->payload->send_message.send_message->length, NULL)) { /* Should never reach here */ GPR_ASSERT(false); } if (GRPC_ERROR_NONE != - grpc_byte_stream_pull(exec_ctx, - stream_op->payload->send_message.send_message, + grpc_byte_stream_pull(stream_op->payload->send_message.send_message, &slice)) { /* Should never reach here */ GPR_ASSERT(false); @@ -1061,15 +1052,15 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, } if (write_slice_buffer.count > 0) { size_t write_buffer_size; - create_grpc_frame(exec_ctx, &write_slice_buffer, - &stream_state->ws.write_buffer, &write_buffer_size, + create_grpc_frame(&write_slice_buffer, &stream_state->ws.write_buffer, + &write_buffer_size, stream_op->payload->send_message.send_message->flags); CRONET_LOG(GPR_DEBUG, "bidirectional_stream_write (%p, %p)", s->cbs, stream_state->ws.write_buffer); stream_state->state_callback_received[OP_SEND_MESSAGE] = false; bidirectional_stream_write(s->cbs, stream_state->ws.write_buffer, (int)write_buffer_size, false); - grpc_slice_buffer_destroy_internal(exec_ctx, &write_slice_buffer); + grpc_slice_buffer_destroy_internal(&write_slice_buffer); if (t->use_packet_coalescing) { if (!stream_op->send_trailing_metadata) { CRONET_LOG(GPR_DEBUG, "bidirectional_stream_flush (%p)", s->cbs); @@ -1112,25 +1103,21 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, CRONET_LOG(GPR_DEBUG, "running: %p OP_RECV_INITIAL_METADATA", oas); if (stream_state->state_op_done[OP_CANCEL_ERROR]) { GRPC_CLOSURE_SCHED( - exec_ctx, stream_op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_NONE); } else if (stream_state->state_callback_received[OP_FAILED]) { GRPC_CLOSURE_SCHED( - exec_ctx, stream_op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_NONE); } else if (stream_state->state_op_done[OP_RECV_TRAILING_METADATA]) { GRPC_CLOSURE_SCHED( - exec_ctx, stream_op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_NONE); } else { grpc_chttp2_incoming_metadata_buffer_publish( - exec_ctx, &oas->s->state.rs.initial_metadata, + &oas->s->state.rs.initial_metadata, stream_op->payload->recv_initial_metadata.recv_initial_metadata); GRPC_CLOSURE_SCHED( - exec_ctx, stream_op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_NONE); } @@ -1141,16 +1128,14 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, CRONET_LOG(GPR_DEBUG, "running: %p OP_RECV_MESSAGE", oas); if (stream_state->state_op_done[OP_CANCEL_ERROR]) { CRONET_LOG(GPR_DEBUG, "Stream is cancelled."); - GRPC_CLOSURE_SCHED(exec_ctx, - stream_op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(stream_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); stream_state->state_op_done[OP_RECV_MESSAGE] = true; oas->state.state_op_done[OP_RECV_MESSAGE] = true; result = ACTION_TAKEN_NO_CALLBACK; } else if (stream_state->state_callback_received[OP_FAILED]) { CRONET_LOG(GPR_DEBUG, "Stream failed."); - GRPC_CLOSURE_SCHED(exec_ctx, - stream_op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(stream_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); stream_state->state_op_done[OP_RECV_MESSAGE] = true; oas->state.state_op_done[OP_RECV_MESSAGE] = true; @@ -1158,16 +1143,14 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, } else if (stream_state->rs.read_stream_closed == true) { /* No more data will be received */ CRONET_LOG(GPR_DEBUG, "read stream closed"); - GRPC_CLOSURE_SCHED(exec_ctx, - stream_op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(stream_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); stream_state->state_op_done[OP_RECV_MESSAGE] = true; oas->state.state_op_done[OP_RECV_MESSAGE] = true; result = ACTION_TAKEN_NO_CALLBACK; } else if (stream_state->flush_read) { CRONET_LOG(GPR_DEBUG, "flush read"); - GRPC_CLOSURE_SCHED(exec_ctx, - stream_op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(stream_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); stream_state->state_op_done[OP_RECV_MESSAGE] = true; oas->state.state_op_done[OP_RECV_MESSAGE] = true; @@ -1200,7 +1183,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, CRONET_LOG(GPR_DEBUG, "read operation complete. Empty response."); /* Clean up read_slice_buffer in case there is unread data. */ grpc_slice_buffer_destroy_internal( - exec_ctx, &stream_state->rs.read_slice_buffer); + &stream_state->rs.read_slice_buffer); grpc_slice_buffer_init(&stream_state->rs.read_slice_buffer); grpc_slice_buffer_stream_init(&stream_state->rs.sbs, &stream_state->rs.read_slice_buffer, 0); @@ -1211,7 +1194,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, stream_op->payload->recv_message.recv_message) = (grpc_byte_buffer *)&stream_state->rs.sbs; GRPC_CLOSURE_SCHED( - exec_ctx, stream_op->payload->recv_message.recv_message_ready, + stream_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); stream_state->state_op_done[OP_RECV_MESSAGE] = true; oas->state.state_op_done[OP_RECV_MESSAGE] = true; @@ -1255,8 +1238,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, (size_t)stream_state->rs.length_field); null_and_maybe_free_read_buffer(s); /* Clean up read_slice_buffer in case there is unread data. */ - grpc_slice_buffer_destroy_internal(exec_ctx, - &stream_state->rs.read_slice_buffer); + grpc_slice_buffer_destroy_internal(&stream_state->rs.read_slice_buffer); grpc_slice_buffer_init(&stream_state->rs.read_slice_buffer); grpc_slice_buffer_add(&stream_state->rs.read_slice_buffer, read_data_slice); @@ -1267,8 +1249,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, } *((grpc_byte_buffer **)stream_op->payload->recv_message.recv_message) = (grpc_byte_buffer *)&stream_state->rs.sbs; - GRPC_CLOSURE_SCHED(exec_ctx, - stream_op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(stream_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); stream_state->state_op_done[OP_RECV_MESSAGE] = true; oas->state.state_op_done[OP_RECV_MESSAGE] = true; @@ -1291,7 +1272,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, CRONET_LOG(GPR_DEBUG, "running: %p OP_RECV_TRAILING_METADATA", oas); if (oas->s->state.rs.trailing_metadata_valid) { grpc_chttp2_incoming_metadata_buffer_publish( - exec_ctx, &oas->s->state.rs.trailing_metadata, + &oas->s->state.rs.trailing_metadata, stream_op->payload->recv_trailing_metadata.recv_trailing_metadata); stream_state->rs.trailing_metadata_valid = false; } @@ -1316,17 +1297,17 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, op_can_be_run(stream_op, s, &oas->state, OP_ON_COMPLETE)) { CRONET_LOG(GPR_DEBUG, "running: %p OP_ON_COMPLETE", oas); if (stream_state->state_op_done[OP_CANCEL_ERROR]) { - GRPC_CLOSURE_SCHED(exec_ctx, stream_op->on_complete, + GRPC_CLOSURE_SCHED(stream_op->on_complete, GRPC_ERROR_REF(stream_state->cancel_error)); } else if (stream_state->state_callback_received[OP_FAILED]) { GRPC_CLOSURE_SCHED( - exec_ctx, stream_op->on_complete, + stream_op->on_complete, make_error_with_desc(GRPC_STATUS_UNAVAILABLE, "Unavailable.")); } else { /* All actions in this stream_op are complete. Call the on_complete * callback */ - GRPC_CLOSURE_SCHED(exec_ctx, stream_op->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(stream_op->on_complete, GRPC_ERROR_NONE); } oas->state.state_op_done[OP_ON_COMPLETE] = true; oas->done = true; @@ -1351,9 +1332,9 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx, Functions used by upper layers to access transport functionality. */ -static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_stream_refcount *refcount, - const void *server_data, gpr_arena *arena) { +static int init_stream(grpc_transport *gt, grpc_stream *gs, + grpc_stream_refcount *refcount, const void *server_data, + gpr_arena *arena) { stream_obj *s = (stream_obj *)gs; s->refcount = refcount; @@ -1384,15 +1365,13 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, return 0; } -static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_pollset *pollset) {} +static void set_pollset_do_nothing(grpc_transport *gt, grpc_stream *gs, + grpc_pollset *pollset) {} -static void set_pollset_set_do_nothing(grpc_exec_ctx *exec_ctx, - grpc_transport *gt, grpc_stream *gs, +static void set_pollset_set_do_nothing(grpc_transport *gt, grpc_stream *gs, grpc_pollset_set *pollset_set) {} -static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, +static void perform_stream_op(grpc_transport *gt, grpc_stream *gs, grpc_transport_stream_op_batch *op) { CRONET_LOG(GPR_DEBUG, "perform_stream_op"); if (op->send_initial_metadata && @@ -1402,42 +1381,36 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, this field is present in metadata */ if (op->recv_initial_metadata) { GRPC_CLOSURE_SCHED( - exec_ctx, op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_CANCELLED); } if (op->recv_message) { - GRPC_CLOSURE_SCHED(exec_ctx, op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(op->payload->recv_message.recv_message_ready, GRPC_ERROR_CANCELLED); } - GRPC_CLOSURE_SCHED(exec_ctx, op->on_complete, GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_CANCELLED); return; } stream_obj *s = (stream_obj *)gs; add_to_storage(s, op); - execute_from_storage(exec_ctx, s); + execute_from_storage(s); } -static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, +static void destroy_stream(grpc_transport *gt, grpc_stream *gs, grpc_closure *then_schedule_closure) { stream_obj *s = (stream_obj *)gs; null_and_maybe_free_read_buffer(s); /* Clean up read_slice_buffer in case there is unread data. */ - grpc_slice_buffer_destroy_internal(exec_ctx, &s->state.rs.read_slice_buffer); + grpc_slice_buffer_destroy_internal(&s->state.rs.read_slice_buffer); GRPC_ERROR_UNREF(s->state.cancel_error); - GRPC_CLOSURE_SCHED(exec_ctx, then_schedule_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(then_schedule_closure, GRPC_ERROR_NONE); } -static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {} +static void destroy_transport(grpc_transport *gt) {} -static grpc_endpoint *get_endpoint(grpc_exec_ctx *exec_ctx, - grpc_transport *gt) { - return NULL; -} +static grpc_endpoint *get_endpoint(grpc_transport *gt) { return NULL; } -static void perform_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_transport_op *op) {} +static void perform_op(grpc_transport *gt, grpc_transport_op *op) {} static const grpc_transport_vtable grpc_cronet_vtable = { sizeof(stream_obj), diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index 67a8358927c..ba9aa503c8d 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -54,8 +54,8 @@ typedef struct inproc_transport { gpr_refcount refs; bool is_client; grpc_connectivity_state_tracker connectivity; - void (*accept_stream_cb)(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_transport *transport, const void *server_data); + void (*accept_stream_cb)(void *user_data, grpc_transport *transport, + const void *server_data); void *accept_stream_data; bool is_closed; struct inproc_transport *other_side; @@ -118,39 +118,36 @@ typedef struct inproc_stream { } inproc_stream; static grpc_closure do_nothing_closure; -static bool cancel_stream_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, - grpc_error *error); -static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); +static bool cancel_stream_locked(inproc_stream *s, grpc_error *error); +static void op_state_machine(void *arg, grpc_error *error); static void ref_transport(inproc_transport *t) { INPROC_LOG(GPR_DEBUG, "ref_transport %p", t); gpr_ref(&t->refs); } -static void really_destroy_transport(grpc_exec_ctx *exec_ctx, - inproc_transport *t) { +static void really_destroy_transport(inproc_transport *t) { INPROC_LOG(GPR_DEBUG, "really_destroy_transport %p", t); - grpc_connectivity_state_destroy(exec_ctx, &t->connectivity); + grpc_connectivity_state_destroy(&t->connectivity); if (gpr_unref(&t->mu->refs)) { gpr_free(t->mu); } gpr_free(t); } -static void unref_transport(grpc_exec_ctx *exec_ctx, inproc_transport *t) { +static void unref_transport(inproc_transport *t) { INPROC_LOG(GPR_DEBUG, "unref_transport %p", t); if (gpr_unref(&t->refs)) { - really_destroy_transport(exec_ctx, t); + really_destroy_transport(t); } } #ifndef NDEBUG #define STREAM_REF(refs, reason) grpc_stream_ref(refs, reason) -#define STREAM_UNREF(e, refs, reason) grpc_stream_unref(e, refs, reason) +#define STREAM_UNREF(refs, reason) grpc_stream_unref(refs, reason) #else #define STREAM_REF(refs, reason) grpc_stream_ref(refs) -#define STREAM_UNREF(e, refs, reason) grpc_stream_unref(e, refs) +#define STREAM_UNREF(refs, reason) grpc_stream_unref(refs) #endif static void ref_stream(inproc_stream *s, const char *reason) { @@ -158,13 +155,12 @@ static void ref_stream(inproc_stream *s, const char *reason) { STREAM_REF(s->refs, reason); } -static void unref_stream(grpc_exec_ctx *exec_ctx, inproc_stream *s, - const char *reason) { +static void unref_stream(inproc_stream *s, const char *reason) { INPROC_LOG(GPR_DEBUG, "unref_stream %p %s", s, reason); - STREAM_UNREF(exec_ctx, s->refs, reason); + STREAM_UNREF(s->refs, reason); } -static void really_destroy_stream(grpc_exec_ctx *exec_ctx, inproc_stream *s) { +static void really_destroy_stream(inproc_stream *s) { INPROC_LOG(GPR_DEBUG, "really_destroy_stream %p", s); GRPC_ERROR_UNREF(s->write_buffer_cancel_error); @@ -172,13 +168,13 @@ static void really_destroy_stream(grpc_exec_ctx *exec_ctx, inproc_stream *s) { GRPC_ERROR_UNREF(s->cancel_other_error); if (s->recv_inited) { - grpc_slice_buffer_destroy_internal(exec_ctx, &s->recv_message); + grpc_slice_buffer_destroy_internal(&s->recv_message); } - unref_transport(exec_ctx, s->t); + unref_transport(s->t); if (s->closure_at_destroy) { - GRPC_CLOSURE_SCHED(exec_ctx, s->closure_at_destroy, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->closure_at_destroy, GRPC_ERROR_NONE); } } @@ -195,7 +191,7 @@ static void log_metadata(const grpc_metadata_batch *md_batch, bool is_client, } } -static grpc_error *fill_in_metadata(grpc_exec_ctx *exec_ctx, inproc_stream *s, +static grpc_error *fill_in_metadata(inproc_stream *s, const grpc_metadata_batch *metadata, uint32_t flags, grpc_metadata_batch *out_md, uint32_t *outflags, bool *markfilled) { @@ -214,18 +210,18 @@ static grpc_error *fill_in_metadata(grpc_exec_ctx *exec_ctx, inproc_stream *s, (elem != NULL) && (error == GRPC_ERROR_NONE); elem = elem->next) { grpc_linked_mdelem *nelem = (grpc_linked_mdelem *)gpr_arena_alloc(s->arena, sizeof(*nelem)); - nelem->md = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(GRPC_MDKEY(elem->md)), - grpc_slice_intern(GRPC_MDVALUE(elem->md))); + nelem->md = + grpc_mdelem_from_slices(grpc_slice_intern(GRPC_MDKEY(elem->md)), + grpc_slice_intern(GRPC_MDVALUE(elem->md))); - error = grpc_metadata_batch_link_tail(exec_ctx, out_md, nelem); + error = grpc_metadata_batch_link_tail(out_md, nelem); } return error; } -static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_stream_refcount *refcount, - const void *server_data, gpr_arena *arena) { +static int init_stream(grpc_transport *gt, grpc_stream *gs, + grpc_stream_refcount *refcount, const void *server_data, + gpr_arena *arena) { INPROC_LOG(GPR_DEBUG, "init_stream %p %p %p", gt, gs, server_data); inproc_transport *t = (inproc_transport *)gt; inproc_stream *s = (inproc_stream *)gs; @@ -285,8 +281,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, // side to avoid destruction INPROC_LOG(GPR_DEBUG, "calling accept stream cb %p %p", st->accept_stream_cb, st->accept_stream_data); - (*st->accept_stream_cb)(exec_ctx, st->accept_stream_data, &st->base, - (void *)s); + (*st->accept_stream_cb)(st->accept_stream_data, &st->base, (void *)s); } else { // This is the server-side and is being called through accept_stream_cb inproc_stream *cs = (inproc_stream *)server_data; @@ -301,19 +296,19 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, // Now transfer from the other side's write_buffer if any to the to_read // buffer if (cs->write_buffer_initial_md_filled) { - fill_in_metadata(exec_ctx, s, &cs->write_buffer_initial_md, + fill_in_metadata(s, &cs->write_buffer_initial_md, cs->write_buffer_initial_md_flags, &s->to_read_initial_md, &s->to_read_initial_md_flags, &s->to_read_initial_md_filled); s->deadline = GPR_MIN(s->deadline, cs->write_buffer_deadline); - grpc_metadata_batch_clear(exec_ctx, &cs->write_buffer_initial_md); + grpc_metadata_batch_clear(&cs->write_buffer_initial_md); cs->write_buffer_initial_md_filled = false; } if (cs->write_buffer_trailing_md_filled) { - fill_in_metadata(exec_ctx, s, &cs->write_buffer_trailing_md, 0, + fill_in_metadata(s, &cs->write_buffer_trailing_md, 0, &s->to_read_trailing_md, NULL, &s->to_read_trailing_md_filled); - grpc_metadata_batch_clear(exec_ctx, &cs->write_buffer_trailing_md); + grpc_metadata_batch_clear(&cs->write_buffer_trailing_md); cs->write_buffer_trailing_md_filled = false; } if (cs->write_buffer_cancel_error != GRPC_ERROR_NONE) { @@ -326,11 +321,11 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, return 0; // return value is not important } -static void close_stream_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s) { +static void close_stream_locked(inproc_stream *s) { if (!s->closed) { // Release the metadata that we would have written out - grpc_metadata_batch_destroy(exec_ctx, &s->write_buffer_initial_md); - grpc_metadata_batch_destroy(exec_ctx, &s->write_buffer_trailing_md); + grpc_metadata_batch_destroy(&s->write_buffer_initial_md); + grpc_metadata_batch_destroy(&s->write_buffer_trailing_md); if (s->listed) { inproc_stream *p = s->stream_list_prev; @@ -344,22 +339,21 @@ static void close_stream_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s) { n->stream_list_prev = p; } s->listed = false; - unref_stream(exec_ctx, s, "close_stream:list"); + unref_stream(s, "close_stream:list"); } s->closed = true; - unref_stream(exec_ctx, s, "close_stream:closing"); + unref_stream(s, "close_stream:closing"); } } // This function means that we are done talking/listening to the other side -static void close_other_side_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, - const char *reason) { +static void close_other_side_locked(inproc_stream *s, const char *reason) { if (s->other_side != NULL) { // First release the metadata that came from the other side's arena - grpc_metadata_batch_destroy(exec_ctx, &s->to_read_initial_md); - grpc_metadata_batch_destroy(exec_ctx, &s->to_read_trailing_md); + grpc_metadata_batch_destroy(&s->to_read_initial_md); + grpc_metadata_batch_destroy(&s->to_read_trailing_md); - unref_stream(exec_ctx, s->other_side, reason); + unref_stream(s->other_side, reason); s->other_side_closed = true; s->other_side = NULL; } else if (!s->other_side_closed) { @@ -371,8 +365,7 @@ static void close_other_side_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, // this stream_op_batch is only one of the pending operations for this // stream. This is called when one of the pending operations for the stream // is done and about to be NULLed out -static void complete_if_batch_end_locked(grpc_exec_ctx *exec_ctx, - inproc_stream *s, grpc_error *error, +static void complete_if_batch_end_locked(inproc_stream *s, grpc_error *error, grpc_transport_stream_op_batch *op, const char *msg) { int is_sm = (int)(op == s->send_message_op); @@ -383,22 +376,20 @@ static void complete_if_batch_end_locked(grpc_exec_ctx *exec_ctx, if ((is_sm + is_stm + is_rim + is_rm + is_rtm) == 1) { INPROC_LOG(GPR_DEBUG, "%s %p %p %p", msg, s, op, error); - GRPC_CLOSURE_SCHED(exec_ctx, op->on_complete, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_REF(error)); } } -static void maybe_schedule_op_closure_locked(grpc_exec_ctx *exec_ctx, - inproc_stream *s, +static void maybe_schedule_op_closure_locked(inproc_stream *s, grpc_error *error) { if (s && s->ops_needed && !s->op_closure_scheduled) { - GRPC_CLOSURE_SCHED(exec_ctx, &s->op_closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(&s->op_closure, GRPC_ERROR_REF(error)); s->op_closure_scheduled = true; s->ops_needed = false; } } -static void fail_helper_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, - grpc_error *error) { +static void fail_helper_locked(inproc_stream *s, grpc_error *error) { INPROC_LOG(GPR_DEBUG, "op_state_machine %p fail_helper", s); // If we're failing this side, we need to make sure that // we also send or have already sent trailing metadata @@ -414,14 +405,14 @@ static void fail_helper_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, : &other->to_read_trailing_md; bool *destfilled = (other == NULL) ? &s->write_buffer_trailing_md_filled : &other->to_read_trailing_md_filled; - fill_in_metadata(exec_ctx, s, &fake_md, 0, dest, NULL, destfilled); - grpc_metadata_batch_destroy(exec_ctx, &fake_md); + fill_in_metadata(s, &fake_md, 0, dest, NULL, destfilled); + grpc_metadata_batch_destroy(&fake_md); if (other != NULL) { if (other->cancel_other_error == GRPC_ERROR_NONE) { other->cancel_other_error = GRPC_ERROR_REF(error); } - maybe_schedule_op_closure_locked(exec_ctx, other, error); + maybe_schedule_op_closure_locked(other, error); } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) { s->write_buffer_cancel_error = GRPC_ERROR_REF(error); } @@ -435,24 +426,21 @@ static void fail_helper_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, grpc_metadata_batch_init(&fake_md); grpc_linked_mdelem *path_md = (grpc_linked_mdelem *)gpr_arena_alloc(s->arena, sizeof(*path_md)); - path_md->md = - grpc_mdelem_from_slices(exec_ctx, g_fake_path_key, g_fake_path_value); - GPR_ASSERT(grpc_metadata_batch_link_tail(exec_ctx, &fake_md, path_md) == + path_md->md = grpc_mdelem_from_slices(g_fake_path_key, g_fake_path_value); + GPR_ASSERT(grpc_metadata_batch_link_tail(&fake_md, path_md) == GRPC_ERROR_NONE); grpc_linked_mdelem *auth_md = (grpc_linked_mdelem *)gpr_arena_alloc(s->arena, sizeof(*auth_md)); - auth_md->md = - grpc_mdelem_from_slices(exec_ctx, g_fake_auth_key, g_fake_auth_value); - GPR_ASSERT(grpc_metadata_batch_link_tail(exec_ctx, &fake_md, auth_md) == + auth_md->md = grpc_mdelem_from_slices(g_fake_auth_key, g_fake_auth_value); + GPR_ASSERT(grpc_metadata_batch_link_tail(&fake_md, auth_md) == GRPC_ERROR_NONE); fill_in_metadata( - exec_ctx, s, &fake_md, 0, - s->recv_initial_md_op->payload->recv_initial_metadata - .recv_initial_metadata, + s, &fake_md, 0, s->recv_initial_md_op->payload->recv_initial_metadata + .recv_initial_metadata, s->recv_initial_md_op->payload->recv_initial_metadata.recv_flags, NULL); - grpc_metadata_batch_destroy(exec_ctx, &fake_md); + grpc_metadata_batch_destroy(&fake_md); err = GRPC_ERROR_NONE; } else { err = GRPC_ERROR_REF(error); @@ -460,14 +448,13 @@ static void fail_helper_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, INPROC_LOG(GPR_DEBUG, "fail_helper %p scheduling initial-metadata-ready %p %p", s, error, err); - GRPC_CLOSURE_SCHED(exec_ctx, - s->recv_initial_md_op->payload->recv_initial_metadata + GRPC_CLOSURE_SCHED(s->recv_initial_md_op->payload->recv_initial_metadata .recv_initial_metadata_ready, err); // Last use of err so no need to REF and then UNREF it complete_if_batch_end_locked( - exec_ctx, s, error, s->recv_initial_md_op, + s, error, s->recv_initial_md_op, "fail_helper scheduling recv-initial-metadata-on-complete"); s->recv_initial_md_op = NULL; } @@ -475,22 +462,22 @@ static void fail_helper_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, INPROC_LOG(GPR_DEBUG, "fail_helper %p scheduling message-ready %p", s, error); GRPC_CLOSURE_SCHED( - exec_ctx, s->recv_message_op->payload->recv_message.recv_message_ready, + s->recv_message_op->payload->recv_message.recv_message_ready, GRPC_ERROR_REF(error)); complete_if_batch_end_locked( - exec_ctx, s, error, s->recv_message_op, + s, error, s->recv_message_op, "fail_helper scheduling recv-message-on-complete"); s->recv_message_op = NULL; } if (s->send_message_op) { complete_if_batch_end_locked( - exec_ctx, s, error, s->send_message_op, + s, error, s->send_message_op, "fail_helper scheduling send-message-on-complete"); s->send_message_op = NULL; } if (s->send_trailing_md_op) { complete_if_batch_end_locked( - exec_ctx, s, error, s->send_trailing_md_op, + s, error, s->send_trailing_md_op, "fail_helper scheduling send-trailng-md-on-complete"); s->send_trailing_md_op = NULL; } @@ -499,23 +486,22 @@ static void fail_helper_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, "fail_helper %p scheduling trailing-md-on-complete %p", s, error); complete_if_batch_end_locked( - exec_ctx, s, error, s->recv_trailing_md_op, + s, error, s->recv_trailing_md_op, "fail_helper scheduling recv-trailing-metadata-on-complete"); s->recv_trailing_md_op = NULL; } - close_other_side_locked(exec_ctx, s, "fail_helper:other_side"); - close_stream_locked(exec_ctx, s); + close_other_side_locked(s, "fail_helper:other_side"); + close_stream_locked(s); GRPC_ERROR_UNREF(error); } -static void message_transfer_locked(grpc_exec_ctx *exec_ctx, - inproc_stream *sender, +static void message_transfer_locked(inproc_stream *sender, inproc_stream *receiver) { size_t remaining = sender->send_message_op->payload->send_message.send_message->length; if (receiver->recv_inited) { - grpc_slice_buffer_destroy_internal(exec_ctx, &receiver->recv_message); + grpc_slice_buffer_destroy_internal(&receiver->recv_message); } grpc_slice_buffer_init(&receiver->recv_message); receiver->recv_inited = true; @@ -523,13 +509,13 @@ static void message_transfer_locked(grpc_exec_ctx *exec_ctx, grpc_slice message_slice; grpc_closure unused; GPR_ASSERT(grpc_byte_stream_next( - exec_ctx, sender->send_message_op->payload->send_message.send_message, - SIZE_MAX, &unused)); + sender->send_message_op->payload->send_message.send_message, SIZE_MAX, + &unused)); grpc_error *error = grpc_byte_stream_pull( - exec_ctx, sender->send_message_op->payload->send_message.send_message, + sender->send_message_op->payload->send_message.send_message, &message_slice); if (error != GRPC_ERROR_NONE) { - cancel_stream_locked(exec_ctx, sender, GRPC_ERROR_REF(error)); + cancel_stream_locked(sender, GRPC_ERROR_REF(error)); break; } GPR_ASSERT(error == GRPC_ERROR_NONE); @@ -544,22 +530,20 @@ static void message_transfer_locked(grpc_exec_ctx *exec_ctx, INPROC_LOG(GPR_DEBUG, "message_transfer_locked %p scheduling message-ready", receiver); GRPC_CLOSURE_SCHED( - exec_ctx, receiver->recv_message_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); complete_if_batch_end_locked( - exec_ctx, sender, GRPC_ERROR_NONE, sender->send_message_op, + sender, GRPC_ERROR_NONE, sender->send_message_op, "message_transfer scheduling sender on_complete"); complete_if_batch_end_locked( - exec_ctx, receiver, GRPC_ERROR_NONE, receiver->recv_message_op, + receiver, GRPC_ERROR_NONE, receiver->recv_message_op, "message_transfer scheduling receiver on_complete"); receiver->recv_message_op = NULL; sender->send_message_op = NULL; } -static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void op_state_machine(void *arg, grpc_error *error) { // This function gets called when we have contents in the unprocessed reads // Get what we want based on our ops wanted // Schedule our appropriate closures @@ -580,26 +564,26 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, inproc_stream *other = s->other_side; if (s->cancel_self_error != GRPC_ERROR_NONE) { - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(s->cancel_self_error)); + fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_self_error)); goto done; } else if (s->cancel_other_error != GRPC_ERROR_NONE) { - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(s->cancel_other_error)); + fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_other_error)); goto done; } else if (error != GRPC_ERROR_NONE) { - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(error)); + fail_helper_locked(s, GRPC_ERROR_REF(error)); goto done; } if (s->send_message_op && other) { if (other->recv_message_op) { - message_transfer_locked(exec_ctx, s, other); - maybe_schedule_op_closure_locked(exec_ctx, other, GRPC_ERROR_NONE); + message_transfer_locked(s, other); + maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE); } else if (!s->t->is_client && (s->trailing_md_sent || other->recv_trailing_md_op)) { // A server send will never be matched if the client is waiting // for trailing metadata already complete_if_batch_end_locked( - exec_ctx, s, GRPC_ERROR_NONE, s->send_message_op, + s, GRPC_ERROR_NONE, s->send_message_op, "op_state_machine scheduling send-message-on-complete"); s->send_message_op = NULL; } @@ -620,28 +604,27 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, // The buffer is already in use; that's an error! INPROC_LOG(GPR_DEBUG, "Extra trailing metadata %p", s); new_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Extra trailing metadata"); - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(new_err)); + fail_helper_locked(s, GRPC_ERROR_REF(new_err)); goto done; } else { if (other && !other->closed) { - fill_in_metadata(exec_ctx, s, - s->send_trailing_md_op->payload->send_trailing_metadata - .send_trailing_metadata, + fill_in_metadata(s, s->send_trailing_md_op->payload + ->send_trailing_metadata.send_trailing_metadata, 0, dest, NULL, destfilled); } s->trailing_md_sent = true; if (!s->t->is_client && s->trailing_md_recvd && s->recv_trailing_md_op) { INPROC_LOG(GPR_DEBUG, "op_state_machine %p scheduling trailing-md-on-complete", s); - GRPC_CLOSURE_SCHED(exec_ctx, s->recv_trailing_md_op->on_complete, + GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->on_complete, GRPC_ERROR_NONE); s->recv_trailing_md_op = NULL; needs_close = true; } } - maybe_schedule_op_closure_locked(exec_ctx, other, GRPC_ERROR_NONE); + maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE); complete_if_batch_end_locked( - exec_ctx, s, GRPC_ERROR_NONE, s->send_trailing_md_op, + s, GRPC_ERROR_NONE, s->send_trailing_md_op, "op_state_machine scheduling send-trailing-metadata-on-complete"); s->send_trailing_md_op = NULL; } @@ -654,31 +637,30 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, "op_state_machine %p scheduling on_complete errors for already " "recvd initial md %p", s, new_err); - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(new_err)); + fail_helper_locked(s, GRPC_ERROR_REF(new_err)); goto done; } if (s->to_read_initial_md_filled) { s->initial_md_recvd = true; new_err = fill_in_metadata( - exec_ctx, s, &s->to_read_initial_md, s->to_read_initial_md_flags, + s, &s->to_read_initial_md, s->to_read_initial_md_flags, s->recv_initial_md_op->payload->recv_initial_metadata .recv_initial_metadata, s->recv_initial_md_op->payload->recv_initial_metadata.recv_flags, NULL); s->recv_initial_md_op->payload->recv_initial_metadata .recv_initial_metadata->deadline = s->deadline; - grpc_metadata_batch_clear(exec_ctx, &s->to_read_initial_md); + grpc_metadata_batch_clear(&s->to_read_initial_md); s->to_read_initial_md_filled = false; INPROC_LOG(GPR_DEBUG, "op_state_machine %p scheduling initial-metadata-ready %p", s, new_err); - GRPC_CLOSURE_SCHED(exec_ctx, - s->recv_initial_md_op->payload->recv_initial_metadata + GRPC_CLOSURE_SCHED(s->recv_initial_md_op->payload->recv_initial_metadata .recv_initial_metadata_ready, GRPC_ERROR_REF(new_err)); complete_if_batch_end_locked( - exec_ctx, s, new_err, s->recv_initial_md_op, + s, new_err, s->recv_initial_md_op, "op_state_machine scheduling recv-initial-metadata-on-complete"); s->recv_initial_md_op = NULL; @@ -686,20 +668,20 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, INPROC_LOG(GPR_DEBUG, "op_state_machine %p scheduling on_complete errors2 %p", s, new_err); - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(new_err)); + fail_helper_locked(s, GRPC_ERROR_REF(new_err)); goto done; } } } if (s->recv_message_op) { if (other && other->send_message_op) { - message_transfer_locked(exec_ctx, other, s); - maybe_schedule_op_closure_locked(exec_ctx, other, GRPC_ERROR_NONE); + message_transfer_locked(other, s); + maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE); } } if (s->recv_trailing_md_op && s->t->is_client && other && other->send_message_op) { - maybe_schedule_op_closure_locked(exec_ctx, other, GRPC_ERROR_NONE); + maybe_schedule_op_closure_locked(other, GRPC_ERROR_NONE); } if (s->to_read_trailing_md_filled) { if (s->trailing_md_recvd) { @@ -710,7 +692,7 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, "op_state_machine %p scheduling on_complete errors for already " "recvd trailing md %p", s, new_err); - fail_helper_locked(exec_ctx, s, GRPC_ERROR_REF(new_err)); + fail_helper_locked(s, GRPC_ERROR_REF(new_err)); goto done; } if (s->recv_message_op != NULL) { @@ -718,11 +700,10 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, // satisfied INPROC_LOG(GPR_DEBUG, "op_state_machine %p scheduling message-ready", s); GRPC_CLOSURE_SCHED( - exec_ctx, s->recv_message_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); complete_if_batch_end_locked( - exec_ctx, s, new_err, s->recv_message_op, + s, new_err, s->recv_message_op, "op_state_machine scheduling recv-message-on-complete"); s->recv_message_op = NULL; } @@ -730,7 +711,7 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, // Nothing further will try to receive from this stream, so finish off // any outstanding send_message op complete_if_batch_end_locked( - exec_ctx, s, new_err, s->send_message_op, + s, new_err, s->send_message_op, "op_state_machine scheduling send-message-on-complete"); s->send_message_op = NULL; } @@ -738,11 +719,11 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, // We wanted trailing metadata and we got it s->trailing_md_recvd = true; new_err = - fill_in_metadata(exec_ctx, s, &s->to_read_trailing_md, 0, + fill_in_metadata(s, &s->to_read_trailing_md, 0, s->recv_trailing_md_op->payload ->recv_trailing_metadata.recv_trailing_metadata, NULL, NULL); - grpc_metadata_batch_clear(exec_ctx, &s->to_read_trailing_md); + grpc_metadata_batch_clear(&s->to_read_trailing_md); s->to_read_trailing_md_filled = false; // We should schedule the recv_trailing_md_op completion if @@ -754,7 +735,7 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, INPROC_LOG(GPR_DEBUG, "op_state_machine %p scheduling trailing-md-on-complete %p", s, new_err); - GRPC_CLOSURE_SCHED(exec_ctx, s->recv_trailing_md_op->on_complete, + GRPC_CLOSURE_SCHED(s->recv_trailing_md_op->on_complete, GRPC_ERROR_REF(new_err)); s->recv_trailing_md_op = NULL; needs_close = true; @@ -775,10 +756,10 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, // recv_message_op INPROC_LOG(GPR_DEBUG, "op_state_machine %p scheduling message-ready", s); GRPC_CLOSURE_SCHED( - exec_ctx, s->recv_message_op->payload->recv_message.recv_message_ready, + s->recv_message_op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE); complete_if_batch_end_locked( - exec_ctx, s, new_err, s->recv_message_op, + s, new_err, s->recv_message_op, "op_state_machine scheduling recv-message-on-complete"); s->recv_message_op = NULL; } @@ -787,7 +768,7 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, // Nothing further will try to receive from this stream, so finish off // any outstanding send_message op complete_if_batch_end_locked( - exec_ctx, s, new_err, s->send_message_op, + s, new_err, s->send_message_op, "op_state_machine scheduling send-message-on-complete"); s->send_message_op = NULL; } @@ -803,22 +784,21 @@ static void op_state_machine(grpc_exec_ctx *exec_ctx, void *arg, } done: if (needs_close) { - close_other_side_locked(exec_ctx, s, "op_state_machine"); - close_stream_locked(exec_ctx, s); + close_other_side_locked(s, "op_state_machine"); + close_stream_locked(s); } gpr_mu_unlock(mu); GRPC_ERROR_UNREF(new_err); } -static bool cancel_stream_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, - grpc_error *error) { +static bool cancel_stream_locked(inproc_stream *s, grpc_error *error) { bool ret = false; // was the cancel accepted INPROC_LOG(GPR_DEBUG, "cancel_stream %p with %s", s, grpc_error_string(error)); if (s->cancel_self_error == GRPC_ERROR_NONE) { ret = true; s->cancel_self_error = GRPC_ERROR_REF(error); - maybe_schedule_op_closure_locked(exec_ctx, s, s->cancel_self_error); + maybe_schedule_op_closure_locked(s, s->cancel_self_error); // Send trailing md to the other side indicating cancellation, even if we // already have s->trailing_md_sent = true; @@ -831,15 +811,14 @@ static bool cancel_stream_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, : &other->to_read_trailing_md; bool *destfilled = (other == NULL) ? &s->write_buffer_trailing_md_filled : &other->to_read_trailing_md_filled; - fill_in_metadata(exec_ctx, s, &cancel_md, 0, dest, NULL, destfilled); - grpc_metadata_batch_destroy(exec_ctx, &cancel_md); + fill_in_metadata(s, &cancel_md, 0, dest, NULL, destfilled); + grpc_metadata_batch_destroy(&cancel_md); if (other != NULL) { if (other->cancel_other_error == GRPC_ERROR_NONE) { other->cancel_other_error = GRPC_ERROR_REF(s->cancel_self_error); } - maybe_schedule_op_closure_locked(exec_ctx, other, - other->cancel_other_error); + maybe_schedule_op_closure_locked(other, other->cancel_other_error); } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) { s->write_buffer_cancel_error = GRPC_ERROR_REF(s->cancel_self_error); } @@ -849,21 +828,20 @@ static bool cancel_stream_locked(grpc_exec_ctx *exec_ctx, inproc_stream *s, // md, now's the chance if (!s->t->is_client && s->trailing_md_recvd && s->recv_trailing_md_op) { complete_if_batch_end_locked( - exec_ctx, s, s->cancel_self_error, s->recv_trailing_md_op, + s, s->cancel_self_error, s->recv_trailing_md_op, "cancel_stream scheduling trailing-md-on-complete"); s->recv_trailing_md_op = NULL; } } - close_other_side_locked(exec_ctx, s, "cancel_stream:other_side"); - close_stream_locked(exec_ctx, s); + close_other_side_locked(s, "cancel_stream:other_side"); + close_stream_locked(s); GRPC_ERROR_UNREF(error); return ret; } -static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, +static void perform_stream_op(grpc_transport *gt, grpc_stream *gs, grpc_transport_stream_op_batch *op) { INPROC_LOG(GPR_DEBUG, "perform_stream_op %p %p %p", gt, gs, op); inproc_stream *s = (inproc_stream *)gs; @@ -889,7 +867,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, if (op->cancel_stream) { // Call cancel_stream_locked without ref'ing the cancel_error because // this function is responsible to make sure that that field gets unref'ed - cancel_stream_locked(exec_ctx, s, op->payload->cancel_stream.cancel_error); + cancel_stream_locked(s, op->payload->cancel_stream.cancel_error); // this op can complete without an error } else if (s->cancel_self_error != GRPC_ERROR_NONE) { // already self-canceled so still give it an error @@ -927,8 +905,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, } else { if (!other->closed) { fill_in_metadata( - exec_ctx, s, - op->payload->send_initial_metadata.send_initial_metadata, + s, op->payload->send_initial_metadata.send_initial_metadata, op->payload->send_initial_metadata.send_initial_metadata_flags, dest, destflags, destfilled); } @@ -940,7 +917,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, s->initial_md_sent = true; } } - maybe_schedule_op_closure_locked(exec_ctx, other, error); + maybe_schedule_op_closure_locked(other, error); } } @@ -979,7 +956,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, (op->recv_message && (other && other->send_message_op != NULL)) || (s->to_read_trailing_md_filled || s->trailing_md_recvd)) { if (!s->op_closure_scheduled) { - GRPC_CLOSURE_SCHED(exec_ctx, &s->op_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&s->op_closure, GRPC_ERROR_NONE); s->op_closure_scheduled = true; } } else { @@ -994,7 +971,6 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, "perform_stream_op error %p scheduling initial-metadata-ready %p", s, error); GRPC_CLOSURE_SCHED( - exec_ctx, op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_REF(error)); } @@ -1003,28 +979,26 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, GPR_DEBUG, "perform_stream_op error %p scheduling recv message-ready %p", s, error); - GRPC_CLOSURE_SCHED(exec_ctx, - op->payload->recv_message.recv_message_ready, + GRPC_CLOSURE_SCHED(op->payload->recv_message.recv_message_ready, GRPC_ERROR_REF(error)); } } INPROC_LOG(GPR_DEBUG, "perform_stream_op %p scheduling on_complete %p", s, error); - GRPC_CLOSURE_SCHED(exec_ctx, on_complete, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(on_complete, GRPC_ERROR_REF(error)); } if (needs_close) { - close_other_side_locked(exec_ctx, s, "perform_stream_op:other_side"); - close_stream_locked(exec_ctx, s); + close_other_side_locked(s, "perform_stream_op:other_side"); + close_stream_locked(s); } gpr_mu_unlock(mu); GRPC_ERROR_UNREF(error); } -static void close_transport_locked(grpc_exec_ctx *exec_ctx, - inproc_transport *t) { +static void close_transport_locked(inproc_transport *t) { INPROC_LOG(GPR_DEBUG, "close_transport %p %d", t, t->is_closed); grpc_connectivity_state_set( - exec_ctx, &t->connectivity, GRPC_CHANNEL_SHUTDOWN, + &t->connectivity, GRPC_CHANNEL_SHUTDOWN, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Closing transport."), "close transport"); if (!t->is_closed) { @@ -1033,7 +1007,7 @@ static void close_transport_locked(grpc_exec_ctx *exec_ctx, while (t->stream_list != NULL) { // cancel_stream_locked also adjusts stream list cancel_stream_locked( - exec_ctx, t->stream_list, + t->stream_list, grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport closed"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE)); @@ -1041,14 +1015,13 @@ static void close_transport_locked(grpc_exec_ctx *exec_ctx, } } -static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_transport_op *op) { +static void perform_transport_op(grpc_transport *gt, grpc_transport_op *op) { inproc_transport *t = (inproc_transport *)gt; INPROC_LOG(GPR_DEBUG, "perform_transport_op %p %p", t, op); gpr_mu_lock(&t->mu->mu); if (op->on_connectivity_state_change) { grpc_connectivity_state_notify_on_state_change( - exec_ctx, &t->connectivity, op->connectivity_state, + &t->connectivity, op->connectivity_state, op->on_connectivity_state_change); } if (op->set_accept_stream) { @@ -1056,7 +1029,7 @@ static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, t->accept_stream_data = op->set_accept_stream_user_data; } if (op->on_consumed) { - GRPC_CLOSURE_SCHED(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE); } bool do_close = false; @@ -1070,71 +1043,68 @@ static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt, } if (do_close) { - close_transport_locked(exec_ctx, t); + close_transport_locked(t); } gpr_mu_unlock(&t->mu->mu); } -static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, +static void destroy_stream(grpc_transport *gt, grpc_stream *gs, grpc_closure *then_schedule_closure) { INPROC_LOG(GPR_DEBUG, "destroy_stream %p %p", gs, then_schedule_closure); inproc_stream *s = (inproc_stream *)gs; s->closure_at_destroy = then_schedule_closure; - really_destroy_stream(exec_ctx, s); + really_destroy_stream(s); } -static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) { +static void destroy_transport(grpc_transport *gt) { inproc_transport *t = (inproc_transport *)gt; INPROC_LOG(GPR_DEBUG, "destroy_transport %p", t); gpr_mu_lock(&t->mu->mu); - close_transport_locked(exec_ctx, t); + close_transport_locked(t); gpr_mu_unlock(&t->mu->mu); - unref_transport(exec_ctx, t->other_side); - unref_transport(exec_ctx, t); + unref_transport(t->other_side); + unref_transport(t); } /******************************************************************************* * INTEGRATION GLUE */ -static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_pollset *pollset) { +static void set_pollset(grpc_transport *gt, grpc_stream *gs, + grpc_pollset *pollset) { // Nothing to do here } -static void set_pollset_set(grpc_exec_ctx *exec_ctx, grpc_transport *gt, - grpc_stream *gs, grpc_pollset_set *pollset_set) { +static void set_pollset_set(grpc_transport *gt, grpc_stream *gs, + grpc_pollset_set *pollset_set) { // Nothing to do here } -static grpc_endpoint *get_endpoint(grpc_exec_ctx *exec_ctx, grpc_transport *t) { - return NULL; -} +static grpc_endpoint *get_endpoint(grpc_transport *t) { return NULL; } /******************************************************************************* * GLOBAL INIT AND DESTROY */ -static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +static void do_nothing(void *arg, grpc_error *error) {} void grpc_inproc_transport_init(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_CLOSURE_INIT(&do_nothing_closure, do_nothing, NULL, grpc_schedule_on_exec_ctx); g_empty_slice = grpc_slice_from_static_buffer(NULL, 0); grpc_slice key_tmp = grpc_slice_from_static_string(":path"); g_fake_path_key = grpc_slice_intern(key_tmp); - grpc_slice_unref_internal(&exec_ctx, key_tmp); + grpc_slice_unref_internal(key_tmp); g_fake_path_value = grpc_slice_from_static_string("/"); grpc_slice auth_tmp = grpc_slice_from_static_string(":authority"); g_fake_auth_key = grpc_slice_intern(auth_tmp); - grpc_slice_unref_internal(&exec_ctx, auth_tmp); + grpc_slice_unref_internal(auth_tmp); g_fake_auth_value = grpc_slice_from_static_string("inproc-fail"); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static const grpc_transport_vtable inproc_vtable = { @@ -1146,8 +1116,7 @@ static const grpc_transport_vtable inproc_vtable = { /******************************************************************************* * Main inproc transport functions */ -static void inproc_transports_create(grpc_exec_ctx *exec_ctx, - grpc_transport **server_transport, +static void inproc_transports_create(grpc_transport **server_transport, const grpc_channel_args *server_args, grpc_transport **client_transport, const grpc_channel_args *client_args) { @@ -1184,7 +1153,7 @@ grpc_channel *grpc_inproc_channel_create(grpc_server *server, GRPC_API_TRACE("grpc_inproc_channel_create(server=%p, args=%p)", 2, (server, args)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; const grpc_channel_args *server_args = grpc_server_get_channel_args(server); @@ -1199,30 +1168,28 @@ grpc_channel *grpc_inproc_channel_create(grpc_server *server, grpc_transport *server_transport; grpc_transport *client_transport; - inproc_transports_create(&exec_ctx, &server_transport, server_args, - &client_transport, client_args); + inproc_transports_create(&server_transport, server_args, &client_transport, + client_args); - grpc_server_setup_transport(&exec_ctx, server, server_transport, NULL, - server_args); - grpc_channel *channel = - grpc_channel_create(&exec_ctx, "inproc", client_args, - GRPC_CLIENT_DIRECT_CHANNEL, client_transport); + grpc_server_setup_transport(server, server_transport, NULL, server_args); + grpc_channel *channel = grpc_channel_create( + "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport); // Free up created channel args - grpc_channel_args_destroy(&exec_ctx, client_args); + grpc_channel_args_destroy(client_args); // Now finish scheduled operations - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return channel; } void grpc_inproc_transport_shutdown(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_unref_internal(&exec_ctx, g_empty_slice); - grpc_slice_unref_internal(&exec_ctx, g_fake_path_key); - grpc_slice_unref_internal(&exec_ctx, g_fake_path_value); - grpc_slice_unref_internal(&exec_ctx, g_fake_auth_key); - grpc_slice_unref_internal(&exec_ctx, g_fake_auth_value); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_slice_unref_internal(g_empty_slice); + grpc_slice_unref_internal(g_fake_path_key); + grpc_slice_unref_internal(g_fake_path_value); + grpc_slice_unref_internal(g_fake_auth_key); + grpc_slice_unref_internal(g_fake_auth_value); + grpc_exec_ctx_finish(); } diff --git a/src/core/lib/backoff/backoff.cc b/src/core/lib/backoff/backoff.cc index fe0a7518171..bb9388e3b4f 100644 --- a/src/core/lib/backoff/backoff.cc +++ b/src/core/lib/backoff/backoff.cc @@ -32,11 +32,11 @@ void grpc_backoff_init(grpc_backoff *backoff, backoff->rng_state = (uint32_t)gpr_now(GPR_CLOCK_REALTIME).tv_nsec; } -grpc_millis grpc_backoff_begin(grpc_exec_ctx *exec_ctx, grpc_backoff *backoff) { +grpc_millis grpc_backoff_begin(grpc_backoff *backoff) { backoff->current_timeout_millis = backoff->initial_connect_timeout; const grpc_millis first_timeout = GPR_MAX(backoff->current_timeout_millis, backoff->min_timeout_millis); - return grpc_exec_ctx_now(exec_ctx) + first_timeout; + return grpc_exec_ctx_now() + first_timeout; } /* Generate a random number between 0 and 1. */ @@ -45,7 +45,7 @@ static double generate_uniform_random_number(uint32_t *rng_state) { return *rng_state / (double)((uint32_t)1 << 31); } -grpc_millis grpc_backoff_step(grpc_exec_ctx *exec_ctx, grpc_backoff *backoff) { +grpc_millis grpc_backoff_step(grpc_backoff *backoff) { const double new_timeout_millis = backoff->multiplier * (double)backoff->current_timeout_millis; backoff->current_timeout_millis = @@ -60,10 +60,10 @@ grpc_millis grpc_backoff_step(grpc_exec_ctx *exec_ctx, grpc_backoff *backoff) { (grpc_millis)((double)(backoff->current_timeout_millis) + jitter); const grpc_millis current_deadline = - grpc_exec_ctx_now(exec_ctx) + backoff->current_timeout_millis; + grpc_exec_ctx_now() + backoff->current_timeout_millis; const grpc_millis min_deadline = - grpc_exec_ctx_now(exec_ctx) + backoff->min_timeout_millis; + grpc_exec_ctx_now() + backoff->min_timeout_millis; return GPR_MAX(current_deadline, min_deadline); } diff --git a/src/core/lib/backoff/backoff.h b/src/core/lib/backoff/backoff.h index 80e49ea52ab..c48483758e2 100644 --- a/src/core/lib/backoff/backoff.h +++ b/src/core/lib/backoff/backoff.h @@ -51,9 +51,9 @@ void grpc_backoff_init(grpc_backoff *backoff, grpc_millis max_timeout_millis); /// Begin retry loop: returns a timespec for the NEXT retry -grpc_millis grpc_backoff_begin(grpc_exec_ctx *exec_ctx, grpc_backoff *backoff); +grpc_millis grpc_backoff_begin(grpc_backoff *backoff); /// Step a retry loop: returns a timespec for the NEXT retry -grpc_millis grpc_backoff_step(grpc_exec_ctx *exec_ctx, grpc_backoff *backoff); +grpc_millis grpc_backoff_step(grpc_backoff *backoff); /// Reset the backoff, so the next grpc_backoff_step will be a /// grpc_backoff_begin /// instead diff --git a/src/core/lib/channel/channel_args.cc b/src/core/lib/channel/channel_args.cc index 30248b3c609..5aa4ac2d3a4 100644 --- a/src/core/lib/channel/channel_args.cc +++ b/src/core/lib/channel/channel_args.cc @@ -188,7 +188,7 @@ grpc_channel_args *grpc_channel_args_normalize(const grpc_channel_args *a) { return b; } -void grpc_channel_args_destroy(grpc_exec_ctx *exec_ctx, grpc_channel_args *a) { +void grpc_channel_args_destroy(grpc_channel_args *a) { size_t i; if (!a) return; for (i = 0; i < a->num_args; i++) { @@ -199,8 +199,7 @@ void grpc_channel_args_destroy(grpc_exec_ctx *exec_ctx, grpc_channel_args *a) { case GRPC_ARG_INTEGER: break; case GRPC_ARG_POINTER: - a->args[i].value.pointer.vtable->destroy(exec_ctx, - a->args[i].value.pointer.p); + a->args[i].value.pointer.vtable->destroy(a->args[i].value.pointer.p); break; } gpr_free(a->args[i].key); @@ -299,8 +298,7 @@ static int find_stream_compression_algorithm_states_bitset( } grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( - grpc_exec_ctx *exec_ctx, grpc_channel_args **a, - grpc_compression_algorithm algorithm, int state) { + grpc_channel_args **a, grpc_compression_algorithm algorithm, int state) { int *states_arg = NULL; grpc_channel_args *result = *a; const int states_arg_found = @@ -333,15 +331,15 @@ grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( GPR_BITCLEAR((unsigned *)&tmp.value.integer, algorithm); } result = grpc_channel_args_copy_and_add(*a, &tmp, 1); - grpc_channel_args_destroy(exec_ctx, *a); + grpc_channel_args_destroy(*a); *a = result; } return result; } grpc_channel_args *grpc_channel_args_stream_compression_algorithm_set_state( - grpc_exec_ctx *exec_ctx, grpc_channel_args **a, - grpc_stream_compression_algorithm algorithm, int state) { + grpc_channel_args **a, grpc_stream_compression_algorithm algorithm, + int state) { int *states_arg = NULL; grpc_channel_args *result = *a; const int states_arg_found = @@ -375,7 +373,7 @@ grpc_channel_args *grpc_channel_args_stream_compression_algorithm_set_state( GPR_BITCLEAR((unsigned *)&tmp.value.integer, algorithm); } result = grpc_channel_args_copy_and_add(*a, &tmp, 1); - grpc_channel_args_destroy(exec_ctx, *a); + grpc_channel_args_destroy(*a); *a = result; } return result; diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h index 1896d35cf45..6ef35621421 100644 --- a/src/core/lib/channel/channel_args.h +++ b/src/core/lib/channel/channel_args.h @@ -57,7 +57,7 @@ grpc_channel_args *grpc_channel_args_union(const grpc_channel_args *a, const grpc_channel_args *b); /** Destroy arguments created by \a grpc_channel_args_copy */ -void grpc_channel_args_destroy(grpc_exec_ctx *exec_ctx, grpc_channel_args *a); +void grpc_channel_args_destroy(grpc_channel_args *a); /** Returns the compression algorithm set in \a a. */ grpc_compression_algorithm grpc_channel_args_get_compression_algorithm( @@ -89,8 +89,7 @@ grpc_channel_args *grpc_channel_args_set_stream_compression_algorithm( * modified to point to the returned instance (which may be different from the * input value of \a a). */ grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( - grpc_exec_ctx *exec_ctx, grpc_channel_args **a, - grpc_compression_algorithm algorithm, int enabled); + grpc_channel_args **a, grpc_compression_algorithm algorithm, int enabled); /** Sets the support for the given stream compression algorithm. By default, all * stream compression algorithms are enabled. It's an error to disable an @@ -100,8 +99,8 @@ grpc_channel_args *grpc_channel_args_compression_algorithm_set_state( * modified to point to the returned instance (which may be different from the * input value of \a a). */ grpc_channel_args *grpc_channel_args_stream_compression_algorithm_set_state( - grpc_exec_ctx *exec_ctx, grpc_channel_args **a, - grpc_stream_compression_algorithm algorithm, int enabled); + grpc_channel_args **a, grpc_stream_compression_algorithm algorithm, + int enabled); /** Returns the bitset representing the support state (true for enabled, false * for disabled) for compression algorithms. diff --git a/src/core/lib/channel/channel_stack.cc b/src/core/lib/channel/channel_stack.cc index 775c8bc667c..22372aa7d76 100644 --- a/src/core/lib/channel/channel_stack.cc +++ b/src/core/lib/channel/channel_stack.cc @@ -88,8 +88,8 @@ grpc_call_element *grpc_call_stack_element(grpc_call_stack *call_stack, } grpc_error *grpc_channel_stack_init( - grpc_exec_ctx *exec_ctx, int initial_refs, grpc_iomgr_cb_func destroy, - void *destroy_arg, const grpc_channel_filter **filters, size_t filter_count, + int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, + const grpc_channel_filter **filters, size_t filter_count, const grpc_channel_args *channel_args, grpc_transport *optional_transport, const char *name, grpc_channel_stack *stack) { size_t call_size = @@ -118,8 +118,7 @@ grpc_error *grpc_channel_stack_init( args.is_last = i == (filter_count - 1); elems[i].filter = filters[i]; elems[i].channel_data = user_data; - grpc_error *error = - elems[i].filter->init_channel_elem(exec_ctx, &elems[i], &args); + grpc_error *error = elems[i].filter->init_channel_elem(&elems[i], &args); if (error != GRPC_ERROR_NONE) { if (first_error == GRPC_ERROR_NONE) { first_error = error; @@ -139,20 +138,18 @@ grpc_error *grpc_channel_stack_init( return first_error; } -void grpc_channel_stack_destroy(grpc_exec_ctx *exec_ctx, - grpc_channel_stack *stack) { +void grpc_channel_stack_destroy(grpc_channel_stack *stack) { grpc_channel_element *channel_elems = CHANNEL_ELEMS_FROM_STACK(stack); size_t count = stack->count; size_t i; /* destroy per-filter data */ for (i = 0; i < count; i++) { - channel_elems[i].filter->destroy_channel_elem(exec_ctx, &channel_elems[i]); + channel_elems[i].filter->destroy_channel_elem(&channel_elems[i]); } } -grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx, - grpc_channel_stack *channel_stack, +grpc_error *grpc_call_stack_init(grpc_channel_stack *channel_stack, int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, const grpc_call_element_args *elem_args) { @@ -175,8 +172,8 @@ grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx, call_elems[i].filter = channel_elems[i].filter; call_elems[i].channel_data = channel_elems[i].channel_data; call_elems[i].call_data = user_data; - grpc_error *error = call_elems[i].filter->init_call_elem( - exec_ctx, &call_elems[i], elem_args); + grpc_error *error = + call_elems[i].filter->init_call_elem(&call_elems[i], elem_args); if (error != GRPC_ERROR_NONE) { if (first_error == GRPC_ERROR_NONE) { first_error = error; @@ -190,8 +187,7 @@ grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx, return first_error; } -void grpc_call_stack_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_call_stack *call_stack, +void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack *call_stack, grpc_polling_entity *pollent) { size_t count = call_stack->count; grpc_call_element *call_elems; @@ -204,18 +200,16 @@ void grpc_call_stack_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, /* init per-filter data */ for (i = 0; i < count; i++) { - call_elems[i].filter->set_pollset_or_pollset_set(exec_ctx, &call_elems[i], - pollent); + call_elems[i].filter->set_pollset_or_pollset_set(&call_elems[i], pollent); user_data += ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data); } } void grpc_call_stack_ignore_set_pollset_or_pollset_set( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_polling_entity *pollent) {} + grpc_call_element *elem, grpc_polling_entity *pollent) {} -void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack, +void grpc_call_stack_destroy(grpc_call_stack *stack, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure) { grpc_call_element *elems = CALL_ELEMS_FROM_STACK(stack); @@ -225,29 +219,26 @@ void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack, /* destroy per-filter data */ for (i = 0; i < count; i++) { elems[i].filter->destroy_call_elem( - exec_ctx, &elems[i], final_info, - i == count - 1 ? then_schedule_closure : NULL); + &elems[i], final_info, i == count - 1 ? then_schedule_closure : NULL); } } -void grpc_call_next_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { grpc_call_element *next_elem = elem + 1; GRPC_CALL_LOG_OP(GPR_INFO, next_elem, op); - next_elem->filter->start_transport_stream_op_batch(exec_ctx, next_elem, op); + next_elem->filter->start_transport_stream_op_batch(next_elem, op); } -void grpc_channel_next_get_info(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +void grpc_channel_next_get_info(grpc_channel_element *elem, const grpc_channel_info *channel_info) { grpc_channel_element *next_elem = elem + 1; - next_elem->filter->get_channel_info(exec_ctx, next_elem, channel_info); + next_elem->filter->get_channel_info(next_elem, channel_info); } -void grpc_channel_next_op(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, - grpc_transport_op *op) { +void grpc_channel_next_op(grpc_channel_element *elem, grpc_transport_op *op) { grpc_channel_element *next_elem = elem + 1; - next_elem->filter->start_transport_op(exec_ctx, next_elem, op); + next_elem->filter->start_transport_op(next_elem, op); } grpc_channel_stack *grpc_channel_stack_from_top_element( diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h index 5c00c098894..6ff6394e035 100644 --- a/src/core/lib/channel/channel_stack.h +++ b/src/core/lib/channel/channel_stack.h @@ -99,14 +99,12 @@ typedef struct { typedef struct { /* Called to eg. send/receive data on a call. See grpc_call_next_op on how to call the next element in the stack */ - void (*start_transport_stream_op_batch)(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + void (*start_transport_stream_op_batch)(grpc_call_element *elem, grpc_transport_stream_op_batch *op); /* Called to handle channel level operations - e.g. new calls, or transport closure. See grpc_channel_next_op on how to call the next element in the stack */ - void (*start_transport_op)(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, grpc_transport_op *op); + void (*start_transport_op)(grpc_channel_element *elem, grpc_transport_op *op); /* sizeof(per call data) */ size_t sizeof_call_data; @@ -119,11 +117,9 @@ typedef struct { transport and is on the server. Most filters want to ignore this argument. Implementations may assume that elem->call_data is all zeros. */ - grpc_error *(*init_call_elem)(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + grpc_error *(*init_call_elem)(grpc_call_element *elem, const grpc_call_element_args *args); - void (*set_pollset_or_pollset_set)(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + void (*set_pollset_or_pollset_set)(grpc_call_element *elem, grpc_polling_entity *pollent); /* Destroy per call data. The filter does not need to do any chaining. @@ -131,7 +127,7 @@ typedef struct { \a then_schedule_closure that should be passed to GRPC_CLOSURE_SCHED when destruction is complete. \a final_info contains data about the completed call, mainly for reporting purposes. */ - void (*destroy_call_elem)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, + void (*destroy_call_elem)(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure); @@ -144,16 +140,14 @@ typedef struct { useful for asserting correct configuration by upper layer code. The filter does not need to do any chaining. Implementations may assume that elem->call_data is all zeros. */ - grpc_error *(*init_channel_elem)(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, + grpc_error *(*init_channel_elem)(grpc_channel_element *elem, grpc_channel_element_args *args); /* Destroy per channel data. The filter does not need to do any chaining */ - void (*destroy_channel_elem)(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem); + void (*destroy_channel_elem)(grpc_channel_element *elem); /* Implement grpc_channel_get_info() */ - void (*get_channel_info)(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, + void (*get_channel_info)(grpc_channel_element *elem, const grpc_channel_info *channel_info); /* The name of this filter */ @@ -211,68 +205,62 @@ size_t grpc_channel_stack_size(const grpc_channel_filter **filters, size_t filter_count); /* Initialize a channel stack given some filters */ grpc_error *grpc_channel_stack_init( - grpc_exec_ctx *exec_ctx, int initial_refs, grpc_iomgr_cb_func destroy, - void *destroy_arg, const grpc_channel_filter **filters, size_t filter_count, + int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, + const grpc_channel_filter **filters, size_t filter_count, const grpc_channel_args *args, grpc_transport *optional_transport, const char *name, grpc_channel_stack *stack); /* Destroy a channel stack */ -void grpc_channel_stack_destroy(grpc_exec_ctx *exec_ctx, - grpc_channel_stack *stack); +void grpc_channel_stack_destroy(grpc_channel_stack *stack); /* Initialize a call stack given a channel stack. transport_server_data is expected to be NULL on a client, or an opaque transport owned pointer on the server. */ -grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx, - grpc_channel_stack *channel_stack, +grpc_error *grpc_call_stack_init(grpc_channel_stack *channel_stack, int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, const grpc_call_element_args *elem_args); /* Set a pollset or a pollset_set for a call stack: must occur before the first * op is started */ -void grpc_call_stack_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_call_stack *call_stack, +void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack *call_stack, grpc_polling_entity *pollent); #ifndef NDEBUG #define GRPC_CALL_STACK_REF(call_stack, reason) \ grpc_stream_ref(&(call_stack)->refcount, reason) -#define GRPC_CALL_STACK_UNREF(exec_ctx, call_stack, reason) \ - grpc_stream_unref(exec_ctx, &(call_stack)->refcount, reason) +#define GRPC_CALL_STACK_UNREF(call_stack, reason) \ + grpc_stream_unref(&(call_stack)->refcount, reason) #define GRPC_CHANNEL_STACK_REF(channel_stack, reason) \ grpc_stream_ref(&(channel_stack)->refcount, reason) -#define GRPC_CHANNEL_STACK_UNREF(exec_ctx, channel_stack, reason) \ - grpc_stream_unref(exec_ctx, &(channel_stack)->refcount, reason) +#define GRPC_CHANNEL_STACK_UNREF(channel_stack, reason) \ + grpc_stream_unref(&(channel_stack)->refcount, reason) #else #define GRPC_CALL_STACK_REF(call_stack, reason) \ grpc_stream_ref(&(call_stack)->refcount) -#define GRPC_CALL_STACK_UNREF(exec_ctx, call_stack, reason) \ - grpc_stream_unref(exec_ctx, &(call_stack)->refcount) +#define GRPC_CALL_STACK_UNREF(call_stack, reason) \ + grpc_stream_unref(&(call_stack)->refcount) #define GRPC_CHANNEL_STACK_REF(channel_stack, reason) \ grpc_stream_ref(&(channel_stack)->refcount) -#define GRPC_CHANNEL_STACK_UNREF(exec_ctx, channel_stack, reason) \ - grpc_stream_unref(exec_ctx, &(channel_stack)->refcount) +#define GRPC_CHANNEL_STACK_UNREF(channel_stack, reason) \ + grpc_stream_unref(&(channel_stack)->refcount) #endif /* Destroy a call stack */ -void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack, +void grpc_call_stack_destroy(grpc_call_stack *stack, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure); /* Ignore set pollset{_set} - used by filters if they don't care about pollsets * at all. Does nothing. */ void grpc_call_stack_ignore_set_pollset_or_pollset_set( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_polling_entity *pollent); + grpc_call_element *elem, grpc_polling_entity *pollent); /* Call the next operation in a call stack */ -void grpc_call_next_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +void grpc_call_next_op(grpc_call_element *elem, grpc_transport_stream_op_batch *op); /* Call the next operation (depending on call directionality) in a channel stack */ -void grpc_channel_next_op(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, - grpc_transport_op *op); +void grpc_channel_next_op(grpc_channel_element *elem, grpc_transport_op *op); /* Pass through a request to get_channel_info() to the next child element */ -void grpc_channel_next_get_info(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +void grpc_channel_next_get_info(grpc_channel_element *elem, const grpc_channel_info *channel_info); /* Given the top element of a channel stack, get the channel stack itself */ diff --git a/src/core/lib/channel/channel_stack_builder.cc b/src/core/lib/channel/channel_stack_builder.cc index b663ebfb522..4de606a2773 100644 --- a/src/core/lib/channel/channel_stack_builder.cc +++ b/src/core/lib/channel/channel_stack_builder.cc @@ -150,10 +150,9 @@ void grpc_channel_stack_builder_set_name(grpc_channel_stack_builder *builder, } void grpc_channel_stack_builder_set_channel_arguments( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, - const grpc_channel_args *args) { + grpc_channel_stack_builder *builder, const grpc_channel_args *args) { if (builder->args != NULL) { - grpc_channel_args_destroy(exec_ctx, builder->args); + grpc_channel_args_destroy(builder->args); } builder->args = grpc_channel_args_copy(args); } @@ -241,8 +240,7 @@ bool grpc_channel_stack_builder_add_filter_after( return true; } -void grpc_channel_stack_builder_destroy(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder) { +void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder *builder) { filter_node *p = builder->begin.next; while (p != &builder->end) { filter_node *next = p->next; @@ -250,16 +248,15 @@ void grpc_channel_stack_builder_destroy(grpc_exec_ctx *exec_ctx, p = next; } if (builder->args != NULL) { - grpc_channel_args_destroy(exec_ctx, builder->args); + grpc_channel_args_destroy(builder->args); } gpr_free(builder->target); gpr_free(builder); } grpc_error *grpc_channel_stack_builder_finish( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, - size_t prefix_bytes, int initial_refs, grpc_iomgr_cb_func destroy, - void *destroy_arg, void **result) { + grpc_channel_stack_builder *builder, size_t prefix_bytes, int initial_refs, + grpc_iomgr_cb_func destroy, void *destroy_arg, void **result) { // count the number of filters size_t num_filters = 0; for (filter_node *p = builder->begin.next; p != &builder->end; p = p->next) { @@ -284,12 +281,12 @@ grpc_error *grpc_channel_stack_builder_finish( (grpc_channel_stack *)((char *)(*result) + prefix_bytes); // and initialize it grpc_error *error = grpc_channel_stack_init( - exec_ctx, initial_refs, destroy, - destroy_arg == NULL ? *result : destroy_arg, filters, num_filters, - builder->args, builder->transport, builder->name, channel_stack); + initial_refs, destroy, destroy_arg == NULL ? *result : destroy_arg, + filters, num_filters, builder->args, builder->transport, builder->name, + channel_stack); if (error != GRPC_ERROR_NONE) { - grpc_channel_stack_destroy(exec_ctx, channel_stack); + grpc_channel_stack_destroy(channel_stack); gpr_free(*result); *result = NULL; } else { @@ -305,7 +302,7 @@ grpc_error *grpc_channel_stack_builder_finish( } } - grpc_channel_stack_builder_destroy(exec_ctx, builder); + grpc_channel_stack_builder_destroy(builder); gpr_free((grpc_channel_filter **)filters); return error; diff --git a/src/core/lib/channel/channel_stack_builder.h b/src/core/lib/channel/channel_stack_builder.h index fdff2a2b6db..683b5817f3f 100644 --- a/src/core/lib/channel/channel_stack_builder.h +++ b/src/core/lib/channel/channel_stack_builder.h @@ -58,8 +58,7 @@ grpc_transport *grpc_channel_stack_builder_get_transport( /// Set channel arguments: copies args void grpc_channel_stack_builder_set_channel_arguments( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, - const grpc_channel_args *args); + grpc_channel_stack_builder *builder, const grpc_channel_args *args); /// Return a borrowed pointer to the channel arguments const grpc_channel_args *grpc_channel_stack_builder_get_channel_arguments( @@ -152,13 +151,11 @@ void grpc_channel_stack_builder_iterator_destroy( /// \a initial_refs, \a destroy, \a destroy_arg are as per /// grpc_channel_stack_init grpc_error *grpc_channel_stack_builder_finish( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, - size_t prefix_bytes, int initial_refs, grpc_iomgr_cb_func destroy, - void *destroy_arg, void **result); + grpc_channel_stack_builder *builder, size_t prefix_bytes, int initial_refs, + grpc_iomgr_cb_func destroy, void *destroy_arg, void **result); /// Destroy the builder without creating a channel stack -void grpc_channel_stack_builder_destroy(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder); +void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder *builder); extern grpc_tracer_flag grpc_trace_channel_stack_builder; diff --git a/src/core/lib/channel/connected_channel.cc b/src/core/lib/channel/connected_channel.cc index 4f37908958d..460e8b4c651 100644 --- a/src/core/lib/channel/connected_channel.cc +++ b/src/core/lib/channel/connected_channel.cc @@ -51,17 +51,14 @@ typedef struct connected_channel_call_data { callback_state recv_message_ready; } call_data; -static void run_in_call_combiner(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void run_in_call_combiner(void *arg, grpc_error *error) { callback_state *state = (callback_state *)arg; - GRPC_CALL_COMBINER_START(exec_ctx, state->call_combiner, - state->original_closure, GRPC_ERROR_REF(error), - state->reason); + GRPC_CALL_COMBINER_START(state->call_combiner, state->original_closure, + GRPC_ERROR_REF(error), state->reason); } -static void run_cancel_in_call_combiner(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { - run_in_call_combiner(exec_ctx, arg, error); +static void run_cancel_in_call_combiner(void *arg, grpc_error *error) { + run_in_call_combiner(arg, error); gpr_free(arg); } @@ -98,8 +95,7 @@ static callback_state *get_state_for_batch( /* Intercept a call operation and either push it directly up or translate it into transport stream operations */ static void con_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; if (batch->recv_initial_metadata) { @@ -126,58 +122,52 @@ static void con_start_transport_stream_op_batch( callback_state *state = get_state_for_batch(calld, batch); intercept_callback(calld, state, false, "on_complete", &batch->on_complete); } - grpc_transport_perform_stream_op(exec_ctx, chand->transport, - TRANSPORT_STREAM_FROM_CALL_DATA(calld), - batch); - GRPC_CALL_COMBINER_STOP(exec_ctx, calld->call_combiner, - "passed batch to transport"); + grpc_transport_perform_stream_op( + chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), batch); + GRPC_CALL_COMBINER_STOP(calld->call_combiner, "passed batch to transport"); } -static void con_start_transport_op(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void con_start_transport_op(grpc_channel_element *elem, grpc_transport_op *op) { channel_data *chand = (channel_data *)elem->channel_data; - grpc_transport_perform_op(exec_ctx, chand->transport, op); + grpc_transport_perform_op(chand->transport, op); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; calld->call_combiner = args->call_combiner; int r = grpc_transport_init_stream( - exec_ctx, chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), + chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), &args->call_stack->refcount, args->server_transport_data, args->arena); return r == 0 ? GRPC_ERROR_NONE : GRPC_ERROR_CREATE_FROM_STATIC_STRING( "transport stream initialization failed"); } -static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void set_pollset_or_pollset_set(grpc_call_element *elem, grpc_polling_entity *pollent) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; - grpc_transport_set_pops(exec_ctx, chand->transport, + grpc_transport_set_pops(chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), pollent); } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; - grpc_transport_destroy_stream(exec_ctx, chand->transport, + grpc_transport_destroy_stream(chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), then_schedule_closure); } /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { channel_data *cd = (channel_data *)elem->channel_data; GPR_ASSERT(args->is_last); @@ -186,17 +176,15 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for channel_data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { channel_data *cd = (channel_data *)elem->channel_data; if (cd->transport) { - grpc_transport_destroy(exec_ctx, cd->transport); + grpc_transport_destroy(cd->transport); } } /* No-op. */ -static void con_get_channel_info(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void con_get_channel_info(grpc_channel_element *elem, const grpc_channel_info *channel_info) {} const grpc_channel_filter grpc_connected_filter = { @@ -230,8 +218,7 @@ static void bind_transport(grpc_channel_stack *channel_stack, grpc_transport_stream_size((grpc_transport *)t); } -bool grpc_add_connected_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +bool grpc_add_connected_filter(grpc_channel_stack_builder *builder, void *arg_must_be_null) { GPR_ASSERT(arg_must_be_null == NULL); grpc_transport *t = grpc_channel_stack_builder_get_transport(builder); diff --git a/src/core/lib/channel/connected_channel.h b/src/core/lib/channel/connected_channel.h index 4615727baa1..46970061973 100644 --- a/src/core/lib/channel/connected_channel.h +++ b/src/core/lib/channel/connected_channel.h @@ -27,8 +27,7 @@ extern "C" { extern const grpc_channel_filter grpc_connected_filter; -bool grpc_add_connected_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +bool grpc_add_connected_filter(grpc_channel_stack_builder *builder, void *arg_must_be_null); /* Debug helper to dig the transport stream out of a call element */ diff --git a/src/core/lib/channel/handshaker.cc b/src/core/lib/channel/handshaker.cc index b27ee37e5b3..ff7e10a5b92 100644 --- a/src/core/lib/channel/handshaker.cc +++ b/src/core/lib/channel/handshaker.cc @@ -34,23 +34,20 @@ void grpc_handshaker_init(const grpc_handshaker_vtable* vtable, handshaker->vtable = vtable; } -void grpc_handshaker_destroy(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker) { - handshaker->vtable->destroy(exec_ctx, handshaker); +void grpc_handshaker_destroy(grpc_handshaker* handshaker) { + handshaker->vtable->destroy(handshaker); } -void grpc_handshaker_shutdown(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker, grpc_error* why) { - handshaker->vtable->shutdown(exec_ctx, handshaker, why); +void grpc_handshaker_shutdown(grpc_handshaker* handshaker, grpc_error* why) { + handshaker->vtable->shutdown(handshaker, why); } -void grpc_handshaker_do_handshake(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker, +void grpc_handshaker_do_handshake(grpc_handshaker* handshaker, grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, grpc_handshaker_args* args) { - handshaker->vtable->do_handshake(exec_ctx, handshaker, acceptor, - on_handshake_done, args); + handshaker->vtable->do_handshake(handshaker, acceptor, on_handshake_done, + args); } // @@ -116,9 +113,9 @@ void grpc_handshake_manager_pending_list_remove(grpc_handshake_manager** head, } void grpc_handshake_manager_pending_list_shutdown_all( - grpc_exec_ctx* exec_ctx, grpc_handshake_manager* head, grpc_error* why) { + grpc_handshake_manager* head, grpc_error* why) { while (head != NULL) { - grpc_handshake_manager_shutdown(exec_ctx, head, GRPC_ERROR_REF(why)); + grpc_handshake_manager_shutdown(head, GRPC_ERROR_REF(why)); head = head->next; } GRPC_ERROR_UNREF(why); @@ -145,11 +142,10 @@ void grpc_handshake_manager_add(grpc_handshake_manager* mgr, gpr_mu_unlock(&mgr->mu); } -static void grpc_handshake_manager_unref(grpc_exec_ctx* exec_ctx, - grpc_handshake_manager* mgr) { +static void grpc_handshake_manager_unref(grpc_handshake_manager* mgr) { if (gpr_unref(&mgr->refs)) { for (size_t i = 0; i < mgr->count; ++i) { - grpc_handshaker_destroy(exec_ctx, mgr->handshakers[i]); + grpc_handshaker_destroy(mgr->handshakers[i]); } gpr_free(mgr->handshakers); gpr_mu_destroy(&mgr->mu); @@ -157,19 +153,17 @@ static void grpc_handshake_manager_unref(grpc_exec_ctx* exec_ctx, } } -void grpc_handshake_manager_destroy(grpc_exec_ctx* exec_ctx, - grpc_handshake_manager* mgr) { - grpc_handshake_manager_unref(exec_ctx, mgr); +void grpc_handshake_manager_destroy(grpc_handshake_manager* mgr) { + grpc_handshake_manager_unref(mgr); } -void grpc_handshake_manager_shutdown(grpc_exec_ctx* exec_ctx, - grpc_handshake_manager* mgr, +void grpc_handshake_manager_shutdown(grpc_handshake_manager* mgr, grpc_error* why) { gpr_mu_lock(&mgr->mu); // Shutdown the handshaker that's currently in progress, if any. if (!mgr->shutdown && mgr->index > 0) { mgr->shutdown = true; - grpc_handshaker_shutdown(exec_ctx, mgr->handshakers[mgr->index - 1], + grpc_handshaker_shutdown(mgr->handshakers[mgr->index - 1], GRPC_ERROR_REF(why)); } gpr_mu_unlock(&mgr->mu); @@ -179,8 +173,7 @@ void grpc_handshake_manager_shutdown(grpc_exec_ctx* exec_ctx, // Helper function to call either the next handshaker or the // on_handshake_done callback. // Returns true if we've scheduled the on_handshake_done callback. -static bool call_next_handshaker_locked(grpc_exec_ctx* exec_ctx, - grpc_handshake_manager* mgr, +static bool call_next_handshaker_locked(grpc_handshake_manager* mgr, grpc_error* error) { GPR_ASSERT(mgr->index <= mgr->count); // If we got an error or we've been shut down or we're exiting early or @@ -190,13 +183,12 @@ static bool call_next_handshaker_locked(grpc_exec_ctx* exec_ctx, mgr->index == mgr->count) { // Cancel deadline timer, since we're invoking the on_handshake_done // callback now. - grpc_timer_cancel(exec_ctx, &mgr->deadline_timer); - GRPC_CLOSURE_SCHED(exec_ctx, &mgr->on_handshake_done, error); + grpc_timer_cancel(&mgr->deadline_timer); + GRPC_CLOSURE_SCHED(&mgr->on_handshake_done, error); mgr->shutdown = true; } else { - grpc_handshaker_do_handshake(exec_ctx, mgr->handshakers[mgr->index], - mgr->acceptor, &mgr->call_next_handshaker, - &mgr->args); + grpc_handshaker_do_handshake(mgr->handshakers[mgr->index], mgr->acceptor, + &mgr->call_next_handshaker, &mgr->args); } ++mgr->index; return mgr->shutdown; @@ -204,36 +196,36 @@ static bool call_next_handshaker_locked(grpc_exec_ctx* exec_ctx, // A function used as the handshaker-done callback when chaining // handshakers together. -static void call_next_handshaker(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void call_next_handshaker(void* arg, grpc_error* error) { grpc_handshake_manager* mgr = (grpc_handshake_manager*)arg; gpr_mu_lock(&mgr->mu); - bool done = call_next_handshaker_locked(exec_ctx, mgr, GRPC_ERROR_REF(error)); + bool done = call_next_handshaker_locked(mgr, GRPC_ERROR_REF(error)); gpr_mu_unlock(&mgr->mu); // If we're invoked the final callback, we won't be coming back // to this function, so we can release our reference to the // handshake manager. if (done) { - grpc_handshake_manager_unref(exec_ctx, mgr); + grpc_handshake_manager_unref(mgr); } } // Callback invoked when deadline is exceeded. -static void on_timeout(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { +static void on_timeout(void* arg, grpc_error* error) { grpc_handshake_manager* mgr = (grpc_handshake_manager*)arg; if (error == GRPC_ERROR_NONE) { // Timer fired, rather than being cancelled. grpc_handshake_manager_shutdown( - exec_ctx, mgr, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out")); + mgr, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out")); } - grpc_handshake_manager_unref(exec_ctx, mgr); + grpc_handshake_manager_unref(mgr); } -void grpc_handshake_manager_do_handshake( - grpc_exec_ctx* exec_ctx, grpc_handshake_manager* mgr, - grpc_endpoint* endpoint, const grpc_channel_args* channel_args, - grpc_millis deadline, grpc_tcp_server_acceptor* acceptor, - grpc_iomgr_cb_func on_handshake_done, void* user_data) { +void grpc_handshake_manager_do_handshake(grpc_handshake_manager* mgr, + grpc_endpoint* endpoint, + const grpc_channel_args* channel_args, + grpc_millis deadline, + grpc_tcp_server_acceptor* acceptor, + grpc_iomgr_cb_func on_handshake_done, + void* user_data) { gpr_mu_lock(&mgr->mu); GPR_ASSERT(mgr->index == 0); GPR_ASSERT(!mgr->shutdown); @@ -255,12 +247,12 @@ void grpc_handshake_manager_do_handshake( gpr_ref(&mgr->refs); GRPC_CLOSURE_INIT(&mgr->on_timeout, on_timeout, mgr, grpc_schedule_on_exec_ctx); - grpc_timer_init(exec_ctx, &mgr->deadline_timer, deadline, &mgr->on_timeout); + grpc_timer_init(&mgr->deadline_timer, deadline, &mgr->on_timeout); // Start first handshaker, which also owns a ref. gpr_ref(&mgr->refs); - bool done = call_next_handshaker_locked(exec_ctx, mgr, GRPC_ERROR_NONE); + bool done = call_next_handshaker_locked(mgr, GRPC_ERROR_NONE); gpr_mu_unlock(&mgr->mu); if (done) { - grpc_handshake_manager_unref(exec_ctx, mgr); + grpc_handshake_manager_unref(mgr); } } diff --git a/src/core/lib/channel/handshaker.h b/src/core/lib/channel/handshaker.h index 8ed38c15ba1..a7d3e5700f2 100644 --- a/src/core/lib/channel/handshaker.h +++ b/src/core/lib/channel/handshaker.h @@ -71,18 +71,17 @@ typedef struct { typedef struct { /// Destroys the handshaker. - void (*destroy)(grpc_exec_ctx* exec_ctx, grpc_handshaker* handshaker); + void (*destroy)(grpc_handshaker* handshaker); /// Shuts down the handshaker (e.g., to clean up when the operation is /// aborted in the middle). - void (*shutdown)(grpc_exec_ctx* exec_ctx, grpc_handshaker* handshaker, - grpc_error* why); + void (*shutdown)(grpc_handshaker* handshaker, grpc_error* why); /// Performs handshaking, modifying \a args as needed (e.g., to /// replace \a endpoint with a wrapped endpoint). /// When finished, invokes \a on_handshake_done. /// \a acceptor will be NULL for client-side handshakers. - void (*do_handshake)(grpc_exec_ctx* exec_ctx, grpc_handshaker* handshaker, + void (*do_handshake)(grpc_handshaker* handshaker, grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, grpc_handshaker_args* args); @@ -98,12 +97,9 @@ struct grpc_handshaker { void grpc_handshaker_init(const grpc_handshaker_vtable* vtable, grpc_handshaker* handshaker); -void grpc_handshaker_destroy(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker); -void grpc_handshaker_shutdown(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker, grpc_error* why); -void grpc_handshaker_do_handshake(grpc_exec_ctx* exec_ctx, - grpc_handshaker* handshaker, +void grpc_handshaker_destroy(grpc_handshaker* handshaker); +void grpc_handshaker_shutdown(grpc_handshaker* handshaker, grpc_error* why); +void grpc_handshaker_do_handshake(grpc_handshaker* handshaker, grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, grpc_handshaker_args* args); @@ -123,15 +119,13 @@ void grpc_handshake_manager_add(grpc_handshake_manager* mgr, grpc_handshaker* handshaker); /// Destroys the handshake manager. -void grpc_handshake_manager_destroy(grpc_exec_ctx* exec_ctx, - grpc_handshake_manager* mgr); +void grpc_handshake_manager_destroy(grpc_handshake_manager* mgr); /// Shuts down the handshake manager (e.g., to clean up when the operation is /// aborted in the middle). /// The caller must still call grpc_handshake_manager_destroy() after /// calling this function. -void grpc_handshake_manager_shutdown(grpc_exec_ctx* exec_ctx, - grpc_handshake_manager* mgr, +void grpc_handshake_manager_shutdown(grpc_handshake_manager* mgr, grpc_error* why); /// Invokes handshakers in the order they were added. @@ -146,11 +140,13 @@ void grpc_handshake_manager_shutdown(grpc_exec_ctx* exec_ctx, /// GRPC_ERROR_NONE, then handshaking failed and the handshaker has done /// the necessary clean-up. Otherwise, the callback takes ownership of /// the arguments. -void grpc_handshake_manager_do_handshake( - grpc_exec_ctx* exec_ctx, grpc_handshake_manager* mgr, - grpc_endpoint* endpoint, const grpc_channel_args* channel_args, - grpc_millis deadline, grpc_tcp_server_acceptor* acceptor, - grpc_iomgr_cb_func on_handshake_done, void* user_data); +void grpc_handshake_manager_do_handshake(grpc_handshake_manager* mgr, + grpc_endpoint* endpoint, + const grpc_channel_args* channel_args, + grpc_millis deadline, + grpc_tcp_server_acceptor* acceptor, + grpc_iomgr_cb_func on_handshake_done, + void* user_data); /// Add \a mgr to the server side list of all pending handshake managers, the /// list starts with \a *head. @@ -166,7 +162,7 @@ void grpc_handshake_manager_pending_list_remove(grpc_handshake_manager** head, /// Shutdown all pending handshake managers on the server side. // Not thread-safe. Caller needs to synchronize. void grpc_handshake_manager_pending_list_shutdown_all( - grpc_exec_ctx* exec_ctx, grpc_handshake_manager* head, grpc_error* why); + grpc_handshake_manager* head, grpc_error* why); #ifdef __cplusplus } diff --git a/src/core/lib/channel/handshaker_factory.cc b/src/core/lib/channel/handshaker_factory.cc index 4deb280c60d..663cdf4a695 100644 --- a/src/core/lib/channel/handshaker_factory.cc +++ b/src/core/lib/channel/handshaker_factory.cc @@ -21,19 +21,19 @@ #include <grpc/support/log.h> void grpc_handshaker_factory_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory, - const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr) { + grpc_handshaker_factory *handshaker_factory, const grpc_channel_args *args, + grpc_handshake_manager *handshake_mgr) { if (handshaker_factory != NULL) { GPR_ASSERT(handshaker_factory->vtable != NULL); - handshaker_factory->vtable->add_handshakers(exec_ctx, handshaker_factory, - args, handshake_mgr); + handshaker_factory->vtable->add_handshakers(handshaker_factory, args, + handshake_mgr); } } void grpc_handshaker_factory_destroy( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory) { + grpc_handshaker_factory *handshaker_factory) { if (handshaker_factory != NULL) { GPR_ASSERT(handshaker_factory->vtable != NULL); - handshaker_factory->vtable->destroy(exec_ctx, handshaker_factory); + handshaker_factory->vtable->destroy(handshaker_factory); } } diff --git a/src/core/lib/channel/handshaker_factory.h b/src/core/lib/channel/handshaker_factory.h index 59008adf057..ac07491d444 100644 --- a/src/core/lib/channel/handshaker_factory.h +++ b/src/core/lib/channel/handshaker_factory.h @@ -33,12 +33,10 @@ extern "C" { typedef struct grpc_handshaker_factory grpc_handshaker_factory; typedef struct { - void (*add_handshakers)(grpc_exec_ctx *exec_ctx, - grpc_handshaker_factory *handshaker_factory, + void (*add_handshakers)(grpc_handshaker_factory *handshaker_factory, const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr); - void (*destroy)(grpc_exec_ctx *exec_ctx, - grpc_handshaker_factory *handshaker_factory); + void (*destroy)(grpc_handshaker_factory *handshaker_factory); } grpc_handshaker_factory_vtable; struct grpc_handshaker_factory { @@ -46,11 +44,11 @@ struct grpc_handshaker_factory { }; void grpc_handshaker_factory_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory, - const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr); + grpc_handshaker_factory *handshaker_factory, const grpc_channel_args *args, + grpc_handshake_manager *handshake_mgr); void grpc_handshaker_factory_destroy( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory); + grpc_handshaker_factory *handshaker_factory); #ifdef __cplusplus } diff --git a/src/core/lib/channel/handshaker_registry.cc b/src/core/lib/channel/handshaker_registry.cc index c6bc87d704c..098eabf084f 100644 --- a/src/core/lib/channel/handshaker_registry.cc +++ b/src/core/lib/channel/handshaker_registry.cc @@ -47,18 +47,17 @@ static void grpc_handshaker_factory_list_register( } static void grpc_handshaker_factory_list_add_handshakers( - grpc_exec_ctx* exec_ctx, grpc_handshaker_factory_list* list, - const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) { + grpc_handshaker_factory_list* list, const grpc_channel_args* args, + grpc_handshake_manager* handshake_mgr) { for (size_t i = 0; i < list->num_factories; ++i) { - grpc_handshaker_factory_add_handshakers(exec_ctx, list->list[i], args, - handshake_mgr); + grpc_handshaker_factory_add_handshakers(list->list[i], args, handshake_mgr); } } static void grpc_handshaker_factory_list_destroy( - grpc_exec_ctx* exec_ctx, grpc_handshaker_factory_list* list) { + grpc_handshaker_factory_list* list) { for (size_t i = 0; i < list->num_factories; ++i) { - grpc_handshaker_factory_destroy(exec_ctx, list->list[i]); + grpc_handshaker_factory_destroy(list->list[i]); } gpr_free(list->list); } @@ -74,10 +73,9 @@ void grpc_handshaker_factory_registry_init() { memset(g_handshaker_factory_lists, 0, sizeof(g_handshaker_factory_lists)); } -void grpc_handshaker_factory_registry_shutdown(grpc_exec_ctx* exec_ctx) { +void grpc_handshaker_factory_registry_shutdown() { for (size_t i = 0; i < NUM_HANDSHAKER_TYPES; ++i) { - grpc_handshaker_factory_list_destroy(exec_ctx, - &g_handshaker_factory_lists[i]); + grpc_handshaker_factory_list_destroy(&g_handshaker_factory_lists[i]); } } @@ -88,11 +86,9 @@ void grpc_handshaker_factory_register(bool at_start, &g_handshaker_factory_lists[handshaker_type], at_start, factory); } -void grpc_handshakers_add(grpc_exec_ctx* exec_ctx, - grpc_handshaker_type handshaker_type, +void grpc_handshakers_add(grpc_handshaker_type handshaker_type, const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) { grpc_handshaker_factory_list_add_handshakers( - exec_ctx, &g_handshaker_factory_lists[handshaker_type], args, - handshake_mgr); + &g_handshaker_factory_lists[handshaker_type], args, handshake_mgr); } diff --git a/src/core/lib/channel/handshaker_registry.h b/src/core/lib/channel/handshaker_registry.h index ddd280bea8a..edcf205feed 100644 --- a/src/core/lib/channel/handshaker_registry.h +++ b/src/core/lib/channel/handshaker_registry.h @@ -35,7 +35,7 @@ typedef enum { } grpc_handshaker_type; void grpc_handshaker_factory_registry_init(); -void grpc_handshaker_factory_registry_shutdown(grpc_exec_ctx* exec_ctx); +void grpc_handshaker_factory_registry_shutdown(); /// Registers a new handshaker factory. Takes ownership. /// If \a at_start is true, the new handshaker will be at the beginning of @@ -44,8 +44,7 @@ void grpc_handshaker_factory_register(bool at_start, grpc_handshaker_type handshaker_type, grpc_handshaker_factory* factory); -void grpc_handshakers_add(grpc_exec_ctx* exec_ctx, - grpc_handshaker_type handshaker_type, +void grpc_handshakers_add(grpc_handshaker_type handshaker_type, const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr); diff --git a/src/core/lib/compression/message_compress.cc b/src/core/lib/compression/message_compress.cc index c051e28864f..aa43a53f2b7 100644 --- a/src/core/lib/compression/message_compress.cc +++ b/src/core/lib/compression/message_compress.cc @@ -29,8 +29,8 @@ #define OUTPUT_BLOCK_SIZE 1024 -static int zlib_body(grpc_exec_ctx* exec_ctx, z_stream* zs, - grpc_slice_buffer* input, grpc_slice_buffer* output, +static int zlib_body(z_stream* zs, grpc_slice_buffer* input, + grpc_slice_buffer* output, int (*flate)(z_stream* zs, int flush)) { int r; int flush; @@ -74,7 +74,7 @@ static int zlib_body(grpc_exec_ctx* exec_ctx, z_stream* zs, return 1; error: - grpc_slice_unref_internal(exec_ctx, outbuf); + grpc_slice_unref_internal(outbuf); return 0; } @@ -84,8 +84,8 @@ static void* zalloc_gpr(void* opaque, unsigned int items, unsigned int size) { static void zfree_gpr(void* opaque, void* address) { gpr_free(address); } -static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input, - grpc_slice_buffer* output, int gzip) { +static int zlib_compress(grpc_slice_buffer* input, grpc_slice_buffer* output, + int gzip) { z_stream zs; int r; size_t i; @@ -97,11 +97,10 @@ static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input, r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0), 8, Z_DEFAULT_STRATEGY); GPR_ASSERT(r == Z_OK); - r = zlib_body(exec_ctx, &zs, input, output, deflate) && - output->length < input->length; + r = zlib_body(&zs, input, output, deflate) && output->length < input->length; if (!r) { for (i = count_before; i < output->count; i++) { - grpc_slice_unref_internal(exec_ctx, output->slices[i]); + grpc_slice_unref_internal(output->slices[i]); } output->count = count_before; output->length = length_before; @@ -110,8 +109,8 @@ static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input, return r; } -static int zlib_decompress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input, - grpc_slice_buffer* output, int gzip) { +static int zlib_decompress(grpc_slice_buffer* input, grpc_slice_buffer* output, + int gzip) { z_stream zs; int r; size_t i; @@ -122,10 +121,10 @@ static int zlib_decompress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input, zs.zfree = zfree_gpr; r = inflateInit2(&zs, 15 | (gzip ? 16 : 0)); GPR_ASSERT(r == Z_OK); - r = zlib_body(exec_ctx, &zs, input, output, inflate); + r = zlib_body(&zs, input, output, inflate); if (!r) { for (i = count_before; i < output->count; i++) { - grpc_slice_unref_internal(exec_ctx, output->slices[i]); + grpc_slice_unref_internal(output->slices[i]); } output->count = count_before; output->length = length_before; @@ -142,8 +141,7 @@ static int copy(grpc_slice_buffer* input, grpc_slice_buffer* output) { return 1; } -static int compress_inner(grpc_exec_ctx* exec_ctx, - grpc_compression_algorithm algorithm, +static int compress_inner(grpc_compression_algorithm algorithm, grpc_slice_buffer* input, grpc_slice_buffer* output) { switch (algorithm) { case GRPC_COMPRESS_NONE: @@ -151,9 +149,9 @@ static int compress_inner(grpc_exec_ctx* exec_ctx, rely on that here */ return 0; case GRPC_COMPRESS_DEFLATE: - return zlib_compress(exec_ctx, input, output, 0); + return zlib_compress(input, output, 0); case GRPC_COMPRESS_GZIP: - return zlib_compress(exec_ctx, input, output, 1); + return zlib_compress(input, output, 1); case GRPC_COMPRESS_ALGORITHMS_COUNT: break; } @@ -161,26 +159,24 @@ static int compress_inner(grpc_exec_ctx* exec_ctx, return 0; } -int grpc_msg_compress(grpc_exec_ctx* exec_ctx, - grpc_compression_algorithm algorithm, +int grpc_msg_compress(grpc_compression_algorithm algorithm, grpc_slice_buffer* input, grpc_slice_buffer* output) { - if (!compress_inner(exec_ctx, algorithm, input, output)) { + if (!compress_inner(algorithm, input, output)) { copy(input, output); return 0; } return 1; } -int grpc_msg_decompress(grpc_exec_ctx* exec_ctx, - grpc_compression_algorithm algorithm, +int grpc_msg_decompress(grpc_compression_algorithm algorithm, grpc_slice_buffer* input, grpc_slice_buffer* output) { switch (algorithm) { case GRPC_COMPRESS_NONE: return copy(input, output); case GRPC_COMPRESS_DEFLATE: - return zlib_decompress(exec_ctx, input, output, 0); + return zlib_decompress(input, output, 0); case GRPC_COMPRESS_GZIP: - return zlib_decompress(exec_ctx, input, output, 1); + return zlib_decompress(input, output, 1); case GRPC_COMPRESS_ALGORITHMS_COUNT: break; } diff --git a/src/core/lib/compression/message_compress.h b/src/core/lib/compression/message_compress.h index fffe175fd22..9e109127ebd 100644 --- a/src/core/lib/compression/message_compress.h +++ b/src/core/lib/compression/message_compress.h @@ -29,15 +29,13 @@ extern "C" { /* compress 'input' to 'output' using 'algorithm'. On success, appends compressed slices to output and returns 1. On failure, appends uncompressed slices to output and returns 0. */ -int grpc_msg_compress(grpc_exec_ctx* exec_ctx, - grpc_compression_algorithm algorithm, +int grpc_msg_compress(grpc_compression_algorithm algorithm, grpc_slice_buffer* input, grpc_slice_buffer* output); /* decompress 'input' to 'output' using 'algorithm'. On success, appends slices to output and returns 1. On failure, output is unchanged, and returns 0. */ -int grpc_msg_decompress(grpc_exec_ctx* exec_ctx, - grpc_compression_algorithm algorithm, +int grpc_msg_decompress(grpc_compression_algorithm algorithm, grpc_slice_buffer* input, grpc_slice_buffer* output); #ifdef __cplusplus diff --git a/src/core/lib/compression/stream_compression_gzip.cc b/src/core/lib/compression/stream_compression_gzip.cc index 087b018be54..d1d55645594 100644 --- a/src/core/lib/compression/stream_compression_gzip.cc +++ b/src/core/lib/compression/stream_compression_gzip.cc @@ -40,7 +40,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip *ctx, /* Full flush is not allowed when inflating. */ GPR_ASSERT(!(ctx->flate == inflate && (flush == Z_FINISH))); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; int r; bool eoc = false; size_t original_max_output_size = max_output_size; @@ -57,8 +57,8 @@ static bool gzip_flate(grpc_stream_compression_context_gzip *ctx, r = ctx->flate(&ctx->zs, Z_NO_FLUSH); if (r < 0 && r != Z_BUF_ERROR) { gpr_log(GPR_ERROR, "zlib error (%d)", r); - grpc_slice_unref_internal(&exec_ctx, slice_out); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(slice_out); + grpc_exec_ctx_finish(); return false; } else if (r == Z_STREAM_END && ctx->flate == inflate) { eoc = true; @@ -69,7 +69,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip *ctx, grpc_slice_sub(slice, GRPC_SLICE_LENGTH(slice) - ctx->zs.avail_in, GRPC_SLICE_LENGTH(slice))); } - grpc_slice_unref_internal(&exec_ctx, slice); + grpc_slice_unref_internal(slice); } if (flush != 0 && ctx->zs.avail_out > 0 && !eoc) { GPR_ASSERT(in->length == 0); @@ -88,8 +88,8 @@ static bool gzip_flate(grpc_stream_compression_context_gzip *ctx, break; default: gpr_log(GPR_ERROR, "zlib error (%d)", r); - grpc_slice_unref_internal(&exec_ctx, slice_out); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(slice_out); + grpc_exec_ctx_finish(); return false; } } else if (flush == Z_FINISH) { @@ -104,8 +104,8 @@ static bool gzip_flate(grpc_stream_compression_context_gzip *ctx, break; default: gpr_log(GPR_ERROR, "zlib error (%d)", r); - grpc_slice_unref_internal(&exec_ctx, slice_out); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(slice_out); + grpc_exec_ctx_finish(); return false; } } @@ -117,11 +117,11 @@ static bool gzip_flate(grpc_stream_compression_context_gzip *ctx, slice_out.data.refcounted.length -= ctx->zs.avail_out; grpc_slice_buffer_add(out, slice_out); } else { - grpc_slice_unref_internal(&exec_ctx, slice_out); + grpc_slice_unref_internal(slice_out); } max_output_size -= (slice_size - ctx->zs.avail_out); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); if (end_of_context) { *end_of_context = eoc; } diff --git a/src/core/lib/debug/stats.cc b/src/core/lib/debug/stats.cc index 4096384dd92..3117de920e6 100644 --- a/src/core/lib/debug/stats.cc +++ b/src/core/lib/debug/stats.cc @@ -62,9 +62,9 @@ void grpc_stats_diff(const grpc_stats_data *b, const grpc_stats_data *a, } } -int grpc_stats_histo_find_bucket_slow(grpc_exec_ctx *exec_ctx, int value, - const int *table, int table_size) { - GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS(exec_ctx); +int grpc_stats_histo_find_bucket_slow(int value, const int *table, + int table_size) { + GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS(); const int *const start = table; while (table_size > 0) { int step = table_size / 2; diff --git a/src/core/lib/debug/stats.h b/src/core/lib/debug/stats.h index fec1d651e6a..69d1a9e6bfe 100644 --- a/src/core/lib/debug/stats.h +++ b/src/core/lib/debug/stats.h @@ -34,17 +34,15 @@ typedef struct grpc_stats_data { extern grpc_stats_data *grpc_stats_per_cpu_storage; -#define GRPC_THREAD_STATS_DATA(exec_ctx) \ +#define GRPC_THREAD_STATS_DATA() \ (&grpc_stats_per_cpu_storage[(exec_ctx)->starting_cpu]) -#define GRPC_STATS_INC_COUNTER(exec_ctx, ctr) \ - (gpr_atm_no_barrier_fetch_add( \ - &GRPC_THREAD_STATS_DATA((exec_ctx))->counters[(ctr)], 1)) +#define GRPC_STATS_INC_COUNTER(ctr) \ + (gpr_atm_no_barrier_fetch_add(&GRPC_THREAD_STATS_DATA()->counters[(ctr)], 1)) -#define GRPC_STATS_INC_HISTOGRAM(exec_ctx, histogram, index) \ - (gpr_atm_no_barrier_fetch_add( \ - &GRPC_THREAD_STATS_DATA((exec_ctx)) \ - ->histograms[histogram##_FIRST_SLOT + (index)], \ +#define GRPC_STATS_INC_HISTOGRAM(histogram, index) \ + (gpr_atm_no_barrier_fetch_add( \ + &GRPC_THREAD_STATS_DATA()->histograms[histogram##_FIRST_SLOT + (index)], \ 1)) void grpc_stats_init(void); @@ -54,8 +52,8 @@ void grpc_stats_collect(grpc_stats_data *output); void grpc_stats_diff(const grpc_stats_data *b, const grpc_stats_data *a, grpc_stats_data *c); char *grpc_stats_data_as_json(const grpc_stats_data *data); -int grpc_stats_histo_find_bucket_slow(grpc_exec_ctx *exec_ctx, int value, - const int *table, int table_size); +int grpc_stats_histo_find_bucket_slow(int value, const int *table, + int table_size); double grpc_stats_histo_percentile(const grpc_stats_data *data, grpc_stats_histograms histogram, double percentile); diff --git a/src/core/lib/debug/stats_data.cc b/src/core/lib/debug/stats_data.cc index 5d737c56cbf..9b087a5ed1b 100644 --- a/src/core/lib/debug/stats_data.cc +++ b/src/core/lib/debug/stats_data.cc @@ -339,11 +339,10 @@ const uint8_t grpc_stats_table_7[102] = { 42, 42, 43, 44, 44, 45, 46, 46, 47, 48, 48, 49, 49, 50, 50, 51, 51}; const int grpc_stats_table_8[9] = {0, 1, 2, 4, 7, 13, 23, 39, 64}; const uint8_t grpc_stats_table_9[9] = {0, 0, 1, 2, 2, 3, 4, 4, 5}; -void grpc_stats_inc_call_initial_size(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_call_initial_size(int value) { value = GPR_CLAMP(value, 0, 262144); if (value < 6) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, - value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, value); return; } union { @@ -356,19 +355,17 @@ void grpc_stats_inc_call_initial_size(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_1[((_val.uint - 4618441417868443648ull) >> 49)] + 6; _bkt.dbl = grpc_stats_table_0[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, - bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_0, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_0, 64)); } -void grpc_stats_inc_poll_events_returned(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_poll_events_returned(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 29) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, value); return; } union { @@ -381,20 +378,17 @@ void grpc_stats_inc_poll_events_returned(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_3[((_val.uint - 4628855992006737920ull) >> 47)] + 29; _bkt.dbl = grpc_stats_table_2[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_2, 128)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_2, 128)); } -void grpc_stats_inc_tcp_write_size(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_tcp_write_size(int value) { value = GPR_CLAMP(value, 0, 16777216); if (value < 5) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, - value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, value); return; } union { @@ -407,19 +401,17 @@ void grpc_stats_inc_tcp_write_size(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5; _bkt.dbl = grpc_stats_table_4[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, - bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_4, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64)); } -void grpc_stats_inc_tcp_write_iov_size(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_tcp_write_iov_size(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 13) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, value); return; } union { @@ -432,19 +424,17 @@ void grpc_stats_inc_tcp_write_iov_size(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13; _bkt.dbl = grpc_stats_table_6[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_6, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64)); } -void grpc_stats_inc_tcp_read_size(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_tcp_read_size(int value) { value = GPR_CLAMP(value, 0, 16777216); if (value < 5) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, - value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, value); return; } union { @@ -457,19 +447,17 @@ void grpc_stats_inc_tcp_read_size(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5; _bkt.dbl = grpc_stats_table_4[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, - bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_4, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64)); } -void grpc_stats_inc_tcp_read_offer(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_tcp_read_offer(int value) { value = GPR_CLAMP(value, 0, 16777216); if (value < 5) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, - value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, value); return; } union { @@ -482,20 +470,18 @@ void grpc_stats_inc_tcp_read_offer(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5; _bkt.dbl = grpc_stats_table_4[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, - bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_4, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64)); } -void grpc_stats_inc_tcp_read_offer_iov_size(grpc_exec_ctx *exec_ctx, - int value) { +void grpc_stats_inc_tcp_read_offer_iov_size(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 13) { - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, + value); return; } union { @@ -508,21 +494,19 @@ void grpc_stats_inc_tcp_read_offer_iov_size(grpc_exec_ctx *exec_ctx, grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13; _bkt.dbl = grpc_stats_table_6[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, + bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_6, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64)); } -void grpc_stats_inc_http2_send_message_size(grpc_exec_ctx *exec_ctx, - int value) { +void grpc_stats_inc_http2_send_message_size(int value) { value = GPR_CLAMP(value, 0, 16777216); if (value < 5) { - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, + value); return; } union { @@ -535,22 +519,19 @@ void grpc_stats_inc_http2_send_message_size(grpc_exec_ctx *exec_ctx, grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5; _bkt.dbl = grpc_stats_table_4[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, + bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_4, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64)); } -void grpc_stats_inc_http2_send_initial_metadata_per_write( - grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_http2_send_initial_metadata_per_write(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 13) { GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, - value); + GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, value); return; } union { @@ -564,21 +545,18 @@ void grpc_stats_inc_http2_send_initial_metadata_per_write( _bkt.dbl = grpc_stats_table_6[bucket]; bucket -= (_val.uint < _bkt.uint); GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, - bucket); + GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, bucket); return; } GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, - grpc_stats_histo_find_bucket_slow((exec_ctx), value, grpc_stats_table_6, - 64)); + GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64)); } -void grpc_stats_inc_http2_send_message_per_write(grpc_exec_ctx *exec_ctx, - int value) { +void grpc_stats_inc_http2_send_message_per_write(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 13) { - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE, + value); return; } union { @@ -591,22 +569,19 @@ void grpc_stats_inc_http2_send_message_per_write(grpc_exec_ctx *exec_ctx, grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13; _bkt.dbl = grpc_stats_table_6[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE, + bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_6, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64)); } -void grpc_stats_inc_http2_send_trailing_metadata_per_write( - grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_http2_send_trailing_metadata_per_write(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 13) { GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, - value); + GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, value); return; } union { @@ -620,21 +595,18 @@ void grpc_stats_inc_http2_send_trailing_metadata_per_write( _bkt.dbl = grpc_stats_table_6[bucket]; bucket -= (_val.uint < _bkt.uint); GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, - bucket); + GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, bucket); return; } GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, - grpc_stats_histo_find_bucket_slow((exec_ctx), value, grpc_stats_table_6, - 64)); + GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64)); } -void grpc_stats_inc_http2_send_flowctl_per_write(grpc_exec_ctx *exec_ctx, - int value) { +void grpc_stats_inc_http2_send_flowctl_per_write(int value) { value = GPR_CLAMP(value, 0, 1024); if (value < 13) { - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE, + value); return; } union { @@ -647,20 +619,18 @@ void grpc_stats_inc_http2_send_flowctl_per_write(grpc_exec_ctx *exec_ctx, grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13; _bkt.dbl = grpc_stats_table_6[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM( - (exec_ctx), GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE, + bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_6, 64)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64)); } -void grpc_stats_inc_server_cqs_checked(grpc_exec_ctx *exec_ctx, int value) { +void grpc_stats_inc_server_cqs_checked(int value) { value = GPR_CLAMP(value, 0, 64); if (value < 3) { - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, value); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, value); return; } union { @@ -673,13 +643,12 @@ void grpc_stats_inc_server_cqs_checked(grpc_exec_ctx *exec_ctx, int value) { grpc_stats_table_9[((_val.uint - 4613937818241073152ull) >> 51)] + 3; _bkt.dbl = grpc_stats_table_8[bucket]; bucket -= (_val.uint < _bkt.uint); - GRPC_STATS_INC_HISTOGRAM((exec_ctx), - GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, bucket); + GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, bucket); return; } - GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, - grpc_stats_histo_find_bucket_slow( - (exec_ctx), value, grpc_stats_table_8, 8)); + GRPC_STATS_INC_HISTOGRAM( + GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, + grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_8, 8)); } const int grpc_stats_histo_buckets[13] = {64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8}; @@ -691,7 +660,7 @@ const int *const grpc_stats_histo_bucket_boundaries[13] = { grpc_stats_table_6, grpc_stats_table_4, grpc_stats_table_6, grpc_stats_table_6, grpc_stats_table_6, grpc_stats_table_6, grpc_stats_table_8}; -void (*const grpc_stats_inc_histogram[13])(grpc_exec_ctx *exec_ctx, int x) = { +void (*const grpc_stats_inc_histogram[13])(int x) = { grpc_stats_inc_call_initial_size, grpc_stats_inc_poll_events_returned, grpc_stats_inc_tcp_write_size, diff --git a/src/core/lib/debug/stats_data.h b/src/core/lib/debug/stats_data.h index 031942df5c5..a92153ee89f 100644 --- a/src/core/lib/debug/stats_data.h +++ b/src/core/lib/debug/stats_data.h @@ -176,331 +176,263 @@ typedef enum { GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED_BUCKETS = 8, GRPC_STATS_HISTOGRAM_BUCKETS = 840 } grpc_stats_histogram_constants; -#define GRPC_STATS_INC_CLIENT_CALLS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_CLIENT_CALLS_CREATED) -#define GRPC_STATS_INC_SERVER_CALLS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SERVER_CALLS_CREATED) -#define GRPC_STATS_INC_CQS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_CQS_CREATED) -#define GRPC_STATS_INC_CLIENT_CHANNELS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_CLIENT_CHANNELS_CREATED) -#define GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_CLIENT_SUBCHANNELS_CREATED) -#define GRPC_STATS_INC_SERVER_CHANNELS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SERVER_CHANNELS_CREATED) -#define GRPC_STATS_INC_SYSCALL_POLL(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SYSCALL_POLL) -#define GRPC_STATS_INC_SYSCALL_WAIT(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SYSCALL_WAIT) -#define GRPC_STATS_INC_POLLSET_KICK(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_POLLSET_KICK) -#define GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_POLLSET_KICKED_WITHOUT_POLLER) -#define GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_POLLSET_KICKED_AGAIN) -#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_FD) -#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_CV) -#define GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_POLLSET_KICK_OWN_THREAD) -#define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS) -#define GRPC_STATS_INC_SYSCALL_WRITE(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SYSCALL_WRITE) -#define GRPC_STATS_INC_SYSCALL_READ(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SYSCALL_READ) -#define GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_TCP_BACKUP_POLLERS_CREATED) -#define GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_TCP_BACKUP_POLLER_POLLS) -#define GRPC_STATS_INC_HTTP2_OP_BATCHES(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_OP_BATCHES) -#define GRPC_STATS_INC_HTTP2_OP_CANCEL(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_OP_CANCEL) -#define GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_OP_SEND_INITIAL_METADATA) -#define GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_OP_SEND_MESSAGE) -#define GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_OP_SEND_TRAILING_METADATA) -#define GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_OP_RECV_INITIAL_METADATA) -#define GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_OP_RECV_MESSAGE) -#define GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_OP_RECV_TRAILING_METADATA) -#define GRPC_STATS_INC_HTTP2_SETTINGS_WRITES(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_SETTINGS_WRITES) -#define GRPC_STATS_INC_HTTP2_PINGS_SENT(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_PINGS_SENT) -#define GRPC_STATS_INC_HTTP2_WRITES_BEGUN(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_WRITES_BEGUN) -#define GRPC_STATS_INC_HTTP2_WRITES_OFFLOADED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_WRITES_OFFLOADED) -#define GRPC_STATS_INC_HTTP2_WRITES_CONTINUED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_WRITES_CONTINUED) -#define GRPC_STATS_INC_HTTP2_PARTIAL_WRITES(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HTTP2_PARTIAL_WRITES) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_CLIENT_CALLS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CLIENT_CALLS_CREATED) +#define GRPC_STATS_INC_SERVER_CALLS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_CALLS_CREATED) +#define GRPC_STATS_INC_CQS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQS_CREATED) +#define GRPC_STATS_INC_CLIENT_CHANNELS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CLIENT_CHANNELS_CREATED) +#define GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CLIENT_SUBCHANNELS_CREATED) +#define GRPC_STATS_INC_SERVER_CHANNELS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_CHANNELS_CREATED) +#define GRPC_STATS_INC_SYSCALL_POLL() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_POLL) +#define GRPC_STATS_INC_SYSCALL_WAIT() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_WAIT) +#define GRPC_STATS_INC_POLLSET_KICK() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK) +#define GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICKED_WITHOUT_POLLER) +#define GRPC_STATS_INC_POLLSET_KICKED_AGAIN() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICKED_AGAIN) +#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_FD) +#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_CV) +#define GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_OWN_THREAD) +#define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS) +#define GRPC_STATS_INC_SYSCALL_WRITE() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_WRITE) +#define GRPC_STATS_INC_SYSCALL_READ() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_READ) +#define GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_TCP_BACKUP_POLLERS_CREATED) +#define GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_TCP_BACKUP_POLLER_POLLS) +#define GRPC_STATS_INC_HTTP2_OP_BATCHES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_BATCHES) +#define GRPC_STATS_INC_HTTP2_OP_CANCEL() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_CANCEL) +#define GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_SEND_INITIAL_METADATA) +#define GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_SEND_MESSAGE) +#define GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_SEND_TRAILING_METADATA) +#define GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_RECV_INITIAL_METADATA) +#define GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_RECV_MESSAGE) +#define GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_RECV_TRAILING_METADATA) +#define GRPC_STATS_INC_HTTP2_SETTINGS_WRITES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_SETTINGS_WRITES) +#define GRPC_STATS_INC_HTTP2_PINGS_SENT() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_PINGS_SENT) +#define GRPC_STATS_INC_HTTP2_WRITES_BEGUN() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_WRITES_BEGUN) +#define GRPC_STATS_INC_HTTP2_WRITES_OFFLOADED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_WRITES_OFFLOADED) +#define GRPC_STATS_INC_HTTP2_WRITES_CONTINUED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_WRITES_CONTINUED) +#define GRPC_STATS_INC_HTTP2_PARTIAL_WRITES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_PARTIAL_WRITES) +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA( \ - exec_ctx) \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE() \ + GRPC_STATS_INC_COUNTER( \ + GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE) +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA() \ GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ + GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA) +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT() \ + GRPC_STATS_INC_COUNTER( \ + GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT) +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM() \ + GRPC_STATS_INC_COUNTER( \ + GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM) +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED( \ - exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE() \ + GRPC_STATS_INC_COUNTER( \ GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE) -#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM) -#define GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HTTP2_SPURIOUS_WRITES_BEGUN) -#define GRPC_STATS_INC_HPACK_RECV_INDEXED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_RECV_INDEXED) -#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX) -#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX_V) -#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX) -#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX_V) -#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX) -#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX_V) -#define GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_RECV_UNCOMPRESSED) -#define GRPC_STATS_INC_HPACK_RECV_HUFFMAN(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_RECV_HUFFMAN) -#define GRPC_STATS_INC_HPACK_RECV_BINARY(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_RECV_BINARY) -#define GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_RECV_BINARY_BASE64) -#define GRPC_STATS_INC_HPACK_SEND_INDEXED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_SEND_INDEXED) -#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX) -#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX_V) -#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX) -#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX_V) -#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX) -#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX_V(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX_V) -#define GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_SEND_UNCOMPRESSED) -#define GRPC_STATS_INC_HPACK_SEND_HUFFMAN(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_SEND_HUFFMAN) -#define GRPC_STATS_INC_HPACK_SEND_BINARY(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_HPACK_SEND_BINARY) -#define GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_HPACK_SEND_BINARY_BASE64) -#define GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_COMBINER_LOCKS_INITIATED) -#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_ITEMS) -#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(exec_ctx) \ +#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM() \ GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS) -#define GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_COMBINER_LOCKS_OFFLOADED) -#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_INITIATED) -#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS) -#define GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_CALL_COMBINER_SET_NOTIFY_ON_CANCEL) -#define GRPC_STATS_INC_CALL_COMBINER_CANCELLED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_CALL_COMBINER_CANCELLED) -#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_SHORT_ITEMS) -#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_LONG_ITEMS) -#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_TO_SELF) -#define GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_EXECUTOR_WAKEUP_INITIATED) -#define GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_EXECUTOR_QUEUE_DRAINED) -#define GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_EXECUTOR_PUSH_RETRIES) -#define GRPC_STATS_INC_SERVER_REQUESTED_CALLS(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_SERVER_REQUESTED_CALLS) -#define GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_SERVER_SLOWPATH_REQUESTS_QUEUED) -#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_FAILURES) -#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES(exec_ctx) \ - GRPC_STATS_INC_COUNTER((exec_ctx), \ - GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_SUCCESSES) -#define GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES(exec_ctx) \ - GRPC_STATS_INC_COUNTER( \ - (exec_ctx), GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES) -#define GRPC_STATS_INC_CALL_INITIAL_SIZE(exec_ctx, value) \ - grpc_stats_inc_call_initial_size((exec_ctx), (int)(value)) -void grpc_stats_inc_call_initial_size(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_POLL_EVENTS_RETURNED(exec_ctx, value) \ - grpc_stats_inc_poll_events_returned((exec_ctx), (int)(value)) -void grpc_stats_inc_poll_events_returned(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_TCP_WRITE_SIZE(exec_ctx, value) \ - grpc_stats_inc_tcp_write_size((exec_ctx), (int)(value)) -void grpc_stats_inc_tcp_write_size(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(exec_ctx, value) \ - grpc_stats_inc_tcp_write_iov_size((exec_ctx), (int)(value)) -void grpc_stats_inc_tcp_write_iov_size(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_TCP_READ_SIZE(exec_ctx, value) \ - grpc_stats_inc_tcp_read_size((exec_ctx), (int)(value)) -void grpc_stats_inc_tcp_read_size(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_TCP_READ_OFFER(exec_ctx, value) \ - grpc_stats_inc_tcp_read_offer((exec_ctx), (int)(value)) -void grpc_stats_inc_tcp_read_offer(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(exec_ctx, value) \ - grpc_stats_inc_tcp_read_offer_iov_size((exec_ctx), (int)(value)) -void grpc_stats_inc_tcp_read_offer_iov_size(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(exec_ctx, value) \ - grpc_stats_inc_http2_send_message_size((exec_ctx), (int)(value)) -void grpc_stats_inc_http2_send_message_size(grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE(exec_ctx, value) \ - grpc_stats_inc_http2_send_initial_metadata_per_write((exec_ctx), (int)(value)) -void grpc_stats_inc_http2_send_initial_metadata_per_write( - grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(exec_ctx, value) \ - grpc_stats_inc_http2_send_message_per_write((exec_ctx), (int)(value)) -void grpc_stats_inc_http2_send_message_per_write(grpc_exec_ctx *exec_ctx, - int x); -#define GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE(exec_ctx, value) \ - grpc_stats_inc_http2_send_trailing_metadata_per_write((exec_ctx), \ - (int)(value)) -void grpc_stats_inc_http2_send_trailing_metadata_per_write( - grpc_exec_ctx *exec_ctx, int x); -#define GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(exec_ctx, value) \ - grpc_stats_inc_http2_send_flowctl_per_write((exec_ctx), (int)(value)) -void grpc_stats_inc_http2_send_flowctl_per_write(grpc_exec_ctx *exec_ctx, - int x); -#define GRPC_STATS_INC_SERVER_CQS_CHECKED(exec_ctx, value) \ - grpc_stats_inc_server_cqs_checked((exec_ctx), (int)(value)) -void grpc_stats_inc_server_cqs_checked(grpc_exec_ctx *exec_ctx, int x); + GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM) +#define GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_SPURIOUS_WRITES_BEGUN) +#define GRPC_STATS_INC_HPACK_RECV_INDEXED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_INDEXED) +#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX) +#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX_V) +#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX) +#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX_V) +#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX) +#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX_V) +#define GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_UNCOMPRESSED) +#define GRPC_STATS_INC_HPACK_RECV_HUFFMAN() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_HUFFMAN) +#define GRPC_STATS_INC_HPACK_RECV_BINARY() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_BINARY) +#define GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_BINARY_BASE64) +#define GRPC_STATS_INC_HPACK_SEND_INDEXED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_INDEXED) +#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX) +#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX_V) +#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX) +#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX_V) +#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX) +#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX_V() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX_V) +#define GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_UNCOMPRESSED) +#define GRPC_STATS_INC_HPACK_SEND_HUFFMAN() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_HUFFMAN) +#define GRPC_STATS_INC_HPACK_SEND_BINARY() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_BINARY) +#define GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_BINARY_BASE64) +#define GRPC_STATS_INC_COMBINER_LOCKS_INITIATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_COMBINER_LOCKS_INITIATED) +#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_ITEMS) +#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS() \ + GRPC_STATS_INC_COUNTER( \ + GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS) +#define GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_COMBINER_LOCKS_OFFLOADED) +#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_INITIATED) +#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS) +#define GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_SET_NOTIFY_ON_CANCEL) +#define GRPC_STATS_INC_CALL_COMBINER_CANCELLED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_CANCELLED) +#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_SHORT_ITEMS) +#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_LONG_ITEMS) +#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_TO_SELF) +#define GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_WAKEUP_INITIATED) +#define GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_QUEUE_DRAINED) +#define GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_PUSH_RETRIES) +#define GRPC_STATS_INC_SERVER_REQUESTED_CALLS() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_REQUESTED_CALLS) +#define GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_SLOWPATH_REQUESTS_QUEUED) +#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_FAILURES) +#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_SUCCESSES) +#define GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES() \ + GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES) +#define GRPC_STATS_INC_CALL_INITIAL_SIZE(value) \ + grpc_stats_inc_call_initial_size((int)(value)) +void grpc_stats_inc_call_initial_size(int x); +#define GRPC_STATS_INC_POLL_EVENTS_RETURNED(value) \ + grpc_stats_inc_poll_events_returned((int)(value)) +void grpc_stats_inc_poll_events_returned(int x); +#define GRPC_STATS_INC_TCP_WRITE_SIZE(value) \ + grpc_stats_inc_tcp_write_size((int)(value)) +void grpc_stats_inc_tcp_write_size(int x); +#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(value) \ + grpc_stats_inc_tcp_write_iov_size((int)(value)) +void grpc_stats_inc_tcp_write_iov_size(int x); +#define GRPC_STATS_INC_TCP_READ_SIZE(value) \ + grpc_stats_inc_tcp_read_size((int)(value)) +void grpc_stats_inc_tcp_read_size(int x); +#define GRPC_STATS_INC_TCP_READ_OFFER(value) \ + grpc_stats_inc_tcp_read_offer((int)(value)) +void grpc_stats_inc_tcp_read_offer(int x); +#define GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(value) \ + grpc_stats_inc_tcp_read_offer_iov_size((int)(value)) +void grpc_stats_inc_tcp_read_offer_iov_size(int x); +#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(value) \ + grpc_stats_inc_http2_send_message_size((int)(value)) +void grpc_stats_inc_http2_send_message_size(int x); +#define GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE(value) \ + grpc_stats_inc_http2_send_initial_metadata_per_write((int)(value)) +void grpc_stats_inc_http2_send_initial_metadata_per_write(int x); +#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(value) \ + grpc_stats_inc_http2_send_message_per_write((int)(value)) +void grpc_stats_inc_http2_send_message_per_write(int x); +#define GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE(value) \ + grpc_stats_inc_http2_send_trailing_metadata_per_write((int)(value)) +void grpc_stats_inc_http2_send_trailing_metadata_per_write(int x); +#define GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(value) \ + grpc_stats_inc_http2_send_flowctl_per_write((int)(value)) +void grpc_stats_inc_http2_send_flowctl_per_write(int x); +#define GRPC_STATS_INC_SERVER_CQS_CHECKED(value) \ + grpc_stats_inc_server_cqs_checked((int)(value)) +void grpc_stats_inc_server_cqs_checked(int x); extern const int grpc_stats_histo_buckets[13]; extern const int grpc_stats_histo_start[13]; extern const int *const grpc_stats_histo_bucket_boundaries[13]; -extern void (*const grpc_stats_inc_histogram[13])(grpc_exec_ctx *exec_ctx, - int x); +extern void (*const grpc_stats_inc_histogram[13])(int x); #ifdef __cplusplus } diff --git a/src/core/lib/http/httpcli.cc b/src/core/lib/http/httpcli.cc index c96800b85c7..02da35ea990 100644 --- a/src/core/lib/http/httpcli.cc +++ b/src/core/lib/http/httpcli.cc @@ -63,13 +63,11 @@ typedef struct { static grpc_httpcli_get_override g_get_override = NULL; static grpc_httpcli_post_override g_post_override = NULL; -static void plaintext_handshake(grpc_exec_ctx *exec_ctx, void *arg, - grpc_endpoint *endpoint, const char *host, - grpc_millis deadline, - void (*on_done)(grpc_exec_ctx *exec_ctx, - void *arg, +static void plaintext_handshake(void *arg, grpc_endpoint *endpoint, + const char *host, grpc_millis deadline, + void (*on_done)(void *arg, grpc_endpoint *endpoint)) { - on_done(exec_ctx, arg, endpoint); + on_done(arg, endpoint); } const grpc_httpcli_handshaker grpc_httpcli_plaintext = {"http", @@ -79,34 +77,31 @@ void grpc_httpcli_context_init(grpc_httpcli_context *context) { context->pollset_set = grpc_pollset_set_create(); } -void grpc_httpcli_context_destroy(grpc_exec_ctx *exec_ctx, - grpc_httpcli_context *context) { - grpc_pollset_set_destroy(exec_ctx, context->pollset_set); +void grpc_httpcli_context_destroy(grpc_httpcli_context *context) { + grpc_pollset_set_destroy(context->pollset_set); } -static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req, - grpc_error *due_to_error); +static void next_address(internal_request *req, grpc_error *due_to_error); -static void finish(grpc_exec_ctx *exec_ctx, internal_request *req, - grpc_error *error) { - grpc_polling_entity_del_from_pollset_set(exec_ctx, req->pollent, +static void finish(internal_request *req, grpc_error *error) { + grpc_polling_entity_del_from_pollset_set(req->pollent, req->context->pollset_set); - GRPC_CLOSURE_SCHED(exec_ctx, req->on_done, error); + GRPC_CLOSURE_SCHED(req->on_done, error); grpc_http_parser_destroy(&req->parser); if (req->addresses != NULL) { grpc_resolved_addresses_destroy(req->addresses); } if (req->ep != NULL) { - grpc_endpoint_destroy(exec_ctx, req->ep); + grpc_endpoint_destroy(req->ep); } - grpc_slice_unref_internal(exec_ctx, req->request_text); + grpc_slice_unref_internal(req->request_text); gpr_free(req->host); gpr_free(req->ssl_host_override); grpc_iomgr_unregister_object(&req->iomgr_obj); - grpc_slice_buffer_destroy_internal(exec_ctx, &req->incoming); - grpc_slice_buffer_destroy_internal(exec_ctx, &req->outgoing); + grpc_slice_buffer_destroy_internal(&req->incoming); + grpc_slice_buffer_destroy_internal(&req->outgoing); GRPC_ERROR_UNREF(req->overall_error); - grpc_resource_quota_unref_internal(exec_ctx, req->resource_quota); + grpc_resource_quota_unref_internal(req->resource_quota); gpr_free(req); } @@ -124,12 +119,11 @@ static void append_error(internal_request *req, grpc_error *error) { gpr_free(addr_text); } -static void do_read(grpc_exec_ctx *exec_ctx, internal_request *req) { - grpc_endpoint_read(exec_ctx, req->ep, &req->incoming, &req->on_read); +static void do_read(internal_request *req) { + grpc_endpoint_read(req->ep, &req->incoming, &req->on_read); } -static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *error) { +static void on_read(void *user_data, grpc_error *error) { internal_request *req = (internal_request *)user_data; size_t i; @@ -139,76 +133,70 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, grpc_error *err = grpc_http_parser_parse(&req->parser, req->incoming.slices[i], NULL); if (err != GRPC_ERROR_NONE) { - finish(exec_ctx, req, err); + finish(req, err); return; } } } if (error == GRPC_ERROR_NONE) { - do_read(exec_ctx, req); + do_read(req); } else if (!req->have_read_byte) { - next_address(exec_ctx, req, GRPC_ERROR_REF(error)); + next_address(req, GRPC_ERROR_REF(error)); } else { - finish(exec_ctx, req, grpc_http_parser_eof(&req->parser)); + finish(req, grpc_http_parser_eof(&req->parser)); } } -static void on_written(grpc_exec_ctx *exec_ctx, internal_request *req) { - do_read(exec_ctx, req); -} +static void on_written(internal_request *req) { do_read(req); } -static void done_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void done_write(void *arg, grpc_error *error) { internal_request *req = (internal_request *)arg; if (error == GRPC_ERROR_NONE) { - on_written(exec_ctx, req); + on_written(req); } else { - next_address(exec_ctx, req, GRPC_ERROR_REF(error)); + next_address(req, GRPC_ERROR_REF(error)); } } -static void start_write(grpc_exec_ctx *exec_ctx, internal_request *req) { +static void start_write(internal_request *req) { grpc_slice_ref_internal(req->request_text); grpc_slice_buffer_add(&req->outgoing, req->request_text); - grpc_endpoint_write(exec_ctx, req->ep, &req->outgoing, &req->done_write); + grpc_endpoint_write(req->ep, &req->outgoing, &req->done_write); } -static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_endpoint *ep) { +static void on_handshake_done(void *arg, grpc_endpoint *ep) { internal_request *req = (internal_request *)arg; if (!ep) { - next_address(exec_ctx, req, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "Unexplained handshake failure")); + next_address(req, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Unexplained handshake failure")); return; } req->ep = ep; - start_write(exec_ctx, req); + start_write(req); } -static void on_connected(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_connected(void *arg, grpc_error *error) { internal_request *req = (internal_request *)arg; if (!req->ep) { - next_address(exec_ctx, req, GRPC_ERROR_REF(error)); + next_address(req, GRPC_ERROR_REF(error)); return; } req->handshaker->handshake( - exec_ctx, req, req->ep, - req->ssl_host_override ? req->ssl_host_override : req->host, + req, req->ep, req->ssl_host_override ? req->ssl_host_override : req->host, req->deadline, on_handshake_done); } -static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req, - grpc_error *error) { +static void next_address(internal_request *req, grpc_error *error) { grpc_resolved_address *addr; if (error != GRPC_ERROR_NONE) { append_error(req, error); } if (req->next_address == req->addresses->naddrs) { - finish(exec_ctx, req, + finish(req, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Failed HTTP requests to all targets", &req->overall_error, 1)); return; @@ -220,23 +208,21 @@ static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req, (char *)GRPC_ARG_RESOURCE_QUOTA, req->resource_quota, grpc_resource_quota_arg_vtable()); grpc_channel_args args = {1, &arg}; - grpc_tcp_client_connect(exec_ctx, &req->connected, &req->ep, - req->context->pollset_set, &args, addr, - req->deadline); + grpc_tcp_client_connect(&req->connected, &req->ep, req->context->pollset_set, + &args, addr, req->deadline); } -static void on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_resolved(void *arg, grpc_error *error) { internal_request *req = (internal_request *)arg; if (error != GRPC_ERROR_NONE) { - finish(exec_ctx, req, GRPC_ERROR_REF(error)); + finish(req, GRPC_ERROR_REF(error)); return; } req->next_address = 0; - next_address(exec_ctx, req, GRPC_ERROR_NONE); + next_address(req, GRPC_ERROR_NONE); } -static void internal_request_begin(grpc_exec_ctx *exec_ctx, - grpc_httpcli_context *context, +static void internal_request_begin(grpc_httpcli_context *context, grpc_polling_entity *pollent, grpc_resource_quota *resource_quota, const grpc_httpcli_request *request, @@ -266,33 +252,31 @@ static void internal_request_begin(grpc_exec_ctx *exec_ctx, req->ssl_host_override = gpr_strdup(request->ssl_host_override); GPR_ASSERT(pollent); - grpc_polling_entity_add_to_pollset_set(exec_ctx, req->pollent, + grpc_polling_entity_add_to_pollset_set(req->pollent, req->context->pollset_set); grpc_resolve_address( - exec_ctx, request->host, req->handshaker->default_port, - req->context->pollset_set, + request->host, req->handshaker->default_port, req->context->pollset_set, GRPC_CLOSURE_CREATE(on_resolved, req, grpc_schedule_on_exec_ctx), &req->addresses); } -void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, +void grpc_httpcli_get(grpc_httpcli_context *context, grpc_polling_entity *pollent, grpc_resource_quota *resource_quota, const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { char *name; - if (g_get_override && - g_get_override(exec_ctx, request, deadline, on_done, response)) { + if (g_get_override && g_get_override(request, deadline, on_done, response)) { return; } gpr_asprintf(&name, "HTTP:GET:%s:%s", request->host, request->http.path); - internal_request_begin(exec_ctx, context, pollent, resource_quota, request, - deadline, on_done, response, name, + internal_request_begin(context, pollent, resource_quota, request, deadline, + on_done, response, name, grpc_httpcli_format_get_request(request)); gpr_free(name); } -void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, +void grpc_httpcli_post(grpc_httpcli_context *context, grpc_polling_entity *pollent, grpc_resource_quota *resource_quota, const grpc_httpcli_request *request, @@ -300,16 +284,14 @@ void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { char *name; - if (g_post_override && - g_post_override(exec_ctx, request, body_bytes, body_size, deadline, - on_done, response)) { + if (g_post_override && g_post_override(request, body_bytes, body_size, + deadline, on_done, response)) { return; } gpr_asprintf(&name, "HTTP:POST:%s:%s", request->host, request->http.path); internal_request_begin( - exec_ctx, context, pollent, resource_quota, request, deadline, on_done, - response, name, - grpc_httpcli_format_post_request(request, body_bytes, body_size)); + context, pollent, resource_quota, request, deadline, on_done, response, + name, grpc_httpcli_format_post_request(request, body_bytes, body_size)); gpr_free(name); } diff --git a/src/core/lib/http/httpcli.h b/src/core/lib/http/httpcli.h index 76b790fa8ac..dd372775ecb 100644 --- a/src/core/lib/http/httpcli.h +++ b/src/core/lib/http/httpcli.h @@ -45,10 +45,9 @@ typedef struct grpc_httpcli_context { typedef struct { const char *default_port; - void (*handshake)(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *endpoint, - const char *host, grpc_millis deadline, - void (*on_done)(grpc_exec_ctx *exec_ctx, void *arg, - grpc_endpoint *endpoint)); + void (*handshake)(void *arg, grpc_endpoint *endpoint, const char *host, + grpc_millis deadline, + void (*on_done)(void *arg, grpc_endpoint *endpoint)); } grpc_httpcli_handshaker; extern const grpc_httpcli_handshaker grpc_httpcli_plaintext; @@ -72,8 +71,7 @@ typedef struct grpc_httpcli_request { typedef struct grpc_http_response grpc_httpcli_response; void grpc_httpcli_context_init(grpc_httpcli_context *context); -void grpc_httpcli_context_destroy(grpc_exec_ctx *exec_ctx, - grpc_httpcli_context *context); +void grpc_httpcli_context_destroy(grpc_httpcli_context *context); /* Asynchronously perform a HTTP GET. 'context' specifies the http context under which to do the get @@ -84,7 +82,7 @@ void grpc_httpcli_context_destroy(grpc_exec_ctx *exec_ctx, destroyed once the call returns 'deadline' contains a deadline for the request (or gpr_inf_future) 'on_response' is a callback to report results to */ -void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, +void grpc_httpcli_get(grpc_httpcli_context *context, grpc_polling_entity *pollent, grpc_resource_quota *resource_quota, const grpc_httpcli_request *request, grpc_millis deadline, @@ -105,7 +103,7 @@ void grpc_httpcli_get(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, lifetime of the request 'on_response' is a callback to report results to Does not support ?var1=val1&var2=val2 in the path. */ -void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, +void grpc_httpcli_post(grpc_httpcli_context *context, grpc_polling_entity *pollent, grpc_resource_quota *resource_quota, const grpc_httpcli_request *request, @@ -114,15 +112,16 @@ void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context, grpc_httpcli_response *response); /* override functions return 1 if they handled the request, 0 otherwise */ -typedef int (*grpc_httpcli_get_override)(grpc_exec_ctx *exec_ctx, - const grpc_httpcli_request *request, +typedef int (*grpc_httpcli_get_override)(const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_complete, grpc_httpcli_response *response); -typedef int (*grpc_httpcli_post_override)( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - const char *body_bytes, size_t body_size, grpc_millis deadline, - grpc_closure *on_complete, grpc_httpcli_response *response); +typedef int (*grpc_httpcli_post_override)(const grpc_httpcli_request *request, + const char *body_bytes, + size_t body_size, + grpc_millis deadline, + grpc_closure *on_complete, + grpc_httpcli_response *response); void grpc_httpcli_set_override(grpc_httpcli_get_override get, grpc_httpcli_post_override post); diff --git a/src/core/lib/http/httpcli_security_connector.cc b/src/core/lib/http/httpcli_security_connector.cc index d832dacb69f..814f75cbfa6 100644 --- a/src/core/lib/http/httpcli_security_connector.cc +++ b/src/core/lib/http/httpcli_security_connector.cc @@ -38,8 +38,7 @@ typedef struct { char *secure_peer_name; } grpc_httpcli_ssl_channel_security_connector; -static void httpcli_ssl_destroy(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc) { +static void httpcli_ssl_destroy(grpc_security_connector *sc) { grpc_httpcli_ssl_channel_security_connector *c = (grpc_httpcli_ssl_channel_security_connector *)sc; if (c->handshaker_factory != NULL) { @@ -50,8 +49,7 @@ static void httpcli_ssl_destroy(grpc_exec_ctx *exec_ctx, gpr_free(sc); } -static void httpcli_ssl_add_handshakers(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, +static void httpcli_ssl_add_handshakers(grpc_channel_security_connector *sc, grpc_handshake_manager *handshake_mgr) { grpc_httpcli_ssl_channel_security_connector *c = (grpc_httpcli_ssl_channel_security_connector *)sc; @@ -65,13 +63,11 @@ static void httpcli_ssl_add_handshakers(grpc_exec_ctx *exec_ctx, } } grpc_handshake_manager_add( - handshake_mgr, - grpc_security_handshaker_create( - exec_ctx, tsi_create_adapter_handshaker(handshaker), &sc->base)); + handshake_mgr, grpc_security_handshaker_create( + tsi_create_adapter_handshaker(handshaker), &sc->base)); } -static void httpcli_ssl_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, tsi_peer peer, +static void httpcli_ssl_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { grpc_httpcli_ssl_channel_security_connector *c = @@ -87,7 +83,7 @@ static void httpcli_ssl_check_peer(grpc_exec_ctx *exec_ctx, error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); } - GRPC_CLOSURE_SCHED(exec_ctx, on_peer_checked, error); + GRPC_CLOSURE_SCHED(on_peer_checked, error); tsi_peer_destruct(&peer); } @@ -104,8 +100,8 @@ static grpc_security_connector_vtable httpcli_ssl_vtable = { httpcli_ssl_destroy, httpcli_ssl_check_peer, httpcli_ssl_cmp}; static grpc_security_status httpcli_ssl_channel_security_connector_create( - grpc_exec_ctx *exec_ctx, const char *pem_root_certs, - const char *secure_peer_name, grpc_channel_security_connector **sc) { + const char *pem_root_certs, const char *secure_peer_name, + grpc_channel_security_connector **sc) { tsi_result result = TSI_OK; grpc_httpcli_ssl_channel_security_connector *c; @@ -128,7 +124,7 @@ static grpc_security_status httpcli_ssl_channel_security_connector_create( if (result != TSI_OK) { gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.", tsi_result_to_string(result)); - httpcli_ssl_destroy(exec_ctx, &c->base.base); + httpcli_ssl_destroy(&c->base.base); *sc = NULL; return GRPC_SECURITY_ERROR; } @@ -144,40 +140,37 @@ static grpc_security_status httpcli_ssl_channel_security_connector_create( /* handshaker */ typedef struct { - void (*func)(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *endpoint); + void (*func)(void *arg, grpc_endpoint *endpoint); void *arg; grpc_handshake_manager *handshake_mgr; } on_done_closure; -static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_handshake_done(void *arg, grpc_error *error) { grpc_handshaker_args *args = (grpc_handshaker_args *)arg; on_done_closure *c = (on_done_closure *)args->user_data; if (error != GRPC_ERROR_NONE) { const char *msg = grpc_error_string(error); gpr_log(GPR_ERROR, "Secure transport setup failed: %s", msg); - c->func(exec_ctx, c->arg, NULL); + c->func(c->arg, NULL); } else { - grpc_channel_args_destroy(exec_ctx, args->args); - grpc_slice_buffer_destroy_internal(exec_ctx, args->read_buffer); + grpc_channel_args_destroy(args->args); + grpc_slice_buffer_destroy_internal(args->read_buffer); gpr_free(args->read_buffer); - c->func(exec_ctx, c->arg, args->endpoint); + c->func(c->arg, args->endpoint); } - grpc_handshake_manager_destroy(exec_ctx, c->handshake_mgr); + grpc_handshake_manager_destroy(c->handshake_mgr); gpr_free(c); } -static void ssl_handshake(grpc_exec_ctx *exec_ctx, void *arg, - grpc_endpoint *tcp, const char *host, +static void ssl_handshake(void *arg, grpc_endpoint *tcp, const char *host, grpc_millis deadline, - void (*on_done)(grpc_exec_ctx *exec_ctx, void *arg, - grpc_endpoint *endpoint)) { + void (*on_done)(void *arg, grpc_endpoint *endpoint)) { on_done_closure *c = (on_done_closure *)gpr_malloc(sizeof(*c)); const char *pem_root_certs = grpc_get_default_ssl_roots(); if (pem_root_certs == NULL) { gpr_log(GPR_ERROR, "Could not get default pem root certs."); - on_done(exec_ctx, arg, NULL); + on_done(arg, NULL); gpr_free(c); return; } @@ -185,15 +178,15 @@ static void ssl_handshake(grpc_exec_ctx *exec_ctx, void *arg, c->arg = arg; grpc_channel_security_connector *sc = NULL; GPR_ASSERT(httpcli_ssl_channel_security_connector_create( - exec_ctx, pem_root_certs, host, &sc) == GRPC_SECURITY_OK); + pem_root_certs, host, &sc) == GRPC_SECURITY_OK); grpc_arg channel_arg = grpc_security_connector_to_arg(&sc->base); grpc_channel_args args = {1, &channel_arg}; c->handshake_mgr = grpc_handshake_manager_create(); - grpc_handshakers_add(exec_ctx, HANDSHAKER_CLIENT, &args, c->handshake_mgr); + grpc_handshakers_add(HANDSHAKER_CLIENT, &args, c->handshake_mgr); grpc_handshake_manager_do_handshake( - exec_ctx, c->handshake_mgr, tcp, NULL /* channel_args */, deadline, + c->handshake_mgr, tcp, NULL /* channel_args */, deadline, NULL /* acceptor */, on_handshake_done, c /* user_data */); - GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, &sc->base, "httpcli"); + GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "httpcli"); } const grpc_httpcli_handshaker grpc_httpcli_ssl = {"https", ssl_handshake}; diff --git a/src/core/lib/iomgr/block_annotate.h b/src/core/lib/iomgr/block_annotate.h index fcbfe9eb1a0..9db3cf0199e 100644 --- a/src/core/lib/iomgr/block_annotate.h +++ b/src/core/lib/iomgr/block_annotate.h @@ -43,10 +43,10 @@ void gpr_thd_end_blocking_region(); do { \ gpr_thd_end_blocking_region(); \ } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \ - do { \ - gpr_thd_end_blocking_region(); \ - grpc_exec_ctx_invalidate_now((ec)); \ +#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX() \ + do { \ + gpr_thd_end_blocking_region(); \ + grpc_exec_ctx_invalidate_now(); \ } while (0) #else #define GRPC_SCHEDULING_START_BLOCKING_REGION \ @@ -55,9 +55,9 @@ void gpr_thd_end_blocking_region(); #define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \ do { \ } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \ - do { \ - grpc_exec_ctx_invalidate_now((ec)); \ +#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX() \ + do { \ + grpc_exec_ctx_invalidate_now(); \ } while (0) #endif diff --git a/src/core/lib/iomgr/call_combiner.cc b/src/core/lib/iomgr/call_combiner.cc index d45719608b4..c2f5b4bb845 100644 --- a/src/core/lib/iomgr/call_combiner.cc +++ b/src/core/lib/iomgr/call_combiner.cc @@ -57,8 +57,7 @@ void grpc_call_combiner_destroy(grpc_call_combiner* call_combiner) { #define DEBUG_FMT_ARGS #endif -void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_start(grpc_call_combiner* call_combiner, grpc_closure* closure, grpc_error* error DEBUG_ARGS, const char* reason) { @@ -76,15 +75,16 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx, gpr_log(GPR_DEBUG, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size, prev_size + 1); } - GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx); + GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(); if (prev_size == 0) { - GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(exec_ctx); + GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(); + GPR_TIMER_MARK("call_combiner_initiate", 0); if (GRPC_TRACER_ON(grpc_call_combiner_trace)) { gpr_log(GPR_DEBUG, " EXECUTING IMMEDIATELY"); } // Queue was empty, so execute this closure immediately. - GRPC_CLOSURE_SCHED(exec_ctx, closure, error); + GRPC_CLOSURE_SCHED(closure, error); } else { if (GRPC_TRACER_ON(grpc_call_combiner_trace)) { gpr_log(GPR_INFO, " QUEUING"); @@ -96,8 +96,7 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx, GPR_TIMER_END("call_combiner_start", 0); } -void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner DEBUG_ARGS, +void grpc_call_combiner_stop(grpc_call_combiner* call_combiner DEBUG_ARGS, const char* reason) { GPR_TIMER_BEGIN("call_combiner_stop", 0); if (GRPC_TRACER_ON(grpc_call_combiner_trace)) { @@ -132,7 +131,7 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx, gpr_log(GPR_DEBUG, " EXECUTING FROM QUEUE: closure=%p error=%s", closure, grpc_error_string(closure->error_data.error)); } - GRPC_CLOSURE_SCHED(exec_ctx, closure, closure->error_data.error); + GRPC_CLOSURE_SCHED(closure, closure->error_data.error); break; } } else if (GRPC_TRACER_ON(grpc_call_combiner_trace)) { @@ -141,10 +140,9 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx, GPR_TIMER_END("call_combiner_stop", 0); } -void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_set_notify_on_cancel(grpc_call_combiner* call_combiner, grpc_closure* closure) { - GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL(exec_ctx); + GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL(); while (true) { // Decode original state. gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state); @@ -158,7 +156,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx, "for pre-existing cancellation", call_combiner, closure); } - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_REF(original_error)); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_REF(original_error)); break; } else { if (gpr_atm_full_cas(&call_combiner->cancel_state, original_state, @@ -177,7 +175,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx, "call_combiner=%p: scheduling old cancel callback=%p", call_combiner, closure); } - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } break; } @@ -186,10 +184,9 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx, } } -void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_cancel(grpc_call_combiner* call_combiner, grpc_error* error) { - GRPC_STATS_INC_CALL_COMBINER_CANCELLED(exec_ctx); + GRPC_STATS_INC_CALL_COMBINER_CANCELLED(); while (true) { gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state); grpc_error* original_error = decode_cancel_state_error(original_state); @@ -206,7 +203,7 @@ void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx, "call_combiner=%p: scheduling notify_on_cancel callback=%p", call_combiner, notify_on_cancel); } - GRPC_CLOSURE_SCHED(exec_ctx, notify_on_cancel, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(notify_on_cancel, GRPC_ERROR_REF(error)); } break; } diff --git a/src/core/lib/iomgr/call_combiner.h b/src/core/lib/iomgr/call_combiner.h index 527f84fce04..364f77a167c 100644 --- a/src/core/lib/iomgr/call_combiner.h +++ b/src/core/lib/iomgr/call_combiner.h @@ -57,37 +57,29 @@ void grpc_call_combiner_init(grpc_call_combiner* call_combiner); void grpc_call_combiner_destroy(grpc_call_combiner* call_combiner); #ifndef NDEBUG -#define GRPC_CALL_COMBINER_START(exec_ctx, call_combiner, closure, error, \ - reason) \ - grpc_call_combiner_start((exec_ctx), (call_combiner), (closure), (error), \ - __FILE__, __LINE__, (reason)) -#define GRPC_CALL_COMBINER_STOP(exec_ctx, call_combiner, reason) \ - grpc_call_combiner_stop((exec_ctx), (call_combiner), __FILE__, __LINE__, \ - (reason)) +#define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason) \ + grpc_call_combiner_start((call_combiner), (closure), (error), __FILE__, \ + __LINE__, (reason)) +#define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \ + grpc_call_combiner_stop((call_combiner), __FILE__, __LINE__, (reason)) /// Starts processing \a closure on \a call_combiner. -void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_start(grpc_call_combiner* call_combiner, grpc_closure* closure, grpc_error* error, const char* file, int line, const char* reason); /// Yields the call combiner to the next closure in the queue, if any. -void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_stop(grpc_call_combiner* call_combiner, const char* file, int line, const char* reason); #else -#define GRPC_CALL_COMBINER_START(exec_ctx, call_combiner, closure, error, \ - reason) \ - grpc_call_combiner_start((exec_ctx), (call_combiner), (closure), (error), \ - (reason)) -#define GRPC_CALL_COMBINER_STOP(exec_ctx, call_combiner, reason) \ - grpc_call_combiner_stop((exec_ctx), (call_combiner), (reason)) +#define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason) \ + grpc_call_combiner_start((call_combiner), (closure), (error), (reason)) +#define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \ + grpc_call_combiner_stop((call_combiner), (reason)) /// Starts processing \a closure on \a call_combiner. -void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_start(grpc_call_combiner* call_combiner, grpc_closure* closure, grpc_error* error, const char* reason); /// Yields the call combiner to the next closure in the queue, if any. -void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_stop(grpc_call_combiner* call_combiner, const char* reason); #endif @@ -113,13 +105,11 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx, /// cancellation; this effectively unregisters the previously set closure. /// However, most filters will not need to explicitly unregister their /// callbacks, as this is done automatically when the call is destroyed. -void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_set_notify_on_cancel(grpc_call_combiner* call_combiner, grpc_closure* closure); /// Indicates that the call has been cancelled. -void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx, - grpc_call_combiner* call_combiner, +void grpc_call_combiner_cancel(grpc_call_combiner* call_combiner, grpc_error* error); #ifdef __cplusplus diff --git a/src/core/lib/iomgr/closure.cc b/src/core/lib/iomgr/closure.cc index 00edefc6ae4..71521daeb60 100644 --- a/src/core/lib/iomgr/closure.cc +++ b/src/core/lib/iomgr/closure.cc @@ -107,13 +107,12 @@ typedef struct { grpc_closure wrapper; } wrapped_closure; -static void closure_wrapper(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void closure_wrapper(void *arg, grpc_error *error) { wrapped_closure *wc = (wrapped_closure *)arg; grpc_iomgr_cb_func cb = wc->cb; void *cb_arg = wc->cb_arg; gpr_free(wc); - cb(exec_ctx, cb_arg, error); + cb(cb_arg, error); } #ifndef NDEBUG @@ -139,8 +138,7 @@ grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg, void grpc_closure_run(const char *file, int line, grpc_exec_ctx *exec_ctx, grpc_closure *c, grpc_error *error) { #else -void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *c, - grpc_error *error) { +void grpc_closure_run(grpc_closure *c, grpc_error *error) { #endif GPR_TIMER_BEGIN("grpc_closure_run", 0); if (c != NULL) { @@ -150,7 +148,7 @@ void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *c, c->run = true; #endif assert(c->cb); - c->scheduler->vtable->run(exec_ctx, c, error); + c->scheduler->vtable->run(c, error); } else { GRPC_ERROR_UNREF(error); } @@ -161,8 +159,7 @@ void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *c, void grpc_closure_sched(const char *file, int line, grpc_exec_ctx *exec_ctx, grpc_closure *c, grpc_error *error) { #else -void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c, - grpc_error *error) { +void grpc_closure_sched(grpc_closure *c, grpc_error *error) { #endif GPR_TIMER_BEGIN("grpc_closure_sched", 0); if (c != NULL) { @@ -181,7 +178,7 @@ void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c, c->run = false; #endif assert(c->cb); - c->scheduler->vtable->sched(exec_ctx, c, error); + c->scheduler->vtable->sched(c, error); } else { GRPC_ERROR_UNREF(error); } @@ -192,7 +189,7 @@ void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c, void grpc_closure_list_sched(const char *file, int line, grpc_exec_ctx *exec_ctx, grpc_closure_list *list) { #else -void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx, grpc_closure_list *list) { +void grpc_closure_list_sched(grpc_closure_list *list) { #endif grpc_closure *c = list->head; while (c != NULL) { @@ -212,7 +209,7 @@ void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx, grpc_closure_list *list) { c->run = false; #endif assert(c->cb); - c->scheduler->vtable->sched(exec_ctx, c, c->error_data.error); + c->scheduler->vtable->sched(c, c->error_data.error); c = next; } list->head = list->tail = NULL; diff --git a/src/core/lib/iomgr/closure.h b/src/core/lib/iomgr/closure.h index cd32a4ba381..8b59b17dfb3 100644 --- a/src/core/lib/iomgr/closure.h +++ b/src/core/lib/iomgr/closure.h @@ -49,18 +49,15 @@ typedef struct grpc_closure_list { * describing what went wrong. * Error contract: it is not the cb's job to unref this error; * the closure scheduler will do that after the cb returns */ -typedef void (*grpc_iomgr_cb_func)(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); +typedef void (*grpc_iomgr_cb_func)(void *arg, grpc_error *error); typedef struct grpc_closure_scheduler grpc_closure_scheduler; typedef struct grpc_closure_scheduler_vtable { /* NOTE: for all these functions, closure->scheduler == the scheduler that was used to find this vtable */ - void (*run)(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error); - void (*sched)(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error); + void (*run)(grpc_closure *closure, grpc_error *error); + void (*sched)(grpc_closure *closure, grpc_error *error); const char *name; } grpc_closure_scheduler_vtable; @@ -164,26 +161,22 @@ bool grpc_closure_list_empty(grpc_closure_list list); #ifndef NDEBUG void grpc_closure_run(const char *file, int line, grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_error *error); -#define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \ +#define GRPC_CLOSURE_RUN(closure, error) \ grpc_closure_run(__FILE__, __LINE__, exec_ctx, closure, error) #else -void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error); -#define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \ - grpc_closure_run(exec_ctx, closure, error) +void grpc_closure_run(grpc_closure *closure, grpc_error *error); +#define GRPC_CLOSURE_RUN(closure, error) grpc_closure_run(closure, error) #endif /** Schedule a closure to be run. Does not need to be run from a safe point. */ #ifndef NDEBUG void grpc_closure_sched(const char *file, int line, grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_error *error); -#define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \ +#define GRPC_CLOSURE_SCHED(closure, error) \ grpc_closure_sched(__FILE__, __LINE__, exec_ctx, closure, error) #else -void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error); -#define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \ - grpc_closure_sched(exec_ctx, closure, error) +void grpc_closure_sched(grpc_closure *closure, grpc_error *error); +#define GRPC_CLOSURE_SCHED(closure, error) grpc_closure_sched(closure, error) #endif /** Schedule all closures in a list to be run. Does not need to be run from a @@ -192,13 +185,12 @@ void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure, void grpc_closure_list_sched(const char *file, int line, grpc_exec_ctx *exec_ctx, grpc_closure_list *closure_list); -#define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \ +#define GRPC_CLOSURE_LIST_SCHED(closure_list) \ grpc_closure_list_sched(__FILE__, __LINE__, exec_ctx, closure_list) #else -void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx, - grpc_closure_list *closure_list); -#define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \ - grpc_closure_list_sched(exec_ctx, closure_list) +void grpc_closure_list_sched(grpc_closure_list *closure_list); +#define GRPC_CLOSURE_LIST_SCHED(closure_list) \ + grpc_closure_list_sched(closure_list) #endif #ifdef __cplusplus diff --git a/src/core/lib/iomgr/combiner.cc b/src/core/lib/iomgr/combiner.cc index 53f4b7eaa7e..c6d6d0fc438 100644 --- a/src/core/lib/iomgr/combiner.cc +++ b/src/core/lib/iomgr/combiner.cc @@ -62,17 +62,15 @@ struct grpc_combiner { gpr_refcount refs; }; -static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error); -static void combiner_finally_exec(grpc_exec_ctx *exec_ctx, - grpc_closure *closure, grpc_error *error); +static void combiner_exec(grpc_closure *closure, grpc_error *error); +static void combiner_finally_exec(grpc_closure *closure, grpc_error *error); static const grpc_closure_scheduler_vtable scheduler = { combiner_exec, combiner_exec, "combiner:immediately"}; static const grpc_closure_scheduler_vtable finally_scheduler = { combiner_finally_exec, combiner_finally_exec, "combiner:finally"}; -static void offload(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error); +static void offload(void *arg, grpc_error *error); grpc_combiner *grpc_combiner_create(void) { grpc_combiner *lock = (grpc_combiner *)gpr_zalloc(sizeof(*lock)); @@ -88,19 +86,19 @@ grpc_combiner *grpc_combiner_create(void) { return lock; } -static void really_destroy(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) { +static void really_destroy(grpc_combiner *lock) { GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p really_destroy", lock)); GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0); gpr_mpscq_destroy(&lock->queue); gpr_free(lock); } -static void start_destroy(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) { +static void start_destroy(grpc_combiner *lock) { gpr_atm old_state = gpr_atm_full_fetch_add(&lock->state, -STATE_UNORPHANED); GRPC_COMBINER_TRACE(gpr_log( GPR_DEBUG, "C:%p really_destroy old_state=%" PRIdPTR, lock, old_state)); if (old_state == 1) { - really_destroy(exec_ctx, lock); + really_destroy(lock); } } @@ -116,11 +114,10 @@ static void start_destroy(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) { #define GRPC_COMBINER_DEBUG_SPAM(op, delta) #endif -void grpc_combiner_unref(grpc_exec_ctx *exec_ctx, - grpc_combiner *lock GRPC_COMBINER_DEBUG_ARGS) { +void grpc_combiner_unref(grpc_combiner *lock GRPC_COMBINER_DEBUG_ARGS) { GRPC_COMBINER_DEBUG_SPAM("UNREF", -1); if (gpr_unref(&lock->refs)) { - start_destroy(exec_ctx, lock); + start_destroy(lock); } } @@ -130,8 +127,7 @@ grpc_combiner *grpc_combiner_ref(grpc_combiner *lock GRPC_COMBINER_DEBUG_ARGS) { return lock; } -static void push_last_on_exec_ctx(grpc_exec_ctx *exec_ctx, - grpc_combiner *lock) { +static void push_last_on_exec_ctx(grpc_combiner *lock) { lock->next_combiner_on_this_exec_ctx = NULL; if (exec_ctx->active_combiner == NULL) { exec_ctx->active_combiner = exec_ctx->last_combiner = lock; @@ -141,8 +137,7 @@ static void push_last_on_exec_ctx(grpc_exec_ctx *exec_ctx, } } -static void push_first_on_exec_ctx(grpc_exec_ctx *exec_ctx, - grpc_combiner *lock) { +static void push_first_on_exec_ctx(grpc_combiner *lock) { lock->next_combiner_on_this_exec_ctx = exec_ctx->active_combiner; exec_ctx->active_combiner = lock; if (lock->next_combiner_on_this_exec_ctx == NULL) { @@ -154,9 +149,8 @@ static void push_first_on_exec_ctx(grpc_exec_ctx *exec_ctx, ((grpc_combiner *)(((char *)((closure)->scheduler)) - \ offsetof(grpc_combiner, scheduler_name))) -static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_closure *cl, - grpc_error *error) { - GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx); +static void combiner_exec(grpc_closure *cl, grpc_error *error) { + GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS(); GPR_TIMER_BEGIN("combiner.execute", 0); grpc_combiner *lock = COMBINER_FROM_CLOSURE_SCHEDULER(cl, scheduler); gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT); @@ -164,19 +158,19 @@ static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_closure *cl, "C:%p grpc_combiner_execute c=%p last=%" PRIdPTR, lock, cl, last)); if (last == 1) { - GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(exec_ctx); + GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(); GPR_TIMER_MARK("combiner.initiated", 0); gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, - (gpr_atm)exec_ctx); + (gpr_atm)&exec_ctx); // first element on this list: add it to the list of combiner locks // executing within this exec_ctx - push_last_on_exec_ctx(exec_ctx, lock); + push_last_on_exec_ctx(lock); } else { // there may be a race with setting here: if that happens, we may delay // offload for one or two actions, and that's fine gpr_atm initiator = gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null); - if (initiator != 0 && initiator != (gpr_atm)exec_ctx) { + if (initiator != 0 && initiator != (gpr_atm)&exec_ctx) { gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0); } } @@ -187,7 +181,7 @@ static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_closure *cl, GPR_TIMER_END("combiner.execute", 0); } -static void move_next(grpc_exec_ctx *exec_ctx) { +static void move_next() { exec_ctx->active_combiner = exec_ctx->active_combiner->next_combiner_on_this_exec_ctx; if (exec_ctx->active_combiner == NULL) { @@ -195,19 +189,19 @@ static void move_next(grpc_exec_ctx *exec_ctx) { } } -static void offload(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void offload(void *arg, grpc_error *error) { grpc_combiner *lock = (grpc_combiner *)arg; - push_last_on_exec_ctx(exec_ctx, lock); + push_last_on_exec_ctx(lock); } -static void queue_offload(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) { - GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED(exec_ctx); - move_next(exec_ctx); +static void queue_offload(grpc_combiner *lock) { + GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED(); + move_next(); GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p queue_offload", lock)); - GRPC_CLOSURE_SCHED(exec_ctx, &lock->offload, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&lock->offload, GRPC_ERROR_NONE); } -bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { +bool grpc_combiner_continue_exec_ctx() { GPR_TIMER_BEGIN("combiner.continue_exec_ctx", 0); grpc_combiner *lock = exec_ctx->active_combiner; if (lock == NULL) { @@ -223,16 +217,15 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { "contended=%d " "exec_ctx_ready_to_finish=%d " "time_to_execute_final_list=%d", - lock, contended, - grpc_exec_ctx_ready_to_finish(exec_ctx), + lock, contended, grpc_exec_ctx_ready_to_finish(), lock->time_to_execute_final_list)); - if (contended && grpc_exec_ctx_ready_to_finish(exec_ctx) && + if (contended && grpc_exec_ctx_ready_to_finish() && grpc_executor_is_threaded()) { GPR_TIMER_MARK("offload_from_finished_exec_ctx", 0); // this execution context wants to move on: schedule remaining work to be // picked up on the executor - queue_offload(exec_ctx, lock); + queue_offload(lock); GPR_TIMER_END("combiner.continue_exec_ctx", 0); return true; } @@ -248,7 +241,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { // queue is in an inconsistent state: use this as a cue that we should // go off and do something else for a while (and come back later) GPR_TIMER_MARK("delay_busy", 0); - queue_offload(exec_ctx, lock); + queue_offload(lock); GPR_TIMER_END("combiner.continue_exec_ctx", 0); return true; } @@ -258,7 +251,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { #ifndef NDEBUG cl->scheduled = false; #endif - cl->cb(exec_ctx, cl->cb_arg, cl_err); + cl->cb(cl->cb_arg, cl_err); GRPC_ERROR_UNREF(cl_err); GPR_TIMER_END("combiner.exec1", 0); } else { @@ -275,7 +268,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { #ifndef NDEBUG c->scheduled = false; #endif - c->cb(exec_ctx, c->cb_arg, error); + c->cb(c->cb_arg, error); GRPC_ERROR_UNREF(error); c = next; GPR_TIMER_END("combiner.exec_1final", 0); @@ -283,7 +276,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { } GPR_TIMER_MARK("unref", 0); - move_next(exec_ctx); + move_next(); lock->time_to_execute_final_list = false; gpr_atm old_state = gpr_atm_full_fetch_add(&lock->state, -STATE_ELEM_COUNT_LOW_BIT); @@ -312,7 +305,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { return true; case OLD_STATE_WAS(true, 1): // and one count, one orphaned --> unlocked and orphaned - really_destroy(exec_ctx, lock); + really_destroy(lock); GPR_TIMER_END("combiner.continue_exec_ctx", 0); return true; case OLD_STATE_WAS(false, 0): @@ -322,17 +315,15 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) { GPR_TIMER_END("combiner.continue_exec_ctx", 0); GPR_UNREACHABLE_CODE(return true); } - push_first_on_exec_ctx(exec_ctx, lock); + push_first_on_exec_ctx(lock); GPR_TIMER_END("combiner.continue_exec_ctx", 0); return true; } -static void enqueue_finally(grpc_exec_ctx *exec_ctx, void *closure, - grpc_error *error); +static void enqueue_finally(void *closure, grpc_error *error); -static void combiner_finally_exec(grpc_exec_ctx *exec_ctx, - grpc_closure *closure, grpc_error *error) { - GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(exec_ctx); +static void combiner_finally_exec(grpc_closure *closure, grpc_error *error) { + GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(); grpc_combiner *lock = COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler); GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, @@ -341,8 +332,7 @@ static void combiner_finally_exec(grpc_exec_ctx *exec_ctx, GPR_TIMER_BEGIN("combiner.execute_finally", 0); if (exec_ctx->active_combiner != lock) { GPR_TIMER_MARK("slowpath", 0); - GRPC_CLOSURE_SCHED(exec_ctx, - GRPC_CLOSURE_CREATE(enqueue_finally, closure, + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(enqueue_finally, closure, grpc_combiner_scheduler(lock)), error); GPR_TIMER_END("combiner.execute_finally", 0); @@ -356,10 +346,8 @@ static void combiner_finally_exec(grpc_exec_ctx *exec_ctx, GPR_TIMER_END("combiner.execute_finally", 0); } -static void enqueue_finally(grpc_exec_ctx *exec_ctx, void *closure, - grpc_error *error) { - combiner_finally_exec(exec_ctx, (grpc_closure *)closure, - GRPC_ERROR_REF(error)); +static void enqueue_finally(void *closure, grpc_error *error) { + combiner_finally_exec((grpc_closure *)closure, GRPC_ERROR_REF(error)); } grpc_closure_scheduler *grpc_combiner_scheduler(grpc_combiner *combiner) { diff --git a/src/core/lib/iomgr/combiner.h b/src/core/lib/iomgr/combiner.h index 10e5fb480db..4e30bc284fd 100644 --- a/src/core/lib/iomgr/combiner.h +++ b/src/core/lib/iomgr/combiner.h @@ -44,26 +44,24 @@ grpc_combiner *grpc_combiner_create(void); , const char *file, int line, const char *reason #define GRPC_COMBINER_REF(combiner, reason) \ grpc_combiner_ref((combiner), __FILE__, __LINE__, (reason)) -#define GRPC_COMBINER_UNREF(exec_ctx, combiner, reason) \ - grpc_combiner_unref((exec_ctx), (combiner), __FILE__, __LINE__, (reason)) +#define GRPC_COMBINER_UNREF(combiner, reason) \ + grpc_combiner_unref((combiner), __FILE__, __LINE__, (reason)) #else #define GRPC_COMBINER_DEBUG_ARGS #define GRPC_COMBINER_REF(combiner, reason) grpc_combiner_ref((combiner)) -#define GRPC_COMBINER_UNREF(exec_ctx, combiner, reason) \ - grpc_combiner_unref((exec_ctx), (combiner)) +#define GRPC_COMBINER_UNREF(combiner, reason) grpc_combiner_unref((combiner)) #endif // Ref/unref the lock, for when we're sharing the lock ownership // Prefer to use the macros above grpc_combiner *grpc_combiner_ref(grpc_combiner *lock GRPC_COMBINER_DEBUG_ARGS); -void grpc_combiner_unref(grpc_exec_ctx *exec_ctx, - grpc_combiner *lock GRPC_COMBINER_DEBUG_ARGS); +void grpc_combiner_unref(grpc_combiner *lock GRPC_COMBINER_DEBUG_ARGS); // Fetch a scheduler to schedule closures against grpc_closure_scheduler *grpc_combiner_scheduler(grpc_combiner *lock); // Scheduler to execute \a action within the lock just prior to unlocking. grpc_closure_scheduler *grpc_combiner_finally_scheduler(grpc_combiner *lock); -bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx); +bool grpc_combiner_continue_exec_ctx(); extern grpc_tracer_flag grpc_combiner_trace; diff --git a/src/core/lib/iomgr/endpoint.cc b/src/core/lib/iomgr/endpoint.cc index 37cce335cab..824991f2ede 100644 --- a/src/core/lib/iomgr/endpoint.cc +++ b/src/core/lib/iomgr/endpoint.cc @@ -18,35 +18,30 @@ #include "src/core/lib/iomgr/endpoint.h" -void grpc_endpoint_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_slice_buffer* slices, grpc_closure* cb) { - ep->vtable->read(exec_ctx, ep, slices, cb); +void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices, + grpc_closure* cb) { + ep->vtable->read(ep, slices, cb); } -void grpc_endpoint_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_slice_buffer* slices, grpc_closure* cb) { - ep->vtable->write(exec_ctx, ep, slices, cb); +void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices, + grpc_closure* cb) { + ep->vtable->write(ep, slices, cb); } -void grpc_endpoint_add_to_pollset(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_pollset* pollset) { - ep->vtable->add_to_pollset(exec_ctx, ep, pollset); +void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) { + ep->vtable->add_to_pollset(ep, pollset); } -void grpc_endpoint_add_to_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_endpoint* ep, +void grpc_endpoint_add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pollset_set) { - ep->vtable->add_to_pollset_set(exec_ctx, ep, pollset_set); + ep->vtable->add_to_pollset_set(ep, pollset_set); } -void grpc_endpoint_shutdown(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_error* why) { - ep->vtable->shutdown(exec_ctx, ep, why); +void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) { + ep->vtable->shutdown(ep, why); } -void grpc_endpoint_destroy(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep) { - ep->vtable->destroy(exec_ctx, ep); -} +void grpc_endpoint_destroy(grpc_endpoint* ep) { ep->vtable->destroy(ep); } char* grpc_endpoint_get_peer(grpc_endpoint* ep) { return ep->vtable->get_peer(ep); diff --git a/src/core/lib/iomgr/endpoint.h b/src/core/lib/iomgr/endpoint.h index 21347d90230..f3f5efbb979 100644 --- a/src/core/lib/iomgr/endpoint.h +++ b/src/core/lib/iomgr/endpoint.h @@ -37,16 +37,12 @@ typedef struct grpc_endpoint grpc_endpoint; typedef struct grpc_endpoint_vtable grpc_endpoint_vtable; struct grpc_endpoint_vtable { - void (*read)(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb); - void (*write)(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb); - void (*add_to_pollset)(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset); - void (*add_to_pollset_set)(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset_set *pollset); - void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, grpc_error *why); - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep); + void (*read)(grpc_endpoint *ep, grpc_slice_buffer *slices, grpc_closure *cb); + void (*write)(grpc_endpoint *ep, grpc_slice_buffer *slices, grpc_closure *cb); + void (*add_to_pollset)(grpc_endpoint *ep, grpc_pollset *pollset); + void (*add_to_pollset_set)(grpc_endpoint *ep, grpc_pollset_set *pollset); + void (*shutdown)(grpc_endpoint *ep, grpc_error *why); + void (*destroy)(grpc_endpoint *ep); grpc_resource_user *(*get_resource_user)(grpc_endpoint *ep); char *(*get_peer)(grpc_endpoint *ep); int (*get_fd)(grpc_endpoint *ep); @@ -57,8 +53,8 @@ struct grpc_endpoint_vtable { indicates the endpoint is closed. Valid slices may be placed into \a slices even when the callback is invoked with error != GRPC_ERROR_NONE. */ -void grpc_endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb); +void grpc_endpoint_read(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb); char *grpc_endpoint_get_peer(grpc_endpoint *ep); @@ -76,21 +72,18 @@ int grpc_endpoint_get_fd(grpc_endpoint *ep); No guarantee is made to the content of slices after a write EXCEPT that it is a valid slice buffer. */ -void grpc_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb); +void grpc_endpoint_write(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb); /* Causes any pending and future read/write callbacks to run immediately with success==0 */ -void grpc_endpoint_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why); -void grpc_endpoint_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep); +void grpc_endpoint_shutdown(grpc_endpoint *ep, grpc_error *why); +void grpc_endpoint_destroy(grpc_endpoint *ep); /* Add an endpoint to a pollset, so that when the pollset is polled, events from this endpoint are considered */ -void grpc_endpoint_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset); -void grpc_endpoint_add_to_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_endpoint *ep, +void grpc_endpoint_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset); +void grpc_endpoint_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set); grpc_resource_user *grpc_endpoint_get_resource_user(grpc_endpoint *endpoint); diff --git a/src/core/lib/iomgr/endpoint_pair_posix.cc b/src/core/lib/iomgr/endpoint_pair_posix.cc index 3ade2148bac..9be636e0745 100644 --- a/src/core/lib/iomgr/endpoint_pair_posix.cc +++ b/src/core/lib/iomgr/endpoint_pair_posix.cc @@ -54,18 +54,18 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, char *final_name; create_sockets(sv); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_asprintf(&final_name, "%s:client", name); - p.client = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], final_name), args, + p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name), args, "socketpair-server"); gpr_free(final_name); gpr_asprintf(&final_name, "%s:server", name); - p.server = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[0], final_name), args, + p.server = grpc_tcp_create(grpc_fd_create(sv[0], final_name), args, "socketpair-client"); gpr_free(final_name); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return p; } diff --git a/src/core/lib/iomgr/endpoint_pair_windows.cc b/src/core/lib/iomgr/endpoint_pair_windows.cc index 782fa2fd690..3355cb97b08 100644 --- a/src/core/lib/iomgr/endpoint_pair_windows.cc +++ b/src/core/lib/iomgr/endpoint_pair_windows.cc @@ -72,14 +72,12 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair( SOCKET sv[2]; grpc_endpoint_pair p; create_sockets(sv); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - p.client = grpc_tcp_create(&exec_ctx, - grpc_winsocket_create(sv[1], "endpoint:client"), + ExecCtx _local_exec_ctx; + p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"), channel_args, "endpoint:server"); - p.server = grpc_tcp_create(&exec_ctx, - grpc_winsocket_create(sv[0], "endpoint:server"), + p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"), channel_args, "endpoint:client"); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return p; } diff --git a/src/core/lib/iomgr/error.cc b/src/core/lib/iomgr/error.cc index 2ea6cf1301e..4b7fb62f79d 100644 --- a/src/core/lib/iomgr/error.cc +++ b/src/core/lib/iomgr/error.cc @@ -158,9 +158,9 @@ static void unref_errs(grpc_error *err) { } static void unref_slice(grpc_slice slice) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_unref_internal(&exec_ctx, slice); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_slice_unref_internal(slice); + grpc_exec_ctx_finish(); } static void unref_strs(grpc_error *err) { diff --git a/src/core/lib/iomgr/ev_epoll1_linux.cc b/src/core/lib/iomgr/ev_epoll1_linux.cc index 6126e2771cd..301b729eb57 100644 --- a/src/core/lib/iomgr/ev_epoll1_linux.cc +++ b/src/core/lib/iomgr/ev_epoll1_linux.cc @@ -295,32 +295,29 @@ static int fd_wrapped_fd(grpc_fd *fd) { return fd->fd; } /* if 'releasing_fd' is true, it means that we are going to detach the internal * fd from grpc_fd structure (i.e which means we should not be calling * shutdown() syscall on that fd) */ -static void fd_shutdown_internal(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_error *why, bool releasing_fd) { - if (grpc_lfev_set_shutdown(exec_ctx, &fd->read_closure, - GRPC_ERROR_REF(why))) { +static void fd_shutdown_internal(grpc_fd *fd, grpc_error *why, + bool releasing_fd) { + if (grpc_lfev_set_shutdown(&fd->read_closure, GRPC_ERROR_REF(why))) { if (!releasing_fd) { shutdown(fd->fd, SHUT_RDWR); } - grpc_lfev_set_shutdown(exec_ctx, &fd->write_closure, GRPC_ERROR_REF(why)); + grpc_lfev_set_shutdown(&fd->write_closure, GRPC_ERROR_REF(why)); } GRPC_ERROR_UNREF(why); } /* Might be called multiple times */ -static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) { - fd_shutdown_internal(exec_ctx, fd, why, false); +static void fd_shutdown(grpc_fd *fd, grpc_error *why) { + fd_shutdown_internal(fd, why, false); } -static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *on_done, int *release_fd, +static void fd_orphan(grpc_fd *fd, grpc_closure *on_done, int *release_fd, bool already_closed, const char *reason) { grpc_error *error = GRPC_ERROR_NONE; bool is_release_fd = (release_fd != NULL); if (!grpc_lfev_is_shutdown(&fd->read_closure)) { - fd_shutdown_internal(exec_ctx, fd, - GRPC_ERROR_CREATE_FROM_COPIED_STRING(reason), + fd_shutdown_internal(fd, GRPC_ERROR_CREATE_FROM_COPIED_STRING(reason), is_release_fd); } @@ -332,7 +329,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, close(fd->fd); } - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_REF(error)); grpc_iomgr_unregister_object(&fd->iomgr_object); grpc_lfev_destroy(&fd->read_closure); @@ -344,8 +341,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, gpr_mu_unlock(&fd_freelist_mu); } -static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx, - grpc_fd *fd) { +static grpc_pollset *fd_get_read_notifier_pollset(grpc_fd *fd) { gpr_atm notifier = gpr_atm_acq_load(&fd->read_notifier_pollset); return (grpc_pollset *)notifier; } @@ -354,25 +350,22 @@ static bool fd_is_shutdown(grpc_fd *fd) { return grpc_lfev_is_shutdown(&fd->read_closure); } -static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read"); +static void fd_notify_on_read(grpc_fd *fd, grpc_closure *closure) { + grpc_lfev_notify_on(&fd->read_closure, closure, "read"); } -static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write"); +static void fd_notify_on_write(grpc_fd *fd, grpc_closure *closure) { + grpc_lfev_notify_on(&fd->write_closure, closure, "write"); } -static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_pollset *notifier) { - grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read"); +static void fd_become_readable(grpc_fd *fd, grpc_pollset *notifier) { + grpc_lfev_set_ready(&fd->read_closure, "read"); /* Use release store to match with acquire load in fd_get_read_notifier */ gpr_atm_rel_store(&fd->read_notifier_pollset, (gpr_atm)notifier); } -static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) { - grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write"); +static void fd_become_writable(grpc_fd *fd) { + grpc_lfev_set_ready(&fd->write_closure, "write"); } /******************************************************************************* @@ -476,7 +469,7 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) { pollset->next = pollset->prev = NULL; } -static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +static void pollset_destroy(grpc_pollset *pollset) { gpr_mu_lock(&pollset->mu); if (!pollset->seen_inactive) { pollset_neighborhood *neighborhood = pollset->neighborhood; @@ -504,27 +497,26 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { gpr_mu_destroy(&pollset->mu); } -static grpc_error *pollset_kick_all(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset) { +static grpc_error *pollset_kick_all(grpc_pollset *pollset) { GPR_TIMER_BEGIN("pollset_kick_all", 0); grpc_error *error = GRPC_ERROR_NONE; if (pollset->root_worker != NULL) { grpc_pollset_worker *worker = pollset->root_worker; do { - GRPC_STATS_INC_POLLSET_KICK(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK(); switch (worker->state) { case KICKED: - GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx); + GRPC_STATS_INC_POLLSET_KICKED_AGAIN(); break; case UNKICKED: SET_KICK_STATE(worker, KICKED); if (worker->initialized_cv) { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); gpr_cv_signal(&worker->cv); } break; case DESIGNATED_POLLER: - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(); SET_KICK_STATE(worker, KICKED); append_error(&error, grpc_wakeup_fd_wakeup(&global_wakeup_fd), "pollset_kick_all"); @@ -540,32 +532,29 @@ static grpc_error *pollset_kick_all(grpc_exec_ctx *exec_ctx, return error; } -static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset) { +static void pollset_maybe_finish_shutdown(grpc_pollset *pollset) { if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL && pollset->begin_refs == 0) { GPR_TIMER_MARK("pollset_finish_shutdown", 0); - GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pollset->shutdown_closure, GRPC_ERROR_NONE); pollset->shutdown_closure = NULL; } } -static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { +static void pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { GPR_TIMER_BEGIN("pollset_shutdown", 0); GPR_ASSERT(pollset->shutdown_closure == NULL); GPR_ASSERT(!pollset->shutting_down); pollset->shutdown_closure = closure; pollset->shutting_down = true; - GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(exec_ctx, pollset)); - pollset_maybe_finish_shutdown(exec_ctx, pollset); + GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset)); + pollset_maybe_finish_shutdown(pollset); GPR_TIMER_END("pollset_shutdown", 0); } -static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, - grpc_millis millis) { +static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - grpc_exec_ctx_now(exec_ctx); + grpc_millis delta = millis - grpc_exec_ctx_now(); if (delta > INT_MAX) { return INT_MAX; } else if (delta < 0) { @@ -583,8 +572,7 @@ static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, NOTE ON SYNCRHONIZATION: Similar to do_epoll_wait(), this function is only called by g_active_poller thread. So there is no need for synchronization when accessing fields in g_epoll_set */ -static grpc_error *process_epoll_events(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset) { +static grpc_error *process_epoll_events(grpc_pollset *pollset) { static const char *err_desc = "process_events"; grpc_error *error = GRPC_ERROR_NONE; @@ -608,11 +596,11 @@ static grpc_error *process_epoll_events(grpc_exec_ctx *exec_ctx, bool write_ev = (ev->events & EPOLLOUT) != 0; if (read_ev || cancel) { - fd_become_readable(exec_ctx, fd, pollset); + fd_become_readable(fd, pollset); } if (write_ev || cancel) { - fd_become_writable(exec_ctx, fd); + fd_become_writable(fd); } } } @@ -628,27 +616,26 @@ static grpc_error *process_epoll_events(grpc_exec_ctx *exec_ctx, NOTE ON SYNCHRONIZATION: At any point of time, only the g_active_poller (i.e the designated poller thread) will be calling this function. So there is no need for any synchronization when accesing fields in g_epoll_set */ -static grpc_error *do_epoll_wait(grpc_exec_ctx *exec_ctx, grpc_pollset *ps, - grpc_millis deadline) { +static grpc_error *do_epoll_wait(grpc_pollset *ps, grpc_millis deadline) { GPR_TIMER_BEGIN("do_epoll_wait", 0); int r; - int timeout = poll_deadline_to_millis_timeout(exec_ctx, deadline); + int timeout = poll_deadline_to_millis_timeout(deadline); if (timeout != 0) { GRPC_SCHEDULING_START_BLOCKING_REGION; } do { - GRPC_STATS_INC_SYSCALL_POLL(exec_ctx); + GRPC_STATS_INC_SYSCALL_POLL(); r = epoll_wait(g_epoll_set.epfd, g_epoll_set.events, MAX_EPOLL_EVENTS, timeout); } while (r < 0 && errno == EINTR); if (timeout != 0) { - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(exec_ctx); + GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); } if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait"); - GRPC_STATS_INC_POLL_EVENTS_RETURNED(exec_ctx, r); + GRPC_STATS_INC_POLL_EVENTS_RETURNED(r); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_DEBUG, "ps: %p poll got %d events", ps, r); @@ -661,8 +648,7 @@ static grpc_error *do_epoll_wait(grpc_exec_ctx *exec_ctx, grpc_pollset *ps, return GRPC_ERROR_NONE; } -static bool begin_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_pollset_worker *worker, +static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { GPR_TIMER_BEGIN("begin_worker", 0); @@ -757,7 +743,7 @@ static bool begin_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, SET_KICK_STATE(worker, KICKED); } } - grpc_exec_ctx_invalidate_now(exec_ctx); + grpc_exec_ctx_invalidate_now(); } if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -788,7 +774,7 @@ static bool begin_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } static bool check_neighborhood_for_available_poller( - grpc_exec_ctx *exec_ctx, pollset_neighborhood *neighborhood) { + pollset_neighborhood *neighborhood) { GPR_TIMER_BEGIN("check_neighborhood_for_available_poller", 0); bool found_worker = false; do { @@ -812,7 +798,7 @@ static bool check_neighborhood_for_available_poller( SET_KICK_STATE(inspect_worker, DESIGNATED_POLLER); if (inspect_worker->initialized_cv) { GPR_TIMER_MARK("signal worker", 0); - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); gpr_cv_signal(&inspect_worker->cv); } } else { @@ -852,8 +838,7 @@ static bool check_neighborhood_for_available_poller( return found_worker; } -static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_pollset_worker *worker, +static void end_worker(grpc_pollset *pollset, grpc_pollset_worker *worker, grpc_pollset_worker **worker_hdl) { GPR_TIMER_BEGIN("end_worker", 0); if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -872,11 +857,11 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, GPR_ASSERT(worker->next->initialized_cv); gpr_atm_no_barrier_store(&g_active_poller, (gpr_atm)worker->next); SET_KICK_STATE(worker->next, DESIGNATED_POLLER); - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); gpr_cv_signal(&worker->next->cv); - if (grpc_exec_ctx_has_work(exec_ctx)) { + if (grpc_exec_ctx_has_work()) { gpr_mu_unlock(&pollset->mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->mu); } } else { @@ -891,8 +876,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, &g_neighborhoods[(poller_neighborhood_idx + i) % g_num_neighborhoods]; if (gpr_mu_trylock(&neighborhood->mu)) { - found_worker = - check_neighborhood_for_available_poller(exec_ctx, neighborhood); + found_worker = check_neighborhood_for_available_poller(neighborhood); gpr_mu_unlock(&neighborhood->mu); scan_state[i] = true; } else { @@ -905,16 +889,15 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, &g_neighborhoods[(poller_neighborhood_idx + i) % g_num_neighborhoods]; gpr_mu_lock(&neighborhood->mu); - found_worker = - check_neighborhood_for_available_poller(exec_ctx, neighborhood); + found_worker = check_neighborhood_for_available_poller(neighborhood); gpr_mu_unlock(&neighborhood->mu); } - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->mu); } - } else if (grpc_exec_ctx_has_work(exec_ctx)) { + } else if (grpc_exec_ctx_has_work()) { gpr_mu_unlock(&pollset->mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->mu); } if (worker->initialized_cv) { @@ -924,7 +907,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, gpr_log(GPR_DEBUG, " .. remove worker"); } if (EMPTIED == worker_remove(pollset, worker)) { - pollset_maybe_finish_shutdown(exec_ctx, pollset); + pollset_maybe_finish_shutdown(pollset); } GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker); GPR_TIMER_END("end_worker", 0); @@ -934,7 +917,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, The function pollset_work() may temporarily release the lock (pollset->po.mu) during the course of its execution but it will always re-acquire the lock and ensure that it is held by the time the function returns */ -static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps, +static grpc_error *pollset_work(grpc_pollset *ps, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { grpc_pollset_worker worker; @@ -947,7 +930,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps, return GRPC_ERROR_NONE; } - if (begin_worker(exec_ctx, ps, &worker, worker_hdl, deadline)) { + if (begin_worker(ps, &worker, worker_hdl, deadline)) { gpr_tls_set(&g_current_thread_pollset, (intptr_t)ps); gpr_tls_set(&g_current_thread_worker, (intptr_t)&worker); GPR_ASSERT(!ps->shutting_down); @@ -970,9 +953,9 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps, designated poller */ if (gpr_atm_acq_load(&g_epoll_set.cursor) == gpr_atm_acq_load(&g_epoll_set.num_events)) { - append_error(&error, do_epoll_wait(exec_ctx, ps, deadline), err_desc); + append_error(&error, do_epoll_wait(ps, deadline), err_desc); } - append_error(&error, process_epoll_events(exec_ctx, ps), err_desc); + append_error(&error, process_epoll_events(ps), err_desc); gpr_mu_lock(&ps->mu); /* lock */ @@ -980,17 +963,17 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps, } else { gpr_tls_set(&g_current_thread_pollset, (intptr_t)ps); } - end_worker(exec_ctx, ps, &worker, worker_hdl); + end_worker(ps, &worker, worker_hdl); gpr_tls_set(&g_current_thread_pollset, 0); GPR_TIMER_END("pollset_work", 0); return error; } -static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +static grpc_error *pollset_kick(grpc_pollset *pollset, grpc_pollset_worker *specific_worker) { GPR_TIMER_BEGIN("pollset_kick", 0); - GRPC_STATS_INC_POLLSET_KICK(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK(); grpc_error *ret_err = GRPC_ERROR_NONE; if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_strvec log; @@ -1023,7 +1006,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (gpr_tls_get(&g_current_thread_pollset) != (intptr_t)pollset) { grpc_pollset_worker *root_worker = pollset->root_worker; if (root_worker == NULL) { - GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER(exec_ctx); + GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER(); pollset->kicked_without_poller = true; if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kicked_without_poller"); @@ -1032,14 +1015,14 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } grpc_pollset_worker *next_worker = root_worker->next; if (root_worker->state == KICKED) { - GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx); + GRPC_STATS_INC_POLLSET_KICKED_AGAIN(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. already kicked %p", root_worker); } SET_KICK_STATE(root_worker, KICKED); goto done; } else if (next_worker->state == KICKED) { - GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx); + GRPC_STATS_INC_POLLSET_KICKED_AGAIN(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. already kicked %p", next_worker); } @@ -1050,7 +1033,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, // there is no next worker root_worker == (grpc_pollset_worker *)gpr_atm_no_barrier_load( &g_active_poller)) { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kicked %p", root_worker); } @@ -1058,7 +1041,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd); goto done; } else if (next_worker->state == UNKICKED) { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kicked %p", next_worker); } @@ -1076,12 +1059,12 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } SET_KICK_STATE(root_worker, KICKED); if (root_worker->initialized_cv) { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); gpr_cv_signal(&root_worker->cv); } goto done; } else { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. non-root poller %p (root=%p)", next_worker, root_worker); @@ -1091,13 +1074,13 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, goto done; } } else { - GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx); + GRPC_STATS_INC_POLLSET_KICKED_AGAIN(); GPR_ASSERT(next_worker->state == KICKED); SET_KICK_STATE(next_worker, KICKED); goto done; } } else { - GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kicked while waking up"); } @@ -1114,7 +1097,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, goto done; } else if (gpr_tls_get(&g_current_thread_worker) == (intptr_t)specific_worker) { - GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. mark %p kicked", specific_worker); } @@ -1122,7 +1105,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, goto done; } else if (specific_worker == (grpc_pollset_worker *)gpr_atm_no_barrier_load(&g_active_poller)) { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kick active poller"); } @@ -1130,7 +1113,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd); goto done; } else if (specific_worker->initialized_cv) { - GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kick waiting worker"); } @@ -1138,7 +1121,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, gpr_cv_signal(&specific_worker->cv); goto done; } else { - GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx); + GRPC_STATS_INC_POLLSET_KICKED_AGAIN(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_ERROR, " .. kick non-waiting worker"); } @@ -1150,8 +1133,7 @@ done: return ret_err; } -static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_fd *fd) {} +static void pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) {} /******************************************************************************* * Pollset-set Definitions @@ -1161,27 +1143,20 @@ static grpc_pollset_set *pollset_set_create(void) { return (grpc_pollset_set *)((intptr_t)0xdeafbeef); } -static void pollset_set_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss) {} +static void pollset_set_destroy(grpc_pollset_set *pss) {} -static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss, - grpc_fd *fd) {} +static void pollset_set_add_fd(grpc_pollset_set *pss, grpc_fd *fd) {} -static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss, - grpc_fd *fd) {} +static void pollset_set_del_fd(grpc_pollset_set *pss, grpc_fd *fd) {} -static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss, grpc_pollset *ps) {} +static void pollset_set_add_pollset(grpc_pollset_set *pss, grpc_pollset *ps) {} -static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss, grpc_pollset *ps) {} +static void pollset_set_del_pollset(grpc_pollset_set *pss, grpc_pollset *ps) {} -static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_add_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) {} -static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_del_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) {} /******************************************************************************* diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc index 59dd8fd2fe9..28fa48afa90 100644 --- a/src/core/lib/iomgr/ev_epollex_linux.cc +++ b/src/core/lib/iomgr/ev_epollex_linux.cc @@ -81,17 +81,14 @@ struct polling_group { static void po_init(polling_obj *po, polling_obj_type type); static void po_destroy(polling_obj *po); -static void po_join(grpc_exec_ctx *exec_ctx, polling_obj *a, polling_obj *b); +static void po_join(polling_obj *a, polling_obj *b); static int po_cmp(polling_obj *a, polling_obj *b); -static void pg_create(grpc_exec_ctx *exec_ctx, polling_obj **initial_po, - size_t initial_po_count); +static void pg_create(polling_obj **initial_po, size_t initial_po_count); static polling_group *pg_ref(polling_group *pg); static void pg_unref(polling_group *pg); -static void pg_merge(grpc_exec_ctx *exec_ctx, polling_group *a, - polling_group *b); -static void pg_join(grpc_exec_ctx *exec_ctx, polling_group *pg, - polling_obj *po); +static void pg_merge(polling_group *a, polling_group *b); +static void pg_join(polling_group *pg, polling_obj *po); /******************************************************************************* * pollable Declarations @@ -260,8 +257,7 @@ static gpr_mu fd_freelist_mu; #ifndef NDEBUG #define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__) -#define UNREF_BY(ec, fd, n, reason) \ - unref_by(ec, fd, n, reason, __FILE__, __LINE__) +#define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__) static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file, int line) { if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) { @@ -272,13 +268,13 @@ static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file, } #else #define REF_BY(fd, n, reason) ref_by(fd, n) -#define UNREF_BY(ec, fd, n, reason) unref_by(ec, fd, n) +#define UNREF_BY(fd, n, reason) unref_by(fd, n) static void ref_by(grpc_fd *fd, int n) { #endif GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&fd->refst, n) > 0); } -static void fd_destroy(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void fd_destroy(void *arg, grpc_error *error) { grpc_fd *fd = (grpc_fd *)arg; /* Add the fd to the freelist */ grpc_iomgr_unregister_object(&fd->iomgr_object); @@ -295,8 +291,8 @@ static void fd_destroy(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { } #ifndef NDEBUG -static void unref_by(grpc_exec_ctx *exec_ctx, grpc_fd *fd, int n, - const char *reason, const char *file, int line) { +static void unref_by(grpc_fd *fd, int n, const char *reason, const char *file, + int line) { if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) { gpr_log(GPR_DEBUG, "FD %d %p unref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]", @@ -304,13 +300,13 @@ static void unref_by(grpc_exec_ctx *exec_ctx, grpc_fd *fd, int n, gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line); } #else -static void unref_by(grpc_exec_ctx *exec_ctx, grpc_fd *fd, int n) { +static void unref_by(grpc_fd *fd, int n) { #endif gpr_atm old = gpr_atm_full_fetch_add(&fd->refst, -n); if (old == n) { - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(fd_destroy, fd, - grpc_schedule_on_exec_ctx), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_CREATE(fd_destroy, fd, grpc_schedule_on_exec_ctx), + GRPC_ERROR_NONE); } else { GPR_ASSERT(old > n); } @@ -379,8 +375,7 @@ static int fd_wrapped_fd(grpc_fd *fd) { return ret_fd; } -static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *on_done, int *release_fd, +static void fd_orphan(grpc_fd *fd, grpc_closure *on_done, int *release_fd, bool already_closed, const char *reason) { bool is_fd_closed = already_closed; grpc_error *error = GRPC_ERROR_NONE; @@ -408,17 +403,16 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, to be alive (and not added to freelist) until the end of this function */ REF_BY(fd, 1, reason); - GRPC_CLOSURE_SCHED(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(fd->on_done_closure, GRPC_ERROR_REF(error)); gpr_mu_unlock(&fd->orphaned_mu); gpr_mu_unlock(&fd->pollable_obj.po.mu); - UNREF_BY(exec_ctx, fd, 2, reason); /* Drop the reference */ + UNREF_BY(fd, 2, reason); /* Drop the reference */ GRPC_LOG_IF_ERROR("fd_orphan", GRPC_ERROR_REF(error)); GRPC_ERROR_UNREF(error); } -static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx, - grpc_fd *fd) { +static grpc_pollset *fd_get_read_notifier_pollset(grpc_fd *fd) { gpr_atm notifier = gpr_atm_acq_load(&fd->read_notifier_pollset); return (grpc_pollset *)notifier; } @@ -428,23 +422,20 @@ static bool fd_is_shutdown(grpc_fd *fd) { } /* Might be called multiple times */ -static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) { - if (grpc_lfev_set_shutdown(exec_ctx, &fd->read_closure, - GRPC_ERROR_REF(why))) { +static void fd_shutdown(grpc_fd *fd, grpc_error *why) { + if (grpc_lfev_set_shutdown(&fd->read_closure, GRPC_ERROR_REF(why))) { shutdown(fd->fd, SHUT_RDWR); - grpc_lfev_set_shutdown(exec_ctx, &fd->write_closure, GRPC_ERROR_REF(why)); + grpc_lfev_set_shutdown(&fd->write_closure, GRPC_ERROR_REF(why)); } GRPC_ERROR_UNREF(why); } -static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read"); +static void fd_notify_on_read(grpc_fd *fd, grpc_closure *closure) { + grpc_lfev_notify_on(&fd->read_closure, closure, "read"); } -static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write"); +static void fd_notify_on_write(grpc_fd *fd, grpc_closure *closure) { + grpc_lfev_notify_on(&fd->write_closure, closure, "write"); } /******************************************************************************* @@ -545,24 +536,22 @@ static void pollset_global_shutdown(void) { gpr_tls_destroy(&g_current_thread_worker); } -static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset) { +static void pollset_maybe_finish_shutdown(grpc_pollset *pollset) { if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL && pollset->kick_alls_pending == 0) { - GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pollset->shutdown_closure, GRPC_ERROR_NONE); pollset->shutdown_closure = NULL; } } -static void do_kick_all(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error_unused) { +static void do_kick_all(void *arg, grpc_error *error_unused) { grpc_error *error = GRPC_ERROR_NONE; grpc_pollset *pollset = (grpc_pollset *)arg; gpr_mu_lock(&pollset->pollable_obj.po.mu); if (pollset->root_worker != NULL) { grpc_pollset_worker *worker = pollset->root_worker; do { - GRPC_STATS_INC_POLLSET_KICK(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK(); if (worker->pollable_obj != &pollset->pollable_obj) { gpr_mu_lock(&worker->pollable_obj->po.mu); } @@ -592,16 +581,16 @@ static void do_kick_all(grpc_exec_ctx *exec_ctx, void *arg, } while (worker != pollset->root_worker); } pollset->kick_alls_pending--; - pollset_maybe_finish_shutdown(exec_ctx, pollset); + pollset_maybe_finish_shutdown(pollset); gpr_mu_unlock(&pollset->pollable_obj.po.mu); GRPC_LOG_IF_ERROR("kick_all", error); } -static void pollset_kick_all(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +static void pollset_kick_all(grpc_pollset *pollset) { pollset->kick_alls_pending++; - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(do_kick_all, pollset, - grpc_schedule_on_exec_ctx), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_CREATE(do_kick_all, pollset, grpc_schedule_on_exec_ctx), + GRPC_ERROR_NONE); } static grpc_error *pollset_kick_inner(grpc_pollset *pollset, pollable *p, @@ -667,10 +656,10 @@ static grpc_error *pollset_kick_inner(grpc_pollset *pollset, pollable *p, } /* p->po.mu must be held before calling this function */ -static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +static grpc_error *pollset_kick(grpc_pollset *pollset, grpc_pollset_worker *specific_worker) { pollable *p = pollset->current_pollable_obj; - GRPC_STATS_INC_POLLSET_KICK(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK(); if (p != &pollset->pollable_obj) { gpr_mu_lock(&p->po.mu); } @@ -690,10 +679,9 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) { *mu = &pollset->pollable_obj.po.mu; } -static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, - grpc_millis millis) { +static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - grpc_exec_ctx_now(exec_ctx); + grpc_millis delta = millis - grpc_exec_ctx_now(); if (delta > INT_MAX) return INT_MAX; else if (delta < 0) @@ -702,9 +690,8 @@ static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, return (int)delta; } -static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_pollset *notifier) { - grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read"); +static void fd_become_readable(grpc_fd *fd, grpc_pollset *notifier) { + grpc_lfev_set_ready(&fd->read_closure, "read"); /* Note, it is possible that fd_become_readable might be called twice with different 'notifier's when an fd becomes readable and it is in two epoll @@ -715,8 +702,8 @@ static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd, gpr_atm_rel_store(&fd->read_notifier_pollset, (gpr_atm)notifier); } -static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) { - grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write"); +static void fd_become_writable(grpc_fd *fd) { + grpc_lfev_set_ready(&fd->write_closure, "write"); } static grpc_error *fd_become_pollable_locked(grpc_fd *fd) { @@ -729,20 +716,18 @@ static grpc_error *fd_become_pollable_locked(grpc_fd *fd) { } /* pollset->po.mu lock must be held by the caller before calling this */ -static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { +static void pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { GPR_ASSERT(pollset->shutdown_closure == NULL); pollset->shutdown_closure = closure; - pollset_kick_all(exec_ctx, pollset); - pollset_maybe_finish_shutdown(exec_ctx, pollset); + pollset_kick_all(pollset); + pollset_maybe_finish_shutdown(pollset); } static bool pollset_is_pollable_fd(grpc_pollset *pollset, pollable *p) { return p != &g_empty_pollable && p != &pollset->pollable_obj; } -static grpc_error *pollset_process_events(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset, bool drain) { +static grpc_error *pollset_process_events(grpc_pollset *pollset, bool drain) { static const char *err_desc = "pollset_process_events"; grpc_error *error = GRPC_ERROR_NONE; for (int i = 0; (drain || i < MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) && @@ -771,10 +756,10 @@ static grpc_error *pollset_process_events(grpc_exec_ctx *exec_ctx, pollset, fd, cancel, read_ev, write_ev); } if (read_ev || cancel) { - fd_become_readable(exec_ctx, fd, pollset); + fd_become_readable(fd, pollset); } if (write_ev || cancel) { - fd_become_writable(exec_ctx, fd); + fd_become_writable(fd); } } } @@ -783,19 +768,18 @@ static grpc_error *pollset_process_events(grpc_exec_ctx *exec_ctx, } /* pollset_shutdown is guaranteed to be called before pollset_destroy. */ -static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +static void pollset_destroy(grpc_pollset *pollset) { pollable_destroy(&pollset->pollable_obj); if (pollset_is_pollable_fd(pollset, pollset->current_pollable_obj)) { - UNREF_BY(exec_ctx, (grpc_fd *)pollset->current_pollable_obj, 2, - "pollset_pollable"); + UNREF_BY((grpc_fd *)pollset->current_pollable_obj, 2, "pollset_pollable"); } GRPC_LOG_IF_ERROR("pollset_process_events", - pollset_process_events(exec_ctx, pollset, true)); + pollset_process_events(pollset, true)); } -static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - pollable *p, grpc_millis deadline) { - int timeout = poll_deadline_to_millis_timeout(exec_ctx, deadline); +static grpc_error *pollset_epoll(grpc_pollset *pollset, pollable *p, + grpc_millis deadline) { + int timeout = poll_deadline_to_millis_timeout(deadline); if (GRPC_TRACER_ON(grpc_polling_trace)) { char *desc = pollable_desc(p); @@ -808,11 +792,11 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } int r; do { - GRPC_STATS_INC_SYSCALL_POLL(exec_ctx); + GRPC_STATS_INC_SYSCALL_POLL(); r = epoll_wait(p->epfd, pollset->events, MAX_EPOLL_EVENTS, timeout); } while (r < 0 && errno == EINTR); if (timeout != 0) { - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(exec_ctx); + GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); } if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait"); @@ -867,8 +851,7 @@ static worker_remove_result worker_remove(grpc_pollset_worker **root, } /* Return true if this thread should poll */ -static bool begin_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_pollset_worker *worker, +static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { bool do_poll = true; @@ -894,7 +877,7 @@ static bool begin_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, worker->pollable_obj->root_worker != worker) { gpr_log(GPR_DEBUG, "PS:%p wait %p w=%p for %dms", pollset, worker->pollable_obj, worker, - poll_deadline_to_millis_timeout(exec_ctx, deadline)); + poll_deadline_to_millis_timeout(deadline)); } while (do_poll && worker->pollable_obj->root_worker != worker) { if (gpr_cv_wait(&worker->cv, &worker->pollable_obj->po.mu, @@ -921,15 +904,14 @@ static bool begin_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, gpr_mu_lock(&pollset->pollable_obj.po.mu); gpr_mu_lock(&worker->pollable_obj->po.mu); } - grpc_exec_ctx_invalidate_now(exec_ctx); + grpc_exec_ctx_invalidate_now(); } return do_poll && pollset->shutdown_closure == NULL && pollset->current_pollable_obj == worker->pollable_obj; } -static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_pollset_worker *worker, +static void end_worker(grpc_pollset *pollset, grpc_pollset_worker *worker, grpc_pollset_worker **worker_hdl) { if (NEW_ROOT == worker_remove(&worker->pollable_obj->root_worker, PWL_POLLABLE, worker)) { @@ -939,10 +921,10 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, gpr_cv_destroy(&worker->cv); } if (pollset_is_pollable_fd(pollset, worker->pollable_obj)) { - UNREF_BY(exec_ctx, (grpc_fd *)worker->pollable_obj, 2, "one_poll"); + UNREF_BY((grpc_fd *)worker->pollable_obj, 2, "one_poll"); } if (EMPTIED == worker_remove(&pollset->root_worker, PWL_POLLSET, worker)) { - pollset_maybe_finish_shutdown(exec_ctx, pollset); + pollset_maybe_finish_shutdown(pollset); } } @@ -950,14 +932,14 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, The function pollset_work() may temporarily release the lock (pollset->po.mu) during the course of its execution but it will always re-acquire the lock and ensure that it is held by the time the function returns */ -static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +static grpc_error *pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { grpc_pollset_worker worker; if (0 && GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_DEBUG, "PS:%p work hdl=%p worker=%p now=%" PRIdPTR " deadline=%" PRIdPTR " kwp=%d root_worker=%p", - pollset, worker_hdl, &worker, grpc_exec_ctx_now(exec_ctx), deadline, + pollset, worker_hdl, &worker, grpc_exec_ctx_now(), deadline, pollset->kicked_without_poller, pollset->root_worker); } grpc_error *error = GRPC_ERROR_NONE; @@ -969,7 +951,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (pollset->current_pollable_obj != &pollset->pollable_obj) { gpr_mu_lock(&pollset->current_pollable_obj->po.mu); } - if (begin_worker(exec_ctx, pollset, &worker, worker_hdl, deadline)) { + if (begin_worker(pollset, &worker, worker_hdl, deadline)) { gpr_tls_set(&g_current_thread_pollset, (intptr_t)pollset); gpr_tls_set(&g_current_thread_worker, (intptr_t)&worker); GPR_ASSERT(!pollset->shutdown_closure); @@ -979,41 +961,38 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } gpr_mu_unlock(&pollset->pollable_obj.po.mu); if (pollset->event_cursor == pollset->event_count) { - append_error(&error, pollset_epoll(exec_ctx, pollset, worker.pollable_obj, - deadline), + append_error(&error, + pollset_epoll(pollset, worker.pollable_obj, deadline), err_desc); } - append_error(&error, pollset_process_events(exec_ctx, pollset, false), - err_desc); + append_error(&error, pollset_process_events(pollset, false), err_desc); gpr_mu_lock(&pollset->pollable_obj.po.mu); if (worker.pollable_obj != &pollset->pollable_obj) { gpr_mu_lock(&worker.pollable_obj->po.mu); } gpr_tls_set(&g_current_thread_pollset, 0); gpr_tls_set(&g_current_thread_worker, 0); - pollset_maybe_finish_shutdown(exec_ctx, pollset); + pollset_maybe_finish_shutdown(pollset); } - end_worker(exec_ctx, pollset, &worker, worker_hdl); + end_worker(pollset, &worker, worker_hdl); if (worker.pollable_obj != &pollset->pollable_obj) { gpr_mu_unlock(&worker.pollable_obj->po.mu); } - if (grpc_exec_ctx_has_work(exec_ctx)) { + if (grpc_exec_ctx_has_work()) { gpr_mu_unlock(&pollset->pollable_obj.po.mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->pollable_obj.po.mu); } return error; } -static void unref_fd_no_longer_poller(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void unref_fd_no_longer_poller(void *arg, grpc_error *error) { grpc_fd *fd = (grpc_fd *)arg; - UNREF_BY(exec_ctx, fd, 2, "pollset_pollable"); + UNREF_BY(fd, 2, "pollset_pollable"); } /* expects pollsets locked, flag whether fd is locked or not */ -static grpc_error *pollset_add_fd_locked(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset, grpc_fd *fd, +static grpc_error *pollset_add_fd_locked(grpc_pollset *pollset, grpc_fd *fd, bool fd_locked) { static const char *err_desc = "pollset_add_fd"; grpc_error *error = GRPC_ERROR_NONE; @@ -1024,7 +1003,7 @@ static grpc_error *pollset_add_fd_locked(grpc_exec_ctx *exec_ctx, fd); } /* empty pollable --> single fd pollable */ - pollset_kick_all(exec_ctx, pollset); + pollset_kick_all(pollset); pollset->current_pollable_obj = &fd->pollable_obj; if (!fd_locked) gpr_mu_lock(&fd->pollable_obj.po.mu); append_error(&error, fd_become_pollable_locked(fd), err_desc); @@ -1046,27 +1025,25 @@ static grpc_error *pollset_add_fd_locked(grpc_exec_ctx *exec_ctx, /* Introduce a spurious completion. If we do not, then it may be that the fd-specific epoll set consumed a completion without being polled, leading to a missed edge going up. */ - grpc_lfev_set_ready(exec_ctx, &had_fd->read_closure, "read"); - grpc_lfev_set_ready(exec_ctx, &had_fd->write_closure, "write"); - pollset_kick_all(exec_ctx, pollset); + grpc_lfev_set_ready(&had_fd->read_closure, "read"); + grpc_lfev_set_ready(&had_fd->write_closure, "write"); + pollset_kick_all(pollset); pollset->current_pollable_obj = &pollset->pollable_obj; if (append_error(&error, pollable_materialize(&pollset->pollable_obj), err_desc)) { pollable_add_fd(&pollset->pollable_obj, had_fd); pollable_add_fd(&pollset->pollable_obj, fd); } - GRPC_CLOSURE_SCHED(exec_ctx, - GRPC_CLOSURE_CREATE(unref_fd_no_longer_poller, had_fd, + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(unref_fd_no_longer_poller, had_fd, grpc_schedule_on_exec_ctx), GRPC_ERROR_NONE); } return error; } -static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_fd *fd) { +static void pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { gpr_mu_lock(&pollset->pollable_obj.po.mu); - grpc_error *error = pollset_add_fd_locked(exec_ctx, pollset, fd, false); + grpc_error *error = pollset_add_fd_locked(pollset, fd, false); gpr_mu_unlock(&pollset->pollable_obj.po.mu); GRPC_LOG_IF_ERROR("pollset_add_fd", error); } @@ -1081,36 +1058,29 @@ static grpc_pollset_set *pollset_set_create(void) { return pss; } -static void pollset_set_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss) { +static void pollset_set_destroy(grpc_pollset_set *pss) { po_destroy(&pss->po); gpr_free(pss); } -static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss, - grpc_fd *fd) { - po_join(exec_ctx, &pss->po, &fd->pollable_obj.po); +static void pollset_set_add_fd(grpc_pollset_set *pss, grpc_fd *fd) { + po_join(&pss->po, &fd->pollable_obj.po); } -static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss, - grpc_fd *fd) {} +static void pollset_set_del_fd(grpc_pollset_set *pss, grpc_fd *fd) {} -static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss, grpc_pollset *ps) { - po_join(exec_ctx, &pss->po, &ps->pollable_obj.po); +static void pollset_set_add_pollset(grpc_pollset_set *pss, grpc_pollset *ps) { + po_join(&pss->po, &ps->pollable_obj.po); } -static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss, grpc_pollset *ps) {} +static void pollset_set_del_pollset(grpc_pollset_set *pss, grpc_pollset *ps) {} -static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_add_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { - po_join(exec_ctx, &bag->po, &item->po); + po_join(&bag->po, &item->po); } -static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_del_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) {} static void po_init(polling_obj *po, polling_obj_type type) { @@ -1166,7 +1136,7 @@ static int po_cmp(polling_obj *a, polling_obj *b) { return 1; } -static void po_join(grpc_exec_ctx *exec_ctx, polling_obj *a, polling_obj *b) { +static void po_join(polling_obj *a, polling_obj *b) { switch (po_cmp(a, b)) { case 0: return; @@ -1180,20 +1150,20 @@ static void po_join(grpc_exec_ctx *exec_ctx, polling_obj *a, polling_obj *b) { if (a->group == NULL) { if (b->group == NULL) { polling_obj *initial_po[] = {a, b}; - pg_create(exec_ctx, initial_po, GPR_ARRAY_SIZE(initial_po)); + pg_create(initial_po, GPR_ARRAY_SIZE(initial_po)); gpr_mu_unlock(&a->mu); gpr_mu_unlock(&b->mu); } else { polling_group *b_group = pg_ref(b->group); gpr_mu_unlock(&b->mu); gpr_mu_unlock(&a->mu); - pg_join(exec_ctx, b_group, a); + pg_join(b_group, a); } } else if (b->group == NULL) { polling_group *a_group = pg_ref(a->group); gpr_mu_unlock(&a->mu); gpr_mu_unlock(&b->mu); - pg_join(exec_ctx, a_group, b); + pg_join(a_group, b); } else if (a->group == b->group) { /* nothing to do */ gpr_mu_unlock(&a->mu); @@ -1203,21 +1173,20 @@ static void po_join(grpc_exec_ctx *exec_ctx, polling_obj *a, polling_obj *b) { polling_group *b_group = pg_ref(b->group); gpr_mu_unlock(&a->mu); gpr_mu_unlock(&b->mu); - pg_merge(exec_ctx, a_group, b_group); + pg_merge(a_group, b_group); } } } -static void pg_notify(grpc_exec_ctx *exec_ctx, polling_obj *a, polling_obj *b) { +static void pg_notify(polling_obj *a, polling_obj *b) { if (a->type == PO_FD && b->type == PO_POLLSET) { - pollset_add_fd_locked(exec_ctx, (grpc_pollset *)b, (grpc_fd *)a, true); + pollset_add_fd_locked((grpc_pollset *)b, (grpc_fd *)a, true); } else if (a->type == PO_POLLSET && b->type == PO_FD) { - pollset_add_fd_locked(exec_ctx, (grpc_pollset *)a, (grpc_fd *)b, true); + pollset_add_fd_locked((grpc_pollset *)a, (grpc_fd *)b, true); } } -static void pg_broadcast(grpc_exec_ctx *exec_ctx, polling_group *from, - polling_group *to) { +static void pg_broadcast(polling_group *from, polling_group *to) { for (polling_obj *a = from->po.next; a != &from->po; a = a->next) { for (polling_obj *b = to->po.next; b != &to->po; b = b->next) { if (po_cmp(a, b) < 0) { @@ -1228,15 +1197,14 @@ static void pg_broadcast(grpc_exec_ctx *exec_ctx, polling_group *from, gpr_mu_lock(&b->mu); gpr_mu_lock(&a->mu); } - pg_notify(exec_ctx, a, b); + pg_notify(a, b); gpr_mu_unlock(&a->mu); gpr_mu_unlock(&b->mu); } } } -static void pg_create(grpc_exec_ctx *exec_ctx, polling_obj **initial_po, - size_t initial_po_count) { +static void pg_create(polling_obj **initial_po, size_t initial_po_count) { /* assumes all polling objects in initial_po are locked */ polling_group *pg = (polling_group *)gpr_malloc(sizeof(*pg)); po_init(&pg->po, PO_POLLING_GROUP); @@ -1257,13 +1225,12 @@ static void pg_create(grpc_exec_ctx *exec_ctx, polling_obj **initial_po, pg->po.prev = initial_po[initial_po_count - 1]; for (size_t i = 1; i < initial_po_count; i++) { for (size_t j = 0; j < i; j++) { - pg_notify(exec_ctx, initial_po[i], initial_po[j]); + pg_notify(initial_po[i], initial_po[j]); } } } -static void pg_join(grpc_exec_ctx *exec_ctx, polling_group *pg, - polling_obj *po) { +static void pg_join(polling_group *pg, polling_obj *po) { /* assumes neither pg nor po are locked; consumes one ref to pg */ pg = pg_lock_latest(pg); /* pg locked */ @@ -1283,12 +1250,12 @@ static void pg_join(grpc_exec_ctx *exec_ctx, polling_group *pg, polling_group *po_group = pg_ref(po->group); gpr_mu_unlock(&po->mu); gpr_mu_unlock(&existing->mu); - pg_merge(exec_ctx, pg, po_group); + pg_merge(pg, po_group); /* early exit: polling obj picked up a group during joining: we needed to do a full merge */ return; } - pg_notify(exec_ctx, po, existing); + pg_notify(po, existing); gpr_mu_unlock(&po->mu); gpr_mu_unlock(&existing->mu); } @@ -1297,7 +1264,7 @@ static void pg_join(grpc_exec_ctx *exec_ctx, polling_group *pg, gpr_mu_unlock(&pg->po.mu); polling_group *po_group = pg_ref(po->group); gpr_mu_unlock(&po->mu); - pg_merge(exec_ctx, pg, po_group); + pg_merge(pg, po_group); /* early exit: polling obj picked up a group during joining: we needed to do a full merge */ return; @@ -1310,8 +1277,7 @@ static void pg_join(grpc_exec_ctx *exec_ctx, polling_group *pg, gpr_mu_unlock(&po->mu); } -static void pg_merge(grpc_exec_ctx *exec_ctx, polling_group *a, - polling_group *b) { +static void pg_merge(polling_group *a, polling_group *b) { for (;;) { if (a == b) { pg_unref(a); @@ -1341,8 +1307,8 @@ static void pg_merge(grpc_exec_ctx *exec_ctx, polling_group *a, size_t unref_count = 0; size_t unref_cap = 0; b->po.group = a; - pg_broadcast(exec_ctx, a, b); - pg_broadcast(exec_ctx, b, a); + pg_broadcast(a, b); + pg_broadcast(b, a); while (b->po.next != &b->po) { polling_obj *po = b->po.next; gpr_mu_lock(&po->mu); diff --git a/src/core/lib/iomgr/ev_epollsig_linux.cc b/src/core/lib/iomgr/ev_epollsig_linux.cc index 035bdc4cb55..d7b61f0c447 100644 --- a/src/core/lib/iomgr/ev_epollsig_linux.cc +++ b/src/core/lib/iomgr/ev_epollsig_linux.cc @@ -164,13 +164,12 @@ static void fd_global_shutdown(void); #ifndef NDEBUG #define PI_ADD_REF(p, r) pi_add_ref_dbg((p), (r), __FILE__, __LINE__) -#define PI_UNREF(exec_ctx, p, r) \ - pi_unref_dbg((exec_ctx), (p), (r), __FILE__, __LINE__) +#define PI_UNREF(p, r) pi_unref_dbg((p), (r), __FILE__, __LINE__) #else #define PI_ADD_REF(p, r) pi_add_ref((p)) -#define PI_UNREF(exec_ctx, p, r) pi_unref((exec_ctx), (p)) +#define PI_UNREF(p, r) pi_unref((p)) #endif @@ -269,7 +268,7 @@ static grpc_wakeup_fd polling_island_wakeup_fd; static __thread polling_island *g_current_thread_polling_island; /* Forward declaration */ -static void polling_island_delete(grpc_exec_ctx *exec_ctx, polling_island *pi); +static void polling_island_delete(polling_island *pi); #ifdef GRPC_TSAN /* Currently TSAN may incorrectly flag data races between epoll_ctl and @@ -283,7 +282,7 @@ gpr_atm g_epoll_sync; #endif /* defined(GRPC_TSAN) */ static void pi_add_ref(polling_island *pi); -static void pi_unref(grpc_exec_ctx *exec_ctx, polling_island *pi); +static void pi_unref(polling_island *pi); #ifndef NDEBUG static void pi_add_ref_dbg(polling_island *pi, const char *reason, @@ -297,15 +296,15 @@ static void pi_add_ref_dbg(polling_island *pi, const char *reason, pi_add_ref(pi); } -static void pi_unref_dbg(grpc_exec_ctx *exec_ctx, polling_island *pi, - const char *reason, const char *file, int line) { +static void pi_unref_dbg(polling_island *pi, const char *reason, + const char *file, int line) { if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_atm old_cnt = gpr_atm_acq_load(&pi->ref_count); gpr_log(GPR_DEBUG, "Unref pi: %p, old:%" PRIdPTR " -> new:%" PRIdPTR " (%s) - (%s, %d)", pi, old_cnt, (old_cnt - 1), reason, file, line); } - pi_unref(exec_ctx, pi); + pi_unref(pi); } #endif @@ -313,7 +312,7 @@ static void pi_add_ref(polling_island *pi) { gpr_atm_no_barrier_fetch_add(&pi->ref_count, 1); } -static void pi_unref(grpc_exec_ctx *exec_ctx, polling_island *pi) { +static void pi_unref(polling_island *pi) { /* If ref count went to zero, delete the polling island. Note that this deletion not be done under a lock. Once the ref count goes to zero, we are guaranteed that no one else holds a reference to the @@ -324,9 +323,9 @@ static void pi_unref(grpc_exec_ctx *exec_ctx, polling_island *pi) { */ if (1 == gpr_atm_full_fetch_add(&pi->ref_count, -1)) { polling_island *next = (polling_island *)gpr_atm_acq_load(&pi->merged_to); - polling_island_delete(exec_ctx, pi); + polling_island_delete(pi); if (next != NULL) { - PI_UNREF(exec_ctx, next, "pi_delete"); /* Recursive call */ + PI_UNREF(next, "pi_delete"); /* Recursive call */ } } } @@ -462,8 +461,7 @@ static void polling_island_remove_fd_locked(polling_island *pi, grpc_fd *fd, } /* Might return NULL in case of an error */ -static polling_island *polling_island_create(grpc_exec_ctx *exec_ctx, - grpc_fd *initial_fd, +static polling_island *polling_island_create(grpc_fd *initial_fd, grpc_error **error) { polling_island *pi = NULL; const char *err_desc = "polling_island_create"; @@ -494,13 +492,13 @@ static polling_island *polling_island_create(grpc_exec_ctx *exec_ctx, done: if (*error != GRPC_ERROR_NONE) { - polling_island_delete(exec_ctx, pi); + polling_island_delete(pi); pi = NULL; } return pi; } -static void polling_island_delete(grpc_exec_ctx *exec_ctx, polling_island *pi) { +static void polling_island_delete(polling_island *pi) { GPR_ASSERT(pi->fd_cnt == 0); if (pi->epoll_fd >= 0) { @@ -857,8 +855,7 @@ static int fd_wrapped_fd(grpc_fd *fd) { return ret_fd; } -static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *on_done, int *release_fd, +static void fd_orphan(grpc_fd *fd, grpc_closure *on_done, int *release_fd, bool already_closed, const char *reason) { grpc_error *error = GRPC_ERROR_NONE; polling_island *unref_pi = NULL; @@ -897,7 +894,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, fd->orphaned = true; - GRPC_CLOSURE_SCHED(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(fd->on_done_closure, GRPC_ERROR_REF(error)); gpr_mu_unlock(&fd->po.mu); UNREF_BY(fd, 2, reason); /* Drop the reference */ @@ -906,7 +903,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, The polling island owns a workqueue which owns an fd, and unreffing inside the lock can cause an eventual lock loop that makes TSAN very unhappy. */ - PI_UNREF(exec_ctx, unref_pi, "fd_orphan"); + PI_UNREF(unref_pi, "fd_orphan"); } if (error != GRPC_ERROR_NONE) { const char *msg = grpc_error_string(error); @@ -915,8 +912,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, GRPC_ERROR_UNREF(error); } -static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx, - grpc_fd *fd) { +static grpc_pollset *fd_get_read_notifier_pollset(grpc_fd *fd) { gpr_atm notifier = gpr_atm_acq_load(&fd->read_notifier_pollset); return (grpc_pollset *)notifier; } @@ -926,23 +922,20 @@ static bool fd_is_shutdown(grpc_fd *fd) { } /* Might be called multiple times */ -static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) { - if (grpc_lfev_set_shutdown(exec_ctx, &fd->read_closure, - GRPC_ERROR_REF(why))) { +static void fd_shutdown(grpc_fd *fd, grpc_error *why) { + if (grpc_lfev_set_shutdown(&fd->read_closure, GRPC_ERROR_REF(why))) { shutdown(fd->fd, SHUT_RDWR); - grpc_lfev_set_shutdown(exec_ctx, &fd->write_closure, GRPC_ERROR_REF(why)); + grpc_lfev_set_shutdown(&fd->write_closure, GRPC_ERROR_REF(why)); } GRPC_ERROR_UNREF(why); } -static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read"); +static void fd_notify_on_read(grpc_fd *fd, grpc_closure *closure) { + grpc_lfev_notify_on(&fd->read_closure, closure, "read"); } -static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write"); +static void fd_notify_on_write(grpc_fd *fd, grpc_closure *closure) { + grpc_lfev_notify_on(&fd->write_closure, closure, "write"); } /******************************************************************************* @@ -1024,11 +1017,11 @@ static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) { } /* p->mu must be held before calling this function */ -static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *p, +static grpc_error *pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { GPR_TIMER_BEGIN("pollset_kick", 0); grpc_error *error = GRPC_ERROR_NONE; - GRPC_STATS_INC_POLLSET_KICK(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK(); const char *err_desc = "Kick Failure"; grpc_pollset_worker *worker = specific_worker; if (worker != NULL) { @@ -1092,10 +1085,9 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) { pollset->shutdown_done = NULL; } -static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, - grpc_millis millis) { +static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - grpc_exec_ctx_now(exec_ctx); + grpc_millis delta = millis - grpc_exec_ctx_now(); if (delta > INT_MAX) return INT_MAX; else if (delta < 0) @@ -1104,9 +1096,8 @@ static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, return (int)delta; } -static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_pollset *notifier) { - grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read"); +static void fd_become_readable(grpc_fd *fd, grpc_pollset *notifier) { + grpc_lfev_set_ready(&fd->read_closure, "read"); /* Note, it is possible that fd_become_readable might be called twice with different 'notifier's when an fd becomes readable and it is in two epoll @@ -1117,39 +1108,36 @@ static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd, gpr_atm_rel_store(&fd->read_notifier_pollset, (gpr_atm)notifier); } -static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) { - grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write"); +static void fd_become_writable(grpc_fd *fd) { + grpc_lfev_set_ready(&fd->write_closure, "write"); } -static void pollset_release_polling_island(grpc_exec_ctx *exec_ctx, - grpc_pollset *ps, +static void pollset_release_polling_island(grpc_pollset *ps, const char *reason) { if (ps->po.pi != NULL) { - PI_UNREF(exec_ctx, ps->po.pi, reason); + PI_UNREF(ps->po.pi, reason); } ps->po.pi = NULL; } -static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset) { +static void finish_shutdown_locked(grpc_pollset *pollset) { /* The pollset cannot have any workers if we are at this stage */ GPR_ASSERT(!pollset_has_workers(pollset)); pollset->finish_shutdown_called = true; /* Release the ref and set pollset->po.pi to NULL */ - pollset_release_polling_island(exec_ctx, pollset, "ps_shutdown"); - GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_done, GRPC_ERROR_NONE); + pollset_release_polling_island(pollset, "ps_shutdown"); + GRPC_CLOSURE_SCHED(pollset->shutdown_done, GRPC_ERROR_NONE); } /* pollset->po.mu lock must be held by the caller before calling this */ -static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { +static void pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { GPR_TIMER_BEGIN("pollset_shutdown", 0); GPR_ASSERT(!pollset->shutting_down); pollset->shutting_down = true; pollset->shutdown_done = closure; - pollset_kick(exec_ctx, pollset, GRPC_POLLSET_KICK_BROADCAST); + pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST); /* If the pollset has any workers, we cannot call finish_shutdown_locked() because it would release the underlying polling island. In such a case, we @@ -1157,7 +1145,7 @@ static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (!pollset_has_workers(pollset)) { GPR_ASSERT(!pollset->finish_shutdown_called); GPR_TIMER_MARK("pollset_shutdown.finish_shutdown_locked", 0); - finish_shutdown_locked(exec_ctx, pollset); + finish_shutdown_locked(pollset); } GPR_TIMER_END("pollset_shutdown", 0); } @@ -1165,15 +1153,14 @@ static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, /* pollset_shutdown is guaranteed to be called before pollset_destroy. So other * than destroying the mutexes, there is nothing special that needs to be done * here */ -static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +static void pollset_destroy(grpc_pollset *pollset) { GPR_ASSERT(!pollset_has_workers(pollset)); gpr_mu_destroy(&pollset->po.mu); } #define GRPC_EPOLL_MAX_EVENTS 100 /* Note: sig_mask contains the signal mask to use *during* epoll_wait() */ -static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset, +static void pollset_work_and_unlock(grpc_pollset *pollset, grpc_pollset_worker *worker, int timeout_ms, sigset_t *sig_mask, grpc_error **error) { struct epoll_event ep_ev[GRPC_EPOLL_MAX_EVENTS]; @@ -1195,7 +1182,7 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, this function (i.e pollset_work_and_unlock()) is called */ if (pollset->po.pi == NULL) { - pollset->po.pi = polling_island_create(exec_ctx, NULL, error); + pollset->po.pi = polling_island_create(NULL, error); if (pollset->po.pi == NULL) { GPR_TIMER_END("pollset_work_and_unlock", 0); return; /* Fatal error. We cannot continue */ @@ -1215,7 +1202,7 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, /* Always do PI_ADD_REF before PI_UNREF because PI_UNREF may cause the polling island to be deleted */ PI_ADD_REF(pi, "ps"); - PI_UNREF(exec_ctx, pollset->po.pi, "ps"); + PI_UNREF(pollset->po.pi, "ps"); pollset->po.pi = pi; } @@ -1229,10 +1216,10 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, g_current_thread_polling_island = pi; GRPC_SCHEDULING_START_BLOCKING_REGION; - GRPC_STATS_INC_SYSCALL_POLL(exec_ctx); + GRPC_STATS_INC_SYSCALL_POLL(); ep_rv = epoll_pwait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, timeout_ms, sig_mask); - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(exec_ctx); + GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); if (ep_rv < 0) { if (errno != EINTR) { gpr_asprintf(&err_msg, @@ -1270,10 +1257,10 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, int read_ev = ep_ev[i].events & (EPOLLIN | EPOLLPRI); int write_ev = ep_ev[i].events & EPOLLOUT; if (read_ev || cancel) { - fd_become_readable(exec_ctx, fd, pollset); + fd_become_readable(fd, pollset); } if (write_ev || cancel) { - fd_become_writable(exec_ctx, fd); + fd_become_writable(fd); } } } @@ -1288,7 +1275,7 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, that we got before releasing the polling island lock). This is because pollset->po.pi pointer might get udpated in other parts of the code when there is an island merge while we are doing epoll_wait() above */ - PI_UNREF(exec_ctx, pi, "ps_work"); + PI_UNREF(pi, "ps_work"); GPR_TIMER_END("pollset_work_and_unlock", 0); } @@ -1297,12 +1284,12 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx, The function pollset_work() may temporarily release the lock (pollset->po.mu) during the course of its execution but it will always re-acquire the lock and ensure that it is held by the time the function returns */ -static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +static grpc_error *pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { GPR_TIMER_BEGIN("pollset_work", 0); grpc_error *error = GRPC_ERROR_NONE; - int timeout_ms = poll_deadline_to_millis_timeout(exec_ctx, deadline); + int timeout_ms = poll_deadline_to_millis_timeout(deadline); sigset_t new_mask; @@ -1360,9 +1347,9 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, push_front_worker(pollset, &worker); /* Add worker to pollset */ - pollset_work_and_unlock(exec_ctx, pollset, &worker, timeout_ms, - &g_orig_sigmask, &error); - grpc_exec_ctx_flush(exec_ctx); + pollset_work_and_unlock(pollset, &worker, timeout_ms, &g_orig_sigmask, + &error); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->po.mu); @@ -1382,10 +1369,10 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (pollset->shutting_down && !pollset_has_workers(pollset) && !pollset->finish_shutdown_called) { GPR_TIMER_MARK("pollset_work.finish_shutdown_locked", 0); - finish_shutdown_locked(exec_ctx, pollset); + finish_shutdown_locked(pollset); gpr_mu_unlock(&pollset->po.mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->po.mu); } @@ -1400,9 +1387,8 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, return error; } -static void add_poll_object(grpc_exec_ctx *exec_ctx, poll_obj *bag, - poll_obj_type bag_type, poll_obj *item, - poll_obj_type item_type) { +static void add_poll_object(poll_obj *bag, poll_obj_type bag_type, + poll_obj *item, poll_obj_type item_type) { GPR_TIMER_BEGIN("add_poll_object", 0); #ifndef NDEBUG @@ -1452,7 +1438,7 @@ retry: keeping TSAN happy outweigh any performance advantage we might have by keeping the lock held. */ gpr_mu_unlock(&item->mu); - pi_new = polling_island_create(exec_ctx, FD_FROM_PO(item), &error); + pi_new = polling_island_create(FD_FROM_PO(item), &error); gpr_mu_lock(&item->mu); /* Need to reverify any assumptions made between the initial lock and @@ -1471,11 +1457,11 @@ retry: /* Ref and unref so that the polling island gets deleted during unref */ PI_ADD_REF(pi_new, "dance_of_destruction"); - PI_UNREF(exec_ctx, pi_new, "dance_of_destruction"); + PI_UNREF(pi_new, "dance_of_destruction"); goto retry; } } else { - pi_new = polling_island_create(exec_ctx, NULL, &error); + pi_new = polling_island_create(NULL, &error); } GRPC_POLLING_TRACE( @@ -1530,7 +1516,7 @@ retry: if (item->pi != pi_new) { PI_ADD_REF(pi_new, poll_obj_string(item_type)); if (item->pi != NULL) { - PI_UNREF(exec_ctx, item->pi, poll_obj_string(item_type)); + PI_UNREF(item->pi, poll_obj_string(item_type)); } item->pi = pi_new; } @@ -1538,7 +1524,7 @@ retry: if (bag->pi != pi_new) { PI_ADD_REF(pi_new, poll_obj_string(bag_type)); if (bag->pi != NULL) { - PI_UNREF(exec_ctx, bag->pi, poll_obj_string(bag_type)); + PI_UNREF(bag->pi, poll_obj_string(bag_type)); } bag->pi = pi_new; } @@ -1550,10 +1536,8 @@ retry: GPR_TIMER_END("add_poll_object", 0); } -static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_fd *fd) { - add_poll_object(exec_ctx, &pollset->po, POLL_OBJ_POLLSET, &fd->po, - POLL_OBJ_FD); +static void pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { + add_poll_object(&pollset->po, POLL_OBJ_POLLSET, &fd->po, POLL_OBJ_FD); } /******************************************************************************* @@ -1570,48 +1554,39 @@ static grpc_pollset_set *pollset_set_create(void) { return pss; } -static void pollset_set_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss) { +static void pollset_set_destroy(grpc_pollset_set *pss) { gpr_mu_destroy(&pss->po.mu); if (pss->po.pi != NULL) { - PI_UNREF(exec_ctx, pss->po.pi, "pss_destroy"); + PI_UNREF(pss->po.pi, "pss_destroy"); } gpr_free(pss); } -static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss, - grpc_fd *fd) { - add_poll_object(exec_ctx, &pss->po, POLL_OBJ_POLLSET_SET, &fd->po, - POLL_OBJ_FD); +static void pollset_set_add_fd(grpc_pollset_set *pss, grpc_fd *fd) { + add_poll_object(&pss->po, POLL_OBJ_POLLSET_SET, &fd->po, POLL_OBJ_FD); } -static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss, - grpc_fd *fd) { +static void pollset_set_del_fd(grpc_pollset_set *pss, grpc_fd *fd) { /* Nothing to do */ } -static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss, grpc_pollset *ps) { - add_poll_object(exec_ctx, &pss->po, POLL_OBJ_POLLSET_SET, &ps->po, - POLL_OBJ_POLLSET); +static void pollset_set_add_pollset(grpc_pollset_set *pss, grpc_pollset *ps) { + add_poll_object(&pss->po, POLL_OBJ_POLLSET_SET, &ps->po, POLL_OBJ_POLLSET); } -static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pss, grpc_pollset *ps) { +static void pollset_set_del_pollset(grpc_pollset_set *pss, grpc_pollset *ps) { /* Nothing to do */ } -static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_add_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { - add_poll_object(exec_ctx, &bag->po, POLL_OBJ_POLLSET_SET, &item->po, + add_poll_object(&bag->po, POLL_OBJ_POLLSET_SET, &item->po, POLL_OBJ_POLLSET_SET); } -static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_del_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { /* Nothing to do */ } diff --git a/src/core/lib/iomgr/ev_poll_posix.cc b/src/core/lib/iomgr/ev_poll_posix.cc index 036a35690c5..b61ecf7c42d 100644 --- a/src/core/lib/iomgr/ev_poll_posix.cc +++ b/src/core/lib/iomgr/ev_poll_posix.cc @@ -128,8 +128,7 @@ static uint32_t fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset, MUST NOT be called with a pollset lock taken if got_read or got_write are 1, also does the become_{readable,writable} as appropriate. */ -static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *rec, - int got_read, int got_write, +static void fd_end_poll(grpc_fd_watcher *rec, int got_read, int got_write, grpc_pollset *read_notifier_pollset); /* Return 1 if this fd is orphaned, 0 otherwise */ @@ -186,11 +185,9 @@ struct grpc_pollset { }; /* Add an fd to a pollset */ -static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - struct grpc_fd *fd); +static void pollset_add_fd(grpc_pollset *pollset, struct grpc_fd *fd); -static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd); +static void pollset_set_add_fd(grpc_pollset_set *pollset_set, grpc_fd *fd); /* Convert a timespec to milliseconds: - very small or negative poll times are clamped to zero to do a @@ -199,8 +196,7 @@ static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, - longer than a millisecond polls are rounded up to the next nearest millisecond to avoid spinning - infinite timeouts are converted to -1 */ -static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, - grpc_millis deadline); +static int poll_deadline_to_millis_timeout(grpc_millis deadline); /* Allow kick to wakeup the currently polling worker */ #define GRPC_POLLSET_CAN_KICK_SELF 1 @@ -208,7 +204,7 @@ static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, #define GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP 2 /* As per pollset_kick, with an extended set of flags (defined above) -- mostly for fd_posix's use. */ -static grpc_error *pollset_kick_ext(grpc_exec_ctx *exec_ctx, grpc_pollset *p, +static grpc_error *pollset_kick_ext(grpc_pollset *p, grpc_pollset_worker *specific_worker, uint32_t flags) GRPC_MUST_USE_RESULT; @@ -353,8 +349,7 @@ static bool fd_is_orphaned(grpc_fd *fd) { } /* Return the read-notifier pollset */ -static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx, - grpc_fd *fd) { +static grpc_pollset *fd_get_read_notifier_pollset(grpc_fd *fd) { grpc_pollset *notifier = NULL; gpr_mu_lock(&fd->mu); @@ -364,39 +359,36 @@ static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx, return notifier; } -static grpc_error *pollset_kick_locked(grpc_exec_ctx *exec_ctx, - grpc_fd_watcher *watcher) { +static grpc_error *pollset_kick_locked(grpc_fd_watcher *watcher) { gpr_mu_lock(&watcher->pollset->mu); GPR_ASSERT(watcher->worker); - grpc_error *err = - pollset_kick_ext(exec_ctx, watcher->pollset, watcher->worker, - GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP); + grpc_error *err = pollset_kick_ext(watcher->pollset, watcher->worker, + GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP); gpr_mu_unlock(&watcher->pollset->mu); return err; } -static void maybe_wake_one_watcher_locked(grpc_exec_ctx *exec_ctx, - grpc_fd *fd) { +static void maybe_wake_one_watcher_locked(grpc_fd *fd) { if (fd->inactive_watcher_root.next != &fd->inactive_watcher_root) { - pollset_kick_locked(exec_ctx, fd->inactive_watcher_root.next); + pollset_kick_locked(fd->inactive_watcher_root.next); } else if (fd->read_watcher) { - pollset_kick_locked(exec_ctx, fd->read_watcher); + pollset_kick_locked(fd->read_watcher); } else if (fd->write_watcher) { - pollset_kick_locked(exec_ctx, fd->write_watcher); + pollset_kick_locked(fd->write_watcher); } } -static void wake_all_watchers_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd) { +static void wake_all_watchers_locked(grpc_fd *fd) { grpc_fd_watcher *watcher; for (watcher = fd->inactive_watcher_root.next; watcher != &fd->inactive_watcher_root; watcher = watcher->next) { - pollset_kick_locked(exec_ctx, watcher); + pollset_kick_locked(watcher); } if (fd->read_watcher) { - pollset_kick_locked(exec_ctx, fd->read_watcher); + pollset_kick_locked(fd->read_watcher); } if (fd->write_watcher && fd->write_watcher != fd->read_watcher) { - pollset_kick_locked(exec_ctx, fd->write_watcher); + pollset_kick_locked(fd->write_watcher); } } @@ -405,12 +397,12 @@ static int has_watchers(grpc_fd *fd) { fd->inactive_watcher_root.next != &fd->inactive_watcher_root; } -static void close_fd_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd) { +static void close_fd_locked(grpc_fd *fd) { fd->closed = 1; if (!fd->released) { close(fd->fd); } - GRPC_CLOSURE_SCHED(exec_ctx, fd->on_done_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(fd->on_done_closure, GRPC_ERROR_NONE); } static int fd_wrapped_fd(grpc_fd *fd) { @@ -421,8 +413,7 @@ static int fd_wrapped_fd(grpc_fd *fd) { } } -static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *on_done, int *release_fd, +static void fd_orphan(grpc_fd *fd, grpc_closure *on_done, int *release_fd, bool already_closed, const char *reason) { fd->on_done_closure = on_done; fd->released = release_fd != NULL; @@ -435,9 +426,9 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, gpr_mu_lock(&fd->mu); REF_BY(fd, 1, reason); /* remove active status, but keep referenced */ if (!has_watchers(fd)) { - close_fd_locked(exec_ctx, fd); + close_fd_locked(fd); } else { - wake_all_watchers_locked(exec_ctx, fd); + wake_all_watchers_locked(fd); } gpr_mu_unlock(&fd->mu); UNREF_BY(fd, 2, reason); /* drop the reference */ @@ -469,10 +460,10 @@ static grpc_error *fd_shutdown_error(grpc_fd *fd) { } } -static void notify_on_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure **st, grpc_closure *closure) { +static void notify_on_locked(grpc_fd *fd, grpc_closure **st, + grpc_closure *closure) { if (fd->shutdown) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING("FD shutdown")); } else if (*st == CLOSURE_NOT_READY) { /* not ready ==> switch to a waiting state by setting the closure */ @@ -480,8 +471,8 @@ static void notify_on_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd, } else if (*st == CLOSURE_READY) { /* already ready ==> queue the closure to run immediately */ *st = CLOSURE_NOT_READY; - GRPC_CLOSURE_SCHED(exec_ctx, closure, fd_shutdown_error(fd)); - maybe_wake_one_watcher_locked(exec_ctx, fd); + GRPC_CLOSURE_SCHED(closure, fd_shutdown_error(fd)); + maybe_wake_one_watcher_locked(fd); } else { /* upcallptr was set to a different closure. This is an error! */ gpr_log(GPR_ERROR, @@ -492,8 +483,7 @@ static void notify_on_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd, } /* returns 1 if state becomes not ready */ -static int set_ready_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure **st) { +static int set_ready_locked(grpc_fd *fd, grpc_closure **st) { if (*st == CLOSURE_READY) { /* duplicate ready ==> ignore */ return 0; @@ -503,18 +493,18 @@ static int set_ready_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd, return 0; } else { /* waiting ==> queue closure */ - GRPC_CLOSURE_SCHED(exec_ctx, *st, fd_shutdown_error(fd)); + GRPC_CLOSURE_SCHED(*st, fd_shutdown_error(fd)); *st = CLOSURE_NOT_READY; return 1; } } static void set_read_notifier_pollset_locked( - grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_pollset *read_notifier_pollset) { + grpc_fd *fd, grpc_pollset *read_notifier_pollset) { fd->read_notifier_pollset = read_notifier_pollset; } -static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) { +static void fd_shutdown(grpc_fd *fd, grpc_error *why) { gpr_mu_lock(&fd->mu); /* only shutdown once */ if (!fd->shutdown) { @@ -522,8 +512,8 @@ static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) { fd->shutdown_error = why; /* signal read/write closed to OS so that future operations fail */ shutdown(fd->fd, SHUT_RDWR); - set_ready_locked(exec_ctx, fd, &fd->read_closure); - set_ready_locked(exec_ctx, fd, &fd->write_closure); + set_ready_locked(fd, &fd->read_closure); + set_ready_locked(fd, &fd->write_closure); } else { GRPC_ERROR_UNREF(why); } @@ -537,17 +527,15 @@ static bool fd_is_shutdown(grpc_fd *fd) { return r; } -static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { +static void fd_notify_on_read(grpc_fd *fd, grpc_closure *closure) { gpr_mu_lock(&fd->mu); - notify_on_locked(exec_ctx, fd, &fd->read_closure, closure); + notify_on_locked(fd, &fd->read_closure, closure); gpr_mu_unlock(&fd->mu); } -static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { +static void fd_notify_on_write(grpc_fd *fd, grpc_closure *closure) { gpr_mu_lock(&fd->mu); - notify_on_locked(exec_ctx, fd, &fd->write_closure, closure); + notify_on_locked(fd, &fd->write_closure, closure); gpr_mu_unlock(&fd->mu); } @@ -602,8 +590,7 @@ static uint32_t fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset, return mask; } -static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *watcher, - int got_read, int got_write, +static void fd_end_poll(grpc_fd_watcher *watcher, int got_read, int got_write, grpc_pollset *read_notifier_pollset) { int was_polling = 0; int kick = 0; @@ -637,23 +624,23 @@ static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *watcher, watcher->prev->next = watcher->next; } if (got_read) { - if (set_ready_locked(exec_ctx, fd, &fd->read_closure)) { + if (set_ready_locked(fd, &fd->read_closure)) { kick = 1; } if (read_notifier_pollset != NULL) { - set_read_notifier_pollset_locked(exec_ctx, fd, read_notifier_pollset); + set_read_notifier_pollset_locked(fd, read_notifier_pollset); } } if (got_write) { - if (set_ready_locked(exec_ctx, fd, &fd->write_closure)) { + if (set_ready_locked(fd, &fd->write_closure)) { kick = 1; } } if (kick) { - maybe_wake_one_watcher_locked(exec_ctx, fd); + maybe_wake_one_watcher_locked(fd); } if (fd_is_orphaned(fd) && !has_watchers(fd) && !fd->closed) { - close_fd_locked(exec_ctx, fd); + close_fd_locked(fd); } gpr_mu_unlock(&fd->mu); @@ -714,12 +701,12 @@ static void kick_append_error(grpc_error **composite, grpc_error *error) { *composite = grpc_error_add_child(*composite, error); } -static grpc_error *pollset_kick_ext(grpc_exec_ctx *exec_ctx, grpc_pollset *p, +static grpc_error *pollset_kick_ext(grpc_pollset *p, grpc_pollset_worker *specific_worker, uint32_t flags) { GPR_TIMER_BEGIN("pollset_kick_ext", 0); grpc_error *error = GRPC_ERROR_NONE; - GRPC_STATS_INC_POLLSET_KICK(exec_ctx); + GRPC_STATS_INC_POLLSET_KICK(); /* pollset->mu already held */ if (specific_worker != NULL) { @@ -785,9 +772,9 @@ static grpc_error *pollset_kick_ext(grpc_exec_ctx *exec_ctx, grpc_pollset *p, return error; } -static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *p, +static grpc_error *pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { - return pollset_kick_ext(exec_ctx, p, specific_worker, 0); + return pollset_kick_ext(p, specific_worker, 0); } /* global state management */ @@ -821,7 +808,7 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) { pollset->pollset_set_count = 0; } -static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +static void pollset_destroy(grpc_pollset *pollset) { GPR_ASSERT(!pollset_has_workers(pollset)); GPR_ASSERT(pollset->idle_jobs.head == pollset->idle_jobs.tail); while (pollset->local_wakeup_cache) { @@ -834,8 +821,7 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { gpr_mu_destroy(&pollset->mu); } -static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_fd *fd) { +static void pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { gpr_mu_lock(&pollset->mu); size_t i; /* TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here */ @@ -850,19 +836,19 @@ static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } pollset->fds[pollset->fd_count++] = fd; GRPC_FD_REF(fd, "multipoller"); - pollset_kick(exec_ctx, pollset, NULL); + pollset_kick(pollset, NULL); exit: gpr_mu_unlock(&pollset->mu); } -static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +static void finish_shutdown(grpc_pollset *pollset) { GPR_ASSERT(grpc_closure_list_empty(pollset->idle_jobs)); size_t i; for (i = 0; i < pollset->fd_count; i++) { GRPC_FD_UNREF(pollset->fds[i], "multipoller"); } pollset->fd_count = 0; - GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pollset->shutdown_done, GRPC_ERROR_NONE); } static void work_combine_error(grpc_error **composite, grpc_error *error) { @@ -873,7 +859,7 @@ static void work_combine_error(grpc_error **composite, grpc_error *error) { *composite = grpc_error_add_child(*composite, error); } -static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +static grpc_error *pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { grpc_pollset_worker worker; @@ -912,7 +898,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (!pollset_has_workers(pollset) && !grpc_closure_list_empty(pollset->idle_jobs)) { GPR_TIMER_MARK("pollset_work.idle_jobs", 0); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &pollset->idle_jobs); + GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs); goto done; } /* If we're shutting down then we don't execute any extended work */ @@ -944,7 +930,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, grpc_fd_watcher *watchers; struct pollfd *pfds; - timeout = poll_deadline_to_millis_timeout(exec_ctx, deadline); + timeout = poll_deadline_to_millis_timeout(deadline); if (pollset->fd_count + 2 <= inline_elements) { pfds = pollfd_space; @@ -988,9 +974,9 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid even going into the blocking annotation if possible */ GRPC_SCHEDULING_START_BLOCKING_REGION; - GRPC_STATS_INC_SYSCALL_POLL(exec_ctx); + GRPC_STATS_INC_SYSCALL_POLL(); r = grpc_poll_function(pfds, pfd_count, timeout); - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(exec_ctx); + GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_DEBUG, "%p poll=%d", pollset, r); @@ -1003,16 +989,16 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, for (i = 1; i < pfd_count; i++) { if (watchers[i].fd == NULL) { - fd_end_poll(exec_ctx, &watchers[i], 0, 0, NULL); + fd_end_poll(&watchers[i], 0, 0, NULL); } else { // Wake up all the file descriptors, if we have an invalid one // we can identify it on the next pollset_work() - fd_end_poll(exec_ctx, &watchers[i], 1, 1, pollset); + fd_end_poll(&watchers[i], 1, 1, pollset); } } } else if (r == 0) { for (i = 1; i < pfd_count; i++) { - fd_end_poll(exec_ctx, &watchers[i], 0, 0, NULL); + fd_end_poll(&watchers[i], 0, 0, NULL); } } else { if (pfds[0].revents & POLLIN_CHECK) { @@ -1024,14 +1010,14 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } for (i = 1; i < pfd_count; i++) { if (watchers[i].fd == NULL) { - fd_end_poll(exec_ctx, &watchers[i], 0, 0, NULL); + fd_end_poll(&watchers[i], 0, 0, NULL); } else { if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_DEBUG, "%p got_event: %d r:%d w:%d [%d]", pollset, pfds[i].fd, (pfds[i].revents & POLLIN_CHECK) != 0, (pfds[i].revents & POLLOUT_CHECK) != 0, pfds[i].revents); } - fd_end_poll(exec_ctx, &watchers[i], pfds[i].revents & POLLIN_CHECK, + fd_end_poll(&watchers[i], pfds[i].revents & POLLIN_CHECK, pfds[i].revents & POLLOUT_CHECK, pollset); } } @@ -1054,7 +1040,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, worker list, which means nobody could ask us to re-evaluate polling). */ done: if (!locked) { - queued_work |= grpc_exec_ctx_flush(exec_ctx); + queued_work |= grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->mu); locked = 1; } @@ -1083,21 +1069,21 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, /* check shutdown conditions */ if (pollset->shutting_down) { if (pollset_has_workers(pollset)) { - pollset_kick(exec_ctx, pollset, NULL); + pollset_kick(pollset, NULL); } else if (!pollset->called_shutdown && !pollset_has_observers(pollset)) { pollset->called_shutdown = 1; gpr_mu_unlock(&pollset->mu); - finish_shutdown(exec_ctx, pollset); - grpc_exec_ctx_flush(exec_ctx); + finish_shutdown(pollset); + grpc_exec_ctx_flush(); /* Continuing to access pollset here is safe -- it is the caller's * responsibility to not destroy when it has outstanding calls to * pollset_work. * TODO(dklempner): Can we refactor the shutdown logic to avoid this? */ gpr_mu_lock(&pollset->mu); } else if (!grpc_closure_list_empty(pollset->idle_jobs)) { - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &pollset->idle_jobs); + GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs); gpr_mu_unlock(&pollset->mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&pollset->mu); } } @@ -1107,26 +1093,24 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, return error; } -static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { +static void pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { GPR_ASSERT(!pollset->shutting_down); pollset->shutting_down = 1; pollset->shutdown_done = closure; - pollset_kick(exec_ctx, pollset, GRPC_POLLSET_KICK_BROADCAST); + pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST); if (!pollset_has_workers(pollset)) { - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &pollset->idle_jobs); + GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs); } if (!pollset->called_shutdown && !pollset_has_observers(pollset)) { pollset->called_shutdown = 1; - finish_shutdown(exec_ctx, pollset); + finish_shutdown(pollset); } } -static int poll_deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, - grpc_millis deadline) { +static int poll_deadline_to_millis_timeout(grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) return -1; if (deadline == 0) return 0; - grpc_millis n = deadline - grpc_exec_ctx_now(exec_ctx); + grpc_millis n = deadline - grpc_exec_ctx_now(); if (n < 0) return 0; if (n > INT_MAX) return -1; return (int)n; @@ -1143,8 +1127,7 @@ static grpc_pollset_set *pollset_set_create(void) { return pollset_set; } -static void pollset_set_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set) { +static void pollset_set_destroy(grpc_pollset_set *pollset_set) { size_t i; gpr_mu_destroy(&pollset_set->mu); for (i = 0; i < pollset_set->fd_count; i++) { @@ -1159,7 +1142,7 @@ static void pollset_set_destroy(grpc_exec_ctx *exec_ctx, !pollset_has_observers(pollset)) { pollset->called_shutdown = 1; gpr_mu_unlock(&pollset->mu); - finish_shutdown(exec_ctx, pollset); + finish_shutdown(pollset); } else { gpr_mu_unlock(&pollset->mu); } @@ -1170,8 +1153,7 @@ static void pollset_set_destroy(grpc_exec_ctx *exec_ctx, gpr_free(pollset_set); } -static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, +static void pollset_set_add_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset) { size_t i, j; gpr_mu_lock(&pollset->mu); @@ -1190,7 +1172,7 @@ static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, if (fd_is_orphaned(pollset_set->fds[i])) { GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set"); } else { - pollset_add_fd(exec_ctx, pollset, pollset_set->fds[i]); + pollset_add_fd(pollset, pollset_set->fds[i]); pollset_set->fds[j++] = pollset_set->fds[i]; } } @@ -1198,8 +1180,7 @@ static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, gpr_mu_unlock(&pollset_set->mu); } -static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, +static void pollset_set_del_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset) { size_t i; gpr_mu_lock(&pollset_set->mu); @@ -1219,14 +1200,13 @@ static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, !pollset_has_observers(pollset)) { pollset->called_shutdown = 1; gpr_mu_unlock(&pollset->mu); - finish_shutdown(exec_ctx, pollset); + finish_shutdown(pollset); } else { gpr_mu_unlock(&pollset->mu); } } -static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_add_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { size_t i, j; gpr_mu_lock(&bag->mu); @@ -1241,7 +1221,7 @@ static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, if (fd_is_orphaned(bag->fds[i])) { GRPC_FD_UNREF(bag->fds[i], "pollset_set"); } else { - pollset_set_add_fd(exec_ctx, item, bag->fds[i]); + pollset_set_add_fd(item, bag->fds[i]); bag->fds[j++] = bag->fds[i]; } } @@ -1249,8 +1229,7 @@ static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, gpr_mu_unlock(&bag->mu); } -static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +static void pollset_set_del_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { size_t i; gpr_mu_lock(&bag->mu); @@ -1265,8 +1244,7 @@ static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, gpr_mu_unlock(&bag->mu); } -static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd) { +static void pollset_set_add_fd(grpc_pollset_set *pollset_set, grpc_fd *fd) { size_t i; gpr_mu_lock(&pollset_set->mu); if (pollset_set->fd_count == pollset_set->fd_capacity) { @@ -1277,16 +1255,15 @@ static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, GRPC_FD_REF(fd, "pollset_set"); pollset_set->fds[pollset_set->fd_count++] = fd; for (i = 0; i < pollset_set->pollset_count; i++) { - pollset_add_fd(exec_ctx, pollset_set->pollsets[i], fd); + pollset_add_fd(pollset_set->pollsets[i], fd); } for (i = 0; i < pollset_set->pollset_set_count; i++) { - pollset_set_add_fd(exec_ctx, pollset_set->pollset_sets[i], fd); + pollset_set_add_fd(pollset_set->pollset_sets[i], fd); } gpr_mu_unlock(&pollset_set->mu); } -static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd) { +static void pollset_set_del_fd(grpc_pollset_set *pollset_set, grpc_fd *fd) { size_t i; gpr_mu_lock(&pollset_set->mu); for (i = 0; i < pollset_set->fd_count; i++) { @@ -1299,7 +1276,7 @@ static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, } } for (i = 0; i < pollset_set->pollset_set_count; i++) { - pollset_set_del_fd(exec_ctx, pollset_set->pollset_sets[i], fd); + pollset_set_del_fd(pollset_set->pollset_sets[i], fd); } gpr_mu_unlock(&pollset_set->mu); } diff --git a/src/core/lib/iomgr/ev_posix.cc b/src/core/lib/iomgr/ev_posix.cc index 3a1dd8d30b3..3bc34575a11 100644 --- a/src/core/lib/iomgr/ev_posix.cc +++ b/src/core/lib/iomgr/ev_posix.cc @@ -196,28 +196,25 @@ int grpc_fd_wrapped_fd(grpc_fd *fd) { return g_event_engine->fd_wrapped_fd(fd); } -void grpc_fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done, - int *release_fd, bool already_closed, const char *reason) { - g_event_engine->fd_orphan(exec_ctx, fd, on_done, release_fd, already_closed, - reason); +void grpc_fd_orphan(grpc_fd *fd, grpc_closure *on_done, int *release_fd, + bool already_closed, const char *reason) { + g_event_engine->fd_orphan(fd, on_done, release_fd, already_closed, reason); } -void grpc_fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) { - g_event_engine->fd_shutdown(exec_ctx, fd, why); +void grpc_fd_shutdown(grpc_fd *fd, grpc_error *why) { + g_event_engine->fd_shutdown(fd, why); } bool grpc_fd_is_shutdown(grpc_fd *fd) { return g_event_engine->fd_is_shutdown(fd); } -void grpc_fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - g_event_engine->fd_notify_on_read(exec_ctx, fd, closure); +void grpc_fd_notify_on_read(grpc_fd *fd, grpc_closure *closure) { + g_event_engine->fd_notify_on_read(fd, closure); } -void grpc_fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure) { - g_event_engine->fd_notify_on_write(exec_ctx, fd, closure); +void grpc_fd_notify_on_write(grpc_fd *fd, grpc_closure *closure) { + g_event_engine->fd_notify_on_write(fd, closure); } size_t grpc_pollset_size(void) { return g_event_engine->pollset_size; } @@ -226,72 +223,63 @@ void grpc_pollset_init(grpc_pollset *pollset, gpr_mu **mu) { g_event_engine->pollset_init(pollset, mu); } -void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { - g_event_engine->pollset_shutdown(exec_ctx, pollset, closure); +void grpc_pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { + g_event_engine->pollset_shutdown(pollset, closure); } -void grpc_pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { - g_event_engine->pollset_destroy(exec_ctx, pollset); +void grpc_pollset_destroy(grpc_pollset *pollset) { + g_event_engine->pollset_destroy(pollset); } -grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker, grpc_millis deadline) { - return g_event_engine->pollset_work(exec_ctx, pollset, worker, deadline); + return g_event_engine->pollset_work(pollset, worker, deadline); } -grpc_error *grpc_pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_kick(grpc_pollset *pollset, grpc_pollset_worker *specific_worker) { - return g_event_engine->pollset_kick(exec_ctx, pollset, specific_worker); + return g_event_engine->pollset_kick(pollset, specific_worker); } -void grpc_pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - struct grpc_fd *fd) { - g_event_engine->pollset_add_fd(exec_ctx, pollset, fd); +void grpc_pollset_add_fd(grpc_pollset *pollset, struct grpc_fd *fd) { + g_event_engine->pollset_add_fd(pollset, fd); } grpc_pollset_set *grpc_pollset_set_create(void) { return g_event_engine->pollset_set_create(); } -void grpc_pollset_set_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set) { - g_event_engine->pollset_set_destroy(exec_ctx, pollset_set); +void grpc_pollset_set_destroy(grpc_pollset_set *pollset_set) { + g_event_engine->pollset_set_destroy(pollset_set); } -void grpc_pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, +void grpc_pollset_set_add_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset) { - g_event_engine->pollset_set_add_pollset(exec_ctx, pollset_set, pollset); + g_event_engine->pollset_set_add_pollset(pollset_set, pollset); } -void grpc_pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, +void grpc_pollset_set_del_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset) { - g_event_engine->pollset_set_del_pollset(exec_ctx, pollset_set, pollset); + g_event_engine->pollset_set_del_pollset(pollset_set, pollset); } -void grpc_pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +void grpc_pollset_set_add_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { - g_event_engine->pollset_set_add_pollset_set(exec_ctx, bag, item); + g_event_engine->pollset_set_add_pollset_set(bag, item); } -void grpc_pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +void grpc_pollset_set_del_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item) { - g_event_engine->pollset_set_del_pollset_set(exec_ctx, bag, item); + g_event_engine->pollset_set_del_pollset_set(bag, item); } -void grpc_pollset_set_add_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd) { - g_event_engine->pollset_set_add_fd(exec_ctx, pollset_set, fd); +void grpc_pollset_set_add_fd(grpc_pollset_set *pollset_set, grpc_fd *fd) { + g_event_engine->pollset_set_add_fd(pollset_set, fd); } -void grpc_pollset_set_del_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd) { - g_event_engine->pollset_set_del_fd(exec_ctx, pollset_set, fd); +void grpc_pollset_set_del_fd(grpc_pollset_set *pollset_set, grpc_fd *fd) { + g_event_engine->pollset_set_del_fd(pollset_set, fd); } #endif // GRPC_POSIX_SOCKET diff --git a/src/core/lib/iomgr/ev_posix.h b/src/core/lib/iomgr/ev_posix.h index bc4456c2a29..5f9511bf195 100644 --- a/src/core/lib/iomgr/ev_posix.h +++ b/src/core/lib/iomgr/ev_posix.h @@ -40,48 +40,36 @@ typedef struct grpc_event_engine_vtable { grpc_fd *(*fd_create)(int fd, const char *name); int (*fd_wrapped_fd)(grpc_fd *fd); - void (*fd_orphan)(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done, - int *release_fd, bool already_closed, const char *reason); - void (*fd_shutdown)(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why); - void (*fd_notify_on_read)(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure); - void (*fd_notify_on_write)(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure); + void (*fd_orphan)(grpc_fd *fd, grpc_closure *on_done, int *release_fd, + bool already_closed, const char *reason); + void (*fd_shutdown)(grpc_fd *fd, grpc_error *why); + void (*fd_notify_on_read)(grpc_fd *fd, grpc_closure *closure); + void (*fd_notify_on_write)(grpc_fd *fd, grpc_closure *closure); bool (*fd_is_shutdown)(grpc_fd *fd); - grpc_pollset *(*fd_get_read_notifier_pollset)(grpc_exec_ctx *exec_ctx, - grpc_fd *fd); + grpc_pollset *(*fd_get_read_notifier_pollset)(grpc_fd *fd); void (*pollset_init)(grpc_pollset *pollset, gpr_mu **mu); - void (*pollset_shutdown)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure); - void (*pollset_destroy)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset); - grpc_error *(*pollset_work)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, + void (*pollset_shutdown)(grpc_pollset *pollset, grpc_closure *closure); + void (*pollset_destroy)(grpc_pollset *pollset); + grpc_error *(*pollset_work)(grpc_pollset *pollset, grpc_pollset_worker **worker, grpc_millis deadline); - grpc_error *(*pollset_kick)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, + grpc_error *(*pollset_kick)(grpc_pollset *pollset, grpc_pollset_worker *specific_worker); - void (*pollset_add_fd)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - struct grpc_fd *fd); + void (*pollset_add_fd)(grpc_pollset *pollset, struct grpc_fd *fd); grpc_pollset_set *(*pollset_set_create)(void); - void (*pollset_set_destroy)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set); - void (*pollset_set_add_pollset)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, + void (*pollset_set_destroy)(grpc_pollset_set *pollset_set); + void (*pollset_set_add_pollset)(grpc_pollset_set *pollset_set, grpc_pollset *pollset); - void (*pollset_set_del_pollset)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, + void (*pollset_set_del_pollset)(grpc_pollset_set *pollset_set, grpc_pollset *pollset); - void (*pollset_set_add_pollset_set)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, + void (*pollset_set_add_pollset_set)(grpc_pollset_set *bag, grpc_pollset_set *item); - void (*pollset_set_del_pollset_set)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, + void (*pollset_set_del_pollset_set)(grpc_pollset_set *bag, grpc_pollset_set *item); - void (*pollset_set_add_fd)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd); - void (*pollset_set_del_fd)(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd); + void (*pollset_set_add_fd)(grpc_pollset_set *pollset_set, grpc_fd *fd); + void (*pollset_set_del_fd)(grpc_pollset_set *pollset_set, grpc_fd *fd); void (*shutdown_engine)(void); } grpc_event_engine_vtable; @@ -107,14 +95,14 @@ int grpc_fd_wrapped_fd(grpc_fd *fd); Requires: *fd initialized; no outstanding notify_on_read or notify_on_write. MUST NOT be called with a pollset lock taken */ -void grpc_fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done, - int *release_fd, bool already_closed, const char *reason); +void grpc_fd_orphan(grpc_fd *fd, grpc_closure *on_done, int *release_fd, + bool already_closed, const char *reason); /* Has grpc_fd_shutdown been called on an fd? */ bool grpc_fd_is_shutdown(grpc_fd *fd); /* Cause any current and future callbacks to fail. */ -void grpc_fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why); +void grpc_fd_shutdown(grpc_fd *fd, grpc_error *why); /* Register read interest, causing read_cb to be called once when fd becomes readable, on deadline specified by deadline, or on shutdown triggered by @@ -129,29 +117,23 @@ void grpc_fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why); underlying platform. This means that users must drain fd in read_cb before calling notify_on_read again. Users are also expected to handle spurious events, i.e read_cb is called while nothing can be readable from fd */ -void grpc_fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure); +void grpc_fd_notify_on_read(grpc_fd *fd, grpc_closure *closure); /* Exactly the same semantics as above, except based on writable events. */ -void grpc_fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - grpc_closure *closure); +void grpc_fd_notify_on_write(grpc_fd *fd, grpc_closure *closure); /* Return the read notifier pollset from the fd */ -grpc_pollset *grpc_fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx, - grpc_fd *fd); +grpc_pollset *grpc_fd_get_read_notifier_pollset(grpc_fd *fd); /* pollset_posix functions */ /* Add an fd to a pollset */ -void grpc_pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - struct grpc_fd *fd); +void grpc_pollset_add_fd(grpc_pollset *pollset, struct grpc_fd *fd); /* pollset_set_posix functions */ -void grpc_pollset_set_add_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd); -void grpc_pollset_set_del_fd(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, grpc_fd *fd); +void grpc_pollset_set_add_fd(grpc_pollset_set *pollset_set, grpc_fd *fd); +void grpc_pollset_set_del_fd(grpc_pollset_set *pollset_set, grpc_fd *fd); /* override to allow tests to hook poll() usage */ typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int); diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index 3d17afcb8fb..0b346cfec7a 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -25,10 +25,46 @@ #include "src/core/lib/iomgr/combiner.h" #include "src/core/lib/profiling/timers.h" -bool grpc_exec_ctx_ready_to_finish(grpc_exec_ctx *exec_ctx) { +thread_local ExecCtx *exec_ctx = nullptr; + +ExecCtx::ExecCtx() + : closure_list(GRPC_CLOSURE_LIST_INIT), + active_combiner(nullptr), + last_combiner(nullptr), + flags(GRPC_EXEC_CTX_FLAG_IS_FINISHED), + starting_cpu(gpr_cpu_current_cpu()), + check_ready_to_finish_arg(nullptr), + check_ready_to_finish(nullptr), + now_is_valid(false), + now(0), + last_exec_ctx(exec_ctx) { + exec_ctx = this; +} + +ExecCtx::ExecCtx(uintptr_t fl, bool (*finish_check)(void *arg), + void *finish_check_arg) + : closure_list(GRPC_CLOSURE_LIST_INIT), + active_combiner(nullptr), + last_combiner(nullptr), + flags(fl), + starting_cpu(gpr_cpu_current_cpu()), + check_ready_to_finish_arg(finish_check_arg), + check_ready_to_finish(finish_check), + now_is_valid(false), + now(0), + last_exec_ctx(exec_ctx) { + exec_ctx = this; +} + +ExecCtx::~ExecCtx() { + GPR_ASSERT(exec_ctx == this); + grpc_exec_ctx_finish(); + exec_ctx = last_exec_ctx; +} + +bool grpc_exec_ctx_ready_to_finish() { if ((exec_ctx->flags & GRPC_EXEC_CTX_FLAG_IS_FINISHED) == 0) { - if (exec_ctx->check_ready_to_finish(exec_ctx, - exec_ctx->check_ready_to_finish_arg)) { + if (exec_ctx->check_ready_to_finish(exec_ctx->check_ready_to_finish_arg)) { exec_ctx->flags |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; return true; } @@ -38,26 +74,21 @@ bool grpc_exec_ctx_ready_to_finish(grpc_exec_ctx *exec_ctx) { } } -bool grpc_never_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored) { - return false; -} +bool grpc_never_ready_to_finish(void *arg_ignored) { return false; } -bool grpc_always_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored) { - return true; -} +bool grpc_always_ready_to_finish(void *arg_ignored) { return true; } -bool grpc_exec_ctx_has_work(grpc_exec_ctx *exec_ctx) { +bool grpc_exec_ctx_has_work() { return exec_ctx->active_combiner != NULL || !grpc_closure_list_empty(exec_ctx->closure_list); } -void grpc_exec_ctx_finish(grpc_exec_ctx *exec_ctx) { +void grpc_exec_ctx_finish() { exec_ctx->flags |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); } -static void exec_ctx_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error) { +static void exec_ctx_run(grpc_closure *closure, grpc_error *error) { #ifndef NDEBUG closure->scheduled = false; if (GRPC_TRACER_ON(grpc_trace_closure)) { @@ -67,7 +98,7 @@ static void exec_ctx_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure, closure->line_initiated); } #endif - closure->cb(exec_ctx, closure->cb_arg, error); + closure->cb(closure->cb_arg, error); #ifndef NDEBUG if (GRPC_TRACER_ON(grpc_trace_closure)) { gpr_log(GPR_DEBUG, "closure %p finished", closure); @@ -76,7 +107,7 @@ static void exec_ctx_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure, GRPC_ERROR_UNREF(error); } -bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { +bool grpc_exec_ctx_flush() { bool did_something = 0; GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0); for (;;) { @@ -87,10 +118,10 @@ bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { grpc_closure *next = c->next_data.next; grpc_error *error = c->error_data.error; did_something = true; - exec_ctx_run(exec_ctx, c, error); + exec_ctx_run(c, error); c = next; } - } else if (!grpc_combiner_continue_exec_ctx(exec_ctx)) { + } else if (!grpc_combiner_continue_exec_ctx()) { break; } } @@ -99,8 +130,7 @@ bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) { return did_something; } -static void exec_ctx_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error) { +static void exec_ctx_sched(grpc_closure *closure, grpc_error *error) { grpc_closure_list_append(&exec_ctx->closure_list, closure, error); } @@ -138,7 +168,7 @@ static gpr_atm timespec_to_atm_round_up(gpr_timespec ts) { return (gpr_atm)x; } -grpc_millis grpc_exec_ctx_now(grpc_exec_ctx *exec_ctx) { +grpc_millis grpc_exec_ctx_now() { if (!exec_ctx->now_is_valid) { exec_ctx->now = timespec_to_atm_round_down(gpr_now(GPR_CLOCK_MONOTONIC)); exec_ctx->now_is_valid = true; @@ -146,9 +176,7 @@ grpc_millis grpc_exec_ctx_now(grpc_exec_ctx *exec_ctx) { return exec_ctx->now; } -void grpc_exec_ctx_invalidate_now(grpc_exec_ctx *exec_ctx) { - exec_ctx->now_is_valid = false; -} +void grpc_exec_ctx_invalidate_now() { exec_ctx->now_is_valid = false; } gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock_type) { diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index 44b9be7aa99..f79c7ae89a4 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -21,6 +21,7 @@ #include <grpc/support/atm.h> #include <grpc/support/cpu.h> +#include <grpc/support/log.h> #include "src/core/lib/iomgr/closure.h" @@ -74,56 +75,87 @@ struct grpc_exec_ctx { uintptr_t flags; unsigned starting_cpu; void *check_ready_to_finish_arg; - bool (*check_ready_to_finish)(grpc_exec_ctx *exec_ctx, void *arg); + bool (*check_ready_to_finish)(void *arg); bool now_is_valid; grpc_millis now; + const char *creator; }; -/* initializer for grpc_exec_ctx: - prefer to use GRPC_EXEC_CTX_INIT whenever possible */ -#define GRPC_EXEC_CTX_INITIALIZER(flags, finish_check, finish_check_arg) \ - { \ - GRPC_CLOSURE_LIST_INIT, NULL, NULL, flags, gpr_cpu_current_cpu(), \ - finish_check_arg, finish_check, false, 0 \ - } - -/* initialize an execution context at the top level of an API call into grpc - (this is safe to use elsewhere, though possibly not as efficient) */ -#define GRPC_EXEC_CTX_INIT \ - GRPC_EXEC_CTX_INITIALIZER(GRPC_EXEC_CTX_FLAG_IS_FINISHED, NULL, NULL) - extern grpc_closure_scheduler *grpc_schedule_on_exec_ctx; -bool grpc_exec_ctx_has_work(grpc_exec_ctx *exec_ctx); +bool grpc_exec_ctx_has_work(); /** Flush any work that has been enqueued onto this grpc_exec_ctx. * Caller must guarantee that no interfering locks are held. * Returns true if work was performed, false otherwise. */ -bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx); +bool grpc_exec_ctx_flush(); /** Finish any pending work for a grpc_exec_ctx. Must be called before * the instance is destroyed, or work may be lost. */ -void grpc_exec_ctx_finish(grpc_exec_ctx *exec_ctx); +void grpc_exec_ctx_finish(); /** Returns true if we'd like to leave this execution context as soon as possible: useful for deciding whether to do something more or not depending on outside context */ -bool grpc_exec_ctx_ready_to_finish(grpc_exec_ctx *exec_ctx); +bool grpc_exec_ctx_ready_to_finish(); /** A finish check that is never ready to finish */ -bool grpc_never_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored); +bool grpc_never_ready_to_finish(void *arg_ignored); /** A finish check that is always ready to finish */ -bool grpc_always_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored); +bool grpc_always_ready_to_finish(void *arg_ignored); void grpc_exec_ctx_global_init(void); void grpc_exec_ctx_global_init(void); void grpc_exec_ctx_global_shutdown(void); -grpc_millis grpc_exec_ctx_now(grpc_exec_ctx *exec_ctx); -void grpc_exec_ctx_invalidate_now(grpc_exec_ctx *exec_ctx); +grpc_millis grpc_exec_ctx_now(); +void grpc_exec_ctx_invalidate_now(); gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock); grpc_millis grpc_timespec_to_millis_round_down(gpr_timespec timespec); grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec timespec); +inline grpc_exec_ctx make_exec_ctx(grpc_exec_ctx r) { + grpc_exec_ctx_flush(); + return r; +} + +class ExecCtx { + public: + ExecCtx(); + ExecCtx(uintptr_t fl, bool (*finish_check)(void *arg), + void *finish_check_arg); + ~ExecCtx(); + + grpc_closure_list closure_list; + /** currently active combiner: updated only via combiner.c */ + grpc_combiner *active_combiner; + /** last active combiner in the active combiner list */ + grpc_combiner *last_combiner; + uintptr_t flags; + unsigned starting_cpu; + void *check_ready_to_finish_arg; + bool (*check_ready_to_finish)(void *arg); + + bool now_is_valid; + grpc_millis now; + + private: + ExecCtx *last_exec_ctx; +}; + +extern thread_local ExecCtx *exec_ctx; + +/* initializer for grpc_exec_ctx: + * prefer to use GRPC_EXEC_CTX_INIT whenever possible */ +#define GRPC_EXEC_CTX_INITIALIZER(flags, finish_check, finish_check_arg) \ + make_exec_ctx(grpc_exec_ctx{GRPC_CLOSURE_LIST_INIT, NULL, NULL, flags, \ + gpr_cpu_current_cpu(), finish_check_arg, \ + finish_check, false, 0, __PRETTY_FUNCTION__}) + +/* initialize an execution context at the top level of an API call into grpc + (this is safe to use elsewhere, though possibly not as efficient) */ +#define GRPC_EXEC_CTX_INIT \ + GRPC_EXEC_CTX_INITIALIZER(GRPC_EXEC_CTX_FLAG_IS_FINISHED, NULL, NULL) + #ifdef __cplusplus } #endif diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index 92c3e70301c..653f2fc24b6 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -56,7 +56,7 @@ static grpc_tracer_flag executor_trace = static void executor_thread(void *arg); -static size_t run_closures(grpc_exec_ctx *exec_ctx, grpc_closure_list list) { +static size_t run_closures(grpc_closure_list list) { size_t n = 0; grpc_closure *c = list.head; @@ -74,11 +74,11 @@ static size_t run_closures(grpc_exec_ctx *exec_ctx, grpc_closure_list list) { #ifndef NDEBUG c->scheduled = false; #endif - c->cb(exec_ctx, c->cb_arg, error); + c->cb(c->cb_arg, error); GRPC_ERROR_UNREF(error); c = next; n++; - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); } return n; @@ -88,7 +88,7 @@ bool grpc_executor_is_threaded() { return gpr_atm_no_barrier_load(&g_cur_threads) > 0; } -void grpc_executor_set_threading(grpc_exec_ctx *exec_ctx, bool threading) { +void grpc_executor_set_threading(bool threading) { gpr_atm cur_threads = gpr_atm_no_barrier_load(&g_cur_threads); if (threading) { if (cur_threads > 0) return; @@ -126,29 +126,26 @@ void grpc_executor_set_threading(grpc_exec_ctx *exec_ctx, bool threading) { for (size_t i = 0; i < g_max_threads; i++) { gpr_mu_destroy(&g_thread_state[i].mu); gpr_cv_destroy(&g_thread_state[i].cv); - run_closures(exec_ctx, g_thread_state[i].elems); + run_closures(g_thread_state[i].elems); } gpr_free(g_thread_state); gpr_tls_destroy(&g_this_thread_state); } } -void grpc_executor_init(grpc_exec_ctx *exec_ctx) { +void grpc_executor_init() { grpc_register_tracer(&executor_trace); gpr_atm_no_barrier_store(&g_cur_threads, 0); - grpc_executor_set_threading(exec_ctx, true); + grpc_executor_set_threading(true); } -void grpc_executor_shutdown(grpc_exec_ctx *exec_ctx) { - grpc_executor_set_threading(exec_ctx, false); -} +void grpc_executor_shutdown() { grpc_executor_set_threading(false); } static void executor_thread(void *arg) { thread_state *ts = (thread_state *)arg; gpr_tls_set(&g_this_thread_state, (intptr_t)ts); - grpc_exec_ctx exec_ctx = - GRPC_EXEC_CTX_INITIALIZER(0, grpc_never_ready_to_finish, NULL); + ExecCtx _local_exec_ctx(0, grpc_never_ready_to_finish, NULL); size_t subtract_depth = 0; for (;;) { @@ -170,7 +167,7 @@ static void executor_thread(void *arg) { gpr_mu_unlock(&ts->mu); break; } - GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED(&exec_ctx); + GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED(); grpc_closure_list exec = ts->elems; ts->elems = GRPC_CLOSURE_LIST_INIT; gpr_mu_unlock(&ts->mu); @@ -178,19 +175,19 @@ static void executor_thread(void *arg) { gpr_log(GPR_DEBUG, "EXECUTOR[%d]: execute", (int)(ts - g_thread_state)); } - grpc_exec_ctx_invalidate_now(&exec_ctx); - subtract_depth = run_closures(&exec_ctx, exec); + grpc_exec_ctx_invalidate_now(); + subtract_depth = run_closures(exec); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static void executor_push(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error, bool is_short) { +static void executor_push(grpc_closure *closure, grpc_error *error, + bool is_short) { bool retry_push; if (is_short) { - GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS(exec_ctx); + GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS(); } else { - GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS(exec_ctx); + GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS(); } do { retry_push = false; @@ -209,9 +206,9 @@ static void executor_push(grpc_exec_ctx *exec_ctx, grpc_closure *closure, } thread_state *ts = (thread_state *)gpr_tls_get(&g_this_thread_state); if (ts == NULL) { - ts = &g_thread_state[GPR_HASH_POINTER(exec_ctx, cur_thread_count)]; + ts = &g_thread_state[GPR_HASH_POINTER(&exec_ctx, cur_thread_count)]; } else { - GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF(exec_ctx); + GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF(); } thread_state *orig_ts = ts; @@ -247,7 +244,7 @@ static void executor_push(grpc_exec_ctx *exec_ctx, grpc_closure *closure, continue; } if (grpc_closure_list_empty(ts->elems)) { - GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED(exec_ctx); + GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED(); gpr_cv_signal(&ts->cv); } grpc_closure_list_append(&ts->elems, closure, error); @@ -271,19 +268,17 @@ static void executor_push(grpc_exec_ctx *exec_ctx, grpc_closure *closure, gpr_spinlock_unlock(&g_adding_thread_lock); } if (retry_push) { - GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES(exec_ctx); + GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES(); } } while (retry_push); } -static void executor_push_short(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error) { - executor_push(exec_ctx, closure, error, true); +static void executor_push_short(grpc_closure *closure, grpc_error *error) { + executor_push(closure, error, true); } -static void executor_push_long(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_error *error) { - executor_push(exec_ctx, closure, error, false); +static void executor_push_long(grpc_closure *closure, grpc_error *error) { + executor_push(closure, error, false); } static const grpc_closure_scheduler_vtable executor_vtable_short = { diff --git a/src/core/lib/iomgr/executor.h b/src/core/lib/iomgr/executor.h index ef5ac56c832..d75ba20d5a4 100644 --- a/src/core/lib/iomgr/executor.h +++ b/src/core/lib/iomgr/executor.h @@ -35,19 +35,19 @@ typedef enum { * This mechanism is meant to outsource work (grpc_closure instances) to a * thread, for those cases where blocking isn't an option but there isn't a * non-blocking solution available. */ -void grpc_executor_init(grpc_exec_ctx *exec_ctx); +void grpc_executor_init(); grpc_closure_scheduler *grpc_executor_scheduler(grpc_executor_job_length); /** Shutdown the executor, running all pending work as part of the call */ -void grpc_executor_shutdown(grpc_exec_ctx *exec_ctx); +void grpc_executor_shutdown(); /** Is the executor multi-threaded? */ bool grpc_executor_is_threaded(); /* enable/disable threading - must be called after grpc_executor_init and before grpc_executor_shutdown */ -void grpc_executor_set_threading(grpc_exec_ctx *exec_ctx, bool enable); +void grpc_executor_set_threading(bool enable); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/iocp_windows.cc b/src/core/lib/iomgr/iocp_windows.cc index 78185cc084e..885a78bdfa0 100644 --- a/src/core/lib/iomgr/iocp_windows.cc +++ b/src/core/lib/iomgr/iocp_windows.cc @@ -42,20 +42,18 @@ static gpr_atm g_custom_events = 0; static HANDLE g_iocp; -static DWORD deadline_to_millis_timeout(grpc_exec_ctx *exec_ctx, - grpc_millis deadline) { +static DWORD deadline_to_millis_timeout(grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) { return INFINITE; } - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); if (deadline < now) return 0; grpc_millis timeout = deadline - now; if (timeout > std::numeric_limits<DWORD>::max()) return INFINITE; return static_cast<DWORD>(deadline - now); } -grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, - grpc_millis deadline) { +grpc_iocp_work_status grpc_iocp_work(grpc_millis deadline) { BOOL success; DWORD bytes = 0; DWORD flags = 0; @@ -63,11 +61,11 @@ grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, LPOVERLAPPED overlapped; grpc_winsocket *socket; grpc_winsocket_callback_info *info; - GRPC_STATS_INC_SYSCALL_POLL(exec_ctx); + GRPC_STATS_INC_SYSCALL_POLL(); success = GetQueuedCompletionStatus(g_iocp, &bytes, &completion_key, &overlapped, - deadline_to_millis_timeout(exec_ctx, deadline)); - grpc_exec_ctx_invalidate_now(exec_ctx); + deadline_to_millis_timeout(deadline)); + grpc_exec_ctx_invalidate_now(); if (success == 0 && overlapped == NULL) { return GRPC_IOCP_WORK_TIMEOUT; } @@ -95,7 +93,7 @@ grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, info->bytes_transfered = bytes; info->wsa_error = success ? 0 : WSAGetLastError(); GPR_ASSERT(overlapped == &info->overlapped); - grpc_socket_become_ready(exec_ctx, socket, info); + grpc_socket_become_ready(socket, info); return GRPC_IOCP_WORK_WORK; } @@ -115,22 +113,21 @@ void grpc_iocp_kick(void) { } void grpc_iocp_flush(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_iocp_work_status work_status; do { - work_status = grpc_iocp_work(&exec_ctx, GRPC_MILLIS_INF_PAST); - } while (work_status == GRPC_IOCP_WORK_KICK || - grpc_exec_ctx_flush(&exec_ctx)); + work_status = grpc_iocp_work(GRPC_MILLIS_INF_PAST); + } while (work_status == GRPC_IOCP_WORK_KICK || grpc_exec_ctx_flush()); } void grpc_iocp_shutdown(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (gpr_atm_acq_load(&g_custom_events)) { - grpc_iocp_work(&exec_ctx, GRPC_MILLIS_INF_FUTURE); - grpc_exec_ctx_flush(&exec_ctx); + grpc_iocp_work(GRPC_MILLIS_INF_FUTURE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); GPR_ASSERT(CloseHandle(g_iocp)); } diff --git a/src/core/lib/iomgr/iocp_windows.h b/src/core/lib/iomgr/iocp_windows.h index 4efbc94645a..f6e2b776d18 100644 --- a/src/core/lib/iomgr/iocp_windows.h +++ b/src/core/lib/iomgr/iocp_windows.h @@ -33,8 +33,7 @@ typedef enum { GRPC_IOCP_WORK_KICK } grpc_iocp_work_status; -grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, - grpc_millis deadline); +grpc_iocp_work_status grpc_iocp_work(grpc_millis deadline); void grpc_iocp_init(void); void grpc_iocp_kick(void); void grpc_iocp_flush(void); diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index d6a5b4a76c7..236679c361b 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -45,20 +45,20 @@ static gpr_cv g_rcv; static int g_shutdown; static grpc_iomgr_object g_root_object; -void grpc_iomgr_init(grpc_exec_ctx *exec_ctx) { +void grpc_iomgr_init() { g_shutdown = 0; gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); grpc_exec_ctx_global_init(); - grpc_executor_init(exec_ctx); - grpc_timer_list_init(exec_ctx); + grpc_executor_init(); + grpc_timer_list_init(); g_root_object.next = g_root_object.prev = &g_root_object; g_root_object.name = (char *)"root"; grpc_network_status_init(); grpc_iomgr_platform_init(); } -void grpc_iomgr_start(grpc_exec_ctx *exec_ctx) { grpc_timer_manager_init(); } +void grpc_iomgr_start() { grpc_timer_manager_init(); } static size_t count_objects(void) { grpc_iomgr_object *obj; @@ -76,14 +76,14 @@ static void dump_objects(const char *kind) { } } -void grpc_iomgr_shutdown(grpc_exec_ctx *exec_ctx) { +void grpc_iomgr_shutdown() { gpr_timespec shutdown_deadline = gpr_time_add( gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_seconds(10, GPR_TIMESPAN)); gpr_timespec last_warning_time = gpr_now(GPR_CLOCK_REALTIME); grpc_timer_manager_shutdown(); grpc_iomgr_platform_flush(); - grpc_executor_shutdown(exec_ctx); + grpc_executor_shutdown(); gpr_mu_lock(&g_mu); g_shutdown = 1; @@ -100,9 +100,9 @@ void grpc_iomgr_shutdown(grpc_exec_ctx *exec_ctx) { } exec_ctx->now_is_valid = true; exec_ctx->now = GRPC_MILLIS_INF_FUTURE; - if (grpc_timer_check(exec_ctx, NULL) == GRPC_TIMERS_FIRED) { + if (grpc_timer_check(NULL) == GRPC_TIMERS_FIRED) { gpr_mu_unlock(&g_mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); grpc_iomgr_platform_flush(); gpr_mu_lock(&g_mu); continue; @@ -134,8 +134,8 @@ void grpc_iomgr_shutdown(grpc_exec_ctx *exec_ctx) { } gpr_mu_unlock(&g_mu); - grpc_timer_list_shutdown(exec_ctx); - grpc_exec_ctx_flush(exec_ctx); + grpc_timer_list_shutdown(); + grpc_exec_ctx_flush(); /* ensure all threads have left g_mu */ gpr_mu_lock(&g_mu); diff --git a/src/core/lib/iomgr/iomgr.h b/src/core/lib/iomgr/iomgr.h index 6c0a08b9183..ce9f60521c5 100644 --- a/src/core/lib/iomgr/iomgr.h +++ b/src/core/lib/iomgr/iomgr.h @@ -27,14 +27,14 @@ extern "C" { #endif /** Initializes the iomgr. */ -void grpc_iomgr_init(grpc_exec_ctx *exec_ctx); +void grpc_iomgr_init(); /** Starts any background threads for iomgr. */ -void grpc_iomgr_start(grpc_exec_ctx *exec_ctx); +void grpc_iomgr_start(); /** Signals the intention to shutdown the iomgr. Expects to be able to flush * exec_ctx. */ -void grpc_iomgr_shutdown(grpc_exec_ctx *exec_ctx); +void grpc_iomgr_shutdown(); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/iomgr_uv.cc b/src/core/lib/iomgr/iomgr_uv.cc index df5d23af3bb..4dda970286e 100644 --- a/src/core/lib/iomgr/iomgr_uv.cc +++ b/src/core/lib/iomgr/iomgr_uv.cc @@ -29,12 +29,12 @@ gpr_thd_id g_init_thread; void grpc_iomgr_platform_init(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_pollset_global_init(); grpc_register_tracer(&grpc_tcp_trace); - grpc_executor_set_threading(&exec_ctx, false); + grpc_executor_set_threading(false); g_init_thread = gpr_thd_currentid(); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void grpc_iomgr_platform_flush(void) {} void grpc_iomgr_platform_shutdown(void) { grpc_pollset_global_shutdown(); } diff --git a/src/core/lib/iomgr/lockfree_event.cc b/src/core/lib/iomgr/lockfree_event.cc index f967b22ba99..2fa3531bc6c 100644 --- a/src/core/lib/iomgr/lockfree_event.cc +++ b/src/core/lib/iomgr/lockfree_event.cc @@ -78,8 +78,8 @@ bool grpc_lfev_is_shutdown(gpr_atm *state) { return (curr & FD_SHUTDOWN_BIT) != 0; } -void grpc_lfev_notify_on(grpc_exec_ctx *exec_ctx, gpr_atm *state, - grpc_closure *closure, const char *variable) { +void grpc_lfev_notify_on(gpr_atm *state, grpc_closure *closure, + const char *variable) { while (true) { gpr_atm curr = gpr_atm_no_barrier_load(state); if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -112,7 +112,7 @@ void grpc_lfev_notify_on(grpc_exec_ctx *exec_ctx, gpr_atm *state, closure when transitioning out of CLOSURE_NO_READY state (i.e there is no other code that needs to 'happen-after' this) */ if (gpr_atm_no_barrier_cas(state, CLOSURE_READY, CLOSURE_NOT_READY)) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); return; /* Successful. Return */ } @@ -125,7 +125,7 @@ void grpc_lfev_notify_on(grpc_exec_ctx *exec_ctx, gpr_atm *state, schedule the closure with the shutdown error */ if ((curr & FD_SHUTDOWN_BIT) > 0) { grpc_error *shutdown_err = (grpc_error *)(curr & ~FD_SHUTDOWN_BIT); - GRPC_CLOSURE_SCHED(exec_ctx, closure, + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "FD Shutdown", &shutdown_err, 1)); return; @@ -142,8 +142,7 @@ void grpc_lfev_notify_on(grpc_exec_ctx *exec_ctx, gpr_atm *state, GPR_UNREACHABLE_CODE(return ); } -bool grpc_lfev_set_shutdown(grpc_exec_ctx *exec_ctx, gpr_atm *state, - grpc_error *shutdown_err) { +bool grpc_lfev_set_shutdown(gpr_atm *state, grpc_error *shutdown_err) { gpr_atm new_state = (gpr_atm)shutdown_err | FD_SHUTDOWN_BIT; while (true) { @@ -177,7 +176,7 @@ bool grpc_lfev_set_shutdown(grpc_exec_ctx *exec_ctx, gpr_atm *state, happens-after on that edge), and a release to pair with anything loading the shutdown state. */ if (gpr_atm_full_cas(state, curr, new_state)) { - GRPC_CLOSURE_SCHED(exec_ctx, (grpc_closure *)curr, + GRPC_CLOSURE_SCHED((grpc_closure *)curr, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "FD Shutdown", &shutdown_err, 1)); return true; @@ -193,8 +192,7 @@ bool grpc_lfev_set_shutdown(grpc_exec_ctx *exec_ctx, gpr_atm *state, GPR_UNREACHABLE_CODE(return false); } -void grpc_lfev_set_ready(grpc_exec_ctx *exec_ctx, gpr_atm *state, - const char *variable) { +void grpc_lfev_set_ready(gpr_atm *state, const char *variable) { while (true) { gpr_atm curr = gpr_atm_no_barrier_load(state); @@ -228,7 +226,7 @@ void grpc_lfev_set_ready(grpc_exec_ctx *exec_ctx, gpr_atm *state, spurious set_ready; release pairs with this or the acquire in notify_on (or set_shutdown) */ else if (gpr_atm_full_cas(state, curr, CLOSURE_NOT_READY)) { - GRPC_CLOSURE_SCHED(exec_ctx, (grpc_closure *)curr, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED((grpc_closure *)curr, GRPC_ERROR_NONE); return; } /* else the state changed again (only possible by either a racing diff --git a/src/core/lib/iomgr/lockfree_event.h b/src/core/lib/iomgr/lockfree_event.h index 02229e569ef..cf681fc874d 100644 --- a/src/core/lib/iomgr/lockfree_event.h +++ b/src/core/lib/iomgr/lockfree_event.h @@ -33,13 +33,11 @@ void grpc_lfev_init(gpr_atm *state); void grpc_lfev_destroy(gpr_atm *state); bool grpc_lfev_is_shutdown(gpr_atm *state); -void grpc_lfev_notify_on(grpc_exec_ctx *exec_ctx, gpr_atm *state, - grpc_closure *closure, const char *variable); -/* Returns true on first successful shutdown */ -bool grpc_lfev_set_shutdown(grpc_exec_ctx *exec_ctx, gpr_atm *state, - grpc_error *shutdown_err); -void grpc_lfev_set_ready(grpc_exec_ctx *exec_ctx, gpr_atm *state, +void grpc_lfev_notify_on(gpr_atm *state, grpc_closure *closure, const char *variable); +/* Returns true on first successful shutdown */ +bool grpc_lfev_set_shutdown(gpr_atm *state, grpc_error *shutdown_err); +void grpc_lfev_set_ready(gpr_atm *state, const char *variable); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/polling_entity.cc b/src/core/lib/iomgr/polling_entity.cc index 8591a5518e3..06b78e823d8 100644 --- a/src/core/lib/iomgr/polling_entity.cc +++ b/src/core/lib/iomgr/polling_entity.cc @@ -56,32 +56,28 @@ bool grpc_polling_entity_is_empty(const grpc_polling_entity *pollent) { return pollent->tag == GRPC_POLLS_NONE; } -void grpc_polling_entity_add_to_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_polling_entity *pollent, +void grpc_polling_entity_add_to_pollset_set(grpc_polling_entity *pollent, grpc_pollset_set *pss_dst) { if (pollent->tag == GRPC_POLLS_POLLSET) { GPR_ASSERT(pollent->pollent.pollset != NULL); - grpc_pollset_set_add_pollset(exec_ctx, pss_dst, pollent->pollent.pollset); + grpc_pollset_set_add_pollset(pss_dst, pollent->pollent.pollset); } else if (pollent->tag == GRPC_POLLS_POLLSET_SET) { GPR_ASSERT(pollent->pollent.pollset_set != NULL); - grpc_pollset_set_add_pollset_set(exec_ctx, pss_dst, - pollent->pollent.pollset_set); + grpc_pollset_set_add_pollset_set(pss_dst, pollent->pollent.pollset_set); } else { gpr_log(GPR_ERROR, "Invalid grpc_polling_entity tag '%d'", pollent->tag); abort(); } } -void grpc_polling_entity_del_from_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_polling_entity *pollent, +void grpc_polling_entity_del_from_pollset_set(grpc_polling_entity *pollent, grpc_pollset_set *pss_dst) { if (pollent->tag == GRPC_POLLS_POLLSET) { GPR_ASSERT(pollent->pollent.pollset != NULL); - grpc_pollset_set_del_pollset(exec_ctx, pss_dst, pollent->pollent.pollset); + grpc_pollset_set_del_pollset(pss_dst, pollent->pollent.pollset); } else if (pollent->tag == GRPC_POLLS_POLLSET_SET) { GPR_ASSERT(pollent->pollent.pollset_set != NULL); - grpc_pollset_set_del_pollset_set(exec_ctx, pss_dst, - pollent->pollent.pollset_set); + grpc_pollset_set_del_pollset_set(pss_dst, pollent->pollent.pollset_set); } else { gpr_log(GPR_ERROR, "Invalid grpc_polling_entity tag '%d'", pollent->tag); abort(); diff --git a/src/core/lib/iomgr/polling_entity.h b/src/core/lib/iomgr/polling_entity.h index 009f968fac4..e1e4c47c837 100644 --- a/src/core/lib/iomgr/polling_entity.h +++ b/src/core/lib/iomgr/polling_entity.h @@ -59,14 +59,12 @@ bool grpc_polling_entity_is_empty(const grpc_polling_entity *pollent); /** Add the pollset or pollset_set in \a pollent to the destination pollset_set * \a * pss_dst */ -void grpc_polling_entity_add_to_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_polling_entity *pollent, +void grpc_polling_entity_add_to_pollset_set(grpc_polling_entity *pollent, grpc_pollset_set *pss_dst); /** Delete the pollset or pollset_set in \a pollent from the destination * pollset_set \a * pss_dst */ -void grpc_polling_entity_del_from_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_polling_entity *pollent, +void grpc_polling_entity_del_from_pollset_set(grpc_polling_entity *pollent, grpc_pollset_set *pss_dst); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/pollset.h b/src/core/lib/iomgr/pollset.h index 799fae154cf..1f5b6c12f11 100644 --- a/src/core/lib/iomgr/pollset.h +++ b/src/core/lib/iomgr/pollset.h @@ -48,9 +48,8 @@ size_t grpc_pollset_size(void); void grpc_pollset_init(grpc_pollset *pollset, gpr_mu **mu); /* Begin shutting down the pollset, and call closure when done. * pollset's mutex must be held */ -void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure); -void grpc_pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset); +void grpc_pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure); +void grpc_pollset_destroy(grpc_pollset *pollset); /* Do some work on a pollset. May involve invoking asynchronous callbacks, or actually polling file @@ -74,13 +73,13 @@ void grpc_pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset); May call grpc_closure_list_run on grpc_closure_list, without holding the pollset lock */ -grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker, grpc_millis deadline) GRPC_MUST_USE_RESULT; /* Break one polling thread out of polling work for this pollset. If specific_worker is non-NULL, then kick that worker. */ -grpc_error *grpc_pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_kick(grpc_pollset *pollset, grpc_pollset_worker *specific_worker) GRPC_MUST_USE_RESULT; diff --git a/src/core/lib/iomgr/pollset_set.h b/src/core/lib/iomgr/pollset_set.h index 5455eda02fd..a30069e6c84 100644 --- a/src/core/lib/iomgr/pollset_set.h +++ b/src/core/lib/iomgr/pollset_set.h @@ -33,19 +33,14 @@ extern "C" { typedef struct grpc_pollset_set grpc_pollset_set; grpc_pollset_set *grpc_pollset_set_create(void); -void grpc_pollset_set_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set); -void grpc_pollset_set_add_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, +void grpc_pollset_set_destroy(grpc_pollset_set *pollset_set); +void grpc_pollset_set_add_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset); -void grpc_pollset_set_del_pollset(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *pollset_set, +void grpc_pollset_set_del_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset); -void grpc_pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +void grpc_pollset_set_add_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item); -void grpc_pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_pollset_set *bag, +void grpc_pollset_set_del_pollset_set(grpc_pollset_set *bag, grpc_pollset_set *item); #ifdef __cplusplus diff --git a/src/core/lib/iomgr/pollset_set_uv.cc b/src/core/lib/iomgr/pollset_set_uv.cc index 90186edbb73..ac5dade8a50 100644 --- a/src/core/lib/iomgr/pollset_set_uv.cc +++ b/src/core/lib/iomgr/pollset_set_uv.cc @@ -26,23 +26,18 @@ grpc_pollset_set* grpc_pollset_set_create(void) { return (grpc_pollset_set*)((intptr_t)0xdeafbeef); } -void grpc_pollset_set_destroy(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* pollset_set) {} +void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) {} -void grpc_pollset_set_add_pollset(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* pollset_set, +void grpc_pollset_set_add_pollset(grpc_pollset_set* pollset_set, grpc_pollset* pollset) {} -void grpc_pollset_set_del_pollset(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* pollset_set, +void grpc_pollset_set_del_pollset(grpc_pollset_set* pollset_set, grpc_pollset* pollset) {} -void grpc_pollset_set_add_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* bag, +void grpc_pollset_set_add_pollset_set(grpc_pollset_set* bag, grpc_pollset_set* item) {} -void grpc_pollset_set_del_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* bag, +void grpc_pollset_set_del_pollset_set(grpc_pollset_set* bag, grpc_pollset_set* item) {} #endif /* GRPC_UV */ diff --git a/src/core/lib/iomgr/pollset_set_windows.cc b/src/core/lib/iomgr/pollset_set_windows.cc index 2105a47ad47..85edc9dee12 100644 --- a/src/core/lib/iomgr/pollset_set_windows.cc +++ b/src/core/lib/iomgr/pollset_set_windows.cc @@ -27,23 +27,18 @@ grpc_pollset_set* grpc_pollset_set_create(void) { return (grpc_pollset_set*)((intptr_t)0xdeafbeef); } -void grpc_pollset_set_destroy(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* pollset_set) {} +void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) {} -void grpc_pollset_set_add_pollset(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* pollset_set, +void grpc_pollset_set_add_pollset(grpc_pollset_set* pollset_set, grpc_pollset* pollset) {} -void grpc_pollset_set_del_pollset(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* pollset_set, +void grpc_pollset_set_del_pollset(grpc_pollset_set* pollset_set, grpc_pollset* pollset) {} -void grpc_pollset_set_add_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* bag, +void grpc_pollset_set_add_pollset_set(grpc_pollset_set* bag, grpc_pollset_set* item) {} -void grpc_pollset_set_del_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_pollset_set* bag, +void grpc_pollset_set_del_pollset_set(grpc_pollset_set* bag, grpc_pollset_set* item) {} #endif /* GRPC_WINSOCK_SOCKET */ diff --git a/src/core/lib/iomgr/pollset_uv.cc b/src/core/lib/iomgr/pollset_uv.cc index b9901bf8efd..53585a80dc1 100644 --- a/src/core/lib/iomgr/pollset_uv.cc +++ b/src/core/lib/iomgr/pollset_uv.cc @@ -87,8 +87,7 @@ void grpc_pollset_init(grpc_pollset *pollset, gpr_mu **mu) { pollset->shutting_down = 0; } -void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { +void grpc_pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { GPR_ASSERT(!pollset->shutting_down); GRPC_UV_ASSERT_SAME_THREAD(); pollset->shutting_down = 1; @@ -99,10 +98,10 @@ void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, // kick the loop once uv_timer_start(dummy_uv_handle, dummy_timer_cb, 0, 0); } - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } -void grpc_pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { +void grpc_pollset_destroy(grpc_pollset *pollset) { GRPC_UV_ASSERT_SAME_THREAD(); uv_close((uv_handle_t *)&pollset->timer, timer_close_cb); // timer.data is a boolean indicating that the timer has finished closing @@ -114,14 +113,14 @@ void grpc_pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) { } } -grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { uint64_t timeout; GRPC_UV_ASSERT_SAME_THREAD(); gpr_mu_unlock(&grpc_polling_mu); if (grpc_pollset_work_run_loop) { - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); if (deadline >= now) { timeout = deadline - now; } else { @@ -140,13 +139,13 @@ grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } } if (!grpc_closure_list_empty(exec_ctx->closure_list)) { - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); } gpr_mu_lock(&grpc_polling_mu); return GRPC_ERROR_NONE; } -grpc_error *grpc_pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_kick(grpc_pollset *pollset, grpc_pollset_worker *specific_worker) { GRPC_UV_ASSERT_SAME_THREAD(); uv_timer_start(dummy_uv_handle, dummy_timer_cb, 0, 0); diff --git a/src/core/lib/iomgr/pollset_windows.cc b/src/core/lib/iomgr/pollset_windows.cc index bb4df83fc13..e1fdf9dc6b6 100644 --- a/src/core/lib/iomgr/pollset_windows.cc +++ b/src/core/lib/iomgr/pollset_windows.cc @@ -95,20 +95,19 @@ void grpc_pollset_init(grpc_pollset *pollset, gpr_mu **mu) { &pollset->root_worker; } -void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure) { +void grpc_pollset_shutdown(grpc_pollset *pollset, grpc_closure *closure) { pollset->shutting_down = 1; - grpc_pollset_kick(exec_ctx, pollset, GRPC_POLLSET_KICK_BROADCAST); + grpc_pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST); if (!pollset->is_iocp_worker) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } else { pollset->on_shutdown = closure; } } -void grpc_pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {} +void grpc_pollset_destroy(grpc_pollset *pollset) {} -grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, +grpc_error *grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker **worker_hdl, grpc_millis deadline) { grpc_pollset_worker worker; @@ -129,8 +128,8 @@ grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, pollset->is_iocp_worker = 1; g_active_poller = &worker; gpr_mu_unlock(&grpc_polling_mu); - grpc_iocp_work(exec_ctx, deadline); - grpc_exec_ctx_flush(exec_ctx); + grpc_iocp_work(deadline); + grpc_exec_ctx_flush(); gpr_mu_lock(&grpc_polling_mu); pollset->is_iocp_worker = 0; g_active_poller = NULL; @@ -148,7 +147,7 @@ grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } if (pollset->shutting_down && pollset->on_shutdown != NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, pollset->on_shutdown, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(pollset->on_shutdown, GRPC_ERROR_NONE); pollset->on_shutdown = NULL; } goto done; @@ -170,7 +169,7 @@ grpc_error *grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, done: if (!grpc_closure_list_empty(exec_ctx->closure_list)) { gpr_mu_unlock(&grpc_polling_mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&grpc_polling_mu); } if (added_worker) { @@ -182,7 +181,7 @@ done: return GRPC_ERROR_NONE; } -grpc_error *grpc_pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *p, +grpc_error *grpc_pollset_kick(grpc_pollset *p, grpc_pollset_worker *specific_worker) { if (specific_worker != NULL) { if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) { @@ -210,7 +209,7 @@ grpc_error *grpc_pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *p, specific_worker = pop_front_worker(&p->root_worker, GRPC_POLLSET_WORKER_LINK_POLLSET); if (specific_worker != NULL) { - grpc_pollset_kick(exec_ctx, p, specific_worker); + grpc_pollset_kick(p, specific_worker); } else if (p->is_iocp_worker) { grpc_iocp_kick(); } else { diff --git a/src/core/lib/iomgr/resolve_address.h b/src/core/lib/iomgr/resolve_address.h index 5f0634299e0..ac91ac3a7b3 100644 --- a/src/core/lib/iomgr/resolve_address.h +++ b/src/core/lib/iomgr/resolve_address.h @@ -42,8 +42,7 @@ typedef struct { /* Asynchronously resolve addr. Use default_port if a port isn't designated in addr, otherwise use the port in addr. */ /* TODO(ctiller): add a timeout here */ -extern void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *addr, - const char *default_port, +extern void (*grpc_resolve_address)(const char *addr, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addresses); diff --git a/src/core/lib/iomgr/resolve_address_posix.cc b/src/core/lib/iomgr/resolve_address_posix.cc index 1b783495dfc..2fa09134039 100644 --- a/src/core/lib/iomgr/resolve_address_posix.cc +++ b/src/core/lib/iomgr/resolve_address_posix.cc @@ -152,12 +152,10 @@ typedef struct { /* Callback to be passed to grpc_executor to asynch-ify * grpc_blocking_resolve_address */ -static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, - grpc_error *error) { +static void do_request_thread(void *rp, grpc_error *error) { request *r = (request *)rp; - GRPC_CLOSURE_SCHED( - exec_ctx, r->on_done, - grpc_blocking_resolve_address(r->name, r->default_port, r->addrs_out)); + GRPC_CLOSURE_SCHED(r->on_done, grpc_blocking_resolve_address( + r->name, r->default_port, r->addrs_out)); gpr_free(r->name); gpr_free(r->default_port); gpr_free(r); @@ -170,8 +168,7 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) { gpr_free(addrs); } -static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, - const char *default_port, +static void resolve_address_impl(const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) { @@ -182,11 +179,11 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, r->default_port = gpr_strdup(default_port); r->on_done = on_done; r->addrs_out = addrs; - GRPC_CLOSURE_SCHED(exec_ctx, &r->request_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&r->request_closure, GRPC_ERROR_NONE); } void (*grpc_resolve_address)( - grpc_exec_ctx *exec_ctx, const char *name, const char *default_port, + const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) = resolve_address_impl; diff --git a/src/core/lib/iomgr/resolve_address_uv.cc b/src/core/lib/iomgr/resolve_address_uv.cc index 4f7f234877d..82ea27d22e1 100644 --- a/src/core/lib/iomgr/resolve_address_uv.cc +++ b/src/core/lib/iomgr/resolve_address_uv.cc @@ -114,7 +114,7 @@ static grpc_error *handle_addrinfo_result(int status, struct addrinfo *result, static void getaddrinfo_callback(uv_getaddrinfo_t *req, int status, struct addrinfo *res) { request *r = (request *)req->data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_error *error; int retry_status; char *port = r->port; @@ -130,8 +130,8 @@ static void getaddrinfo_callback(uv_getaddrinfo_t *req, int status, /* Either no retry was attempted, or the retry failed. Either way, the original error probably has more interesting information */ error = handle_addrinfo_result(status, res, r->addresses); - GRPC_CLOSURE_SCHED(&exec_ctx, r->on_done, error); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CLOSURE_SCHED(r->on_done, error); + grpc_exec_ctx_finish(); gpr_free(r->hints); gpr_free(r->host); gpr_free(r->port); @@ -224,8 +224,7 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) { gpr_free(addrs); } -static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, - const char *default_port, +static void resolve_address_impl(const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) { @@ -239,7 +238,7 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, GRPC_UV_ASSERT_SAME_THREAD(); err = try_split_host_port(name, default_port, &host, &port); if (err != GRPC_ERROR_NONE) { - GRPC_CLOSURE_SCHED(exec_ctx, on_done, err); + GRPC_CLOSURE_SCHED(on_done, err); gpr_free(host); gpr_free(port); return; @@ -268,7 +267,7 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("getaddrinfo failed"); err = grpc_error_set_str(err, GRPC_ERROR_STR_OS_ERROR, grpc_slice_from_static_string(uv_strerror(s))); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, err); + GRPC_CLOSURE_SCHED(on_done, err); gpr_free(r); gpr_free(req); gpr_free(hints); @@ -278,7 +277,7 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, } void (*grpc_resolve_address)( - grpc_exec_ctx *exec_ctx, const char *name, const char *default_port, + const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) = resolve_address_impl; diff --git a/src/core/lib/iomgr/resolve_address_windows.cc b/src/core/lib/iomgr/resolve_address_windows.cc index 451f01a701e..079ff5c9e22 100644 --- a/src/core/lib/iomgr/resolve_address_windows.cc +++ b/src/core/lib/iomgr/resolve_address_windows.cc @@ -132,8 +132,7 @@ grpc_error *(*grpc_blocking_resolve_address)( /* Callback to be passed to grpc_executor to asynch-ify * grpc_blocking_resolve_address */ -static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, - grpc_error *error) { +static void do_request_thread(void *rp, grpc_error *error) { request *r = (request *)rp; if (error == GRPC_ERROR_NONE) { error = @@ -141,7 +140,7 @@ static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp, } else { GRPC_ERROR_REF(error); } - GRPC_CLOSURE_SCHED(exec_ctx, r->on_done, error); + GRPC_CLOSURE_SCHED(r->on_done, error); gpr_free(r->name); gpr_free(r->default_port); gpr_free(r); @@ -154,8 +153,7 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) { gpr_free(addrs); } -static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, - const char *default_port, +static void resolve_address_impl(const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addresses) { @@ -166,11 +164,11 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name, r->default_port = gpr_strdup(default_port); r->on_done = on_done; r->addresses = addresses; - GRPC_CLOSURE_SCHED(exec_ctx, &r->request_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&r->request_closure, GRPC_ERROR_NONE); } void (*grpc_resolve_address)( - grpc_exec_ctx *exec_ctx, const char *name, const char *default_port, + const char *name, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addresses) = resolve_address_impl; diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc index ecb5747da86..0a8c9073cf7 100644 --- a/src/core/lib/iomgr/resource_quota.cc +++ b/src/core/lib/iomgr/resource_quota.cc @@ -155,8 +155,7 @@ struct grpc_resource_quota { char *name; }; -static void ru_unref_by(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, gpr_atm amount); +static void ru_unref_by(grpc_resource_user *resource_user, gpr_atm amount); /******************************************************************************* * list management @@ -240,35 +239,31 @@ static void rulist_remove(grpc_resource_user *resource_user, grpc_rulist list) { * resource quota state machine */ -static bool rq_alloc(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota); +static bool rq_alloc(grpc_resource_quota *resource_quota); static bool rq_reclaim_from_per_user_free_pool( - grpc_exec_ctx *exec_ctx, grpc_resource_quota *resource_quota); -static bool rq_reclaim(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota, bool destructive); + grpc_resource_quota *resource_quota); +static bool rq_reclaim(grpc_resource_quota *resource_quota, bool destructive); -static void rq_step(grpc_exec_ctx *exec_ctx, void *rq, grpc_error *error) { +static void rq_step(void *rq, grpc_error *error) { grpc_resource_quota *resource_quota = (grpc_resource_quota *)rq; resource_quota->step_scheduled = false; do { - if (rq_alloc(exec_ctx, resource_quota)) goto done; - } while (rq_reclaim_from_per_user_free_pool(exec_ctx, resource_quota)); + if (rq_alloc(resource_quota)) goto done; + } while (rq_reclaim_from_per_user_free_pool(resource_quota)); - if (!rq_reclaim(exec_ctx, resource_quota, false)) { - rq_reclaim(exec_ctx, resource_quota, true); + if (!rq_reclaim(resource_quota, false)) { + rq_reclaim(resource_quota, true); } done: - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); } -static void rq_step_sched(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota) { +static void rq_step_sched(grpc_resource_quota *resource_quota) { if (resource_quota->step_scheduled) return; resource_quota->step_scheduled = true; grpc_resource_quota_ref_internal(resource_quota); - GRPC_CLOSURE_SCHED(exec_ctx, &resource_quota->rq_step_closure, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&resource_quota->rq_step_closure, GRPC_ERROR_NONE); } /* update the atomically available resource estimate - use no barriers since @@ -288,8 +283,7 @@ static void rq_update_estimate(grpc_resource_quota *resource_quota) { } /* returns true if all allocations are completed */ -static bool rq_alloc(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota) { +static bool rq_alloc(grpc_resource_quota *resource_quota) { grpc_resource_user *resource_user; while ((resource_user = rulist_pop_head(resource_quota, GRPC_RULIST_AWAITING_ALLOCATION))) { @@ -308,9 +302,9 @@ static bool rq_alloc(grpc_exec_ctx *exec_ctx, int64_t aborted_allocations = resource_user->outstanding_allocations; resource_user->outstanding_allocations = 0; resource_user->free_pool += aborted_allocations; - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &resource_user->on_allocated); + GRPC_CLOSURE_LIST_SCHED(&resource_user->on_allocated); gpr_mu_unlock(&resource_user->mu); - ru_unref_by(exec_ctx, resource_user, (gpr_atm)aborted_allocations); + ru_unref_by(resource_user, (gpr_atm)aborted_allocations); continue; } if (resource_user->free_pool < 0 && @@ -333,7 +327,7 @@ static bool rq_alloc(grpc_exec_ctx *exec_ctx, if (resource_user->free_pool >= 0) { resource_user->allocating = false; resource_user->outstanding_allocations = 0; - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &resource_user->on_allocated); + GRPC_CLOSURE_LIST_SCHED(&resource_user->on_allocated); gpr_mu_unlock(&resource_user->mu); } else { rulist_add_head(resource_user, GRPC_RULIST_AWAITING_ALLOCATION); @@ -346,7 +340,7 @@ static bool rq_alloc(grpc_exec_ctx *exec_ctx, /* returns true if any memory could be reclaimed from buffers */ static bool rq_reclaim_from_per_user_free_pool( - grpc_exec_ctx *exec_ctx, grpc_resource_quota *resource_quota) { + grpc_resource_quota *resource_quota) { grpc_resource_user *resource_user; while ((resource_user = rulist_pop_head(resource_quota, GRPC_RULIST_NON_EMPTY_FREE_POOL))) { @@ -372,8 +366,7 @@ static bool rq_reclaim_from_per_user_free_pool( } /* returns true if reclamation is proceeding */ -static bool rq_reclaim(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota, bool destructive) { +static bool rq_reclaim(grpc_resource_quota *resource_quota, bool destructive) { if (resource_quota->reclaiming) return true; grpc_rulist list = destructive ? GRPC_RULIST_RECLAIMER_DESTRUCTIVE : GRPC_RULIST_RECLAIMER_BENIGN; @@ -391,7 +384,7 @@ static bool rq_reclaim(grpc_exec_ctx *exec_ctx, resource_quota->debug_only_last_reclaimer_resource_user = resource_user; resource_quota->debug_only_last_initiated_reclaimer = c; resource_user->reclaimers[destructive] = NULL; - GRPC_CLOSURE_RUN(exec_ctx, c, GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN(c, GRPC_ERROR_NONE); return true; } @@ -411,10 +404,10 @@ static void ru_slice_ref(void *p) { gpr_ref(&rc->refs); } -static void ru_slice_unref(grpc_exec_ctx *exec_ctx, void *p) { +static void ru_slice_unref(void *p) { ru_slice_refcount *rc = (ru_slice_refcount *)p; if (gpr_unref(&rc->refs)) { - grpc_resource_user_free(exec_ctx, rc->resource_user, rc->size); + grpc_resource_user_free(rc->resource_user, rc->size); gpr_free(rc); } } @@ -444,61 +437,57 @@ static grpc_slice ru_slice_create(grpc_resource_user *resource_user, * the combiner */ -static void ru_allocate(grpc_exec_ctx *exec_ctx, void *ru, grpc_error *error) { +static void ru_allocate(void *ru, grpc_error *error) { grpc_resource_user *resource_user = (grpc_resource_user *)ru; if (rulist_empty(resource_user->resource_quota, GRPC_RULIST_AWAITING_ALLOCATION)) { - rq_step_sched(exec_ctx, resource_user->resource_quota); + rq_step_sched(resource_user->resource_quota); } rulist_add_tail(resource_user, GRPC_RULIST_AWAITING_ALLOCATION); } -static void ru_add_to_free_pool(grpc_exec_ctx *exec_ctx, void *ru, - grpc_error *error) { +static void ru_add_to_free_pool(void *ru, grpc_error *error) { grpc_resource_user *resource_user = (grpc_resource_user *)ru; if (!rulist_empty(resource_user->resource_quota, GRPC_RULIST_AWAITING_ALLOCATION) && rulist_empty(resource_user->resource_quota, GRPC_RULIST_NON_EMPTY_FREE_POOL)) { - rq_step_sched(exec_ctx, resource_user->resource_quota); + rq_step_sched(resource_user->resource_quota); } rulist_add_tail(resource_user, GRPC_RULIST_NON_EMPTY_FREE_POOL); } -static bool ru_post_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, +static bool ru_post_reclaimer(grpc_resource_user *resource_user, bool destructive) { grpc_closure *closure = resource_user->new_reclaimers[destructive]; GPR_ASSERT(closure != NULL); resource_user->new_reclaimers[destructive] = NULL; GPR_ASSERT(resource_user->reclaimers[destructive] == NULL); if (gpr_atm_acq_load(&resource_user->shutdown) > 0) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_CANCELLED); return false; } resource_user->reclaimers[destructive] = closure; return true; } -static void ru_post_benign_reclaimer(grpc_exec_ctx *exec_ctx, void *ru, - grpc_error *error) { +static void ru_post_benign_reclaimer(void *ru, grpc_error *error) { grpc_resource_user *resource_user = (grpc_resource_user *)ru; - if (!ru_post_reclaimer(exec_ctx, resource_user, false)) return; + if (!ru_post_reclaimer(resource_user, false)) return; if (!rulist_empty(resource_user->resource_quota, GRPC_RULIST_AWAITING_ALLOCATION) && rulist_empty(resource_user->resource_quota, GRPC_RULIST_NON_EMPTY_FREE_POOL) && rulist_empty(resource_user->resource_quota, GRPC_RULIST_RECLAIMER_BENIGN)) { - rq_step_sched(exec_ctx, resource_user->resource_quota); + rq_step_sched(resource_user->resource_quota); } rulist_add_tail(resource_user, GRPC_RULIST_RECLAIMER_BENIGN); } -static void ru_post_destructive_reclaimer(grpc_exec_ctx *exec_ctx, void *ru, - grpc_error *error) { +static void ru_post_destructive_reclaimer(void *ru, grpc_error *error) { grpc_resource_user *resource_user = (grpc_resource_user *)ru; - if (!ru_post_reclaimer(exec_ctx, resource_user, true)) return; + if (!ru_post_reclaimer(resource_user, true)) return; if (!rulist_empty(resource_user->resource_quota, GRPC_RULIST_AWAITING_ALLOCATION) && rulist_empty(resource_user->resource_quota, @@ -507,51 +496,46 @@ static void ru_post_destructive_reclaimer(grpc_exec_ctx *exec_ctx, void *ru, GRPC_RULIST_RECLAIMER_BENIGN) && rulist_empty(resource_user->resource_quota, GRPC_RULIST_RECLAIMER_DESTRUCTIVE)) { - rq_step_sched(exec_ctx, resource_user->resource_quota); + rq_step_sched(resource_user->resource_quota); } rulist_add_tail(resource_user, GRPC_RULIST_RECLAIMER_DESTRUCTIVE); } -static void ru_shutdown(grpc_exec_ctx *exec_ctx, void *ru, grpc_error *error) { +static void ru_shutdown(void *ru, grpc_error *error) { if (GRPC_TRACER_ON(grpc_resource_quota_trace)) { gpr_log(GPR_DEBUG, "RU shutdown %p", ru); } grpc_resource_user *resource_user = (grpc_resource_user *)ru; - GRPC_CLOSURE_SCHED(exec_ctx, resource_user->reclaimers[0], - GRPC_ERROR_CANCELLED); - GRPC_CLOSURE_SCHED(exec_ctx, resource_user->reclaimers[1], - GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(resource_user->reclaimers[0], GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(resource_user->reclaimers[1], GRPC_ERROR_CANCELLED); resource_user->reclaimers[0] = NULL; resource_user->reclaimers[1] = NULL; rulist_remove(resource_user, GRPC_RULIST_RECLAIMER_BENIGN); rulist_remove(resource_user, GRPC_RULIST_RECLAIMER_DESTRUCTIVE); if (resource_user->allocating) { - rq_step_sched(exec_ctx, resource_user->resource_quota); + rq_step_sched(resource_user->resource_quota); } } -static void ru_destroy(grpc_exec_ctx *exec_ctx, void *ru, grpc_error *error) { +static void ru_destroy(void *ru, grpc_error *error) { grpc_resource_user *resource_user = (grpc_resource_user *)ru; GPR_ASSERT(gpr_atm_no_barrier_load(&resource_user->refs) == 0); for (int i = 0; i < GRPC_RULIST_COUNT; i++) { rulist_remove(resource_user, (grpc_rulist)i); } - GRPC_CLOSURE_SCHED(exec_ctx, resource_user->reclaimers[0], - GRPC_ERROR_CANCELLED); - GRPC_CLOSURE_SCHED(exec_ctx, resource_user->reclaimers[1], - GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(resource_user->reclaimers[0], GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(resource_user->reclaimers[1], GRPC_ERROR_CANCELLED); if (resource_user->free_pool != 0) { resource_user->resource_quota->free_pool += resource_user->free_pool; - rq_step_sched(exec_ctx, resource_user->resource_quota); + rq_step_sched(resource_user->resource_quota); } - grpc_resource_quota_unref_internal(exec_ctx, resource_user->resource_quota); + grpc_resource_quota_unref_internal(resource_user->resource_quota); gpr_mu_destroy(&resource_user->mu); gpr_free(resource_user->name); gpr_free(resource_user); } -static void ru_allocated_slices(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void ru_allocated_slices(void *arg, grpc_error *error) { grpc_resource_user_slice_allocator *slice_allocator = (grpc_resource_user_slice_allocator *)arg; if (error == GRPC_ERROR_NONE) { @@ -561,7 +545,7 @@ static void ru_allocated_slices(grpc_exec_ctx *exec_ctx, void *arg, slice_allocator->length)); } } - GRPC_CLOSURE_RUN(exec_ctx, &slice_allocator->on_done, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(&slice_allocator->on_done, GRPC_ERROR_REF(error)); } /******************************************************************************* @@ -575,23 +559,22 @@ typedef struct { grpc_closure closure; } rq_resize_args; -static void rq_resize(grpc_exec_ctx *exec_ctx, void *args, grpc_error *error) { +static void rq_resize(void *args, grpc_error *error) { rq_resize_args *a = (rq_resize_args *)args; int64_t delta = a->size - a->resource_quota->size; a->resource_quota->size += delta; a->resource_quota->free_pool += delta; rq_update_estimate(a->resource_quota); - rq_step_sched(exec_ctx, a->resource_quota); - grpc_resource_quota_unref_internal(exec_ctx, a->resource_quota); + rq_step_sched(a->resource_quota); + grpc_resource_quota_unref_internal(a->resource_quota); gpr_free(a); } -static void rq_reclamation_done(grpc_exec_ctx *exec_ctx, void *rq, - grpc_error *error) { +static void rq_reclamation_done(void *rq, grpc_error *error) { grpc_resource_quota *resource_quota = (grpc_resource_quota *)rq; resource_quota->reclaiming = false; - rq_step_sched(exec_ctx, resource_quota); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + rq_step_sched(resource_quota); + grpc_resource_quota_unref_internal(resource_quota); } /******************************************************************************* @@ -627,10 +610,9 @@ grpc_resource_quota *grpc_resource_quota_create(const char *name) { return resource_quota; } -void grpc_resource_quota_unref_internal(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota) { +void grpc_resource_quota_unref_internal(grpc_resource_quota *resource_quota) { if (gpr_unref(&resource_quota->refs)) { - GRPC_COMBINER_UNREF(exec_ctx, resource_quota->combiner, "resource_quota"); + GRPC_COMBINER_UNREF(resource_quota->combiner, "resource_quota"); gpr_free(resource_quota->name); gpr_free(resource_quota); } @@ -638,9 +620,9 @@ void grpc_resource_quota_unref_internal(grpc_exec_ctx *exec_ctx, /* Public API */ void grpc_resource_quota_unref(grpc_resource_quota *resource_quota) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_resource_quota_unref_internal(resource_quota); + grpc_exec_ctx_finish(); } grpc_resource_quota *grpc_resource_quota_ref_internal( @@ -664,15 +646,15 @@ double grpc_resource_quota_get_memory_pressure( /* Public API */ void grpc_resource_quota_resize(grpc_resource_quota *resource_quota, size_t size) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; rq_resize_args *a = (rq_resize_args *)gpr_malloc(sizeof(*a)); a->resource_quota = grpc_resource_quota_ref_internal(resource_quota); a->size = (int64_t)size; gpr_atm_no_barrier_store(&resource_quota->last_size, (gpr_atm)GPR_MIN((size_t)GPR_ATM_MAX, size)); GRPC_CLOSURE_INIT(&a->closure, rq_resize, a, grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(&exec_ctx, &a->closure, GRPC_ERROR_NONE); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CLOSURE_SCHED(&a->closure, GRPC_ERROR_NONE); + grpc_exec_ctx_finish(); } size_t grpc_resource_quota_peek_size(grpc_resource_quota *resource_quota) { @@ -703,8 +685,8 @@ static void *rq_copy(void *rq) { return rq; } -static void rq_destroy(grpc_exec_ctx *exec_ctx, void *rq) { - grpc_resource_quota_unref_internal(exec_ctx, (grpc_resource_quota *)rq); +static void rq_destroy(void *rq) { + grpc_resource_quota_unref_internal((grpc_resource_quota *)rq); } static int rq_cmp(void *a, void *b) { return GPR_ICMP(a, b); } @@ -772,14 +754,12 @@ static void ru_ref_by(grpc_resource_user *resource_user, gpr_atm amount) { GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&resource_user->refs, amount) != 0); } -static void ru_unref_by(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, gpr_atm amount) { +static void ru_unref_by(grpc_resource_user *resource_user, gpr_atm amount) { GPR_ASSERT(amount > 0); gpr_atm old = gpr_atm_full_fetch_add(&resource_user->refs, -amount); GPR_ASSERT(old >= amount); if (old == amount) { - GRPC_CLOSURE_SCHED(exec_ctx, &resource_user->destroy_closure, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&resource_user->destroy_closure, GRPC_ERROR_NONE); } } @@ -787,16 +767,13 @@ void grpc_resource_user_ref(grpc_resource_user *resource_user) { ru_ref_by(resource_user, 1); } -void grpc_resource_user_unref(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user) { - ru_unref_by(exec_ctx, resource_user, 1); +void grpc_resource_user_unref(grpc_resource_user *resource_user) { + ru_unref_by(resource_user, 1); } -void grpc_resource_user_shutdown(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user) { +void grpc_resource_user_shutdown(grpc_resource_user *resource_user) { if (gpr_atm_full_fetch_add(&resource_user->shutdown, 1) == 0) { GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_CREATE( ru_shutdown, resource_user, grpc_combiner_scheduler(resource_user->resource_quota->combiner)), @@ -804,8 +781,7 @@ void grpc_resource_user_shutdown(grpc_exec_ctx *exec_ctx, } } -void grpc_resource_user_alloc(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, size_t size, +void grpc_resource_user_alloc(grpc_resource_user *resource_user, size_t size, grpc_closure *optional_on_done) { gpr_mu_lock(&resource_user->mu); ru_ref_by(resource_user, (gpr_atm)size); @@ -821,18 +797,16 @@ void grpc_resource_user_alloc(grpc_exec_ctx *exec_ctx, GRPC_ERROR_NONE); if (!resource_user->allocating) { resource_user->allocating = true; - GRPC_CLOSURE_SCHED(exec_ctx, &resource_user->allocate_closure, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&resource_user->allocate_closure, GRPC_ERROR_NONE); } } else { resource_user->outstanding_allocations -= (int64_t)size; - GRPC_CLOSURE_SCHED(exec_ctx, optional_on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(optional_on_done, GRPC_ERROR_NONE); } gpr_mu_unlock(&resource_user->mu); } -void grpc_resource_user_free(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, size_t size) { +void grpc_resource_user_free(grpc_resource_user *resource_user, size_t size) { gpr_mu_lock(&resource_user->mu); bool was_zero_or_negative = resource_user->free_pool <= 0; resource_user->free_pool += (int64_t)size; @@ -845,32 +819,29 @@ void grpc_resource_user_free(grpc_exec_ctx *exec_ctx, if (is_bigger_than_zero && was_zero_or_negative && !resource_user->added_to_free_pool) { resource_user->added_to_free_pool = true; - GRPC_CLOSURE_SCHED(exec_ctx, &resource_user->add_to_free_pool_closure, + GRPC_CLOSURE_SCHED(&resource_user->add_to_free_pool_closure, GRPC_ERROR_NONE); } gpr_mu_unlock(&resource_user->mu); - ru_unref_by(exec_ctx, resource_user, (gpr_atm)size); + ru_unref_by(resource_user, (gpr_atm)size); } -void grpc_resource_user_post_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, +void grpc_resource_user_post_reclaimer(grpc_resource_user *resource_user, bool destructive, grpc_closure *closure) { GPR_ASSERT(resource_user->new_reclaimers[destructive] == NULL); resource_user->new_reclaimers[destructive] = closure; - GRPC_CLOSURE_SCHED(exec_ctx, - &resource_user->post_reclaimer_closure[destructive], + GRPC_CLOSURE_SCHED(&resource_user->post_reclaimer_closure[destructive], GRPC_ERROR_NONE); } -void grpc_resource_user_finish_reclamation(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user) { +void grpc_resource_user_finish_reclamation(grpc_resource_user *resource_user) { if (GRPC_TRACER_ON(grpc_resource_quota_trace)) { gpr_log(GPR_DEBUG, "RQ %s %s: reclamation complete", resource_user->resource_quota->name, resource_user->name); } GRPC_CLOSURE_SCHED( - exec_ctx, &resource_user->resource_quota->rq_reclamation_done_closure, + &resource_user->resource_quota->rq_reclamation_done_closure, GRPC_ERROR_NONE); } @@ -885,19 +856,17 @@ void grpc_resource_user_slice_allocator_init( } void grpc_resource_user_alloc_slices( - grpc_exec_ctx *exec_ctx, grpc_resource_user_slice_allocator *slice_allocator, size_t length, size_t count, grpc_slice_buffer *dest) { slice_allocator->length = length; slice_allocator->count = count; slice_allocator->dest = dest; - grpc_resource_user_alloc(exec_ctx, slice_allocator->resource_user, - count * length, &slice_allocator->on_allocated); + grpc_resource_user_alloc(slice_allocator->resource_user, count * length, + &slice_allocator->on_allocated); } -grpc_slice grpc_resource_user_slice_malloc(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, +grpc_slice grpc_resource_user_slice_malloc(grpc_resource_user *resource_user, size_t size) { - grpc_resource_user_alloc(exec_ctx, resource_user, size, NULL); + grpc_resource_user_alloc(resource_user, size, NULL); return ru_slice_create(resource_user, size); } diff --git a/src/core/lib/iomgr/resource_quota.h b/src/core/lib/iomgr/resource_quota.h index 1d4249b7e29..763ac9fcc1c 100644 --- a/src/core/lib/iomgr/resource_quota.h +++ b/src/core/lib/iomgr/resource_quota.h @@ -69,8 +69,7 @@ extern grpc_tracer_flag grpc_resource_quota_trace; grpc_resource_quota *grpc_resource_quota_ref_internal( grpc_resource_quota *resource_quota); -void grpc_resource_quota_unref_internal(grpc_exec_ctx *exec_ctx, - grpc_resource_quota *resource_quota); +void grpc_resource_quota_unref_internal(grpc_resource_quota *resource_quota); grpc_resource_quota *grpc_resource_quota_from_channel_args( const grpc_channel_args *channel_args); @@ -93,32 +92,26 @@ grpc_resource_quota *grpc_resource_user_quota( grpc_resource_user *resource_user); void grpc_resource_user_ref(grpc_resource_user *resource_user); -void grpc_resource_user_unref(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user); -void grpc_resource_user_shutdown(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user); +void grpc_resource_user_unref(grpc_resource_user *resource_user); +void grpc_resource_user_shutdown(grpc_resource_user *resource_user); /* Allocate from the resource user (and its quota). If optional_on_done is NULL, then allocate immediately. This may push the quota over-limit, at which point reclamation will kick in. If optional_on_done is non-NULL, it will be scheduled when the allocation has been granted by the quota. */ -void grpc_resource_user_alloc(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, size_t size, +void grpc_resource_user_alloc(grpc_resource_user *resource_user, size_t size, grpc_closure *optional_on_done); /* Release memory back to the quota */ -void grpc_resource_user_free(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, size_t size); +void grpc_resource_user_free(grpc_resource_user *resource_user, size_t size); /* Post a memory reclaimer to the resource user. Only one benign and one destructive reclaimer can be posted at once. When executed, the reclaimer MUST call grpc_resource_user_finish_reclamation before it completes, to return control to the resource quota. */ -void grpc_resource_user_post_reclaimer(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, +void grpc_resource_user_post_reclaimer(grpc_resource_user *resource_user, bool destructive, grpc_closure *closure); /* Finish a reclamation step */ -void grpc_resource_user_finish_reclamation(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user); +void grpc_resource_user_finish_reclamation(grpc_resource_user *resource_user); /* Helper to allocate slices from a resource user */ typedef struct grpc_resource_user_slice_allocator { @@ -145,13 +138,11 @@ void grpc_resource_user_slice_allocator_init( /* Allocate \a count slices of length \a length into \a dest. Only one request can be outstanding at a time. */ void grpc_resource_user_alloc_slices( - grpc_exec_ctx *exec_ctx, grpc_resource_user_slice_allocator *slice_allocator, size_t length, size_t count, grpc_slice_buffer *dest); /* Allocate one slice of length \a size synchronously. */ -grpc_slice grpc_resource_user_slice_malloc(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user, +grpc_slice grpc_resource_user_slice_malloc(grpc_resource_user *resource_user, size_t size); #ifdef __cplusplus diff --git a/src/core/lib/iomgr/socket_factory_posix.cc b/src/core/lib/iomgr/socket_factory_posix.cc index 8e907703ae7..a9d7dac3990 100644 --- a/src/core/lib/iomgr/socket_factory_posix.cc +++ b/src/core/lib/iomgr/socket_factory_posix.cc @@ -72,7 +72,7 @@ static void *socket_factory_arg_copy(void *p) { return grpc_socket_factory_ref((grpc_socket_factory *)p); } -static void socket_factory_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) { +static void socket_factory_arg_destroy(void *p) { grpc_socket_factory_unref((grpc_socket_factory *)p); } diff --git a/src/core/lib/iomgr/socket_mutator.cc b/src/core/lib/iomgr/socket_mutator.cc index b0435d5a076..0a2e91da4d9 100644 --- a/src/core/lib/iomgr/socket_mutator.cc +++ b/src/core/lib/iomgr/socket_mutator.cc @@ -63,7 +63,7 @@ static void *socket_mutator_arg_copy(void *p) { return grpc_socket_mutator_ref((grpc_socket_mutator *)p); } -static void socket_mutator_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) { +static void socket_mutator_arg_destroy(void *p) { grpc_socket_mutator_unref((grpc_socket_mutator *)p); } diff --git a/src/core/lib/iomgr/socket_windows.cc b/src/core/lib/iomgr/socket_windows.cc index 8c7f7cf683d..9d140fe4851 100644 --- a/src/core/lib/iomgr/socket_windows.cc +++ b/src/core/lib/iomgr/socket_windows.cc @@ -109,37 +109,34 @@ void grpc_winsocket_destroy(grpc_winsocket *winsocket) { -) The IOCP already completed in the background, and we need to call the callback now. -) The IOCP hasn't completed yet, and we're queuing it for later. */ -static void socket_notify_on_iocp(grpc_exec_ctx *exec_ctx, - grpc_winsocket *socket, grpc_closure *closure, +static void socket_notify_on_iocp(grpc_winsocket *socket, grpc_closure *closure, grpc_winsocket_callback_info *info) { GPR_ASSERT(info->closure == NULL); gpr_mu_lock(&socket->state_mu); if (info->has_pending_iocp) { info->has_pending_iocp = 0; - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } else { info->closure = closure; } gpr_mu_unlock(&socket->state_mu); } -void grpc_socket_notify_on_write(grpc_exec_ctx *exec_ctx, - grpc_winsocket *socket, +void grpc_socket_notify_on_write(grpc_winsocket *socket, grpc_closure *closure) { - socket_notify_on_iocp(exec_ctx, socket, closure, &socket->write_info); + socket_notify_on_iocp(socket, closure, &socket->write_info); } -void grpc_socket_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_winsocket *socket, - grpc_closure *closure) { - socket_notify_on_iocp(exec_ctx, socket, closure, &socket->read_info); +void grpc_socket_notify_on_read(grpc_winsocket *socket, grpc_closure *closure) { + socket_notify_on_iocp(socket, closure, &socket->read_info); } -void grpc_socket_become_ready(grpc_exec_ctx *exec_ctx, grpc_winsocket *socket, +void grpc_socket_become_ready(grpc_winsocket *socket, grpc_winsocket_callback_info *info) { GPR_ASSERT(!info->has_pending_iocp); gpr_mu_lock(&socket->state_mu); if (info->closure) { - GRPC_CLOSURE_SCHED(exec_ctx, info->closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(info->closure, GRPC_ERROR_NONE); info->closure = NULL; } else { info->has_pending_iocp = 1; diff --git a/src/core/lib/iomgr/socket_windows.h b/src/core/lib/iomgr/socket_windows.h index 84fa071e89a..2b9fa0a4fea 100644 --- a/src/core/lib/iomgr/socket_windows.h +++ b/src/core/lib/iomgr/socket_windows.h @@ -99,16 +99,13 @@ void grpc_winsocket_shutdown(grpc_winsocket *socket); /* Destroy a socket. Should only be called if there's no pending operation. */ void grpc_winsocket_destroy(grpc_winsocket *socket); -void grpc_socket_notify_on_write(grpc_exec_ctx *exec_ctx, - grpc_winsocket *winsocket, +void grpc_socket_notify_on_write(grpc_winsocket *winsocket, grpc_closure *closure); -void grpc_socket_notify_on_read(grpc_exec_ctx *exec_ctx, - grpc_winsocket *winsocket, +void grpc_socket_notify_on_read(grpc_winsocket *winsocket, grpc_closure *closure); -void grpc_socket_become_ready(grpc_exec_ctx *exec_ctx, - grpc_winsocket *winsocket, +void grpc_socket_become_ready(grpc_winsocket *winsocket, grpc_winsocket_callback_info *ci); #ifdef __cplusplus diff --git a/src/core/lib/iomgr/tcp_client.h b/src/core/lib/iomgr/tcp_client.h index b2f365f2af6..bea2d740df6 100644 --- a/src/core/lib/iomgr/tcp_client.h +++ b/src/core/lib/iomgr/tcp_client.h @@ -34,8 +34,7 @@ extern "C" { NULL on failure). interested_parties points to a set of pollsets that would be interested in this connection being established (in order to continue their work) */ -void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *on_connect, - grpc_endpoint **endpoint, +void grpc_tcp_client_connect(grpc_closure *on_connect, grpc_endpoint **endpoint, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, diff --git a/src/core/lib/iomgr/tcp_client_posix.cc b/src/core/lib/iomgr/tcp_client_posix.cc index 5611dd90624..c231c3f619a 100644 --- a/src/core/lib/iomgr/tcp_client_posix.cc +++ b/src/core/lib/iomgr/tcp_client_posix.cc @@ -96,7 +96,7 @@ done: return err; } -static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { +static void tc_on_alarm(void *acp, grpc_error *error) { int done; async_connect *ac = (async_connect *)acp; if (GRPC_TRACER_ON(grpc_tcp_trace)) { @@ -106,26 +106,25 @@ static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { } gpr_mu_lock(&ac->mu); if (ac->fd != NULL) { - grpc_fd_shutdown(exec_ctx, ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "connect() timed out")); + grpc_fd_shutdown( + ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out")); } done = (--ac->refs == 0); gpr_mu_unlock(&ac->mu); if (done) { gpr_mu_destroy(&ac->mu); gpr_free(ac->addr_str); - grpc_channel_args_destroy(exec_ctx, ac->channel_args); + grpc_channel_args_destroy(ac->channel_args); gpr_free(ac); } } grpc_endpoint *grpc_tcp_client_create_from_fd( - grpc_exec_ctx *exec_ctx, grpc_fd *fd, const grpc_channel_args *channel_args, - const char *addr_str) { - return grpc_tcp_create(exec_ctx, fd, channel_args, addr_str); + grpc_fd *fd, const grpc_channel_args *channel_args, const char *addr_str) { + return grpc_tcp_create(fd, channel_args, addr_str); } -static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { +static void on_writable(void *acp, grpc_error *error) { async_connect *ac = (async_connect *)acp; int so_error = 0; socklen_t so_error_size; @@ -149,7 +148,7 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { ac->fd = NULL; gpr_mu_unlock(&ac->mu); - grpc_timer_cancel(exec_ctx, &ac->alarm); + grpc_timer_cancel(&ac->alarm); gpr_mu_lock(&ac->mu); if (error != GRPC_ERROR_NONE) { @@ -171,9 +170,8 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { switch (so_error) { case 0: - grpc_pollset_set_del_fd(exec_ctx, ac->interested_parties, fd); - *ep = grpc_tcp_client_create_from_fd(exec_ctx, fd, ac->channel_args, - ac->addr_str); + grpc_pollset_set_del_fd(ac->interested_parties, fd); + *ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args, ac->addr_str); fd = NULL; break; case ENOBUFS: @@ -193,7 +191,7 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { don't do that! */ gpr_log(GPR_ERROR, "kernel out of buffers"); gpr_mu_unlock(&ac->mu); - grpc_fd_notify_on_write(exec_ctx, fd, &ac->write_closure); + grpc_fd_notify_on_write(fd, &ac->write_closure); return; case ECONNREFUSED: /* This error shouldn't happen for anything other than connect(). */ @@ -208,8 +206,8 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { finish: if (fd != NULL) { - grpc_pollset_set_del_fd(exec_ctx, ac->interested_parties, fd); - grpc_fd_orphan(exec_ctx, fd, NULL, NULL, false /* already_closed */, + grpc_pollset_set_del_fd(ac->interested_parties, fd); + grpc_fd_orphan(fd, NULL, NULL, false /* already_closed */, "tcp_client_orphan"); fd = NULL; } @@ -232,14 +230,13 @@ finish: if (done) { gpr_mu_destroy(&ac->mu); gpr_free(ac->addr_str); - grpc_channel_args_destroy(exec_ctx, ac->channel_args); + grpc_channel_args_destroy(ac->channel_args); gpr_free(ac); } - GRPC_CLOSURE_SCHED(exec_ctx, closure, error); + GRPC_CLOSURE_SCHED(closure, error); } -static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, - grpc_closure *closure, grpc_endpoint **ep, +static void tcp_client_connect_impl(grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, @@ -264,7 +261,7 @@ static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, error = grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, &dsmode, &fd); if (error != GRPC_ERROR_NONE) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, error); + GRPC_CLOSURE_SCHED(closure, error); return; } if (dsmode == GRPC_DSMODE_IPV4) { @@ -273,7 +270,7 @@ static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, addr = &addr4_copy; } if ((error = prepare_socket(addr, fd, channel_args)) != GRPC_ERROR_NONE) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, error); + GRPC_CLOSURE_SCHED(closure, error); return; } @@ -289,20 +286,19 @@ static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, fdobj = grpc_fd_create(fd, name); if (err >= 0) { - *ep = - grpc_tcp_client_create_from_fd(exec_ctx, fdobj, channel_args, addr_str); - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + *ep = grpc_tcp_client_create_from_fd(fdobj, channel_args, addr_str); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); goto done; } if (errno != EWOULDBLOCK && errno != EINPROGRESS) { - grpc_fd_orphan(exec_ctx, fdobj, NULL, NULL, false /* already_closed */, + grpc_fd_orphan(fdobj, NULL, NULL, false /* already_closed */, "tcp_client_connect_error"); - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_OS_ERROR(errno, "connect")); + GRPC_CLOSURE_SCHED(closure, GRPC_OS_ERROR(errno, "connect")); goto done; } - grpc_pollset_set_add_fd(exec_ctx, interested_parties, fdobj); + grpc_pollset_set_add_fd(interested_parties, fdobj); ac = (async_connect *)gpr_malloc(sizeof(async_connect)); ac->closure = closure; @@ -324,8 +320,8 @@ static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, gpr_mu_lock(&ac->mu); GRPC_CLOSURE_INIT(&ac->on_alarm, tc_on_alarm, ac, grpc_schedule_on_exec_ctx); - grpc_timer_init(exec_ctx, &ac->alarm, deadline, &ac->on_alarm); - grpc_fd_notify_on_write(exec_ctx, ac->fd, &ac->write_closure); + grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm); + grpc_fd_notify_on_write(ac->fd, &ac->write_closure); gpr_mu_unlock(&ac->mu); done: @@ -336,20 +332,19 @@ done: // overridden by api_fuzzer.c extern "C" { void (*grpc_tcp_client_connect_impl)( - grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, + grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_millis deadline) = tcp_client_connect_impl; } -void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_endpoint **ep, +void grpc_tcp_client_connect(grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_millis deadline) { - grpc_tcp_client_connect_impl(exec_ctx, closure, ep, interested_parties, - channel_args, addr, deadline); + grpc_tcp_client_connect_impl(closure, ep, interested_parties, channel_args, + addr, deadline); } #endif diff --git a/src/core/lib/iomgr/tcp_client_posix.h b/src/core/lib/iomgr/tcp_client_posix.h index 8740511804d..ed37b5a9de4 100644 --- a/src/core/lib/iomgr/tcp_client_posix.h +++ b/src/core/lib/iomgr/tcp_client_posix.h @@ -28,8 +28,7 @@ extern "C" { #endif grpc_endpoint *grpc_tcp_client_create_from_fd( - grpc_exec_ctx *exec_ctx, grpc_fd *fd, const grpc_channel_args *channel_args, - const char *addr_str); + grpc_fd *fd, const grpc_channel_args *channel_args, const char *addr_str); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/tcp_client_uv.cc b/src/core/lib/iomgr/tcp_client_uv.cc index f3e9366299d..31ee397107a 100644 --- a/src/core/lib/iomgr/tcp_client_uv.cc +++ b/src/core/lib/iomgr/tcp_client_uv.cc @@ -46,17 +46,15 @@ typedef struct grpc_uv_tcp_connect { grpc_resource_quota *resource_quota; } grpc_uv_tcp_connect; -static void uv_tcp_connect_cleanup(grpc_exec_ctx *exec_ctx, - grpc_uv_tcp_connect *connect) { - grpc_resource_quota_unref_internal(exec_ctx, connect->resource_quota); +static void uv_tcp_connect_cleanup(grpc_uv_tcp_connect *connect) { + grpc_resource_quota_unref_internal(connect->resource_quota); gpr_free(connect->addr_name); gpr_free(connect); } static void tcp_close_callback(uv_handle_t *handle) { gpr_free(handle); } -static void uv_tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, - grpc_error *error) { +static void uv_tc_on_alarm(void *acp, grpc_error *error) { int done; grpc_uv_tcp_connect *connect = (grpc_uv_tcp_connect *)acp; if (GRPC_TRACER_ON(grpc_tcp_trace)) { @@ -72,17 +70,17 @@ static void uv_tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, } done = (--connect->refs == 0); if (done) { - uv_tcp_connect_cleanup(exec_ctx, connect); + uv_tcp_connect_cleanup(connect); } } static void uv_tc_on_connect(uv_connect_t *req, int status) { grpc_uv_tcp_connect *connect = (grpc_uv_tcp_connect *)req->data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_error *error = GRPC_ERROR_NONE; int done; grpc_closure *closure = connect->closure; - grpc_timer_cancel(&exec_ctx, &connect->alarm); + grpc_timer_cancel(&connect->alarm); if (status == 0) { *connect->endpoint = grpc_tcp_create( connect->tcp_handle, connect->resource_quota, connect->addr_name); @@ -107,15 +105,14 @@ static void uv_tc_on_connect(uv_connect_t *req, int status) { } done = (--connect->refs == 0); if (done) { - grpc_exec_ctx_flush(&exec_ctx); - uv_tcp_connect_cleanup(&exec_ctx, connect); + grpc_exec_ctx_flush(); + uv_tcp_connect_cleanup(connect); } - GRPC_CLOSURE_SCHED(&exec_ctx, closure, error); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CLOSURE_SCHED(closure, error); + grpc_exec_ctx_finish(); } -static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, - grpc_closure *closure, grpc_endpoint **ep, +static void tcp_client_connect_impl(grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *resolved_addr, @@ -130,7 +127,7 @@ static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, if (channel_args != NULL) { for (size_t i = 0; i < channel_args->num_args; i++) { if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_RESOURCE_QUOTA)) { - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); resource_quota = grpc_resource_quota_ref_internal( (grpc_resource_quota *)channel_args->args[i].value.pointer.p); } @@ -158,26 +155,25 @@ static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx, uv_tc_on_connect); GRPC_CLOSURE_INIT(&connect->on_alarm, uv_tc_on_alarm, connect, grpc_schedule_on_exec_ctx); - grpc_timer_init(exec_ctx, &connect->alarm, deadline, &connect->on_alarm); + grpc_timer_init(&connect->alarm, deadline, &connect->on_alarm); } // overridden by api_fuzzer.c extern "C" { void (*grpc_tcp_client_connect_impl)( - grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, + grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_millis deadline) = tcp_client_connect_impl; } -void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_endpoint **ep, +void grpc_tcp_client_connect(grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_millis deadline) { - grpc_tcp_client_connect_impl(exec_ctx, closure, ep, interested_parties, - channel_args, addr, deadline); + grpc_tcp_client_connect_impl(closure, ep, interested_parties, channel_args, + addr, deadline); } #endif /* GRPC_UV */ diff --git a/src/core/lib/iomgr/tcp_client_windows.cc b/src/core/lib/iomgr/tcp_client_windows.cc index 9adf7ee4e9c..94ae9365f04 100644 --- a/src/core/lib/iomgr/tcp_client_windows.cc +++ b/src/core/lib/iomgr/tcp_client_windows.cc @@ -52,13 +52,12 @@ typedef struct { grpc_channel_args *channel_args; } async_connect; -static void async_connect_unlock_and_cleanup(grpc_exec_ctx *exec_ctx, - async_connect *ac, +static void async_connect_unlock_and_cleanup(async_connect *ac, grpc_winsocket *socket) { int done = (--ac->refs == 0); gpr_mu_unlock(&ac->mu); if (done) { - grpc_channel_args_destroy(exec_ctx, ac->channel_args); + grpc_channel_args_destroy(ac->channel_args); gpr_mu_destroy(&ac->mu); gpr_free(ac->addr_name); gpr_free(ac); @@ -66,7 +65,7 @@ static void async_connect_unlock_and_cleanup(grpc_exec_ctx *exec_ctx, if (socket != NULL) grpc_winsocket_destroy(socket); } -static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { +static void on_alarm(void *acp, grpc_error *error) { async_connect *ac = (async_connect *)acp; gpr_mu_lock(&ac->mu); grpc_winsocket *socket = ac->socket; @@ -74,10 +73,10 @@ static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { if (socket != NULL) { grpc_winsocket_shutdown(socket); } - async_connect_unlock_and_cleanup(exec_ctx, ac, socket); + async_connect_unlock_and_cleanup(ac, socket); } -static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { +static void on_connect(void *acp, grpc_error *error) { async_connect *ac = (async_connect *)acp; grpc_endpoint **ep = ac->endpoint; GPR_ASSERT(*ep == NULL); @@ -90,7 +89,7 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { ac->socket = NULL; gpr_mu_unlock(&ac->mu); - grpc_timer_cancel(exec_ctx, &ac->alarm); + grpc_timer_cancel(&ac->alarm); gpr_mu_lock(&ac->mu); @@ -105,8 +104,7 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { if (!wsa_success) { error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx"); } else { - *ep = - grpc_tcp_create(exec_ctx, socket, ac->channel_args, ac->addr_name); + *ep = grpc_tcp_create(socket, ac->channel_args, ac->addr_name); socket = NULL; } } else { @@ -114,18 +112,20 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) { } } - async_connect_unlock_and_cleanup(exec_ctx, ac, socket); + async_connect_unlock_and_cleanup(ac, socket); /* If the connection was aborted, the callback was already called when the deadline was met. */ - GRPC_CLOSURE_SCHED(exec_ctx, on_done, error); + GRPC_CLOSURE_SCHED(on_done, error); } /* Tries to issue one async connection, then schedules both an IOCP notification request for the connection, and one timeout alert. */ -static void tcp_client_connect_impl( - grpc_exec_ctx *exec_ctx, grpc_closure *on_done, grpc_endpoint **endpoint, - grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, - const grpc_resolved_address *addr, grpc_millis deadline) { +static void tcp_client_connect_impl(grpc_closure *on_done, + grpc_endpoint **endpoint, + grpc_pollset_set *interested_parties, + const grpc_channel_args *channel_args, + const grpc_resolved_address *addr, + grpc_millis deadline) { SOCKET sock = INVALID_SOCKET; BOOL success; int status; @@ -205,8 +205,8 @@ static void tcp_client_connect_impl( GRPC_CLOSURE_INIT(&ac->on_connect, on_connect, ac, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&ac->on_alarm, on_alarm, ac, grpc_schedule_on_exec_ctx); - grpc_timer_init(exec_ctx, &ac->alarm, deadline, &ac->on_alarm); - grpc_socket_notify_on_write(exec_ctx, socket, &ac->on_connect); + grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm); + grpc_socket_notify_on_write(socket, &ac->on_connect); return; failure: @@ -222,26 +222,25 @@ failure: } else if (sock != INVALID_SOCKET) { closesocket(sock); } - GRPC_CLOSURE_SCHED(exec_ctx, on_done, final_error); + GRPC_CLOSURE_SCHED(on_done, final_error); } // overridden by api_fuzzer.c extern "C" { void (*grpc_tcp_client_connect_impl)( - grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, + grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_millis deadline) = tcp_client_connect_impl; } -void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_endpoint **ep, +void grpc_tcp_client_connect(grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, grpc_millis deadline) { - grpc_tcp_client_connect_impl(exec_ctx, closure, ep, interested_parties, - channel_args, addr, deadline); + grpc_tcp_client_connect_impl(closure, ep, interested_parties, channel_args, + addr, deadline); } #endif /* GRPC_WINSOCK_SOCKET */ diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index 7fcaef76792..b6b7231ee1b 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -110,36 +110,31 @@ typedef struct backup_poller { static gpr_atm g_uncovered_notifications_pending; static gpr_atm g_backup_poller; /* backup_poller* */ -static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, - grpc_error *error); -static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, - grpc_error *error); -static void tcp_drop_uncovered_then_handle_write(grpc_exec_ctx *exec_ctx, - void *arg /* grpc_tcp */, +static void tcp_handle_read(void *arg /* grpc_tcp */, grpc_error *error); +static void tcp_handle_write(void *arg /* grpc_tcp */, grpc_error *error); +static void tcp_drop_uncovered_then_handle_write(void *arg /* grpc_tcp */, grpc_error *error); -static void done_poller(grpc_exec_ctx *exec_ctx, void *bp, - grpc_error *error_ignored) { +static void done_poller(void *bp, grpc_error *error_ignored) { backup_poller *p = (backup_poller *)bp; if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p destroy", p); } - grpc_pollset_destroy(exec_ctx, BACKUP_POLLER_POLLSET(p)); + grpc_pollset_destroy(BACKUP_POLLER_POLLSET(p)); gpr_free(p); } -static void run_poller(grpc_exec_ctx *exec_ctx, void *bp, - grpc_error *error_ignored) { +static void run_poller(void *bp, grpc_error *error_ignored) { backup_poller *p = (backup_poller *)bp; if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p run", p); } gpr_mu_lock(p->pollset_mu); - grpc_millis deadline = grpc_exec_ctx_now(exec_ctx) + 13 * GPR_MS_PER_SEC; - GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS(exec_ctx); + grpc_millis deadline = grpc_exec_ctx_now() + 13 * GPR_MS_PER_SEC; + GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS(); GRPC_LOG_IF_ERROR( "backup_poller:pollset_work", - grpc_pollset_work(exec_ctx, BACKUP_POLLER_POLLSET(p), NULL, deadline)); + grpc_pollset_work(BACKUP_POLLER_POLLSET(p), NULL, deadline)); gpr_mu_unlock(p->pollset_mu); /* last "uncovered" notification is the ref that keeps us polling, if we get * there try a cas to release it */ @@ -154,18 +149,18 @@ static void run_poller(grpc_exec_ctx *exec_ctx, void *bp, if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p shutdown", p); } - grpc_pollset_shutdown(exec_ctx, BACKUP_POLLER_POLLSET(p), + grpc_pollset_shutdown(BACKUP_POLLER_POLLSET(p), GRPC_CLOSURE_INIT(&p->run_poller, done_poller, p, grpc_schedule_on_exec_ctx)); } else { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p reschedule", p); } - GRPC_CLOSURE_SCHED(exec_ctx, &p->run_poller, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&p->run_poller, GRPC_ERROR_NONE); } } -static void drop_uncovered(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void drop_uncovered(grpc_tcp *tcp) { backup_poller *p = (backup_poller *)gpr_atm_acq_load(&g_backup_poller); gpr_atm old_count = gpr_atm_no_barrier_fetch_add(&g_uncovered_notifications_pending, -1); @@ -176,7 +171,7 @@ static void drop_uncovered(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { GPR_ASSERT(old_count != 1); } -static void cover_self(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void cover_self(grpc_tcp *tcp) { backup_poller *p; gpr_atm old_count = gpr_atm_no_barrier_fetch_add(&g_uncovered_notifications_pending, 2); @@ -185,7 +180,7 @@ static void cover_self(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { 2 + (int)old_count); } if (old_count == 0) { - GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED(exec_ctx); + GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED(); p = (backup_poller *)gpr_malloc(sizeof(*p) + grpc_pollset_size()); if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p create", p); @@ -193,7 +188,6 @@ static void cover_self(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu); gpr_atm_rel_store(&g_backup_poller, (gpr_atm)p); GRPC_CLOSURE_SCHED( - exec_ctx, GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, grpc_executor_scheduler(GRPC_EXECUTOR_LONG)), GRPC_ERROR_NONE); @@ -205,39 +199,38 @@ static void cover_self(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p add %p", p, tcp); } - grpc_pollset_add_fd(exec_ctx, BACKUP_POLLER_POLLSET(p), tcp->em_fd); + grpc_pollset_add_fd(BACKUP_POLLER_POLLSET(p), tcp->em_fd); if (old_count != 0) { - drop_uncovered(exec_ctx, tcp); + drop_uncovered(tcp); } } -static void notify_on_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void notify_on_read(grpc_tcp *tcp) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "TCP:%p notify_on_read", tcp); } GRPC_CLOSURE_INIT(&tcp->read_done_closure, tcp_handle_read, tcp, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, tcp->em_fd, &tcp->read_done_closure); + grpc_fd_notify_on_read(tcp->em_fd, &tcp->read_done_closure); } -static void notify_on_write(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void notify_on_write(grpc_tcp *tcp) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "TCP:%p notify_on_write", tcp); } - cover_self(exec_ctx, tcp); + cover_self(tcp); GRPC_CLOSURE_INIT(&tcp->write_done_closure, tcp_drop_uncovered_then_handle_write, tcp, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_write(exec_ctx, tcp->em_fd, &tcp->write_done_closure); + grpc_fd_notify_on_write(tcp->em_fd, &tcp->write_done_closure); } -static void tcp_drop_uncovered_then_handle_write(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void tcp_drop_uncovered_then_handle_write(void *arg, grpc_error *error) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "TCP:%p got_write: %s", arg, grpc_error_string(error)); } - drop_uncovered(exec_ctx, (grpc_tcp *)arg); - tcp_handle_write(exec_ctx, arg, error); + drop_uncovered((grpc_tcp *)arg); + tcp_handle_write(arg, error); } static void add_to_estimate(grpc_tcp *tcp, size_t bytes) { @@ -283,33 +276,29 @@ static grpc_error *tcp_annotate_error(grpc_error *src_error, grpc_tcp *tcp) { grpc_slice_from_copied_string(tcp->peer_string)); } -static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, - grpc_error *error); -static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, - grpc_error *error); +static void tcp_handle_read(void *arg /* grpc_tcp */, grpc_error *error); +static void tcp_handle_write(void *arg /* grpc_tcp */, grpc_error *error); -static void tcp_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { +static void tcp_shutdown(grpc_endpoint *ep, grpc_error *why) { grpc_tcp *tcp = (grpc_tcp *)ep; - grpc_fd_shutdown(exec_ctx, tcp->em_fd, why); - grpc_resource_user_shutdown(exec_ctx, tcp->resource_user); + grpc_fd_shutdown(tcp->em_fd, why); + grpc_resource_user_shutdown(tcp->resource_user); } -static void tcp_free(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { - grpc_fd_orphan(exec_ctx, tcp->em_fd, tcp->release_fd_cb, tcp->release_fd, +static void tcp_free(grpc_tcp *tcp) { + grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd, false /* already_closed */, "tcp_unref_orphan"); - grpc_slice_buffer_destroy_internal(exec_ctx, &tcp->last_read_buffer); - grpc_resource_user_unref(exec_ctx, tcp->resource_user); + grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer); + grpc_resource_user_unref(tcp->resource_user); gpr_free(tcp->peer_string); gpr_free(tcp); } #ifndef NDEBUG -#define TCP_UNREF(cl, tcp, reason) \ - tcp_unref((cl), (tcp), (reason), __FILE__, __LINE__) +#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason), __FILE__, __LINE__) #define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__) -static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, - const char *reason, const char *file, int line) { +static void tcp_unref(grpc_tcp *tcp, const char *reason, const char *file, + int line) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count); gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, @@ -317,7 +306,7 @@ static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, val - 1); } if (gpr_unref(&tcp->refcount)) { - tcp_free(exec_ctx, tcp); + tcp_free(tcp); } } @@ -332,26 +321,25 @@ static void tcp_ref(grpc_tcp *tcp, const char *reason, const char *file, gpr_ref(&tcp->refcount); } #else -#define TCP_UNREF(cl, tcp, reason) tcp_unref((cl), (tcp)) +#define TCP_UNREF(tcp, reason) tcp_unref((tcp)) #define TCP_REF(tcp, reason) tcp_ref((tcp)) -static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void tcp_unref(grpc_tcp *tcp) { if (gpr_unref(&tcp->refcount)) { - tcp_free(exec_ctx, tcp); + tcp_free(tcp); } } static void tcp_ref(grpc_tcp *tcp) { gpr_ref(&tcp->refcount); } #endif -static void tcp_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { +static void tcp_destroy(grpc_endpoint *ep) { grpc_network_status_unregister_endpoint(ep); grpc_tcp *tcp = (grpc_tcp *)ep; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &tcp->last_read_buffer); - TCP_UNREF(exec_ctx, tcp, "destroy"); + grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer); + TCP_UNREF(tcp, "destroy"); } -static void call_read_cb(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, - grpc_error *error) { +static void call_read_cb(grpc_tcp *tcp, grpc_error *error) { grpc_closure *cb = tcp->read_cb; if (GRPC_TRACER_ON(grpc_tcp_trace)) { @@ -370,11 +358,11 @@ static void call_read_cb(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, tcp->read_cb = NULL; tcp->incoming_buffer = NULL; - GRPC_CLOSURE_RUN(exec_ctx, cb, error); + GRPC_CLOSURE_RUN(cb, error); } #define MAX_READ_IOVEC 4 -static void tcp_do_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void tcp_do_read(grpc_tcp *tcp) { struct msghdr msg; struct iovec iov[MAX_READ_IOVEC]; ssize_t read_bytes; @@ -397,12 +385,12 @@ static void tcp_do_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_STATS_INC_TCP_READ_OFFER(exec_ctx, tcp->incoming_buffer->length); - GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(exec_ctx, tcp->incoming_buffer->count); + GRPC_STATS_INC_TCP_READ_OFFER(tcp->incoming_buffer->length); + GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(tcp->incoming_buffer->count); GPR_TIMER_BEGIN("recvmsg", 0); do { - GRPC_STATS_INC_SYSCALL_READ(exec_ctx); + GRPC_STATS_INC_SYSCALL_READ(); read_bytes = recvmsg(tcp->fd, &msg, 0); } while (read_bytes < 0 && errno == EINTR); GPR_TIMER_END("recvmsg", read_bytes >= 0); @@ -413,24 +401,22 @@ static void tcp_do_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { if (errno == EAGAIN) { finish_estimate(tcp); /* We've consumed the edge, request a new one */ - notify_on_read(exec_ctx, tcp); + notify_on_read(tcp); } else { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, - tcp->incoming_buffer); - call_read_cb(exec_ctx, tcp, + grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer); + call_read_cb(tcp, tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp)); - TCP_UNREF(exec_ctx, tcp, "read"); + TCP_UNREF(tcp, "read"); } } else if (read_bytes == 0) { /* 0 read size ==> end of stream */ - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->incoming_buffer); + grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer); call_read_cb( - exec_ctx, tcp, - tcp_annotate_error( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp)); - TCP_UNREF(exec_ctx, tcp, "read"); + tcp, tcp_annotate_error( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp)); + TCP_UNREF(tcp, "read"); } else { - GRPC_STATS_INC_TCP_READ_SIZE(exec_ctx, read_bytes); + GRPC_STATS_INC_TCP_READ_SIZE(read_bytes); add_to_estimate(tcp, (size_t)read_bytes); GPR_ASSERT((size_t)read_bytes <= tcp->incoming_buffer->length); if ((size_t)read_bytes < tcp->incoming_buffer->length) { @@ -440,50 +426,47 @@ static void tcp_do_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { &tcp->last_read_buffer); } GPR_ASSERT((size_t)read_bytes == tcp->incoming_buffer->length); - call_read_cb(exec_ctx, tcp, GRPC_ERROR_NONE); - TCP_UNREF(exec_ctx, tcp, "read"); + call_read_cb(tcp, GRPC_ERROR_NONE); + TCP_UNREF(tcp, "read"); } GPR_TIMER_END("tcp_continue_read", 0); } -static void tcp_read_allocation_done(grpc_exec_ctx *exec_ctx, void *tcpp, - grpc_error *error) { +static void tcp_read_allocation_done(void *tcpp, grpc_error *error) { grpc_tcp *tcp = (grpc_tcp *)tcpp; if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "TCP:%p read_allocation_done: %s", tcp, grpc_error_string(error)); } if (error != GRPC_ERROR_NONE) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->incoming_buffer); - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, - &tcp->last_read_buffer); - call_read_cb(exec_ctx, tcp, GRPC_ERROR_REF(error)); - TCP_UNREF(exec_ctx, tcp, "read"); + grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer); + grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer); + call_read_cb(tcp, GRPC_ERROR_REF(error)); + TCP_UNREF(tcp, "read"); } else { - tcp_do_read(exec_ctx, tcp); + tcp_do_read(tcp); } } -static void tcp_continue_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void tcp_continue_read(grpc_tcp *tcp) { size_t target_read_size = get_target_read_size(tcp); if (tcp->incoming_buffer->length < target_read_size && tcp->incoming_buffer->count < MAX_READ_IOVEC) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "TCP:%p alloc_slices", tcp); } - grpc_resource_user_alloc_slices(exec_ctx, &tcp->slice_allocator, - target_read_size, 1, tcp->incoming_buffer); + grpc_resource_user_alloc_slices(&tcp->slice_allocator, target_read_size, 1, + tcp->incoming_buffer); } else { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "TCP:%p do_read", tcp); } - tcp_do_read(exec_ctx, tcp); + tcp_do_read(tcp); } } -static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, - grpc_error *error) { +static void tcp_handle_read(void *arg /* grpc_tcp */, grpc_error *error) { grpc_tcp *tcp = (grpc_tcp *)arg; GPR_ASSERT(!tcp->finished_edge); if (GRPC_TRACER_ON(grpc_tcp_trace)) { @@ -491,37 +474,35 @@ static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, } if (error != GRPC_ERROR_NONE) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->incoming_buffer); - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, - &tcp->last_read_buffer); - call_read_cb(exec_ctx, tcp, GRPC_ERROR_REF(error)); - TCP_UNREF(exec_ctx, tcp, "read"); + grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer); + grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer); + call_read_cb(tcp, GRPC_ERROR_REF(error)); + TCP_UNREF(tcp, "read"); } else { - tcp_continue_read(exec_ctx, tcp); + tcp_continue_read(tcp); } } -static void tcp_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *incoming_buffer, grpc_closure *cb) { +static void tcp_read(grpc_endpoint *ep, grpc_slice_buffer *incoming_buffer, + grpc_closure *cb) { grpc_tcp *tcp = (grpc_tcp *)ep; GPR_ASSERT(tcp->read_cb == NULL); tcp->read_cb = cb; tcp->incoming_buffer = incoming_buffer; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, incoming_buffer); + grpc_slice_buffer_reset_and_unref_internal(incoming_buffer); grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer); TCP_REF(tcp, "read"); if (tcp->finished_edge) { tcp->finished_edge = false; - notify_on_read(exec_ctx, tcp); + notify_on_read(tcp); } else { - GRPC_CLOSURE_SCHED(exec_ctx, &tcp->read_done_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&tcp->read_done_closure, GRPC_ERROR_NONE); } } /* returns true if done, false if pending; if returning true, *error is set */ #define MAX_WRITE_IOVEC 1000 -static bool tcp_flush(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, - grpc_error **error) { +static bool tcp_flush(grpc_tcp *tcp, grpc_error **error) { struct msghdr msg; struct iovec iov[MAX_WRITE_IOVEC]; msg_iovlen_type iov_size; @@ -560,13 +541,13 @@ static bool tcp_flush(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, msg.msg_controllen = 0; msg.msg_flags = 0; - GRPC_STATS_INC_TCP_WRITE_SIZE(exec_ctx, sending_length); - GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(exec_ctx, iov_size); + GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length); + GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size); GPR_TIMER_BEGIN("sendmsg", 1); do { /* TODO(klempner): Cork if this is a partial write */ - GRPC_STATS_INC_SYSCALL_WRITE(exec_ctx); + GRPC_STATS_INC_SYSCALL_WRITE(); sent_length = sendmsg(tcp->fd, &msg, SENDMSG_FLAGS); } while (sent_length < 0 && errno == EINTR); GPR_TIMER_END("sendmsg", 0); @@ -610,24 +591,23 @@ static bool tcp_flush(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, }; } -static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, - grpc_error *error) { +static void tcp_handle_write(void *arg /* grpc_tcp */, grpc_error *error) { grpc_tcp *tcp = (grpc_tcp *)arg; grpc_closure *cb; if (error != GRPC_ERROR_NONE) { cb = tcp->write_cb; tcp->write_cb = NULL; - cb->cb(exec_ctx, cb->cb_arg, error); - TCP_UNREF(exec_ctx, tcp, "write"); + cb->cb(cb->cb_arg, error); + TCP_UNREF(tcp, "write"); return; } - if (!tcp_flush(exec_ctx, tcp, &error)) { + if (!tcp_flush(tcp, &error)) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "write: delayed"); } - notify_on_write(exec_ctx, tcp); + notify_on_write(tcp); } else { cb = tcp->write_cb; tcp->write_cb = NULL; @@ -636,13 +616,13 @@ static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */, gpr_log(GPR_DEBUG, "write: %s", str); } - GRPC_CLOSURE_RUN(exec_ctx, cb, error); - TCP_UNREF(exec_ctx, tcp, "write"); + GRPC_CLOSURE_RUN(cb, error); + TCP_UNREF(tcp, "write"); } } -static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *buf, grpc_closure *cb) { +static void tcp_write(grpc_endpoint *ep, grpc_slice_buffer *buf, + grpc_closure *cb) { grpc_tcp *tcp = (grpc_tcp *)ep; grpc_error *error = GRPC_ERROR_NONE; @@ -663,45 +643,43 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, if (buf->length == 0) { GPR_TIMER_END("tcp_write", 0); GRPC_CLOSURE_SCHED( - exec_ctx, cb, - grpc_fd_is_shutdown(tcp->em_fd) - ? tcp_annotate_error(GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"), - tcp) - : GRPC_ERROR_NONE); + cb, grpc_fd_is_shutdown(tcp->em_fd) + ? tcp_annotate_error( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"), tcp) + : GRPC_ERROR_NONE); return; } tcp->outgoing_buffer = buf; tcp->outgoing_slice_idx = 0; tcp->outgoing_byte_idx = 0; - if (!tcp_flush(exec_ctx, tcp, &error)) { + if (!tcp_flush(tcp, &error)) { TCP_REF(tcp, "write"); tcp->write_cb = cb; if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "write: delayed"); } - notify_on_write(exec_ctx, tcp); + notify_on_write(tcp); } else { if (GRPC_TRACER_ON(grpc_tcp_trace)) { const char *str = grpc_error_string(error); gpr_log(GPR_DEBUG, "write: %s", str); } - GRPC_CLOSURE_SCHED(exec_ctx, cb, error); + GRPC_CLOSURE_SCHED(cb, error); } GPR_TIMER_END("tcp_write", 0); } -static void tcp_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset) { +static void tcp_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) { grpc_tcp *tcp = (grpc_tcp *)ep; - grpc_pollset_add_fd(exec_ctx, pollset, tcp->em_fd); + grpc_pollset_add_fd(pollset, tcp->em_fd); } -static void tcp_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, +static void tcp_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set) { grpc_tcp *tcp = (grpc_tcp *)ep; - grpc_pollset_set_add_fd(exec_ctx, pollset_set, tcp->em_fd); + grpc_pollset_set_add_fd(pollset_set, tcp->em_fd); } static char *tcp_get_peer(grpc_endpoint *ep) { @@ -726,7 +704,7 @@ static const grpc_endpoint_vtable vtable = { #define MAX_CHUNK_SIZE 32 * 1024 * 1024 -grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_fd *em_fd, +grpc_endpoint *grpc_tcp_create(grpc_fd *em_fd, const grpc_channel_args *channel_args, const char *peer_string) { int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE; @@ -755,7 +733,7 @@ grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_fd *em_fd, grpc_channel_arg_get_integer(&channel_args->args[i], options); } else if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_RESOURCE_QUOTA)) { - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); resource_quota = grpc_resource_quota_ref_internal( (grpc_resource_quota *)channel_args->args[i].value.pointer.p); } @@ -792,7 +770,7 @@ grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_fd *em_fd, &tcp->slice_allocator, tcp->resource_user, tcp_read_allocation_done, tcp); /* Tell network status tracker about new endpoint */ grpc_network_status_register_endpoint(&tcp->base); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); return &tcp->base; } @@ -803,15 +781,15 @@ int grpc_tcp_fd(grpc_endpoint *ep) { return grpc_fd_wrapped_fd(tcp->em_fd); } -void grpc_tcp_destroy_and_release_fd(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - int *fd, grpc_closure *done) { +void grpc_tcp_destroy_and_release_fd(grpc_endpoint *ep, int *fd, + grpc_closure *done) { grpc_network_status_unregister_endpoint(ep); grpc_tcp *tcp = (grpc_tcp *)ep; GPR_ASSERT(ep->vtable == &vtable); tcp->release_fd = fd; tcp->release_fd_cb = done; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &tcp->last_read_buffer); - TCP_UNREF(exec_ctx, tcp, "destroy"); + grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer); + TCP_UNREF(tcp, "destroy"); } #endif diff --git a/src/core/lib/iomgr/tcp_posix.h b/src/core/lib/iomgr/tcp_posix.h index 47e78fa67e6..f79d0fb8a35 100644 --- a/src/core/lib/iomgr/tcp_posix.h +++ b/src/core/lib/iomgr/tcp_posix.h @@ -41,8 +41,7 @@ extern grpc_tracer_flag grpc_tcp_trace; /* Create a tcp endpoint given a file desciptor and a read slice size. Takes ownership of fd. */ -grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_fd *fd, - const grpc_channel_args *args, +grpc_endpoint *grpc_tcp_create(grpc_fd *fd, const grpc_channel_args *args, const char *peer_string); /* Return the tcp endpoint's fd, or -1 if this is not available. Does not @@ -54,8 +53,8 @@ int grpc_tcp_fd(grpc_endpoint *ep); /* Destroy the tcp endpoint without closing its fd. *fd will be set and done * will be called when the endpoint is destroyed. * Requires: ep must be a tcp endpoint and fd must not be NULL. */ -void grpc_tcp_destroy_and_release_fd(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - int *fd, grpc_closure *done); +void grpc_tcp_destroy_and_release_fd(grpc_endpoint *ep, int *fd, + grpc_closure *done); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/tcp_server.h b/src/core/lib/iomgr/tcp_server.h index 8f9ce3819e6..eb6f593501d 100644 --- a/src/core/lib/iomgr/tcp_server.h +++ b/src/core/lib/iomgr/tcp_server.h @@ -43,22 +43,20 @@ typedef struct grpc_tcp_server_acceptor { /* Called for newly connected TCP connections. Takes ownership of acceptor. */ -typedef void (*grpc_tcp_server_cb)(grpc_exec_ctx *exec_ctx, void *arg, - grpc_endpoint *ep, +typedef void (*grpc_tcp_server_cb)(void *arg, grpc_endpoint *ep, grpc_pollset *accepting_pollset, grpc_tcp_server_acceptor *acceptor); /* Create a server, initially not bound to any ports. The caller owns one ref. If shutdown_complete is not NULL, it will be used by grpc_tcp_server_unref() when the ref count reaches zero. */ -grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, - grpc_closure *shutdown_complete, +grpc_error *grpc_tcp_server_create(grpc_closure *shutdown_complete, const grpc_channel_args *args, grpc_tcp_server **server); /* Start listening to bound ports */ -void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *server, - grpc_pollset **pollsets, size_t pollset_count, +void grpc_tcp_server_start(grpc_tcp_server *server, grpc_pollset **pollsets, + size_t pollset_count, grpc_tcp_server_cb on_accept_cb, void *cb_arg); /* Add a port to the server, returning the newly allocated port on success, or @@ -96,11 +94,10 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s, /* If the refcount drops to zero, enqueue calls on exec_ctx to shutdown_listeners and delete s. */ -void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s); +void grpc_tcp_server_unref(grpc_tcp_server *s); /* Shutdown the fds of listeners. */ -void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx, - grpc_tcp_server *s); +void grpc_tcp_server_shutdown_listeners(grpc_tcp_server *s); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/tcp_server_posix.cc b/src/core/lib/iomgr/tcp_server_posix.cc index 06612d639cc..a9dcd68cfbd 100644 --- a/src/core/lib/iomgr/tcp_server_posix.cc +++ b/src/core/lib/iomgr/tcp_server_posix.cc @@ -68,8 +68,7 @@ static void init(void) { #endif } -grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, - grpc_closure *shutdown_complete, +grpc_error *grpc_tcp_server_create(grpc_closure *shutdown_complete, const grpc_channel_args *args, grpc_tcp_server **server) { gpr_once_init(&check_init, init); @@ -116,12 +115,12 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +static void finish_shutdown(grpc_tcp_server *s) { gpr_mu_lock(&s->mu); GPR_ASSERT(s->shutdown); gpr_mu_unlock(&s->mu); if (s->shutdown_complete != NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, s->shutdown_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE); } gpr_mu_destroy(&s->mu); @@ -131,19 +130,18 @@ static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { s->head = sp->next; gpr_free(sp); } - grpc_channel_args_destroy(exec_ctx, s->channel_args); + grpc_channel_args_destroy(s->channel_args); gpr_free(s); } -static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server, - grpc_error *error) { +static void destroyed_port(void *server, grpc_error *error) { grpc_tcp_server *s = (grpc_tcp_server *)server; gpr_mu_lock(&s->mu); s->destroyed_ports++; if (s->destroyed_ports == s->nports) { gpr_mu_unlock(&s->mu); - finish_shutdown(exec_ctx, s); + finish_shutdown(s); } else { GPR_ASSERT(s->destroyed_ports < s->nports); gpr_mu_unlock(&s->mu); @@ -153,7 +151,7 @@ static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server, /* called when all listening endpoints have been shutdown, so no further events will be received on them - at this point it's safe to destroy things */ -static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +static void deactivated_all_ports(grpc_tcp_server *s) { /* delete ALL the things */ gpr_mu_lock(&s->mu); @@ -165,17 +163,17 @@ static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { grpc_unlink_if_unix_domain_socket(&sp->addr); GRPC_CLOSURE_INIT(&sp->destroyed_closure, destroyed_port, s, grpc_schedule_on_exec_ctx); - grpc_fd_orphan(exec_ctx, sp->emfd, &sp->destroyed_closure, NULL, + grpc_fd_orphan(sp->emfd, &sp->destroyed_closure, NULL, false /* already_closed */, "tcp_listener_shutdown"); } gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); - finish_shutdown(exec_ctx, s); + finish_shutdown(s); } } -static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +static void tcp_server_destroy(grpc_tcp_server *s) { gpr_mu_lock(&s->mu); GPR_ASSERT(!s->shutdown); @@ -185,18 +183,18 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { if (s->active_ports) { grpc_tcp_listener *sp; for (sp = s->head; sp; sp = sp->next) { - grpc_fd_shutdown(exec_ctx, sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "Server destroyed")); + grpc_fd_shutdown( + sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server destroyed")); } gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); - deactivated_all_ports(exec_ctx, s); + deactivated_all_ports(s); } } /* event manager callback when reads are ready */ -static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) { +static void on_read(void *arg, grpc_error *err) { grpc_tcp_listener *sp = (grpc_tcp_listener *)arg; grpc_pollset *read_notifier_pollset; if (err != GRPC_ERROR_NONE) { @@ -222,7 +220,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) { case EINTR: continue; case EAGAIN: - grpc_fd_notify_on_read(exec_ctx, sp->emfd, &sp->read_closure); + grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); return; default: gpr_mu_lock(&sp->server->mu); @@ -248,7 +246,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) { grpc_fd *fdobj = grpc_fd_create(fd, name); - grpc_pollset_add_fd(exec_ctx, read_notifier_pollset, fdobj); + grpc_pollset_add_fd(read_notifier_pollset, fdobj); // Create acceptor. grpc_tcp_server_acceptor *acceptor = @@ -258,8 +256,8 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) { acceptor->fd_index = sp->fd_index; sp->server->on_accept_cb( - exec_ctx, sp->server->on_accept_cb_arg, - grpc_tcp_create(exec_ctx, fdobj, sp->server->channel_args, addr_str), + sp->server->on_accept_cb_arg, + grpc_tcp_create(fdobj, sp->server->channel_args, addr_str), read_notifier_pollset, acceptor); gpr_free(name); @@ -272,7 +270,7 @@ error: gpr_mu_lock(&sp->server->mu); if (0 == --sp->server->active_ports && sp->server->shutdown) { gpr_mu_unlock(&sp->server->mu); - deactivated_all_ports(exec_ctx, sp->server); + deactivated_all_ports(sp->server); } else { gpr_mu_unlock(&sp->server->mu); } @@ -482,8 +480,8 @@ int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index, return -1; } -void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s, - grpc_pollset **pollsets, size_t pollset_count, +void grpc_tcp_server_start(grpc_tcp_server *s, grpc_pollset **pollsets, + size_t pollset_count, grpc_tcp_server_cb on_accept_cb, void *on_accept_cb_arg) { size_t i; @@ -503,20 +501,20 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s, GPR_ASSERT(GRPC_LOG_IF_ERROR( "clone_port", clone_port(sp, (unsigned)(pollset_count - 1)))); for (i = 0; i < pollset_count; i++) { - grpc_pollset_add_fd(exec_ctx, pollsets[i], sp->emfd); + grpc_pollset_add_fd(pollsets[i], sp->emfd); GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, sp->emfd, &sp->read_closure); + grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); s->active_ports++; sp = sp->next; } } else { for (i = 0; i < pollset_count; i++) { - grpc_pollset_add_fd(exec_ctx, pollsets[i], sp->emfd); + grpc_pollset_add_fd(pollsets[i], sp->emfd); } GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, sp->emfd, &sp->read_closure); + grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); s->active_ports++; sp = sp->next; } @@ -537,25 +535,24 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s, gpr_mu_unlock(&s->mu); } -void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +void grpc_tcp_server_unref(grpc_tcp_server *s) { if (gpr_unref(&s->refs)) { - grpc_tcp_server_shutdown_listeners(exec_ctx, s); + grpc_tcp_server_shutdown_listeners(s); gpr_mu_lock(&s->mu); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &s->shutdown_starting); + GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); gpr_mu_unlock(&s->mu); - tcp_server_destroy(exec_ctx, s); + tcp_server_destroy(s); } } -void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx, - grpc_tcp_server *s) { +void grpc_tcp_server_shutdown_listeners(grpc_tcp_server *s) { gpr_mu_lock(&s->mu); s->shutdown_listeners = true; /* shutdown all fd's */ if (s->active_ports) { grpc_tcp_listener *sp; for (sp = s->head; sp; sp = sp->next) { - grpc_fd_shutdown(exec_ctx, sp->emfd, + grpc_fd_shutdown(sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown")); } } diff --git a/src/core/lib/iomgr/tcp_server_uv.cc b/src/core/lib/iomgr/tcp_server_uv.cc index 348838c495c..fc4b58f81c4 100644 --- a/src/core/lib/iomgr/tcp_server_uv.cc +++ b/src/core/lib/iomgr/tcp_server_uv.cc @@ -73,8 +73,7 @@ struct grpc_tcp_server { grpc_resource_quota *resource_quota; }; -grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, - grpc_closure *shutdown_complete, +grpc_error *grpc_tcp_server_create(grpc_closure *shutdown_complete, const grpc_channel_args *args, grpc_tcp_server **server) { grpc_tcp_server *s = (grpc_tcp_server *)gpr_malloc(sizeof(grpc_tcp_server)); @@ -82,11 +81,11 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, for (size_t i = 0; i < (args == NULL ? 0 : args->num_args); i++) { if (0 == strcmp(GRPC_ARG_RESOURCE_QUOTA, args->args[i].key)) { if (args->args[i].type == GRPC_ARG_POINTER) { - grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota); + grpc_resource_quota_unref_internal(s->resource_quota); s->resource_quota = grpc_resource_quota_ref_internal( (grpc_resource_quota *)args->args[i].value.pointer.p); } else { - grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota); + grpc_resource_quota_unref_internal(s->resource_quota); gpr_free(s); return GRPC_ERROR_CREATE_FROM_STATIC_STRING( GRPC_ARG_RESOURCE_QUOTA " must be a pointer to a buffer pool"); @@ -119,10 +118,10 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s, GRPC_ERROR_NONE); } -static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +static void finish_shutdown(grpc_tcp_server *s) { GPR_ASSERT(s->shutdown); if (s->shutdown_complete != NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, s->shutdown_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE); } while (s->head) { @@ -132,18 +131,18 @@ static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { gpr_free(sp->handle); gpr_free(sp); } - grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota); + grpc_resource_quota_unref_internal(s->resource_quota); gpr_free(s); } static void handle_close_callback(uv_handle_t *handle) { grpc_tcp_listener *sp = (grpc_tcp_listener *)handle->data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; sp->server->open_ports--; if (sp->server->open_ports == 0 && sp->server->shutdown) { - finish_shutdown(&exec_ctx, sp->server); + finish_shutdown(sp->server); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void close_listener(grpc_tcp_listener *sp) { @@ -153,7 +152,7 @@ static void close_listener(grpc_tcp_listener *sp) { } } -static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +static void tcp_server_destroy(grpc_tcp_server *s) { int immediately_done = 0; grpc_tcp_listener *sp; @@ -168,15 +167,15 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { } if (immediately_done) { - finish_shutdown(exec_ctx, s); + finish_shutdown(s); } } -void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +void grpc_tcp_server_unref(grpc_tcp_server *s) { GRPC_UV_ASSERT_SAME_THREAD(); if (gpr_unref(&s->refs)) { /* Complete shutdown_starting work before destroying. */ - grpc_exec_ctx local_exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_exec_ctx local_ExecCtx _local_exec_ctx; GRPC_CLOSURE_LIST_SCHED(&local_exec_ctx, &s->shutdown_starting); if (exec_ctx == NULL) { grpc_exec_ctx_flush(&local_exec_ctx); @@ -184,12 +183,12 @@ void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { grpc_exec_ctx_finish(&local_exec_ctx); } else { grpc_exec_ctx_finish(&local_exec_ctx); - tcp_server_destroy(exec_ctx, s); + tcp_server_destroy(s); } } } -static void finish_accept(grpc_exec_ctx *exec_ctx, grpc_tcp_listener *sp) { +static void finish_accept(grpc_tcp_listener *sp) { grpc_tcp_server_acceptor *acceptor = (grpc_tcp_server_acceptor *)gpr_malloc(sizeof(*acceptor)); uv_tcp_t *client = NULL; @@ -225,14 +224,13 @@ static void finish_accept(grpc_exec_ctx *exec_ctx, grpc_tcp_listener *sp) { acceptor->from_server = sp->server; acceptor->port_index = sp->port_index; acceptor->fd_index = 0; - sp->server->on_accept_cb(exec_ctx, sp->server->on_accept_cb_arg, ep, NULL, - acceptor); + sp->server->on_accept_cb(sp->server->on_accept_cb_arg, ep, NULL, acceptor); gpr_free(peer_name_string); } static void on_connect(uv_stream_t *server, int status) { grpc_tcp_listener *sp = (grpc_tcp_listener *)server->data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; if (status < 0) { switch (status) { @@ -253,11 +251,11 @@ static void on_connect(uv_stream_t *server, int status) { // Create acceptor. if (sp->server->on_accept_cb) { - finish_accept(&exec_ctx, sp); + finish_accept(sp); } else { sp->has_pending_connection = true; } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static grpc_error *add_socket_to_server(grpc_tcp_server *s, uv_tcp_t *handle, @@ -428,8 +426,8 @@ grpc_error *grpc_tcp_server_add_port(grpc_tcp_server *s, return error; } -void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *server, - grpc_pollset **pollsets, size_t pollset_count, +void grpc_tcp_server_start(grpc_tcp_server *server, grpc_pollset **pollsets, + size_t pollset_count, grpc_tcp_server_cb on_accept_cb, void *cb_arg) { grpc_tcp_listener *sp; (void)pollsets; @@ -444,13 +442,12 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *server, server->on_accept_cb_arg = cb_arg; for (sp = server->head; sp; sp = sp->next) { if (sp->has_pending_connection) { - finish_accept(exec_ctx, sp); + finish_accept(sp); sp->has_pending_connection = false; } } } -void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx, - grpc_tcp_server *s) {} +void grpc_tcp_server_shutdown_listeners(grpc_tcp_server *s) {} #endif /* GRPC_UV */ diff --git a/src/core/lib/iomgr/tcp_server_windows.cc b/src/core/lib/iomgr/tcp_server_windows.cc index f198aaaa5ba..4dfb17229a7 100644 --- a/src/core/lib/iomgr/tcp_server_windows.cc +++ b/src/core/lib/iomgr/tcp_server_windows.cc @@ -94,8 +94,7 @@ struct grpc_tcp_server { /* Public function. Allocates the proper data structures to hold a grpc_tcp_server. */ -grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, - grpc_closure *shutdown_complete, +grpc_error *grpc_tcp_server_create(grpc_closure *shutdown_complete, const grpc_channel_args *args, grpc_tcp_server **server) { grpc_tcp_server *s = (grpc_tcp_server *)gpr_malloc(sizeof(grpc_tcp_server)); @@ -114,8 +113,7 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void destroy_server(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void destroy_server(void *arg, grpc_error *error) { grpc_tcp_server *s = (grpc_tcp_server *)arg; /* Now that the accepts have been aborted, we can destroy the sockets. @@ -128,19 +126,18 @@ static void destroy_server(grpc_exec_ctx *exec_ctx, void *arg, grpc_winsocket_destroy(sp->socket); gpr_free(sp); } - grpc_channel_args_destroy(exec_ctx, s->channel_args); + grpc_channel_args_destroy(s->channel_args); gpr_free(s); } -static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx, - grpc_tcp_server *s) { +static void finish_shutdown_locked(grpc_tcp_server *s) { if (s->shutdown_complete != NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, s->shutdown_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE); } - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(destroy_server, s, - grpc_schedule_on_exec_ctx), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx), + GRPC_ERROR_NONE); } grpc_tcp_server *grpc_tcp_server_ref(grpc_tcp_server *s) { @@ -156,14 +153,14 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s, gpr_mu_unlock(&s->mu); } -static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +static void tcp_server_destroy(grpc_tcp_server *s) { grpc_tcp_listener *sp; gpr_mu_lock(&s->mu); /* First, shutdown all fd's. This will queue abortion calls for all of the pending accepts due to the normal operation mechanism. */ if (s->active_ports == 0) { - finish_shutdown_locked(exec_ctx, s); + finish_shutdown_locked(s); } else { for (sp = s->head; sp; sp = sp->next) { sp->shutting_down = 1; @@ -173,13 +170,13 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { gpr_mu_unlock(&s->mu); } -void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) { +void grpc_tcp_server_unref(grpc_tcp_server *s) { if (gpr_unref(&s->refs)) { - grpc_tcp_server_shutdown_listeners(exec_ctx, s); + grpc_tcp_server_shutdown_listeners(s); gpr_mu_lock(&s->mu); - GRPC_CLOSURE_LIST_SCHED(exec_ctx, &s->shutdown_starting); + GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); gpr_mu_unlock(&s->mu); - tcp_server_destroy(exec_ctx, s); + tcp_server_destroy(s); } } @@ -233,19 +230,17 @@ failure: return error; } -static void decrement_active_ports_and_notify_locked(grpc_exec_ctx *exec_ctx, - grpc_tcp_listener *sp) { +static void decrement_active_ports_and_notify_locked(grpc_tcp_listener *sp) { sp->shutting_down = 0; GPR_ASSERT(sp->server->active_ports > 0); if (0 == --sp->server->active_ports) { - finish_shutdown_locked(exec_ctx, sp->server); + finish_shutdown_locked(sp->server); } } /* In order to do an async accept, we need to create a socket first which will be the one assigned to the new incoming connection. */ -static grpc_error *start_accept_locked(grpc_exec_ctx *exec_ctx, - grpc_tcp_listener *port) { +static grpc_error *start_accept_locked(grpc_tcp_listener *port) { SOCKET sock = INVALID_SOCKET; BOOL success; DWORD addrlen = sizeof(struct sockaddr_in6) + 16; @@ -284,7 +279,7 @@ static grpc_error *start_accept_locked(grpc_exec_ctx *exec_ctx, /* We're ready to do the accept. Calling grpc_socket_notify_on_read may immediately process an accept that happened in the meantime. */ port->new_socket = sock; - grpc_socket_notify_on_read(exec_ctx, port->socket, &port->on_accept); + grpc_socket_notify_on_read(port->socket, &port->on_accept); port->outstanding_calls++; return error; @@ -295,7 +290,7 @@ failure: } /* Event manager callback when reads are ready. */ -static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_accept(void *arg, grpc_error *error) { grpc_tcp_listener *sp = (grpc_tcp_listener *)arg; SOCKET sock = sp->new_socket; grpc_winsocket_callback_info *info = &sp->socket->read_info; @@ -357,7 +352,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { gpr_free(utf8_message); } gpr_asprintf(&fd_name, "tcp_server:%s", peer_name_string); - ep = grpc_tcp_create(exec_ctx, grpc_winsocket_create(sock, fd_name), + ep = grpc_tcp_create(grpc_winsocket_create(sock, fd_name), sp->server->channel_args, peer_name_string); gpr_free(fd_name); gpr_free(peer_name_string); @@ -375,17 +370,15 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { acceptor->from_server = sp->server; acceptor->port_index = sp->port_index; acceptor->fd_index = 0; - sp->server->on_accept_cb(exec_ctx, sp->server->on_accept_cb_arg, ep, NULL, - acceptor); + sp->server->on_accept_cb(sp->server->on_accept_cb_arg, ep, NULL, acceptor); } /* As we were notified from the IOCP of one and exactly one accept, the former socked we created has now either been destroy or assigned to the new connection. We need to create a new one for the next connection. */ - GPR_ASSERT( - GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(exec_ctx, sp))); + GPR_ASSERT(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp))); if (0 == --sp->outstanding_calls) { - decrement_active_ports_and_notify_locked(exec_ctx, sp); + decrement_active_ports_and_notify_locked(sp); } gpr_mu_unlock(&sp->server->mu); } @@ -522,8 +515,8 @@ done: return error; } -void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s, - grpc_pollset **pollset, size_t pollset_count, +void grpc_tcp_server_start(grpc_tcp_server *s, grpc_pollset **pollset, + size_t pollset_count, grpc_tcp_server_cb on_accept_cb, void *on_accept_cb_arg) { grpc_tcp_listener *sp; @@ -534,14 +527,12 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s, s->on_accept_cb = on_accept_cb; s->on_accept_cb_arg = on_accept_cb_arg; for (sp = s->head; sp; sp = sp->next) { - GPR_ASSERT( - GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(exec_ctx, sp))); + GPR_ASSERT(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp))); s->active_ports++; } gpr_mu_unlock(&s->mu); } -void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx, - grpc_tcp_server *s) {} +void grpc_tcp_server_shutdown_listeners(grpc_tcp_server *s) {} #endif /* GRPC_WINSOCK_SOCKET */ diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index e311964dbcf..3628e1cc2c7 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -65,20 +65,19 @@ typedef struct { grpc_pollset *pollset; } grpc_tcp; -static void tcp_free(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { - grpc_slice_unref_internal(exec_ctx, tcp->read_slice); - grpc_resource_user_unref(exec_ctx, tcp->resource_user); +static void tcp_free(grpc_tcp *tcp) { + grpc_slice_unref_internal(tcp->read_slice); + grpc_resource_user_unref(tcp->resource_user); gpr_free(tcp->handle); gpr_free(tcp->peer_string); gpr_free(tcp); } #ifndef NDEBUG -#define TCP_UNREF(exec_ctx, tcp, reason) \ - tcp_unref((exec_ctx), (tcp), (reason), __FILE__, __LINE__) +#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason), __FILE__, __LINE__) #define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__) -static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, - const char *reason, const char *file, int line) { +static void tcp_unref(grpc_tcp *tcp, const char *reason, const char *file, + int line) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count); gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, @@ -86,7 +85,7 @@ static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, val - 1); } if (gpr_unref(&tcp->refcount)) { - tcp_free(exec_ctx, tcp); + tcp_free(tcp); } } @@ -101,11 +100,11 @@ static void tcp_ref(grpc_tcp *tcp, const char *reason, const char *file, gpr_ref(&tcp->refcount); } #else -#define TCP_UNREF(exec_ctx, tcp, reason) tcp_unref((exec_ctx), (tcp)) +#define TCP_UNREF(tcp, reason) tcp_unref((tcp)) #define TCP_REF(tcp, reason) tcp_ref((tcp)) -static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void tcp_unref(grpc_tcp *tcp) { if (gpr_unref(&tcp->refcount)) { - tcp_free(exec_ctx, tcp); + tcp_free(tcp); } } @@ -113,40 +112,39 @@ static void tcp_ref(grpc_tcp *tcp) { gpr_ref(&tcp->refcount); } #endif static void uv_close_callback(uv_handle_t *handle) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_tcp *tcp = (grpc_tcp *)handle->data; - TCP_UNREF(&exec_ctx, tcp, "destroy"); - grpc_exec_ctx_finish(&exec_ctx); + TCP_UNREF(tcp, "destroy"); + grpc_exec_ctx_finish(); } -static grpc_slice alloc_read_slice(grpc_exec_ctx *exec_ctx, - grpc_resource_user *resource_user) { - return grpc_resource_user_slice_malloc(exec_ctx, resource_user, +static grpc_slice alloc_read_slice(grpc_resource_user *resource_user) { + return grpc_resource_user_slice_malloc(resource_user, GRPC_TCP_DEFAULT_READ_SLICE_SIZE); } static void alloc_uv_buf(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_tcp *tcp = (grpc_tcp *)handle->data; (void)suggested_size; buf->base = (char *)GRPC_SLICE_START_PTR(tcp->read_slice); buf->len = GRPC_SLICE_LENGTH(tcp->read_slice); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void read_callback(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) { grpc_slice sub; grpc_error *error; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_tcp *tcp = (grpc_tcp *)stream->data; grpc_closure *cb = tcp->read_cb; if (nread == 0) { // Nothing happened. Wait for the next callback return; } - TCP_UNREF(&exec_ctx, tcp, "read"); + TCP_UNREF(tcp, "read"); tcp->read_cb = NULL; // TODO(murgatroid99): figure out what the return value here means uv_read_stop(stream); @@ -156,7 +154,7 @@ static void read_callback(uv_stream_t *stream, ssize_t nread, // Successful read sub = grpc_slice_sub_no_ref(tcp->read_slice, 0, (size_t)nread); grpc_slice_buffer_add(tcp->read_slices, sub); - tcp->read_slice = alloc_read_slice(&exec_ctx, tcp->resource_user); + tcp->read_slice = alloc_read_slice(tcp->resource_user); error = GRPC_ERROR_NONE; if (GRPC_TRACER_ON(grpc_tcp_trace)) { size_t i; @@ -175,12 +173,12 @@ static void read_callback(uv_stream_t *stream, ssize_t nread, // nread < 0: Error error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed"); } - GRPC_CLOSURE_SCHED(&exec_ctx, cb, error); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CLOSURE_SCHED(cb, error); + grpc_exec_ctx_finish(); } -static void uv_endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *read_slices, grpc_closure *cb) { +static void uv_endpoint_read(grpc_endpoint *ep, grpc_slice_buffer *read_slices, + grpc_closure *cb) { grpc_tcp *tcp = (grpc_tcp *)ep; int status; grpc_error *error = GRPC_ERROR_NONE; @@ -188,7 +186,7 @@ static void uv_endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, GPR_ASSERT(tcp->read_cb == NULL); tcp->read_cb = cb; tcp->read_slices = read_slices; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, read_slices); + grpc_slice_buffer_reset_and_unref_internal(read_slices); TCP_REF(tcp, "read"); // TODO(murgatroid99): figure out what the return value here means status = @@ -198,7 +196,7 @@ static void uv_endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, error = grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, grpc_slice_from_static_string(uv_strerror(status))); - GRPC_CLOSURE_SCHED(exec_ctx, cb, error); + GRPC_CLOSURE_SCHED(cb, error); } if (GRPC_TRACER_ON(grpc_tcp_trace)) { const char *str = grpc_error_string(error); @@ -209,10 +207,10 @@ static void uv_endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, static void write_callback(uv_write_t *req, int status) { grpc_tcp *tcp = (grpc_tcp *)req->data; grpc_error *error; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_closure *cb = tcp->write_cb; tcp->write_cb = NULL; - TCP_UNREF(&exec_ctx, tcp, "write"); + TCP_UNREF(tcp, "write"); if (status == 0) { error = GRPC_ERROR_NONE; } else { @@ -223,13 +221,13 @@ static void write_callback(uv_write_t *req, int status) { gpr_log(GPR_DEBUG, "write complete on %p: error=%s", tcp, str); } gpr_free(tcp->write_buffers); - grpc_resource_user_free(&exec_ctx, tcp->resource_user, + grpc_resource_user_free(tcp->resource_user, sizeof(uv_buf_t) * tcp->write_slices->count); - GRPC_CLOSURE_SCHED(&exec_ctx, cb, error); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CLOSURE_SCHED(cb, error); + grpc_exec_ctx_finish(); } -static void uv_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, +static void uv_endpoint_write(grpc_endpoint *ep, grpc_slice_buffer *write_slices, grpc_closure *cb) { grpc_tcp *tcp = (grpc_tcp *)ep; @@ -252,8 +250,8 @@ static void uv_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, } if (tcp->shutting_down) { - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "TCP socket is shutting down")); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "TCP socket is shutting down")); return; } @@ -263,15 +261,15 @@ static void uv_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, if (tcp->write_slices->count == 0) { // No slices means we don't have to do anything, // and libuv doesn't like empty writes - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); return; } tcp->write_cb = cb; buffer_count = (unsigned int)tcp->write_slices->count; buffers = (uv_buf_t *)gpr_malloc(sizeof(uv_buf_t) * buffer_count); - grpc_resource_user_alloc(exec_ctx, tcp->resource_user, - sizeof(uv_buf_t) * buffer_count, NULL); + grpc_resource_user_alloc(tcp->resource_user, sizeof(uv_buf_t) * buffer_count, + NULL); for (i = 0; i < buffer_count; i++) { slice = &tcp->write_slices->slices[i]; buffers[i].base = (char *)GRPC_SLICE_START_PTR(*slice); @@ -286,8 +284,7 @@ static void uv_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, write_callback); } -static void uv_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset) { +static void uv_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) { // No-op. We're ignoring pollsets currently (void)exec_ctx; (void)ep; @@ -296,7 +293,7 @@ static void uv_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, tcp->pollset = pollset; } -static void uv_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, +static void uv_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset) { // No-op. We're ignoring pollsets currently (void)exec_ctx; @@ -306,8 +303,7 @@ static void uv_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, static void shutdown_callback(uv_shutdown_t *req, int status) {} -static void uv_endpoint_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { +static void uv_endpoint_shutdown(grpc_endpoint *ep, grpc_error *why) { grpc_tcp *tcp = (grpc_tcp *)ep; if (!tcp->shutting_down) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { @@ -317,12 +313,12 @@ static void uv_endpoint_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, tcp->shutting_down = true; uv_shutdown_t *req = &tcp->shutdown_req; uv_shutdown(req, (uv_stream_t *)tcp->handle, shutdown_callback); - grpc_resource_user_shutdown(exec_ctx, tcp->resource_user); + grpc_resource_user_shutdown(tcp->resource_user); } GRPC_ERROR_UNREF(why); } -static void uv_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { +static void uv_destroy(grpc_endpoint *ep) { grpc_network_status_unregister_endpoint(ep); grpc_tcp *tcp = (grpc_tcp *)ep; uv_close((uv_handle_t *)tcp->handle, uv_close_callback); @@ -349,7 +345,7 @@ grpc_endpoint *grpc_tcp_create(uv_tcp_t *handle, grpc_resource_quota *resource_quota, char *peer_string) { grpc_tcp *tcp = (grpc_tcp *)gpr_malloc(sizeof(grpc_tcp)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "Creating TCP endpoint %p", tcp); @@ -366,7 +362,7 @@ grpc_endpoint *grpc_tcp_create(uv_tcp_t *handle, tcp->peer_string = gpr_strdup(peer_string); tcp->shutting_down = false; tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string); - tcp->read_slice = alloc_read_slice(&exec_ctx, tcp->resource_user); + tcp->read_slice = alloc_read_slice(tcp->resource_user); /* Tell network status tracking code about the new endpoint */ grpc_network_status_register_endpoint(&tcp->base); @@ -374,7 +370,7 @@ grpc_endpoint *grpc_tcp_create(uv_tcp_t *handle, uv_unref((uv_handle_t *)handle); #endif - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return &tcp->base; } diff --git a/src/core/lib/iomgr/tcp_windows.cc b/src/core/lib/iomgr/tcp_windows.cc index dc84e564a9b..baa0a1895e3 100644 --- a/src/core/lib/iomgr/tcp_windows.cc +++ b/src/core/lib/iomgr/tcp_windows.cc @@ -109,21 +109,20 @@ typedef struct grpc_tcp { char *peer_string; } grpc_tcp; -static void tcp_free(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void tcp_free(grpc_tcp *tcp) { grpc_winsocket_destroy(tcp->socket); gpr_mu_destroy(&tcp->mu); gpr_free(tcp->peer_string); - grpc_resource_user_unref(exec_ctx, tcp->resource_user); + grpc_resource_user_unref(tcp->resource_user); if (tcp->shutting_down) GRPC_ERROR_UNREF(tcp->shutdown_error); gpr_free(tcp); } #ifndef NDEBUG -#define TCP_UNREF(exec_ctx, tcp, reason) \ - tcp_unref((exec_ctx), (tcp), (reason), __FILE__, __LINE__) +#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason), __FILE__, __LINE__) #define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__) -static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, - const char *reason, const char *file, int line) { +static void tcp_unref(grpc_tcp *tcp, const char *reason, const char *file, + int line) { if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count); gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, @@ -131,7 +130,7 @@ static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, val - 1); } if (gpr_unref(&tcp->refcount)) { - tcp_free(exec_ctx, tcp); + tcp_free(tcp); } } @@ -146,11 +145,11 @@ static void tcp_ref(grpc_tcp *tcp, const char *reason, const char *file, gpr_ref(&tcp->refcount); } #else -#define TCP_UNREF(exec_ctx, tcp, reason) tcp_unref((exec_ctx), (tcp)) +#define TCP_UNREF(tcp, reason) tcp_unref((tcp)) #define TCP_REF(tcp, reason) tcp_ref((tcp)) -static void tcp_unref(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) { +static void tcp_unref(grpc_tcp *tcp) { if (gpr_unref(&tcp->refcount)) { - tcp_free(exec_ctx, tcp); + tcp_free(tcp); } } @@ -158,7 +157,7 @@ static void tcp_ref(grpc_tcp *tcp) { gpr_ref(&tcp->refcount); } #endif /* Asynchronous callback from the IOCP, or the background thread. */ -static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) { +static void on_read(void *tcpp, grpc_error *error) { grpc_tcp *tcp = (grpc_tcp *)tcpp; grpc_closure *cb = tcp->read_cb; grpc_winsocket *socket = tcp->socket; @@ -172,13 +171,13 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) { char *utf8_message = gpr_format_message(info->wsa_error); error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(utf8_message); gpr_free(utf8_message); - grpc_slice_unref_internal(exec_ctx, tcp->read_slice); + grpc_slice_unref_internal(tcp->read_slice); } else { if (info->bytes_transfered != 0 && !tcp->shutting_down) { sub = grpc_slice_sub_no_ref(tcp->read_slice, 0, info->bytes_transfered); grpc_slice_buffer_add(tcp->read_slices, sub); } else { - grpc_slice_unref_internal(exec_ctx, tcp->read_slice); + grpc_slice_unref_internal(tcp->read_slice); error = tcp->shutting_down ? GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "TCP stream shutting down", &tcp->shutdown_error, 1) @@ -188,12 +187,12 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) { } tcp->read_cb = NULL; - TCP_UNREF(exec_ctx, tcp, "read"); - GRPC_CLOSURE_SCHED(exec_ctx, cb, error); + TCP_UNREF(tcp, "read"); + GRPC_CLOSURE_SCHED(cb, error); } -static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *read_slices, grpc_closure *cb) { +static void win_read(grpc_endpoint *ep, grpc_slice_buffer *read_slices, + grpc_closure *cb) { grpc_tcp *tcp = (grpc_tcp *)ep; grpc_winsocket *handle = tcp->socket; grpc_winsocket_callback_info *info = &handle->read_info; @@ -204,15 +203,14 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, if (tcp->shutting_down) { GRPC_CLOSURE_SCHED( - exec_ctx, cb, - GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "TCP socket is shutting down", &tcp->shutdown_error, 1)); + cb, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "TCP socket is shutting down", &tcp->shutdown_error, 1)); return; } tcp->read_cb = cb; tcp->read_slices = read_slices; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, read_slices); + grpc_slice_buffer_reset_and_unref_internal(read_slices); tcp->read_slice = GRPC_SLICE_MALLOC(8192); @@ -230,7 +228,7 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, /* Did we get data immediately ? Yay. */ if (info->wsa_error != WSAEWOULDBLOCK) { info->bytes_transfered = bytes_read; - GRPC_CLOSURE_SCHED(exec_ctx, &tcp->on_read, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&tcp->on_read, GRPC_ERROR_NONE); return; } @@ -243,17 +241,17 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, int wsa_error = WSAGetLastError(); if (wsa_error != WSA_IO_PENDING) { info->wsa_error = wsa_error; - GRPC_CLOSURE_SCHED(exec_ctx, &tcp->on_read, + GRPC_CLOSURE_SCHED(&tcp->on_read, GRPC_WSA_ERROR(info->wsa_error, "WSARecv")); return; } } - grpc_socket_notify_on_read(exec_ctx, tcp->socket, &tcp->on_read); + grpc_socket_notify_on_read(tcp->socket, &tcp->on_read); } /* Asynchronous callback from the IOCP, or the background thread. */ -static void on_write(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) { +static void on_write(void *tcpp, grpc_error *error) { grpc_tcp *tcp = (grpc_tcp *)tcpp; grpc_winsocket *handle = tcp->socket; grpc_winsocket_callback_info *info = &handle->write_info; @@ -274,13 +272,13 @@ static void on_write(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) { } } - TCP_UNREF(exec_ctx, tcp, "write"); - GRPC_CLOSURE_SCHED(exec_ctx, cb, error); + TCP_UNREF(tcp, "write"); + GRPC_CLOSURE_SCHED(cb, error); } /* Initiates a write. */ -static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void win_write(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { grpc_tcp *tcp = (grpc_tcp *)ep; grpc_winsocket *socket = tcp->socket; grpc_winsocket_callback_info *info = &socket->write_info; @@ -294,9 +292,8 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, if (tcp->shutting_down) { GRPC_CLOSURE_SCHED( - exec_ctx, cb, - GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "TCP socket is shutting down", &tcp->shutdown_error, 1)); + cb, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "TCP socket is shutting down", &tcp->shutdown_error, 1)); return; } @@ -327,7 +324,7 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, grpc_error *error = status == 0 ? GRPC_ERROR_NONE : GRPC_WSA_ERROR(info->wsa_error, "WSASend"); - GRPC_CLOSURE_SCHED(exec_ctx, cb, error); + GRPC_CLOSURE_SCHED(cb, error); if (allocated) gpr_free(allocated); return; } @@ -344,27 +341,25 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, if (status != 0) { int wsa_error = WSAGetLastError(); if (wsa_error != WSA_IO_PENDING) { - TCP_UNREF(exec_ctx, tcp, "write"); - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_WSA_ERROR(wsa_error, "WSASend")); + TCP_UNREF(tcp, "write"); + GRPC_CLOSURE_SCHED(cb, GRPC_WSA_ERROR(wsa_error, "WSASend")); return; } } /* As all is now setup, we can now ask for the IOCP notification. It may trigger the callback immediately however, but no matter. */ - grpc_socket_notify_on_write(exec_ctx, socket, &tcp->on_write); + grpc_socket_notify_on_write(socket, &tcp->on_write); } -static void win_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *ps) { +static void win_add_to_pollset(grpc_endpoint *ep, grpc_pollset *ps) { grpc_tcp *tcp; (void)ps; tcp = (grpc_tcp *)ep; grpc_iocp_add_socket(tcp->socket); } -static void win_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset_set *pss) { +static void win_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pss) { grpc_tcp *tcp; (void)pss; tcp = (grpc_tcp *)ep; @@ -377,8 +372,7 @@ static void win_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, we're not going to protect against these. However the IO Completion Port callback will happen from another thread, so we need to protect against concurrent access of the data structure in that regard. */ -static void win_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { +static void win_shutdown(grpc_endpoint *ep, grpc_error *why) { grpc_tcp *tcp = (grpc_tcp *)ep; gpr_mu_lock(&tcp->mu); /* At that point, what may happen is that we're already inside the IOCP @@ -391,13 +385,13 @@ static void win_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, } grpc_winsocket_shutdown(tcp->socket); gpr_mu_unlock(&tcp->mu); - grpc_resource_user_shutdown(exec_ctx, tcp->resource_user); + grpc_resource_user_shutdown(tcp->resource_user); } -static void win_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { +static void win_destroy(grpc_endpoint *ep) { grpc_network_status_unregister_endpoint(ep); grpc_tcp *tcp = (grpc_tcp *)ep; - TCP_UNREF(exec_ctx, tcp, "destroy"); + TCP_UNREF(tcp, "destroy"); } static char *win_get_peer(grpc_endpoint *ep) { @@ -417,14 +411,14 @@ static grpc_endpoint_vtable vtable = { win_shutdown, win_destroy, win_get_resource_user, win_get_peer, win_get_fd}; -grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_winsocket *socket, +grpc_endpoint *grpc_tcp_create(grpc_winsocket *socket, grpc_channel_args *channel_args, const char *peer_string) { grpc_resource_quota *resource_quota = grpc_resource_quota_create(NULL); if (channel_args != NULL) { for (size_t i = 0; i < channel_args->num_args; i++) { if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_RESOURCE_QUOTA)) { - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); resource_quota = grpc_resource_quota_ref_internal( (grpc_resource_quota *)channel_args->args[i].value.pointer.p); } diff --git a/src/core/lib/iomgr/tcp_windows.h b/src/core/lib/iomgr/tcp_windows.h index f3697f707c7..1e647196e46 100644 --- a/src/core/lib/iomgr/tcp_windows.h +++ b/src/core/lib/iomgr/tcp_windows.h @@ -39,7 +39,7 @@ extern "C" { /* Create a tcp endpoint given a winsock handle. * Takes ownership of the handle. */ -grpc_endpoint *grpc_tcp_create(grpc_exec_ctx *exec_ctx, grpc_winsocket *socket, +grpc_endpoint *grpc_tcp_create(grpc_winsocket *socket, grpc_channel_args *channel_args, const char *peer_string); diff --git a/src/core/lib/iomgr/timer.h b/src/core/lib/iomgr/timer.h index 419e834cf18..6a9c06f2ee4 100644 --- a/src/core/lib/iomgr/timer.h +++ b/src/core/lib/iomgr/timer.h @@ -44,8 +44,8 @@ typedef struct grpc_timer grpc_timer; application code should check the error to determine how it was invoked. The application callback is also responsible for maintaining information about when to free up any user-level state. */ -void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, - grpc_millis deadline, grpc_closure *closure); +void grpc_timer_init(grpc_timer *timer, grpc_millis deadline, + grpc_closure *closure); /* Initialize *timer without setting it. This can later be passed through the regular init or cancel */ @@ -77,7 +77,7 @@ void grpc_timer_init_unset(grpc_timer *timer); matches this aim. Requires: cancel() must happen after init() on a given timer */ -void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer); +void grpc_timer_cancel(grpc_timer *timer); /* iomgr internal api for dealing with timers */ @@ -94,10 +94,9 @@ typedef enum { *next is never guaranteed to be updated on any given execution; however, with high probability at least one thread in the system will see an update at any time slice. */ -grpc_timer_check_result grpc_timer_check(grpc_exec_ctx *exec_ctx, - grpc_millis *next); -void grpc_timer_list_init(grpc_exec_ctx *exec_ctx); -void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx); +grpc_timer_check_result grpc_timer_check(grpc_millis *next); +void grpc_timer_list_init(); +void grpc_timer_list_shutdown(); /* Consume a kick issued by grpc_kick_poller */ void grpc_timer_consume_kick(void); diff --git a/src/core/lib/iomgr/timer_generic.cc b/src/core/lib/iomgr/timer_generic.cc index b8e895de6f0..c8cbd42a0c8 100644 --- a/src/core/lib/iomgr/timer_generic.cc +++ b/src/core/lib/iomgr/timer_generic.cc @@ -227,8 +227,7 @@ static gpr_atm saturating_add(gpr_atm a, gpr_atm b) { return a + b; } -static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx, - gpr_atm now, +static grpc_timer_check_result run_some_expired_timers(gpr_atm now, gpr_atm *next, grpc_error *error); @@ -238,13 +237,13 @@ static gpr_atm compute_min_deadline(timer_shard *shard) { : grpc_timer_heap_top(&shard->heap)->deadline; } -void grpc_timer_list_init(grpc_exec_ctx *exec_ctx) { +void grpc_timer_list_init() { uint32_t i; g_shared_mutables.initialized = true; g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER; gpr_mu_init(&g_shared_mutables.mu); - g_shared_mutables.min_timer = grpc_exec_ctx_now(exec_ctx); + g_shared_mutables.min_timer = grpc_exec_ctx_now(); gpr_tls_init(&g_last_seen_min_timer); gpr_tls_set(&g_last_seen_min_timer, 0); grpc_register_tracer(&grpc_timer_trace); @@ -266,10 +265,10 @@ void grpc_timer_list_init(grpc_exec_ctx *exec_ctx) { INIT_TIMER_HASH_TABLE(); } -void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) { +void grpc_timer_list_shutdown() { int i; run_some_expired_timers( - exec_ctx, GPR_ATM_MAX, NULL, + GPR_ATM_MAX, NULL, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Timer list shutdown")); for (i = 0; i < NUM_SHARDS; i++) { timer_shard *shard = &g_shards[i]; @@ -320,8 +319,8 @@ static void note_deadline_change(timer_shard *shard) { void grpc_timer_init_unset(grpc_timer *timer) { timer->pending = false; } -void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, - grpc_millis deadline, grpc_closure *closure) { +void grpc_timer_init(grpc_timer *timer, grpc_millis deadline, + grpc_closure *closure) { int is_first_timer = 0; timer_shard *shard = &g_shards[GPR_HASH_POINTER(timer, NUM_SHARDS)]; timer->closure = closure; @@ -334,12 +333,12 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, if (GRPC_TRACER_ON(grpc_timer_trace)) { gpr_log(GPR_DEBUG, "TIMER %p: SET %" PRIdPTR " now %" PRIdPTR " call %p[%p]", timer, - deadline, grpc_exec_ctx_now(exec_ctx), closure, closure->cb); + deadline, grpc_exec_ctx_now(), closure, closure->cb); } if (!g_shared_mutables.initialized) { timer->pending = false; - GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Attempt to create timer before initialization")); return; @@ -347,10 +346,10 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, gpr_mu_lock(&shard->mu); timer->pending = true; - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); if (deadline <= now) { timer->pending = false; - GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); gpr_mu_unlock(&shard->mu); /* early out */ return; @@ -410,7 +409,7 @@ void grpc_timer_consume_kick(void) { gpr_tls_set(&g_last_seen_min_timer, 0); } -void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) { +void grpc_timer_cancel(grpc_timer *timer) { if (!g_shared_mutables.initialized) { /* must have already been cancelled, also the shard mutex is invalid */ return; @@ -426,7 +425,7 @@ void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) { if (timer->pending) { REMOVE_FROM_HASH_TABLE(timer); - GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_CANCELLED); timer->pending = false; if (timer->heap_index == INVALID_HEAP_INDEX) { list_remove(timer); @@ -512,15 +511,14 @@ static grpc_timer *pop_one(timer_shard *shard, gpr_atm now) { } /* REQUIRES: shard->mu unlocked */ -static size_t pop_timers(grpc_exec_ctx *exec_ctx, timer_shard *shard, - gpr_atm now, gpr_atm *new_min_deadline, - grpc_error *error) { +static size_t pop_timers(timer_shard *shard, gpr_atm now, + gpr_atm *new_min_deadline, grpc_error *error) { size_t n = 0; grpc_timer *timer; gpr_mu_lock(&shard->mu); while ((timer = pop_one(shard, now))) { REMOVE_FROM_HASH_TABLE(timer); - GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_REF(error)); n++; } *new_min_deadline = compute_min_deadline(shard); @@ -532,8 +530,7 @@ static size_t pop_timers(grpc_exec_ctx *exec_ctx, timer_shard *shard, return n; } -static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx, - gpr_atm now, +static grpc_timer_check_result run_some_expired_timers(gpr_atm now, gpr_atm *next, grpc_error *error) { grpc_timer_check_result result = GRPC_TIMERS_NOT_CHECKED; @@ -562,8 +559,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx, /* For efficiency, we pop as many available timers as we can from the shard. This may violate perfect timer deadline ordering, but that shouldn't be a big deal because we don't make ordering guarantees. */ - if (pop_timers(exec_ctx, g_shard_queue[0], now, &new_min_deadline, - error) > 0) { + if (pop_timers(g_shard_queue[0], now, &new_min_deadline, error) > 0) { result = GRPC_TIMERS_FIRED; } @@ -600,10 +596,9 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx, return result; } -grpc_timer_check_result grpc_timer_check(grpc_exec_ctx *exec_ctx, - grpc_millis *next) { +grpc_timer_check_result grpc_timer_check(grpc_millis *next) { // prelude - grpc_millis now = grpc_exec_ctx_now(exec_ctx); + grpc_millis now = grpc_exec_ctx_now(); /* fetch from a thread-local first: this avoids contention on a globally mutable cacheline in the common case */ @@ -641,7 +636,7 @@ grpc_timer_check_result grpc_timer_check(grpc_exec_ctx *exec_ctx, } // actual code grpc_timer_check_result r = - run_some_expired_timers(exec_ctx, now, next, shutdown_error); + run_some_expired_timers(now, next, shutdown_error); // tracing if (GRPC_TRACER_ON(grpc_timer_check_trace)) { char *next_str; diff --git a/src/core/lib/iomgr/timer_manager.cc b/src/core/lib/iomgr/timer_manager.cc index 1248f82189a..9c8d35add91 100644 --- a/src/core/lib/iomgr/timer_manager.cc +++ b/src/core/lib/iomgr/timer_manager.cc @@ -98,13 +98,13 @@ static void start_timer_thread_and_unlock(void) { } void grpc_timer_manager_tick() { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_millis next = GRPC_MILLIS_INF_FUTURE; - grpc_timer_check(&exec_ctx, &next); - grpc_exec_ctx_finish(&exec_ctx); + grpc_timer_check(&next); + grpc_exec_ctx_finish(); } -static void run_some_timers(grpc_exec_ctx *exec_ctx) { +static void run_some_timers() { // if there's something to execute... gpr_mu_lock(&g_mu); // remove a waiter from the pool, and start another thread if necessary @@ -126,7 +126,7 @@ static void run_some_timers(grpc_exec_ctx *exec_ctx) { if (GRPC_TRACER_ON(grpc_timer_check_trace)) { gpr_log(GPR_DEBUG, "flush exec_ctx"); } - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&g_mu); // garbage collect any threads hanging out that are dead gc_completed_threads(); @@ -138,7 +138,7 @@ static void run_some_timers(grpc_exec_ctx *exec_ctx) { // wait until 'next' (or forever if there is already a timed waiter in the pool) // returns true if the thread should continue executing (false if it should // shutdown) -static bool wait_until(grpc_exec_ctx *exec_ctx, grpc_millis next) { +static bool wait_until(grpc_millis next) { gpr_mu_lock(&g_mu); // if we're not threaded anymore, leave if (!g_threaded) { @@ -179,7 +179,7 @@ static bool wait_until(grpc_exec_ctx *exec_ctx, grpc_millis next) { g_timed_waiter_deadline = next; if (GRPC_TRACER_ON(grpc_timer_check_trace)) { - grpc_millis wait_time = next - grpc_exec_ctx_now(exec_ctx); + grpc_millis wait_time = next - grpc_exec_ctx_now(); gpr_log(GPR_DEBUG, "sleep for a %" PRIdPTR " milliseconds", wait_time); } @@ -221,14 +221,14 @@ static bool wait_until(grpc_exec_ctx *exec_ctx, grpc_millis next) { return true; } -static void timer_main_loop(grpc_exec_ctx *exec_ctx) { +static void timer_main_loop() { for (;;) { grpc_millis next = GRPC_MILLIS_INF_FUTURE; - grpc_exec_ctx_invalidate_now(exec_ctx); + grpc_exec_ctx_invalidate_now(); // check timer state, updates next to the next time to run a check - switch (grpc_timer_check(exec_ctx, &next)) { + switch (grpc_timer_check(&next)) { case GRPC_TIMERS_FIRED: - run_some_timers(exec_ctx); + run_some_timers(); break; case GRPC_TIMERS_NOT_CHECKED: /* This case only happens under contention, meaning more than one timer @@ -246,7 +246,7 @@ static void timer_main_loop(grpc_exec_ctx *exec_ctx) { next = GRPC_MILLIS_INF_FUTURE; /* fall through */ case GRPC_TIMERS_CHECKED_AND_EMPTY: - if (!wait_until(exec_ctx, next)) { + if (!wait_until(next)) { return; } break; @@ -274,10 +274,9 @@ static void timer_thread_cleanup(completed_thread *ct) { static void timer_thread(void *completed_thread_ptr) { // this threads exec_ctx: we try to run things through to completion here // since it's easy to spin up new threads - grpc_exec_ctx exec_ctx = - GRPC_EXEC_CTX_INITIALIZER(0, grpc_never_ready_to_finish, NULL); - timer_main_loop(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx(0, grpc_never_ready_to_finish, NULL); + timer_main_loop(); + grpc_exec_ctx_finish(); timer_thread_cleanup((completed_thread *)completed_thread_ptr); } diff --git a/src/core/lib/iomgr/timer_uv.cc b/src/core/lib/iomgr/timer_uv.cc index ccbbe357ae9..b3e1ef372fa 100644 --- a/src/core/lib/iomgr/timer_uv.cc +++ b/src/core/lib/iomgr/timer_uv.cc @@ -45,28 +45,28 @@ static void stop_uv_timer(uv_timer_t *handle) { void run_expired_timer(uv_timer_t *handle) { grpc_timer *timer = (grpc_timer *)handle->data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_UV_ASSERT_SAME_THREAD(); GPR_ASSERT(timer->pending); timer->pending = 0; - GRPC_CLOSURE_SCHED(&exec_ctx, timer->closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); stop_uv_timer(handle); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, - grpc_millis deadline, grpc_closure *closure) { +void grpc_timer_init(grpc_timer *timer, grpc_millis deadline, + grpc_closure *closure) { uint64_t timeout; uv_timer_t *uv_timer; GRPC_UV_ASSERT_SAME_THREAD(); timer->closure = closure; - if (deadline <= grpc_exec_ctx_now(exec_ctx)) { + if (deadline <= grpc_exec_ctx_now()) { timer->pending = 0; - GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); return; } timer->pending = 1; - timeout = (uint64_t)(deadline - grpc_exec_ctx_now(exec_ctx)); + timeout = (uint64_t)(deadline - grpc_exec_ctx_now()); uv_timer = (uv_timer_t *)gpr_malloc(sizeof(uv_timer_t)); uv_timer_init(uv_default_loop(), uv_timer); uv_timer->data = timer; @@ -80,22 +80,21 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer, void grpc_timer_init_unset(grpc_timer *timer) { timer->pending = 0; } -void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) { +void grpc_timer_cancel(grpc_timer *timer) { GRPC_UV_ASSERT_SAME_THREAD(); if (timer->pending) { timer->pending = 0; - GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_CANCELLED); stop_uv_timer((uv_timer_t *)timer->uv_timer); } } -grpc_timer_check_result grpc_timer_check(grpc_exec_ctx *exec_ctx, - grpc_millis *next) { +grpc_timer_check_result grpc_timer_check(grpc_millis *next) { return GRPC_TIMERS_NOT_CHECKED; } -void grpc_timer_list_init(grpc_exec_ctx *exec_ctx) {} -void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) {} +void grpc_timer_list_init() {} +void grpc_timer_list_shutdown() {} void grpc_timer_consume_kick(void) {} diff --git a/src/core/lib/iomgr/udp_server.cc b/src/core/lib/iomgr/udp_server.cc index 00b2e68bb5e..c868e82d1d3 100644 --- a/src/core/lib/iomgr/udp_server.cc +++ b/src/core/lib/iomgr/udp_server.cc @@ -141,22 +141,21 @@ grpc_udp_server *grpc_udp_server_create(const grpc_channel_args *args) { return s; } -static void shutdown_fd(grpc_exec_ctx *exec_ctx, void *args, - grpc_error *error) { +static void shutdown_fd(void *args, grpc_error *error) { struct shutdown_fd_args *shutdown_args = (struct shutdown_fd_args *)args; gpr_mu_lock(shutdown_args->server_mu); - grpc_fd_shutdown(exec_ctx, shutdown_args->fd, GRPC_ERROR_REF(error)); + grpc_fd_shutdown(shutdown_args->fd, GRPC_ERROR_REF(error)); gpr_mu_unlock(shutdown_args->server_mu); gpr_free(shutdown_args); } -static void dummy_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void dummy_cb(void *arg, grpc_error *error) { // No-op. } -static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) { +static void finish_shutdown(grpc_udp_server *s) { if (s->shutdown_complete != NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, s->shutdown_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE); } gpr_mu_destroy(&s->mu); @@ -174,14 +173,13 @@ static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) { gpr_free(s); } -static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server, - grpc_error *error) { +static void destroyed_port(void *server, grpc_error *error) { grpc_udp_server *s = (grpc_udp_server *)server; gpr_mu_lock(&s->mu); s->destroyed_ports++; if (s->destroyed_ports == s->nports) { gpr_mu_unlock(&s->mu); - finish_shutdown(exec_ctx, s); + finish_shutdown(s); } else { gpr_mu_unlock(&s->mu); } @@ -190,7 +188,7 @@ static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server, /* called when all listening endpoints have been shutdown, so no further events will be received on them - at this point it's safe to destroy things */ -static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) { +static void deactivated_all_ports(grpc_udp_server *s) { /* delete ALL the things */ gpr_mu_lock(&s->mu); @@ -210,21 +208,19 @@ static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) { GRPC_CLOSURE_INIT(&sp->orphan_fd_closure, dummy_cb, sp->emfd, grpc_schedule_on_exec_ctx); GPR_ASSERT(sp->orphan_cb); - sp->orphan_cb(exec_ctx, sp->emfd, &sp->orphan_fd_closure, - sp->server->user_data); + sp->orphan_cb(sp->emfd, &sp->orphan_fd_closure, sp->server->user_data); } - grpc_fd_orphan(exec_ctx, sp->emfd, &sp->destroyed_closure, NULL, + grpc_fd_orphan(sp->emfd, &sp->destroyed_closure, NULL, false /* already_closed */, "udp_listener_shutdown"); } gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); - finish_shutdown(exec_ctx, s); + finish_shutdown(s); } } -void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *s, - grpc_closure *on_done) { +void grpc_udp_server_destroy(grpc_udp_server *s, grpc_closure *on_done) { grpc_udp_listener *sp; gpr_mu_lock(&s->mu); @@ -243,14 +239,13 @@ void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *s, args->server_mu = &s->mu; GRPC_CLOSURE_INIT(&sp->orphan_fd_closure, shutdown_fd, args, grpc_schedule_on_exec_ctx); - sp->orphan_cb(exec_ctx, sp->emfd, &sp->orphan_fd_closure, - sp->server->user_data); + sp->orphan_cb(sp->emfd, &sp->orphan_fd_closure, sp->server->user_data); sp->orphan_notified = true; } gpr_mu_unlock(&s->mu); } else { gpr_mu_unlock(&s->mu); - deactivated_all_ports(exec_ctx, s); + deactivated_all_ports(s); } } @@ -331,14 +326,14 @@ error: } /* event manager callback when reads are ready */ -static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_read(void *arg, grpc_error *error) { grpc_udp_listener *sp = (grpc_udp_listener *)arg; gpr_mu_lock(&sp->server->mu); if (error != GRPC_ERROR_NONE) { if (0 == --sp->server->active_ports && sp->server->shutdown) { gpr_mu_unlock(&sp->server->mu); - deactivated_all_ports(exec_ctx, sp->server); + deactivated_all_ports(sp->server); } else { gpr_mu_unlock(&sp->server->mu); } @@ -347,21 +342,21 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { /* Tell the registered callback that data is available to read. */ GPR_ASSERT(sp->read_cb); - sp->read_cb(exec_ctx, sp->emfd, sp->server->user_data); + sp->read_cb(sp->emfd, sp->server->user_data); /* Re-arm the notification event so we get another chance to read. */ - grpc_fd_notify_on_read(exec_ctx, sp->emfd, &sp->read_closure); + grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); gpr_mu_unlock(&sp->server->mu); } -static void on_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_write(void *arg, grpc_error *error) { grpc_udp_listener *sp = (grpc_udp_listener *)arg; gpr_mu_lock(&(sp->server->mu)); if (error != GRPC_ERROR_NONE) { if (0 == --sp->server->active_ports && sp->server->shutdown) { gpr_mu_unlock(&sp->server->mu); - deactivated_all_ports(exec_ctx, sp->server); + deactivated_all_ports(sp->server); } else { gpr_mu_unlock(&sp->server->mu); } @@ -370,10 +365,10 @@ static void on_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { /* Tell the registered callback that the socket is writeable. */ GPR_ASSERT(sp->write_cb); - sp->write_cb(exec_ctx, sp->emfd, sp->server->user_data); + sp->write_cb(sp->emfd, sp->server->user_data); /* Re-arm the notification event so we get another chance to write. */ - grpc_fd_notify_on_write(exec_ctx, sp->emfd, &sp->write_closure); + grpc_fd_notify_on_write(sp->emfd, &sp->write_closure); gpr_mu_unlock(&sp->server->mu); } @@ -512,9 +507,8 @@ int grpc_udp_server_get_fd(grpc_udp_server *s, unsigned port_index) { return sp->fd; } -void grpc_udp_server_start(grpc_exec_ctx *exec_ctx, grpc_udp_server *s, - grpc_pollset **pollsets, size_t pollset_count, - void *user_data) { +void grpc_udp_server_start(grpc_udp_server *s, grpc_pollset **pollsets, + size_t pollset_count, void *user_data) { size_t i; gpr_mu_lock(&s->mu); grpc_udp_listener *sp; @@ -525,15 +519,15 @@ void grpc_udp_server_start(grpc_exec_ctx *exec_ctx, grpc_udp_server *s, sp = s->head; while (sp != NULL) { for (i = 0; i < pollset_count; i++) { - grpc_pollset_add_fd(exec_ctx, pollsets[i], sp->emfd); + grpc_pollset_add_fd(pollsets[i], sp->emfd); } GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, sp->emfd, &sp->read_closure); + grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); GRPC_CLOSURE_INIT(&sp->write_closure, on_write, sp, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_write(exec_ctx, sp->emfd, &sp->write_closure); + grpc_fd_notify_on_write(sp->emfd, &sp->write_closure); /* Registered for both read and write callbacks: increment active_ports * twice to account for this, and delay free-ing of memory until both diff --git a/src/core/lib/iomgr/udp_server.h b/src/core/lib/iomgr/udp_server.h index e887cb1bcf4..27cbf370e6f 100644 --- a/src/core/lib/iomgr/udp_server.h +++ b/src/core/lib/iomgr/udp_server.h @@ -35,16 +35,13 @@ struct grpc_server; typedef struct grpc_udp_server grpc_udp_server; /* Called when data is available to read from the socket. */ -typedef void (*grpc_udp_server_read_cb)(grpc_exec_ctx *exec_ctx, grpc_fd *emfd, - void *user_data); +typedef void (*grpc_udp_server_read_cb)(grpc_fd *emfd, void *user_data); /* Called when the socket is writeable. */ -typedef void (*grpc_udp_server_write_cb)(grpc_exec_ctx *exec_ctx, grpc_fd *emfd, - void *user_data); +typedef void (*grpc_udp_server_write_cb)(grpc_fd *emfd, void *user_data); /* Called when the grpc_fd is about to be orphaned (and the FD closed). */ -typedef void (*grpc_udp_server_orphan_cb)(grpc_exec_ctx *exec_ctx, - grpc_fd *emfd, +typedef void (*grpc_udp_server_orphan_cb)(grpc_fd *emfd, grpc_closure *shutdown_fd_callback, void *user_data); @@ -52,9 +49,8 @@ typedef void (*grpc_udp_server_orphan_cb)(grpc_exec_ctx *exec_ctx, grpc_udp_server *grpc_udp_server_create(const grpc_channel_args *args); /* Start listening to bound ports. user_data is passed to callbacks. */ -void grpc_udp_server_start(grpc_exec_ctx *exec_ctx, grpc_udp_server *udp_server, - grpc_pollset **pollsets, size_t pollset_count, - void *user_data); +void grpc_udp_server_start(grpc_udp_server *udp_server, grpc_pollset **pollsets, + size_t pollset_count, void *user_data); int grpc_udp_server_get_fd(grpc_udp_server *s, unsigned port_index); @@ -74,8 +70,7 @@ int grpc_udp_server_add_port(grpc_udp_server *s, grpc_udp_server_write_cb write_cb, grpc_udp_server_orphan_cb orphan_cb); -void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *server, - grpc_closure *on_done); +void grpc_udp_server_destroy(grpc_udp_server *server, grpc_closure *on_done); #ifdef __cplusplus } diff --git a/src/core/lib/security/context/security_context.cc b/src/core/lib/security/context/security_context.cc index 31d800b9b46..89f5019d99f 100644 --- a/src/core/lib/security/context/security_context.cc +++ b/src/core/lib/security/context/security_context.cc @@ -38,7 +38,7 @@ grpc_tracer_flag grpc_trace_auth_context_refcount = grpc_call_error grpc_call_set_credentials(grpc_call *call, grpc_call_credentials *creds) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_client_security_context *ctx = NULL; GRPC_API_TRACE("grpc_call_set_credentials(call=%p, creds=%p)", 2, (call, creds)); @@ -54,10 +54,10 @@ grpc_call_error grpc_call_set_credentials(grpc_call *call, grpc_call_context_set(call, GRPC_CONTEXT_SECURITY, ctx, grpc_client_security_context_destroy); } else { - grpc_call_credentials_unref(&exec_ctx, ctx->creds); + grpc_call_credentials_unref(ctx->creds); ctx->creds = grpc_call_credentials_ref(creds); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return GRPC_CALL_OK; } @@ -87,15 +87,15 @@ grpc_client_security_context *grpc_client_security_context_create(void) { } void grpc_client_security_context_destroy(void *ctx) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_client_security_context *c = (grpc_client_security_context *)ctx; - grpc_call_credentials_unref(&exec_ctx, c->creds); + grpc_call_credentials_unref(c->creds); GRPC_AUTH_CONTEXT_UNREF(c->auth_context, "client_security_context"); if (c->extension.instance != NULL && c->extension.destroy != NULL) { c->extension.destroy(c->extension.instance); } gpr_free(ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } /* --- grpc_server_security_context --- */ @@ -304,7 +304,7 @@ void grpc_auth_property_reset(grpc_auth_property *property) { memset(property, 0, sizeof(grpc_auth_property)); } -static void auth_context_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) { +static void auth_context_pointer_arg_destroy(void *p) { GRPC_AUTH_CONTEXT_UNREF((grpc_auth_context *)p, "auth_context_pointer_arg"); } diff --git a/src/core/lib/security/credentials/composite/composite_credentials.cc b/src/core/lib/security/credentials/composite/composite_credentials.cc index 779300ac078..d05a7a1f9ca 100644 --- a/src/core/lib/security/credentials/composite/composite_credentials.cc +++ b/src/core/lib/security/credentials/composite/composite_credentials.cc @@ -39,17 +39,15 @@ typedef struct { grpc_closure internal_on_request_metadata; } grpc_composite_call_credentials_metadata_context; -static void composite_call_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void composite_call_destruct(grpc_call_credentials *creds) { grpc_composite_call_credentials *c = (grpc_composite_call_credentials *)creds; for (size_t i = 0; i < c->inner.num_creds; i++) { - grpc_call_credentials_unref(exec_ctx, c->inner.creds_array[i]); + grpc_call_credentials_unref(c->inner.creds_array[i]); } gpr_free(c->inner.creds_array); } -static void composite_call_metadata_cb(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void composite_call_metadata_cb(void *arg, grpc_error *error) { grpc_composite_call_credentials_metadata_context *ctx = (grpc_composite_call_credentials_metadata_context *)arg; if (error == GRPC_ERROR_NONE) { @@ -58,23 +56,23 @@ static void composite_call_metadata_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_call_credentials *inner_creds = ctx->composite_creds->inner.creds_array[ctx->creds_index++]; if (grpc_call_credentials_get_request_metadata( - exec_ctx, inner_creds, ctx->pollent, ctx->auth_md_context, - ctx->md_array, &ctx->internal_on_request_metadata, &error)) { + inner_creds, ctx->pollent, ctx->auth_md_context, ctx->md_array, + &ctx->internal_on_request_metadata, &error)) { // Synchronous response, so call ourselves recursively. - composite_call_metadata_cb(exec_ctx, arg, error); + composite_call_metadata_cb(arg, error); GRPC_ERROR_UNREF(error); } return; } // We're done! } - GRPC_CLOSURE_SCHED(exec_ctx, ctx->on_request_metadata, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(ctx->on_request_metadata, GRPC_ERROR_REF(error)); gpr_free(ctx); } static bool composite_call_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_polling_entity *pollent, grpc_auth_metadata_context auth_md_context, + grpc_call_credentials *creds, grpc_polling_entity *pollent, + grpc_auth_metadata_context auth_md_context, grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, grpc_error **error) { grpc_composite_call_credentials *c = (grpc_composite_call_credentials *)creds; @@ -93,8 +91,8 @@ static bool composite_call_get_request_metadata( grpc_call_credentials *inner_creds = ctx->composite_creds->inner.creds_array[ctx->creds_index++]; if (grpc_call_credentials_get_request_metadata( - exec_ctx, inner_creds, ctx->pollent, ctx->auth_md_context, - ctx->md_array, &ctx->internal_on_request_metadata, error)) { + inner_creds, ctx->pollent, ctx->auth_md_context, ctx->md_array, + &ctx->internal_on_request_metadata, error)) { if (*error != GRPC_ERROR_NONE) break; } else { synchronous = false; // Async return. @@ -106,12 +104,12 @@ static bool composite_call_get_request_metadata( } static void composite_call_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *creds, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { grpc_composite_call_credentials *c = (grpc_composite_call_credentials *)creds; for (size_t i = 0; i < c->inner.num_creds; ++i) { grpc_call_credentials_cancel_get_request_metadata( - exec_ctx, c->inner.creds_array[i], md_array, GRPC_ERROR_REF(error)); + c->inner.creds_array[i], md_array, GRPC_ERROR_REF(error)); } GRPC_ERROR_UNREF(error); } @@ -200,19 +198,17 @@ grpc_call_credentials *grpc_credentials_contains_type( /* -- Composite channel credentials. -- */ -static void composite_channel_destruct(grpc_exec_ctx *exec_ctx, - grpc_channel_credentials *creds) { +static void composite_channel_destruct(grpc_channel_credentials *creds) { grpc_composite_channel_credentials *c = (grpc_composite_channel_credentials *)creds; - grpc_channel_credentials_unref(exec_ctx, c->inner_creds); - grpc_call_credentials_unref(exec_ctx, c->call_creds); + grpc_channel_credentials_unref(c->inner_creds); + grpc_call_credentials_unref(c->call_creds); } static grpc_security_status composite_channel_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *creds, - grpc_call_credentials *call_creds, const char *target, - const grpc_channel_args *args, grpc_channel_security_connector **sc, - grpc_channel_args **new_args) { + grpc_channel_credentials *creds, grpc_call_credentials *call_creds, + const char *target, const grpc_channel_args *args, + grpc_channel_security_connector **sc, grpc_channel_args **new_args) { grpc_composite_channel_credentials *c = (grpc_composite_channel_credentials *)creds; grpc_security_status status = GRPC_SECURITY_ERROR; @@ -226,12 +222,11 @@ static grpc_security_status composite_channel_create_security_connector( grpc_call_credentials *composite_call_creds = grpc_composite_call_credentials_create(c->call_creds, call_creds, NULL); status = c->inner_creds->vtable->create_security_connector( - exec_ctx, c->inner_creds, composite_call_creds, target, args, sc, - new_args); - grpc_call_credentials_unref(exec_ctx, composite_call_creds); + c->inner_creds, composite_call_creds, target, args, sc, new_args); + grpc_call_credentials_unref(composite_call_creds); } else { status = c->inner_creds->vtable->create_security_connector( - exec_ctx, c->inner_creds, c->call_creds, target, args, sc, new_args); + c->inner_creds, c->call_creds, target, args, sc, new_args); } return status; } diff --git a/src/core/lib/security/credentials/credentials.cc b/src/core/lib/security/credentials/credentials.cc index ebbf3508653..b12e3dac297 100644 --- a/src/core/lib/security/credentials/credentials.cc +++ b/src/core/lib/security/credentials/credentials.cc @@ -47,8 +47,8 @@ grpc_credentials_metadata_request *grpc_credentials_metadata_request_create( } void grpc_credentials_metadata_request_destroy( - grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *r) { - grpc_call_credentials_unref(exec_ctx, r->creds); + grpc_credentials_metadata_request *r) { + grpc_call_credentials_unref(r->creds); grpc_http_response_destroy(&r->response); gpr_free(r); } @@ -60,12 +60,11 @@ grpc_channel_credentials *grpc_channel_credentials_ref( return creds; } -void grpc_channel_credentials_unref(grpc_exec_ctx *exec_ctx, - grpc_channel_credentials *creds) { +void grpc_channel_credentials_unref(grpc_channel_credentials *creds) { if (creds == NULL) return; if (gpr_unref(&creds->refcount)) { if (creds->vtable->destruct != NULL) { - creds->vtable->destruct(exec_ctx, creds); + creds->vtable->destruct(creds); } gpr_free(creds); } @@ -73,9 +72,9 @@ void grpc_channel_credentials_unref(grpc_exec_ctx *exec_ctx, void grpc_channel_credentials_release(grpc_channel_credentials *creds) { GRPC_API_TRACE("grpc_channel_credentials_release(creds=%p)", 1, (creds)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_credentials_unref(creds); + grpc_exec_ctx_finish(); } grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds) { @@ -84,12 +83,11 @@ grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds) { return creds; } -void grpc_call_credentials_unref(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +void grpc_call_credentials_unref(grpc_call_credentials *creds) { if (creds == NULL) return; if (gpr_unref(&creds->refcount)) { if (creds->vtable->destruct != NULL) { - creds->vtable->destruct(exec_ctx, creds); + creds->vtable->destruct(creds); } gpr_free(creds); } @@ -97,43 +95,42 @@ void grpc_call_credentials_unref(grpc_exec_ctx *exec_ctx, void grpc_call_credentials_release(grpc_call_credentials *creds) { GRPC_API_TRACE("grpc_call_credentials_release(creds=%p)", 1, (creds)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_call_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_call_credentials_unref(creds); + grpc_exec_ctx_finish(); } bool grpc_call_credentials_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_polling_entity *pollent, grpc_auth_metadata_context context, - grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, - grpc_error **error) { + grpc_call_credentials *creds, grpc_polling_entity *pollent, + grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, + grpc_closure *on_request_metadata, grpc_error **error) { if (creds == NULL || creds->vtable->get_request_metadata == NULL) { return true; } - return creds->vtable->get_request_metadata( - exec_ctx, creds, pollent, context, md_array, on_request_metadata, error); + return creds->vtable->get_request_metadata(creds, pollent, context, md_array, + on_request_metadata, error); } void grpc_call_credentials_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *creds, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { if (creds == NULL || creds->vtable->cancel_get_request_metadata == NULL) { return; } - creds->vtable->cancel_get_request_metadata(exec_ctx, creds, md_array, error); + creds->vtable->cancel_get_request_metadata(creds, md_array, error); } grpc_security_status grpc_channel_credentials_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *channel_creds, - const char *target, const grpc_channel_args *args, - grpc_channel_security_connector **sc, grpc_channel_args **new_args) { + grpc_channel_credentials *channel_creds, const char *target, + const grpc_channel_args *args, grpc_channel_security_connector **sc, + grpc_channel_args **new_args) { *new_args = NULL; if (channel_creds == NULL) { return GRPC_SECURITY_ERROR; } GPR_ASSERT(channel_creds->vtable->create_security_connector != NULL); return channel_creds->vtable->create_security_connector( - exec_ctx, channel_creds, NULL, target, args, sc, new_args); + channel_creds, NULL, target, args, sc, new_args); } grpc_channel_credentials * @@ -148,8 +145,8 @@ grpc_channel_credentials_duplicate_without_call_credentials( } } -static void credentials_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) { - grpc_channel_credentials_unref(exec_ctx, (grpc_channel_credentials *)p); +static void credentials_pointer_arg_destroy(void *p) { + grpc_channel_credentials_unref((grpc_channel_credentials *)p); } static void *credentials_pointer_arg_copy(void *p) { @@ -199,12 +196,11 @@ grpc_server_credentials *grpc_server_credentials_ref( return creds; } -void grpc_server_credentials_unref(grpc_exec_ctx *exec_ctx, - grpc_server_credentials *creds) { +void grpc_server_credentials_unref(grpc_server_credentials *creds) { if (creds == NULL) return; if (gpr_unref(&creds->refcount)) { if (creds->vtable->destruct != NULL) { - creds->vtable->destruct(exec_ctx, creds); + creds->vtable->destruct(creds); } if (creds->processor.destroy != NULL && creds->processor.state != NULL) { creds->processor.destroy(creds->processor.state); @@ -215,19 +211,18 @@ void grpc_server_credentials_unref(grpc_exec_ctx *exec_ctx, void grpc_server_credentials_release(grpc_server_credentials *creds) { GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_server_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_server_credentials_unref(creds); + grpc_exec_ctx_finish(); } grpc_security_status grpc_server_credentials_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *creds, - grpc_server_security_connector **sc) { + grpc_server_credentials *creds, grpc_server_security_connector **sc) { if (creds == NULL || creds->vtable->create_security_connector == NULL) { gpr_log(GPR_ERROR, "Server credentials cannot create security context."); return GRPC_SECURITY_ERROR; } - return creds->vtable->create_security_connector(exec_ctx, creds, sc); + return creds->vtable->create_security_connector(creds, sc); } void grpc_server_credentials_set_auth_metadata_processor( @@ -244,9 +239,8 @@ void grpc_server_credentials_set_auth_metadata_processor( creds->processor = processor; } -static void server_credentials_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, - void *p) { - grpc_server_credentials_unref(exec_ctx, (grpc_server_credentials *)p); +static void server_credentials_pointer_arg_destroy(void *p) { + grpc_server_credentials_unref((grpc_server_credentials *)p); } static void *server_credentials_pointer_arg_copy(void *p) { diff --git a/src/core/lib/security/credentials/credentials.h b/src/core/lib/security/credentials/credentials.h index 73e39ae039a..8f4b7645449 100644 --- a/src/core/lib/security/credentials/credentials.h +++ b/src/core/lib/security/credentials/credentials.h @@ -92,13 +92,12 @@ void grpc_override_well_known_credentials_path_getter( #define GRPC_ARG_CHANNEL_CREDENTIALS "grpc.channel_credentials" typedef struct { - void (*destruct)(grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c); + void (*destruct)(grpc_channel_credentials *c); grpc_security_status (*create_security_connector)( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c, - grpc_call_credentials *call_creds, const char *target, - const grpc_channel_args *args, grpc_channel_security_connector **sc, - grpc_channel_args **new_args); + grpc_channel_credentials *c, grpc_call_credentials *call_creds, + const char *target, const grpc_channel_args *args, + grpc_channel_security_connector **sc, grpc_channel_args **new_args); grpc_channel_credentials *(*duplicate_without_call_credentials)( grpc_channel_credentials *c); @@ -112,17 +111,16 @@ struct grpc_channel_credentials { grpc_channel_credentials *grpc_channel_credentials_ref( grpc_channel_credentials *creds); -void grpc_channel_credentials_unref(grpc_exec_ctx *exec_ctx, - grpc_channel_credentials *creds); +void grpc_channel_credentials_unref(grpc_channel_credentials *creds); /* Creates a security connector for the channel. May also create new channel args for the channel to be used in place of the passed in const args if returned non NULL. In that case the caller is responsible for destroying new_args after channel creation. */ grpc_security_status grpc_channel_credentials_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *creds, - const char *target, const grpc_channel_args *args, - grpc_channel_security_connector **sc, grpc_channel_args **new_args); + grpc_channel_credentials *creds, const char *target, + const grpc_channel_args *args, grpc_channel_security_connector **sc, + grpc_channel_args **new_args); /* Creates a version of the channel credentials without any attached call credentials. This can be used in order to open a channel to a non-trusted @@ -157,22 +155,19 @@ void grpc_credentials_mdelem_array_add(grpc_credentials_mdelem_array *list, void grpc_credentials_mdelem_array_append(grpc_credentials_mdelem_array *dst, grpc_credentials_mdelem_array *src); -void grpc_credentials_mdelem_array_destroy(grpc_exec_ctx *exec_ctx, - grpc_credentials_mdelem_array *list); +void grpc_credentials_mdelem_array_destroy(grpc_credentials_mdelem_array *list); /* --- grpc_call_credentials. --- */ typedef struct { - void (*destruct)(grpc_exec_ctx *exec_ctx, grpc_call_credentials *c); - bool (*get_request_metadata)(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *c, + void (*destruct)(grpc_call_credentials *c); + bool (*get_request_metadata)(grpc_call_credentials *c, grpc_polling_entity *pollent, grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, grpc_error **error); - void (*cancel_get_request_metadata)(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *c, + void (*cancel_get_request_metadata)(grpc_call_credentials *c, grpc_credentials_mdelem_array *md_array, grpc_error *error); } grpc_call_credentials_vtable; @@ -184,39 +179,35 @@ struct grpc_call_credentials { }; grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds); -void grpc_call_credentials_unref(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds); +void grpc_call_credentials_unref(grpc_call_credentials *creds); /// Returns true if completed synchronously, in which case \a error will /// be set to indicate the result. Otherwise, \a on_request_metadata will /// be invoked asynchronously when complete. \a md_array will be populated /// with the resulting metadata once complete. bool grpc_call_credentials_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_polling_entity *pollent, grpc_auth_metadata_context context, - grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, - grpc_error **error); + grpc_call_credentials *creds, grpc_polling_entity *pollent, + grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, + grpc_closure *on_request_metadata, grpc_error **error); /// Cancels a pending asynchronous operation started by /// grpc_call_credentials_get_request_metadata() with the corresponding /// value of \a md_array. void grpc_call_credentials_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *c, - grpc_credentials_mdelem_array *md_array, grpc_error *error); + grpc_call_credentials *c, grpc_credentials_mdelem_array *md_array, + grpc_error *error); /* Metadata-only credentials with the specified key and value where asynchronicity can be simulated for testing. */ grpc_call_credentials *grpc_md_only_test_credentials_create( - grpc_exec_ctx *exec_ctx, const char *md_key, const char *md_value, - bool is_async); + const char *md_key, const char *md_value, bool is_async); /* --- grpc_server_credentials. --- */ typedef struct { - void (*destruct)(grpc_exec_ctx *exec_ctx, grpc_server_credentials *c); + void (*destruct)(grpc_server_credentials *c); grpc_security_status (*create_security_connector)( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *c, - grpc_server_security_connector **sc); + grpc_server_credentials *c, grpc_server_security_connector **sc); } grpc_server_credentials_vtable; struct grpc_server_credentials { @@ -227,14 +218,12 @@ struct grpc_server_credentials { }; grpc_security_status grpc_server_credentials_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *creds, - grpc_server_security_connector **sc); + grpc_server_credentials *creds, grpc_server_security_connector **sc); grpc_server_credentials *grpc_server_credentials_ref( grpc_server_credentials *creds); -void grpc_server_credentials_unref(grpc_exec_ctx *exec_ctx, - grpc_server_credentials *creds); +void grpc_server_credentials_unref(grpc_server_credentials *creds); #define GRPC_SERVER_CREDENTIALS_ARG "grpc.server_credentials" @@ -254,7 +243,7 @@ grpc_credentials_metadata_request *grpc_credentials_metadata_request_create( grpc_call_credentials *creds); void grpc_credentials_metadata_request_destroy( - grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *r); + grpc_credentials_metadata_request *r); #ifdef __cplusplus } diff --git a/src/core/lib/security/credentials/credentials_metadata.cc b/src/core/lib/security/credentials/credentials_metadata.cc index 5ba98bda4e0..29b632376bb 100644 --- a/src/core/lib/security/credentials/credentials_metadata.cc +++ b/src/core/lib/security/credentials/credentials_metadata.cc @@ -52,9 +52,9 @@ void grpc_credentials_mdelem_array_append(grpc_credentials_mdelem_array *dst, } void grpc_credentials_mdelem_array_destroy( - grpc_exec_ctx *exec_ctx, grpc_credentials_mdelem_array *list) { + grpc_credentials_mdelem_array *list) { for (size_t i = 0; i < list->size; ++i) { - GRPC_MDELEM_UNREF(exec_ctx, list->md[i]); + GRPC_MDELEM_UNREF(list->md[i]); } gpr_free(list->md); } diff --git a/src/core/lib/security/credentials/fake/fake_credentials.cc b/src/core/lib/security/credentials/fake/fake_credentials.cc index cf10bf24c81..42257c7a131 100644 --- a/src/core/lib/security/credentials/fake/fake_credentials.cc +++ b/src/core/lib/security/credentials/fake/fake_credentials.cc @@ -34,10 +34,9 @@ "grpc.fake_security.expected_targets" static grpc_security_status fake_transport_security_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c, - grpc_call_credentials *call_creds, const char *target, - const grpc_channel_args *args, grpc_channel_security_connector **sc, - grpc_channel_args **new_args) { + grpc_channel_credentials *c, grpc_call_credentials *call_creds, + const char *target, const grpc_channel_args *args, + grpc_channel_security_connector **sc, grpc_channel_args **new_args) { *sc = grpc_fake_channel_security_connector_create(c, call_creds, target, args); return GRPC_SECURITY_OK; @@ -45,8 +44,7 @@ static grpc_security_status fake_transport_security_create_security_connector( static grpc_security_status fake_transport_security_server_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *c, - grpc_server_security_connector **sc) { + grpc_server_credentials *c, grpc_server_security_connector **sc) { *sc = grpc_fake_server_security_connector_create(c); return GRPC_SECURITY_OK; } @@ -98,29 +96,27 @@ const char *grpc_fake_transport_get_expected_targets( /* -- Metadata-only test credentials. -- */ -static void md_only_test_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void md_only_test_destruct(grpc_call_credentials *creds) { grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)creds; - GRPC_MDELEM_UNREF(exec_ctx, c->md); + GRPC_MDELEM_UNREF(c->md); } static bool md_only_test_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_polling_entity *pollent, grpc_auth_metadata_context context, - grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, - grpc_error **error) { + grpc_call_credentials *creds, grpc_polling_entity *pollent, + grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, + grpc_closure *on_request_metadata, grpc_error **error) { grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)creds; grpc_credentials_mdelem_array_add(md_array, c->md); if (c->is_async) { - GRPC_CLOSURE_SCHED(exec_ctx, on_request_metadata, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_request_metadata, GRPC_ERROR_NONE); return false; } return true; } static void md_only_test_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *c, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *c, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { GRPC_ERROR_UNREF(error); } @@ -129,17 +125,15 @@ static grpc_call_credentials_vtable md_only_test_vtable = { md_only_test_cancel_get_request_metadata}; grpc_call_credentials *grpc_md_only_test_credentials_create( - grpc_exec_ctx *exec_ctx, const char *md_key, const char *md_value, - bool is_async) { + const char *md_key, const char *md_value, bool is_async) { grpc_md_only_test_credentials *c = (grpc_md_only_test_credentials *)gpr_zalloc( sizeof(grpc_md_only_test_credentials)); c->base.type = GRPC_CALL_CREDENTIALS_TYPE_OAUTH2; c->base.vtable = &md_only_test_vtable; gpr_ref_init(&c->base.refcount, 1); - c->md = - grpc_mdelem_from_slices(exec_ctx, grpc_slice_from_copied_string(md_key), - grpc_slice_from_copied_string(md_value)); + c->md = grpc_mdelem_from_slices(grpc_slice_from_copied_string(md_key), + grpc_slice_from_copied_string(md_value)); c->is_async = is_async; return &c->base; } diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/src/core/lib/security/credentials/google_default/google_default_credentials.cc index 5b2ddceb4a2..719e6d147a1 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.cc +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc @@ -58,8 +58,7 @@ typedef struct { grpc_http_response response; } compute_engine_detector; -static void on_compute_engine_detection_http_response(grpc_exec_ctx *exec_ctx, - void *user_data, +static void on_compute_engine_detection_http_response(void *user_data, grpc_error *error) { compute_engine_detector *detector = (compute_engine_detector *)user_data; if (error == GRPC_ERROR_NONE && detector->response.status == 200 && @@ -80,16 +79,15 @@ static void on_compute_engine_detection_http_response(grpc_exec_ctx *exec_ctx, detector->is_done = 1; GRPC_LOG_IF_ERROR( "Pollset kick", - grpc_pollset_kick(exec_ctx, - grpc_polling_entity_pollset(&detector->pollent), NULL)); + grpc_pollset_kick(grpc_polling_entity_pollset(&detector->pollent), NULL)); gpr_mu_unlock(g_polling_mu); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, grpc_error *e) { - grpc_pollset_destroy(exec_ctx, (grpc_pollset *)p); +static void destroy_pollset(void *p, grpc_error *e) { + grpc_pollset_destroy((grpc_pollset *)p); } -static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) { +static int is_stack_running_on_compute_engine() { compute_engine_detector detector; grpc_httpcli_request request; grpc_httpcli_context context; @@ -115,14 +113,14 @@ static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) { grpc_resource_quota *resource_quota = grpc_resource_quota_create("google_default_credentials"); grpc_httpcli_get( - exec_ctx, &context, &detector.pollent, resource_quota, &request, - grpc_exec_ctx_now(exec_ctx) + max_detection_delay, + &context, &detector.pollent, resource_quota, &request, + grpc_exec_ctx_now() + max_detection_delay, GRPC_CLOSURE_CREATE(on_compute_engine_detection_http_response, &detector, grpc_schedule_on_exec_ctx), &detector.response); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); /* Block until we get the response. This is not ideal but this should only be called once for the lifetime of the process by the default credentials. */ @@ -131,8 +129,7 @@ static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) { grpc_pollset_worker *worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(exec_ctx, - grpc_polling_entity_pollset(&detector.pollent), + grpc_pollset_work(grpc_polling_entity_pollset(&detector.pollent), &worker, GRPC_MILLIS_INF_FUTURE))) { detector.is_done = 1; detector.success = 0; @@ -140,15 +137,14 @@ static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) { } gpr_mu_unlock(g_polling_mu); - grpc_httpcli_context_destroy(exec_ctx, &context); + grpc_httpcli_context_destroy(&context); GRPC_CLOSURE_INIT(&destroy_closure, destroy_pollset, grpc_polling_entity_pollset(&detector.pollent), grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, - grpc_polling_entity_pollset(&detector.pollent), + grpc_pollset_shutdown(grpc_polling_entity_pollset(&detector.pollent), &destroy_closure); g_polling_mu = NULL; - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_free(grpc_polling_entity_pollset(&detector.pollent)); grpc_http_response_destroy(&detector.response); @@ -158,7 +154,7 @@ static int is_stack_running_on_compute_engine(grpc_exec_ctx *exec_ctx) { /* Takes ownership of creds_path if not NULL. */ static grpc_error *create_default_creds_from_path( - grpc_exec_ctx *exec_ctx, char *creds_path, grpc_call_credentials **creds) { + char *creds_path, grpc_call_credentials **creds) { grpc_json *json = NULL; grpc_auth_json_key key; grpc_auth_refresh_token token; @@ -187,7 +183,7 @@ static grpc_error *create_default_creds_from_path( if (grpc_auth_json_key_is_valid(&key)) { result = grpc_service_account_jwt_access_credentials_create_from_auth_json_key( - exec_ctx, key, grpc_max_auth_token_lifetime()); + key, grpc_max_auth_token_lifetime()); if (result == NULL) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "grpc_service_account_jwt_access_credentials_create_from_auth_json_" @@ -212,7 +208,7 @@ static grpc_error *create_default_creds_from_path( end: GPR_ASSERT((result == NULL) + (error == GRPC_ERROR_NONE) == 1); if (creds_path != NULL) gpr_free(creds_path); - grpc_slice_unref_internal(exec_ctx, creds_data); + grpc_slice_unref_internal(creds_data); if (json != NULL) grpc_json_destroy(json); *creds = result; return error; @@ -224,7 +220,7 @@ grpc_channel_credentials *grpc_google_default_credentials_create(void) { grpc_error *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Failed to create Google credentials"); grpc_error *err; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_google_default_credentials_create(void)", 0, ()); @@ -239,22 +235,20 @@ grpc_channel_credentials *grpc_google_default_credentials_create(void) { /* First, try the environment variable. */ err = create_default_creds_from_path( - &exec_ctx, gpr_getenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR), &call_creds); + gpr_getenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR), &call_creds); if (err == GRPC_ERROR_NONE) goto end; error = grpc_error_add_child(error, err); /* Then the well-known file. */ err = create_default_creds_from_path( - &exec_ctx, grpc_get_well_known_google_credentials_file_path(), - &call_creds); + grpc_get_well_known_google_credentials_file_path(), &call_creds); if (err == GRPC_ERROR_NONE) goto end; error = grpc_error_add_child(error, err); /* At last try to see if we're on compute engine (do the detection only once since it requires a network test). */ if (!compute_engine_detection_done) { - int need_compute_engine_creds = - is_stack_running_on_compute_engine(&exec_ctx); + int need_compute_engine_creds = is_stack_running_on_compute_engine(); compute_engine_detection_done = 1; if (need_compute_engine_creds) { call_creds = grpc_google_compute_engine_credentials_create(NULL); @@ -278,8 +272,8 @@ end: grpc_composite_channel_credentials_create(ssl_creds, call_creds, NULL)); GPR_ASSERT(default_credentials != NULL); - grpc_channel_credentials_unref(&exec_ctx, ssl_creds); - grpc_call_credentials_unref(&exec_ctx, call_creds); + grpc_channel_credentials_unref(ssl_creds); + grpc_call_credentials_unref(call_creds); result = default_credentials; } else { gpr_log(GPR_ERROR, "Could not create google default credentials."); @@ -291,21 +285,21 @@ end: } else { GRPC_ERROR_UNREF(error); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return result; } void grpc_flush_cached_google_default_credentials(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_once_init(&g_once, init_default_credentials); gpr_mu_lock(&g_state_mu); if (default_credentials != NULL) { - grpc_channel_credentials_unref(&exec_ctx, default_credentials); + grpc_channel_credentials_unref(default_credentials); default_credentials = NULL; } compute_engine_detection_done = 0; gpr_mu_unlock(&g_state_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } /* -- Well known credentials path. -- */ diff --git a/src/core/lib/security/credentials/iam/iam_credentials.cc b/src/core/lib/security/credentials/iam/iam_credentials.cc index e9cf208c163..3b91e739f14 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.cc +++ b/src/core/lib/security/credentials/iam/iam_credentials.cc @@ -27,14 +27,12 @@ #include <grpc/support/string_util.h> #include <grpc/support/sync.h> -static void iam_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void iam_destruct(grpc_call_credentials *creds) { grpc_google_iam_credentials *c = (grpc_google_iam_credentials *)creds; - grpc_credentials_mdelem_array_destroy(exec_ctx, &c->md_array); + grpc_credentials_mdelem_array_destroy(&c->md_array); } -static bool iam_get_request_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds, +static bool iam_get_request_metadata(grpc_call_credentials *creds, grpc_polling_entity *pollent, grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, @@ -46,8 +44,8 @@ static bool iam_get_request_metadata(grpc_exec_ctx *exec_ctx, } static void iam_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *c, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *c, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { GRPC_ERROR_UNREF(error); } @@ -56,7 +54,7 @@ static grpc_call_credentials_vtable iam_vtable = { grpc_call_credentials *grpc_google_iam_credentials_create( const char *token, const char *authority_selector, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_iam_credentials_create(token=%s, authority_selector=%s, " "reserved=%p)", @@ -70,17 +68,15 @@ grpc_call_credentials *grpc_google_iam_credentials_create( c->base.vtable = &iam_vtable; gpr_ref_init(&c->base.refcount, 1); grpc_mdelem md = grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_from_static_string(GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY), grpc_slice_from_copied_string(token)); grpc_credentials_mdelem_array_add(&c->md_array, md); - GRPC_MDELEM_UNREF(&exec_ctx, md); + GRPC_MDELEM_UNREF(md); md = grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_from_static_string(GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY), grpc_slice_from_copied_string(authority_selector)); grpc_credentials_mdelem_array_add(&c->md_array, md); - GRPC_MDELEM_UNREF(&exec_ctx, md); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(md); + grpc_exec_ctx_finish(); return &c->base; } diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/src/core/lib/security/credentials/jwt/jwt_credentials.cc index 835dd677ed8..15eeaf6bac1 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.cc +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc @@ -30,9 +30,8 @@ #include <grpc/support/string_util.h> #include <grpc/support/sync.h> -static void jwt_reset_cache(grpc_exec_ctx *exec_ctx, - grpc_service_account_jwt_access_credentials *c) { - GRPC_MDELEM_UNREF(exec_ctx, c->cached.jwt_md); +static void jwt_reset_cache(grpc_service_account_jwt_access_credentials *c) { + GRPC_MDELEM_UNREF(c->cached.jwt_md); c->cached.jwt_md = GRPC_MDNULL; if (c->cached.service_url != NULL) { gpr_free(c->cached.service_url); @@ -41,17 +40,15 @@ static void jwt_reset_cache(grpc_exec_ctx *exec_ctx, c->cached.jwt_expiration = gpr_inf_past(GPR_CLOCK_REALTIME); } -static void jwt_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void jwt_destruct(grpc_call_credentials *creds) { grpc_service_account_jwt_access_credentials *c = (grpc_service_account_jwt_access_credentials *)creds; grpc_auth_json_key_destruct(&c->key); - jwt_reset_cache(exec_ctx, c); + jwt_reset_cache(c); gpr_mu_destroy(&c->cache_mu); } -static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds, +static bool jwt_get_request_metadata(grpc_call_credentials *creds, grpc_polling_entity *pollent, grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, @@ -81,7 +78,7 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx, char *jwt = NULL; /* Generate a new jwt. */ gpr_mu_lock(&c->cache_mu); - jwt_reset_cache(exec_ctx, c); + jwt_reset_cache(c); jwt = grpc_jwt_encode_and_sign(&c->key, context.service_url, c->jwt_lifetime, NULL); if (jwt != NULL) { @@ -92,7 +89,6 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx, gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c->jwt_lifetime); c->cached.service_url = gpr_strdup(context.service_url); c->cached.jwt_md = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), grpc_slice_from_copied_string(md_value)); gpr_free(md_value); @@ -103,7 +99,7 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx, if (!GRPC_MDISNULL(jwt_md)) { grpc_credentials_mdelem_array_add(md_array, jwt_md); - GRPC_MDELEM_UNREF(exec_ctx, jwt_md); + GRPC_MDELEM_UNREF(jwt_md); } else { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Could not generate JWT."); } @@ -111,8 +107,8 @@ static bool jwt_get_request_metadata(grpc_exec_ctx *exec_ctx, } static void jwt_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *c, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *c, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { GRPC_ERROR_UNREF(error); } @@ -121,8 +117,7 @@ static grpc_call_credentials_vtable jwt_vtable = { grpc_call_credentials * grpc_service_account_jwt_access_credentials_create_from_auth_json_key( - grpc_exec_ctx *exec_ctx, grpc_auth_json_key key, - gpr_timespec token_lifetime) { + grpc_auth_json_key key, gpr_timespec token_lifetime) { grpc_service_account_jwt_access_credentials *c; if (!grpc_auth_json_key_is_valid(&key)) { gpr_log(GPR_ERROR, "Invalid input for jwt credentials creation"); @@ -143,7 +138,7 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key( } c->jwt_lifetime = token_lifetime; gpr_mu_init(&c->cache_mu); - jwt_reset_cache(exec_ctx, c); + jwt_reset_cache(c); return &c->base; } @@ -186,11 +181,10 @@ grpc_call_credentials *grpc_service_account_jwt_access_credentials_create( gpr_free(clean_json); } GPR_ASSERT(reserved == NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_call_credentials *creds = grpc_service_account_jwt_access_credentials_create_from_auth_json_key( - &exec_ctx, grpc_auth_json_key_create_from_string(json_key), - token_lifetime); - grpc_exec_ctx_finish(&exec_ctx); + grpc_auth_json_key_create_from_string(json_key), token_lifetime); + grpc_exec_ctx_finish(); return creds; } diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.h b/src/core/lib/security/credentials/jwt/jwt_credentials.h index 5cee6ed0da6..12b39c30f2d 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.h +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.h @@ -46,8 +46,7 @@ typedef struct { // Takes ownership of the key. grpc_call_credentials * grpc_service_account_jwt_access_credentials_create_from_auth_json_key( - grpc_exec_ctx *exec_ctx, grpc_auth_json_key key, - gpr_timespec token_lifetime); + grpc_auth_json_key key, gpr_timespec token_lifetime); #ifdef __cplusplus } diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/src/core/lib/security/credentials/jwt/jwt_verifier.cc index 39e72c195ba..7e12d157170 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.cc +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc @@ -74,12 +74,11 @@ static const EVP_MD *evp_md_from_alg(const char *alg) { } } -static grpc_json *parse_json_part_from_jwt(grpc_exec_ctx *exec_ctx, - const char *str, size_t len, +static grpc_json *parse_json_part_from_jwt(const char *str, size_t len, grpc_slice *buffer) { grpc_json *json; - *buffer = grpc_base64_decode_with_len(exec_ctx, str, len, 1); + *buffer = grpc_base64_decode_with_len(str, len, 1); if (GRPC_SLICE_IS_EMPTY(*buffer)) { gpr_log(GPR_ERROR, "Invalid base64."); return NULL; @@ -87,7 +86,7 @@ static grpc_json *parse_json_part_from_jwt(grpc_exec_ctx *exec_ctx, json = grpc_json_parse_string_with_len((char *)GRPC_SLICE_START_PTR(*buffer), GRPC_SLICE_LENGTH(*buffer)); if (json == NULL) { - grpc_slice_unref_internal(exec_ctx, *buffer); + grpc_slice_unref_internal(*buffer); gpr_log(GPR_ERROR, "JSON parsing error."); } return json; @@ -123,14 +122,13 @@ typedef struct { grpc_slice buffer; } jose_header; -static void jose_header_destroy(grpc_exec_ctx *exec_ctx, jose_header *h) { - grpc_slice_unref_internal(exec_ctx, h->buffer); +static void jose_header_destroy(jose_header *h) { + grpc_slice_unref_internal(h->buffer); gpr_free(h); } /* Takes ownership of json and buffer. */ -static jose_header *jose_header_from_json(grpc_exec_ctx *exec_ctx, - grpc_json *json, grpc_slice buffer) { +static jose_header *jose_header_from_json(grpc_json *json, grpc_slice buffer) { grpc_json *cur; jose_header *h = (jose_header *)gpr_zalloc(sizeof(jose_header)); h->buffer = buffer; @@ -164,7 +162,7 @@ static jose_header *jose_header_from_json(grpc_exec_ctx *exec_ctx, error: grpc_json_destroy(json); - jose_header_destroy(exec_ctx, h); + jose_header_destroy(h); return NULL; } @@ -184,9 +182,9 @@ struct grpc_jwt_claims { grpc_slice buffer; }; -void grpc_jwt_claims_destroy(grpc_exec_ctx *exec_ctx, grpc_jwt_claims *claims) { +void grpc_jwt_claims_destroy(grpc_jwt_claims *claims) { grpc_json_destroy(claims->json); - grpc_slice_unref_internal(exec_ctx, claims->buffer); + grpc_slice_unref_internal(claims->buffer); gpr_free(claims); } @@ -231,8 +229,7 @@ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims *claims) { } /* Takes ownership of json and buffer even in case of failure. */ -grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx, - grpc_json *json, grpc_slice buffer) { +grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_json *json, grpc_slice buffer) { grpc_json *cur; grpc_jwt_claims *claims = (grpc_jwt_claims *)gpr_malloc(sizeof(grpc_jwt_claims)); @@ -274,7 +271,7 @@ grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx, return claims; error: - grpc_jwt_claims_destroy(exec_ctx, claims); + grpc_jwt_claims_destroy(claims); return NULL; } @@ -350,7 +347,7 @@ static verifier_cb_ctx *verifier_cb_ctx_create( grpc_jwt_claims *claims, const char *audience, grpc_slice signature, const char *signed_jwt, size_t signed_jwt_len, void *user_data, grpc_jwt_verification_done_cb cb) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; verifier_cb_ctx *ctx = (verifier_cb_ctx *)gpr_zalloc(sizeof(verifier_cb_ctx)); ctx->verifier = verifier; ctx->pollent = grpc_polling_entity_create_from_pollset(pollset); @@ -361,16 +358,16 @@ static verifier_cb_ctx *verifier_cb_ctx_create( ctx->signed_data = grpc_slice_from_copied_buffer(signed_jwt, signed_jwt_len); ctx->user_data = user_data; ctx->user_cb = cb; - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return ctx; } -void verifier_cb_ctx_destroy(grpc_exec_ctx *exec_ctx, verifier_cb_ctx *ctx) { +void verifier_cb_ctx_destroy(verifier_cb_ctx *ctx) { if (ctx->audience != NULL) gpr_free(ctx->audience); - if (ctx->claims != NULL) grpc_jwt_claims_destroy(exec_ctx, ctx->claims); - grpc_slice_unref_internal(exec_ctx, ctx->signature); - grpc_slice_unref_internal(exec_ctx, ctx->signed_data); - jose_header_destroy(exec_ctx, ctx->header); + if (ctx->claims != NULL) grpc_jwt_claims_destroy(ctx->claims); + grpc_slice_unref_internal(ctx->signature); + grpc_slice_unref_internal(ctx->signed_data); + jose_header_destroy(ctx->header); for (size_t i = 0; i < HTTP_RESPONSE_COUNT; i++) { grpc_http_response_destroy(&ctx->responses[i]); } @@ -450,19 +447,19 @@ end: return result; } -static BIGNUM *bignum_from_base64(grpc_exec_ctx *exec_ctx, const char *b64) { +static BIGNUM *bignum_from_base64(const char *b64) { BIGNUM *result = NULL; grpc_slice bin; if (b64 == NULL) return NULL; - bin = grpc_base64_decode(exec_ctx, b64, 1); + bin = grpc_base64_decode(b64, 1); if (GRPC_SLICE_IS_EMPTY(bin)) { gpr_log(GPR_ERROR, "Invalid base64 for big num."); return NULL; } result = BN_bin2bn(GRPC_SLICE_START_PTR(bin), TSI_SIZE_AS_SIZE(GRPC_SLICE_LENGTH(bin)), NULL); - grpc_slice_unref_internal(exec_ctx, bin); + grpc_slice_unref_internal(bin); return result; } @@ -495,8 +492,7 @@ static int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) { } #endif // OPENSSL_VERSION_NUMBER < 0x10100000L -static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json, - const char *kty) { +static EVP_PKEY *pkey_from_jwk(const grpc_json *json, const char *kty) { const grpc_json *key_prop; RSA *rsa = NULL; EVP_PKEY *result = NULL; @@ -515,12 +511,10 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json, } for (key_prop = json->child; key_prop != NULL; key_prop = key_prop->next) { if (strcmp(key_prop->key, "n") == 0) { - tmp_n = - bignum_from_base64(exec_ctx, validate_string_field(key_prop, "n")); + tmp_n = bignum_from_base64(validate_string_field(key_prop, "n")); if (tmp_n == NULL) goto end; } else if (strcmp(key_prop->key, "e") == 0) { - tmp_e = - bignum_from_base64(exec_ctx, validate_string_field(key_prop, "e")); + tmp_e = bignum_from_base64(validate_string_field(key_prop, "e")); if (tmp_e == NULL) goto end; } } @@ -545,8 +539,7 @@ end: return result; } -static EVP_PKEY *find_verification_key(grpc_exec_ctx *exec_ctx, - const grpc_json *json, +static EVP_PKEY *find_verification_key(const grpc_json *json, const char *header_alg, const char *header_kid) { const grpc_json *jkey; @@ -590,7 +583,7 @@ static EVP_PKEY *find_verification_key(grpc_exec_ctx *exec_ctx, } if (alg != NULL && kid != NULL && kty != NULL && strcmp(kid, header_kid) == 0 && strcmp(alg, header_alg) == 0) { - return pkey_from_jwk(exec_ctx, jkey, kty); + return pkey_from_jwk(jkey, kty); } } gpr_log(GPR_ERROR, @@ -631,8 +624,7 @@ end: return result; } -static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *error) { +static void on_keys_retrieved(void *user_data, grpc_error *error) { verifier_cb_ctx *ctx = (verifier_cb_ctx *)user_data; grpc_json *json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]); EVP_PKEY *verification_key = NULL; @@ -644,7 +636,7 @@ static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data, goto end; } verification_key = - find_verification_key(exec_ctx, json, ctx->header->alg, ctx->header->kid); + find_verification_key(json, ctx->header->alg, ctx->header->kid); if (verification_key == NULL) { gpr_log(GPR_ERROR, "Could not find verification key with kid %s.", ctx->header->kid); @@ -668,12 +660,11 @@ static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data, end: if (json != NULL) grpc_json_destroy(json); EVP_PKEY_free(verification_key); - ctx->user_cb(exec_ctx, ctx->user_data, status, claims); - verifier_cb_ctx_destroy(exec_ctx, ctx); + ctx->user_cb(ctx->user_data, status, claims); + verifier_cb_ctx_destroy(ctx); } -static void on_openid_config_retrieved(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *error) { +static void on_openid_config_retrieved(void *user_data, grpc_error *error) { const grpc_json *cur; verifier_cb_ctx *ctx = (verifier_cb_ctx *)user_data; const grpc_http_response *response = &ctx->responses[HTTP_RESPONSE_OPENID]; @@ -710,20 +701,19 @@ static void on_openid_config_retrieved(grpc_exec_ctx *exec_ctx, void *user_data, extreme memory pressure. */ resource_quota = grpc_resource_quota_create("jwt_verifier"); grpc_httpcli_get( - exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req, - grpc_exec_ctx_now(exec_ctx) + grpc_jwt_verifier_max_delay, + &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req, + grpc_exec_ctx_now() + grpc_jwt_verifier_max_delay, GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx), &ctx->responses[HTTP_RESPONSE_KEYS]); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); grpc_json_destroy(json); gpr_free(req.host); return; error: if (json != NULL) grpc_json_destroy(json); - ctx->user_cb(exec_ctx, ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, - NULL); - verifier_cb_ctx_destroy(exec_ctx, ctx); + ctx->user_cb(ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, NULL); + verifier_cb_ctx_destroy(ctx); } static email_key_mapping *verifier_get_mapping(grpc_jwt_verifier *v, @@ -771,8 +761,7 @@ const char *grpc_jwt_issuer_email_domain(const char *issuer) { } /* Takes ownership of ctx. */ -static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx, - verifier_cb_ctx *ctx) { +static void retrieve_key_and_verify(verifier_cb_ctx *ctx) { const char *email_domain; grpc_closure *http_cb; char *path_prefix = NULL; @@ -838,23 +827,20 @@ static void retrieve_key_and_verify(grpc_exec_ctx *exec_ctx, channel. This would allow us to cancel an authentication query when under extreme memory pressure. */ resource_quota = grpc_resource_quota_create("jwt_verifier"); - grpc_httpcli_get(exec_ctx, &ctx->verifier->http_ctx, &ctx->pollent, - resource_quota, &req, - grpc_exec_ctx_now(exec_ctx) + grpc_jwt_verifier_max_delay, + grpc_httpcli_get(&ctx->verifier->http_ctx, &ctx->pollent, resource_quota, + &req, grpc_exec_ctx_now() + grpc_jwt_verifier_max_delay, http_cb, &ctx->responses[rsp_idx]); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); gpr_free(req.host); gpr_free(req.http.path); return; error: - ctx->user_cb(exec_ctx, ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, - NULL); - verifier_cb_ctx_destroy(exec_ctx, ctx); + ctx->user_cb(ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, NULL); + verifier_cb_ctx_destroy(ctx); } -void grpc_jwt_verifier_verify(grpc_exec_ctx *exec_ctx, - grpc_jwt_verifier *verifier, +void grpc_jwt_verifier_verify(grpc_jwt_verifier *verifier, grpc_pollset *pollset, const char *jwt, const char *audience, grpc_jwt_verification_done_cb cb, @@ -872,35 +858,32 @@ void grpc_jwt_verifier_verify(grpc_exec_ctx *exec_ctx, GPR_ASSERT(verifier != NULL && jwt != NULL && audience != NULL && cb != NULL); dot = strchr(cur, '.'); if (dot == NULL) goto error; - json = parse_json_part_from_jwt(exec_ctx, cur, (size_t)(dot - cur), - &header_buffer); + json = parse_json_part_from_jwt(cur, (size_t)(dot - cur), &header_buffer); if (json == NULL) goto error; - header = jose_header_from_json(exec_ctx, json, header_buffer); + header = jose_header_from_json(json, header_buffer); if (header == NULL) goto error; cur = dot + 1; dot = strchr(cur, '.'); if (dot == NULL) goto error; - json = parse_json_part_from_jwt(exec_ctx, cur, (size_t)(dot - cur), - &claims_buffer); + json = parse_json_part_from_jwt(cur, (size_t)(dot - cur), &claims_buffer); if (json == NULL) goto error; - claims = grpc_jwt_claims_from_json(exec_ctx, json, claims_buffer); + claims = grpc_jwt_claims_from_json(json, claims_buffer); if (claims == NULL) goto error; signed_jwt_len = (size_t)(dot - jwt); cur = dot + 1; - signature = grpc_base64_decode(exec_ctx, cur, 1); + signature = grpc_base64_decode(cur, 1); if (GRPC_SLICE_IS_EMPTY(signature)) goto error; retrieve_key_and_verify( - exec_ctx, verifier_cb_ctx_create(verifier, pollset, header, claims, audience, signature, jwt, signed_jwt_len, user_data, cb)); return; error: - if (header != NULL) jose_header_destroy(exec_ctx, header); - if (claims != NULL) grpc_jwt_claims_destroy(exec_ctx, claims); - cb(exec_ctx, user_data, GRPC_JWT_VERIFIER_BAD_FORMAT, NULL); + if (header != NULL) jose_header_destroy(header); + if (claims != NULL) grpc_jwt_claims_destroy(claims); + cb(user_data, GRPC_JWT_VERIFIER_BAD_FORMAT, NULL); } grpc_jwt_verifier *grpc_jwt_verifier_create( @@ -927,10 +910,10 @@ grpc_jwt_verifier *grpc_jwt_verifier_create( return v; } -void grpc_jwt_verifier_destroy(grpc_exec_ctx *exec_ctx, grpc_jwt_verifier *v) { +void grpc_jwt_verifier_destroy(grpc_jwt_verifier *v) { size_t i; if (v == NULL) return; - grpc_httpcli_context_destroy(exec_ctx, &v->http_ctx); + grpc_httpcli_context_destroy(&v->http_ctx); if (v->mappings != NULL) { for (i = 0; i < v->num_mappings; i++) { gpr_free(v->mappings[i].email_domain); diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.h b/src/core/lib/security/credentials/jwt/jwt_verifier.h index 998365e75c8..671a52d7395 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.h +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.h @@ -55,7 +55,7 @@ const char *grpc_jwt_verifier_status_to_string(grpc_jwt_verifier_status status); typedef struct grpc_jwt_claims grpc_jwt_claims; -void grpc_jwt_claims_destroy(grpc_exec_ctx *exec_ctx, grpc_jwt_claims *claims); +void grpc_jwt_claims_destroy(grpc_jwt_claims *claims); /* Returns the whole JSON tree of the claims. */ const grpc_json *grpc_jwt_claims_json(const grpc_jwt_claims *claims); @@ -98,21 +98,18 @@ grpc_jwt_verifier *grpc_jwt_verifier_create( size_t num_mappings); /*The verifier must not be destroyed if there are still outstanding callbacks.*/ -void grpc_jwt_verifier_destroy(grpc_exec_ctx *exec_ctx, - grpc_jwt_verifier *verifier); +void grpc_jwt_verifier_destroy(grpc_jwt_verifier *verifier); /* User provided callback that will be called when the verification of the JWT is done (maybe in another thread). It is the responsibility of the callee to call grpc_jwt_claims_destroy on the claims. */ -typedef void (*grpc_jwt_verification_done_cb)(grpc_exec_ctx *exec_ctx, - void *user_data, +typedef void (*grpc_jwt_verification_done_cb)(void *user_data, grpc_jwt_verifier_status status, grpc_jwt_claims *claims); /* Verifies for the JWT for the given expected audience. */ -void grpc_jwt_verifier_verify(grpc_exec_ctx *exec_ctx, - grpc_jwt_verifier *verifier, +void grpc_jwt_verifier_verify(grpc_jwt_verifier *verifier, grpc_pollset *pollset, const char *jwt, const char *audience, grpc_jwt_verification_done_cb cb, @@ -120,8 +117,7 @@ void grpc_jwt_verifier_verify(grpc_exec_ctx *exec_ctx, /* --- TESTING ONLY exposed functions. --- */ -grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_exec_ctx *exec_ctx, - grpc_json *json, grpc_slice buffer); +grpc_jwt_claims *grpc_jwt_claims_from_json(grpc_json *json, grpc_slice buffer); grpc_jwt_verifier_status grpc_jwt_claims_check(const grpc_jwt_claims *claims, const char *audience); const char *grpc_jwt_issuer_email_domain(const char *issuer); diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc index f52a424e363..7dd75ed4e37 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc @@ -103,21 +103,19 @@ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token *refresh_token) { // Oauth2 Token Fetcher credentials. // -static void oauth2_token_fetcher_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void oauth2_token_fetcher_destruct(grpc_call_credentials *creds) { grpc_oauth2_token_fetcher_credentials *c = (grpc_oauth2_token_fetcher_credentials *)creds; - GRPC_MDELEM_UNREF(exec_ctx, c->access_token_md); + GRPC_MDELEM_UNREF(c->access_token_md); gpr_mu_destroy(&c->mu); - grpc_pollset_set_destroy(exec_ctx, - grpc_polling_entity_pollset_set(&c->pollent)); - grpc_httpcli_context_destroy(exec_ctx, &c->httpcli_context); + grpc_pollset_set_destroy(grpc_polling_entity_pollset_set(&c->pollent)); + grpc_httpcli_context_destroy(&c->httpcli_context); } grpc_credentials_status grpc_oauth2_token_fetcher_credentials_parse_server_response( - grpc_exec_ctx *exec_ctx, const grpc_http_response *response, - grpc_mdelem *token_md, grpc_millis *token_lifetime) { + const grpc_http_response *response, grpc_mdelem *token_md, + grpc_millis *token_lifetime) { char *null_terminated_body = NULL; char *new_access_token = NULL; grpc_credentials_status status = GRPC_CREDENTIALS_OK; @@ -184,9 +182,8 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( gpr_asprintf(&new_access_token, "%s %s", token_type->value, access_token->value); *token_lifetime = strtol(expires_in->value, NULL, 10) * GPR_MS_PER_SEC; - if (!GRPC_MDISNULL(*token_md)) GRPC_MDELEM_UNREF(exec_ctx, *token_md); + if (!GRPC_MDISNULL(*token_md)) GRPC_MDELEM_UNREF(*token_md); *token_md = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), grpc_slice_from_copied_string(new_access_token)); status = GRPC_CREDENTIALS_OK; @@ -194,7 +191,7 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response( end: if (status != GRPC_CREDENTIALS_OK && !GRPC_MDISNULL(*token_md)) { - GRPC_MDELEM_UNREF(exec_ctx, *token_md); + GRPC_MDELEM_UNREF(*token_md); *token_md = GRPC_MDNULL; } if (null_terminated_body != NULL) gpr_free(null_terminated_body); @@ -203,8 +200,7 @@ end: return status; } -static void on_oauth2_token_fetcher_http_response(grpc_exec_ctx *exec_ctx, - void *user_data, +static void on_oauth2_token_fetcher_http_response(void *user_data, grpc_error *error) { GRPC_LOG_IF_ERROR("oauth_fetch", GRPC_ERROR_REF(error)); grpc_credentials_metadata_request *r = @@ -215,14 +211,13 @@ static void on_oauth2_token_fetcher_http_response(grpc_exec_ctx *exec_ctx, grpc_millis token_lifetime; grpc_credentials_status status = grpc_oauth2_token_fetcher_credentials_parse_server_response( - exec_ctx, &r->response, &access_token_md, &token_lifetime); + &r->response, &access_token_md, &token_lifetime); // Update cache and grab list of pending requests. gpr_mu_lock(&c->mu); c->token_fetch_pending = false; c->access_token_md = GRPC_MDELEM_REF(access_token_md); - c->token_expiration = status == GRPC_CREDENTIALS_OK - ? grpc_exec_ctx_now(exec_ctx) + token_lifetime - : 0; + c->token_expiration = + status == GRPC_CREDENTIALS_OK ? grpc_exec_ctx_now() + token_lifetime : 0; grpc_oauth2_pending_get_request_metadata *pending_request = c->pending_requests; c->pending_requests = NULL; @@ -236,24 +231,22 @@ static void on_oauth2_token_fetcher_http_response(grpc_exec_ctx *exec_ctx, error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Error occured when fetching oauth2 token.", &error, 1); } - GRPC_CLOSURE_SCHED(exec_ctx, pending_request->on_request_metadata, error); + GRPC_CLOSURE_SCHED(pending_request->on_request_metadata, error); grpc_polling_entity_del_from_pollset_set( - exec_ctx, pending_request->pollent, - grpc_polling_entity_pollset_set(&c->pollent)); + pending_request->pollent, grpc_polling_entity_pollset_set(&c->pollent)); grpc_oauth2_pending_get_request_metadata *prev = pending_request; pending_request = pending_request->next; gpr_free(prev); } - GRPC_MDELEM_UNREF(exec_ctx, access_token_md); - grpc_call_credentials_unref(exec_ctx, r->creds); - grpc_credentials_metadata_request_destroy(exec_ctx, r); + GRPC_MDELEM_UNREF(access_token_md); + grpc_call_credentials_unref(r->creds); + grpc_credentials_metadata_request_destroy(r); } static bool oauth2_token_fetcher_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_polling_entity *pollent, grpc_auth_metadata_context context, - grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, - grpc_error **error) { + grpc_call_credentials *creds, grpc_polling_entity *pollent, + grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, + grpc_closure *on_request_metadata, grpc_error **error) { grpc_oauth2_token_fetcher_credentials *c = (grpc_oauth2_token_fetcher_credentials *)creds; // Check if we can use the cached token. @@ -262,13 +255,13 @@ static bool oauth2_token_fetcher_get_request_metadata( grpc_mdelem cached_access_token_md = GRPC_MDNULL; gpr_mu_lock(&c->mu); if (!GRPC_MDISNULL(c->access_token_md) && - (c->token_expiration + grpc_exec_ctx_now(exec_ctx) > refresh_threshold)) { + (c->token_expiration + grpc_exec_ctx_now() > refresh_threshold)) { cached_access_token_md = GRPC_MDELEM_REF(c->access_token_md); } if (!GRPC_MDISNULL(cached_access_token_md)) { gpr_mu_unlock(&c->mu); grpc_credentials_mdelem_array_add(md_array, cached_access_token_md); - GRPC_MDELEM_UNREF(exec_ctx, cached_access_token_md); + GRPC_MDELEM_UNREF(cached_access_token_md); return true; } // Couldn't get the token from the cache. @@ -280,7 +273,7 @@ static bool oauth2_token_fetcher_get_request_metadata( pending_request->on_request_metadata = on_request_metadata; pending_request->pollent = pollent; grpc_polling_entity_add_to_pollset_set( - exec_ctx, pollent, grpc_polling_entity_pollset_set(&c->pollent)); + pollent, grpc_polling_entity_pollset_set(&c->pollent)); pending_request->next = c->pending_requests; c->pending_requests = pending_request; bool start_fetch = false; @@ -291,17 +284,17 @@ static bool oauth2_token_fetcher_get_request_metadata( gpr_mu_unlock(&c->mu); if (start_fetch) { grpc_call_credentials_ref(creds); - c->fetch_func(exec_ctx, grpc_credentials_metadata_request_create(creds), + c->fetch_func(grpc_credentials_metadata_request_create(creds), &c->httpcli_context, &c->pollent, on_oauth2_token_fetcher_http_response, - grpc_exec_ctx_now(exec_ctx) + refresh_threshold); + grpc_exec_ctx_now() + refresh_threshold); } return false; } static void oauth2_token_fetcher_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *creds, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { grpc_oauth2_token_fetcher_credentials *c = (grpc_oauth2_token_fetcher_credentials *)creds; gpr_mu_lock(&c->mu); @@ -317,7 +310,7 @@ static void oauth2_token_fetcher_cancel_get_request_metadata( c->pending_requests = pending_request->next; } // Invoke the callback immediately with an error. - GRPC_CLOSURE_SCHED(exec_ctx, pending_request->on_request_metadata, + GRPC_CLOSURE_SCHED(pending_request->on_request_metadata, GRPC_ERROR_REF(error)); gpr_free(pending_request); break; @@ -351,7 +344,7 @@ static grpc_call_credentials_vtable compute_engine_vtable = { oauth2_token_fetcher_cancel_get_request_metadata}; static void compute_engine_fetch_oauth2( - grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *metadata_req, + grpc_credentials_metadata_request *metadata_req, grpc_httpcli_context *httpcli_context, grpc_polling_entity *pollent, grpc_iomgr_cb_func response_cb, grpc_millis deadline) { grpc_http_header header = {(char *)"Metadata-Flavor", (char *)"Google"}; @@ -367,10 +360,10 @@ static void compute_engine_fetch_oauth2( grpc_resource_quota *resource_quota = grpc_resource_quota_create("oauth2_credentials"); grpc_httpcli_get( - exec_ctx, httpcli_context, pollent, resource_quota, &request, deadline, + httpcli_context, pollent, resource_quota, &request, deadline, GRPC_CLOSURE_CREATE(response_cb, metadata_req, grpc_schedule_on_exec_ctx), &metadata_req->response); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); } grpc_call_credentials *grpc_google_compute_engine_credentials_create( @@ -390,12 +383,11 @@ grpc_call_credentials *grpc_google_compute_engine_credentials_create( // Google Refresh Token credentials. // -static void refresh_token_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void refresh_token_destruct(grpc_call_credentials *creds) { grpc_google_refresh_token_credentials *c = (grpc_google_refresh_token_credentials *)creds; grpc_auth_refresh_token_destruct(&c->refresh_token); - oauth2_token_fetcher_destruct(exec_ctx, &c->base.base); + oauth2_token_fetcher_destruct(&c->base.base); } static grpc_call_credentials_vtable refresh_token_vtable = { @@ -403,7 +395,7 @@ static grpc_call_credentials_vtable refresh_token_vtable = { oauth2_token_fetcher_cancel_get_request_metadata}; static void refresh_token_fetch_oauth2( - grpc_exec_ctx *exec_ctx, grpc_credentials_metadata_request *metadata_req, + grpc_credentials_metadata_request *metadata_req, grpc_httpcli_context *httpcli_context, grpc_polling_entity *pollent, grpc_iomgr_cb_func response_cb, grpc_millis deadline) { grpc_google_refresh_token_credentials *c = @@ -427,11 +419,11 @@ static void refresh_token_fetch_oauth2( grpc_resource_quota *resource_quota = grpc_resource_quota_create("oauth2_credentials_refresh"); grpc_httpcli_post( - exec_ctx, httpcli_context, pollent, resource_quota, &request, body, - strlen(body), deadline, + httpcli_context, pollent, resource_quota, &request, body, strlen(body), + deadline, GRPC_CLOSURE_CREATE(response_cb, metadata_req, grpc_schedule_on_exec_ctx), &metadata_req->response); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); gpr_free(body); } @@ -483,25 +475,23 @@ grpc_call_credentials *grpc_google_refresh_token_credentials_create( // Oauth2 Access Token credentials. // -static void access_token_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void access_token_destruct(grpc_call_credentials *creds) { grpc_access_token_credentials *c = (grpc_access_token_credentials *)creds; - GRPC_MDELEM_UNREF(exec_ctx, c->access_token_md); + GRPC_MDELEM_UNREF(c->access_token_md); } static bool access_token_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_polling_entity *pollent, grpc_auth_metadata_context context, - grpc_credentials_mdelem_array *md_array, grpc_closure *on_request_metadata, - grpc_error **error) { + grpc_call_credentials *creds, grpc_polling_entity *pollent, + grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, + grpc_closure *on_request_metadata, grpc_error **error) { grpc_access_token_credentials *c = (grpc_access_token_credentials *)creds; grpc_credentials_mdelem_array_add(md_array, c->access_token_md); return true; } static void access_token_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *c, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *c, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { GRPC_ERROR_UNREF(error); } @@ -524,11 +514,11 @@ grpc_call_credentials *grpc_access_token_credentials_create( gpr_ref_init(&c->base.refcount, 1); char *token_md_value; gpr_asprintf(&token_md_value, "Bearer %s", access_token); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; c->access_token_md = grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), + grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), grpc_slice_from_copied_string(token_md_value)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(token_md_value); return &c->base; } diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h index c12db896f33..b7b5f587461 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.h @@ -56,8 +56,7 @@ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token *refresh_token); // This object is a base for credentials that need to acquire an oauth2 token // from an http service. -typedef void (*grpc_fetch_oauth2_func)(grpc_exec_ctx *exec_ctx, - grpc_credentials_metadata_request *req, +typedef void (*grpc_fetch_oauth2_func)(grpc_credentials_metadata_request *req, grpc_httpcli_context *http_context, grpc_polling_entity *pollent, grpc_iomgr_cb_func cb, @@ -103,8 +102,8 @@ grpc_refresh_token_credentials_create_from_auth_refresh_token( // Exposed for testing only. grpc_credentials_status grpc_oauth2_token_fetcher_credentials_parse_server_response( - grpc_exec_ctx *exec_ctx, const struct grpc_http_response *response, - grpc_mdelem *token_md, grpc_millis *token_lifetime); + const struct grpc_http_response *response, grpc_mdelem *token_md, + grpc_millis *token_lifetime); #ifdef __cplusplus } diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc index 8106a730fea..c91d147ea53 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc @@ -34,8 +34,7 @@ grpc_tracer_flag grpc_plugin_credentials_trace = GRPC_TRACER_INITIALIZER(false, "plugin_credentials"); -static void plugin_destruct(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds) { +static void plugin_destruct(grpc_call_credentials *creds) { grpc_plugin_credentials *c = (grpc_plugin_credentials *)creds; gpr_mu_destroy(&c->mu); if (c->plugin.state != NULL && c->plugin.destroy != NULL) { @@ -62,18 +61,17 @@ static void pending_request_remove_locked( // When this returns, r->cancelled indicates whether the request was // cancelled before completion. static void pending_request_complete( - grpc_exec_ctx *exec_ctx, grpc_plugin_credentials_pending_request *r) { + grpc_plugin_credentials_pending_request *r) { gpr_mu_lock(&r->creds->mu); if (!r->cancelled) pending_request_remove_locked(r->creds, r); gpr_mu_unlock(&r->creds->mu); // Ref to credentials not needed anymore. - grpc_call_credentials_unref(exec_ctx, &r->creds->base); + grpc_call_credentials_unref(&r->creds->base); } static grpc_error *process_plugin_result( - grpc_exec_ctx *exec_ctx, grpc_plugin_credentials_pending_request *r, - const grpc_metadata *md, size_t num_md, grpc_status_code status, - const char *error_details) { + grpc_plugin_credentials_pending_request *r, const grpc_metadata *md, + size_t num_md, grpc_status_code status, const char *error_details) { grpc_error *error = GRPC_ERROR_NONE; if (status != GRPC_STATUS_OK) { char *msg; @@ -101,11 +99,11 @@ static grpc_error *process_plugin_result( error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal metadata"); } else { for (size_t i = 0; i < num_md; ++i) { - grpc_mdelem mdelem = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_ref_internal(md[i].key), - grpc_slice_ref_internal(md[i].value)); + grpc_mdelem mdelem = + grpc_mdelem_from_slices(grpc_slice_ref_internal(md[i].key), + grpc_slice_ref_internal(md[i].value)); grpc_credentials_mdelem_array_add(r->md_array, mdelem); - GRPC_MDELEM_UNREF(exec_ctx, mdelem); + GRPC_MDELEM_UNREF(mdelem); } } } @@ -118,7 +116,7 @@ static void plugin_md_request_metadata_ready(void *request, grpc_status_code status, const char *error_details) { /* called from application code */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INITIALIZER( + ExecCtx _local_exec_ctx( GRPC_EXEC_CTX_FLAG_IS_FINISHED | GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP, NULL, NULL); grpc_plugin_credentials_pending_request *r = @@ -130,12 +128,12 @@ static void plugin_md_request_metadata_ready(void *request, r->creds, r); } // Remove request from pending list if not previously cancelled. - pending_request_complete(&exec_ctx, r); + pending_request_complete(r); // If it has not been cancelled, process it. if (!r->cancelled) { grpc_error *error = - process_plugin_result(&exec_ctx, r, md, num_md, status, error_details); - GRPC_CLOSURE_SCHED(&exec_ctx, r->on_request_metadata, error); + process_plugin_result(r, md, num_md, status, error_details); + GRPC_CLOSURE_SCHED(r->on_request_metadata, error); } else if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) { gpr_log(GPR_INFO, "plugin_credentials[%p]: request %p: plugin was previously " @@ -143,11 +141,10 @@ static void plugin_md_request_metadata_ready(void *request, r->creds, r); } gpr_free(r); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds, +static bool plugin_get_request_metadata(grpc_call_credentials *creds, grpc_polling_entity *pollent, grpc_auth_metadata_context context, grpc_credentials_mdelem_array *md_array, @@ -195,7 +192,7 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx, } // Returned synchronously. // Remove request from pending list if not previously cancelled. - pending_request_complete(exec_ctx, pending_request); + pending_request_complete(pending_request); // If the request was cancelled, the error will have been returned // asynchronously by plugin_cancel_get_request_metadata(), so return // false. Otherwise, process the result. @@ -214,13 +211,13 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx, "synchronously", c, pending_request); } - *error = process_plugin_result(exec_ctx, pending_request, creds_md, - num_creds_md, status, error_details); + *error = process_plugin_result(pending_request, creds_md, num_creds_md, + status, error_details); } // Clean up. for (size_t i = 0; i < num_creds_md; ++i) { - grpc_slice_unref_internal(exec_ctx, creds_md[i].key); - grpc_slice_unref_internal(exec_ctx, creds_md[i].value); + grpc_slice_unref_internal(creds_md[i].key); + grpc_slice_unref_internal(creds_md[i].value); } gpr_free((void *)error_details); gpr_free(pending_request); @@ -229,8 +226,8 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx, } static void plugin_cancel_get_request_metadata( - grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, - grpc_credentials_mdelem_array *md_array, grpc_error *error) { + grpc_call_credentials *creds, grpc_credentials_mdelem_array *md_array, + grpc_error *error) { grpc_plugin_credentials *c = (grpc_plugin_credentials *)creds; gpr_mu_lock(&c->mu); for (grpc_plugin_credentials_pending_request *pending_request = @@ -242,7 +239,7 @@ static void plugin_cancel_get_request_metadata( pending_request); } pending_request->cancelled = true; - GRPC_CLOSURE_SCHED(exec_ctx, pending_request->on_request_metadata, + GRPC_CLOSURE_SCHED(pending_request->on_request_metadata, GRPC_ERROR_REF(error)); pending_request_remove_locked(c, pending_request); break; diff --git a/src/core/lib/security/credentials/ssl/ssl_credentials.cc b/src/core/lib/security/credentials/ssl/ssl_credentials.cc index 290336adc05..e78c20d34a2 100644 --- a/src/core/lib/security/credentials/ssl/ssl_credentials.cc +++ b/src/core/lib/security/credentials/ssl/ssl_credentials.cc @@ -38,18 +38,16 @@ static void ssl_config_pem_key_cert_pair_destroy( gpr_free((void *)kp->cert_chain); } -static void ssl_destruct(grpc_exec_ctx *exec_ctx, - grpc_channel_credentials *creds) { +static void ssl_destruct(grpc_channel_credentials *creds) { grpc_ssl_credentials *c = (grpc_ssl_credentials *)creds; gpr_free(c->config.pem_root_certs); ssl_config_pem_key_cert_pair_destroy(&c->config.pem_key_cert_pair); } static grpc_security_status ssl_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *creds, - grpc_call_credentials *call_creds, const char *target, - const grpc_channel_args *args, grpc_channel_security_connector **sc, - grpc_channel_args **new_args) { + grpc_channel_credentials *creds, grpc_call_credentials *call_creds, + const char *target, const grpc_channel_args *args, + grpc_channel_security_connector **sc, grpc_channel_args **new_args) { grpc_ssl_credentials *c = (grpc_ssl_credentials *)creds; grpc_security_status status = GRPC_SECURITY_OK; const char *overridden_target_name = NULL; @@ -62,7 +60,8 @@ static grpc_security_status ssl_create_security_connector( } } status = grpc_ssl_channel_security_connector_create( - exec_ctx, creds, call_creds, &c->config, target, overridden_target_name, + creds, call_creds, &c->config, target, overridden_target_name, + sc); if (status != GRPC_SECURITY_OK) { return status; @@ -114,8 +113,7 @@ grpc_channel_credentials *grpc_ssl_credentials_create( // SSL Server Credentials. // -static void ssl_server_destruct(grpc_exec_ctx *exec_ctx, - grpc_server_credentials *creds) { +static void ssl_server_destruct(grpc_server_credentials *creds) { grpc_ssl_server_credentials *c = (grpc_ssl_server_credentials *)creds; size_t i; for (i = 0; i < c->config.num_key_cert_pairs; i++) { @@ -126,11 +124,9 @@ static void ssl_server_destruct(grpc_exec_ctx *exec_ctx, } static grpc_security_status ssl_server_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *creds, - grpc_server_security_connector **sc) { + grpc_server_credentials *creds, grpc_server_security_connector **sc) { grpc_ssl_server_credentials *c = (grpc_ssl_server_credentials *)creds; - return grpc_ssl_server_security_connector_create(exec_ctx, creds, &c->config, - sc); + return grpc_ssl_server_security_connector_create(creds, &c->config, sc); } static grpc_server_credentials_vtable ssl_server_vtable = { diff --git a/src/core/lib/security/transport/client_auth_filter.cc b/src/core/lib/security/transport/client_auth_filter.cc index a8464dbf9e7..8e1853b9ec9 100644 --- a/src/core/lib/security/transport/client_auth_filter.cc +++ b/src/core/lib/security/transport/client_auth_filter.cc @@ -90,8 +90,7 @@ static void add_error(grpc_error **combined, grpc_error *error) { *combined = grpc_error_add_child(*combined, error); } -static void on_credentials_metadata(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *input_error) { +static void on_credentials_metadata(void *arg, grpc_error *input_error) { grpc_transport_stream_op_batch *batch = (grpc_transport_stream_op_batch *)arg; grpc_call_element *elem = (grpc_call_element *)batch->handler_private.extra_arg; @@ -105,16 +104,16 @@ static void on_credentials_metadata(grpc_exec_ctx *exec_ctx, void *arg, batch->payload->send_initial_metadata.send_initial_metadata; for (size_t i = 0; i < calld->md_array.size; ++i) { add_error(&error, grpc_metadata_batch_add_tail( - exec_ctx, mdb, &calld->md_links[i], + mdb, &calld->md_links[i], GRPC_MDELEM_REF(calld->md_array.md[i]))); } } if (error == GRPC_ERROR_NONE) { - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); } else { error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED); - grpc_transport_stream_op_batch_finish_with_failure(exec_ctx, batch, error, + grpc_transport_stream_op_batch_finish_with_failure(batch, error, calld->call_combiner); } } @@ -149,20 +148,17 @@ void build_auth_metadata_context(grpc_security_connector *sc, gpr_free(host); } -static void cancel_get_request_metadata(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void cancel_get_request_metadata(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; if (error != GRPC_ERROR_NONE) { grpc_call_credentials_cancel_get_request_metadata( - exec_ctx, calld->creds, &calld->md_array, GRPC_ERROR_REF(error)); + calld->creds, &calld->md_array, GRPC_ERROR_REF(error)); } - GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, - "cancel_get_request_metadata"); + GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_get_request_metadata"); } -static void send_security_metadata(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void send_security_metadata(grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; @@ -176,7 +172,7 @@ static void send_security_metadata(grpc_exec_ctx *exec_ctx, if (channel_call_creds == NULL && !call_creds_has_md) { /* Skip sending metadata altogether. */ - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); return; } @@ -185,11 +181,10 @@ static void send_security_metadata(grpc_exec_ctx *exec_ctx, ctx->creds, NULL); if (calld->creds == NULL) { grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, batch, - grpc_error_set_int( - GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "Incompatible credentials set on channel and call."), - GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED), + batch, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Incompatible credentials set on channel and call."), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED), calld->call_combiner); return; } @@ -207,30 +202,29 @@ static void send_security_metadata(grpc_exec_ctx *exec_ctx, batch, grpc_schedule_on_exec_ctx); grpc_error *error = GRPC_ERROR_NONE; if (grpc_call_credentials_get_request_metadata( - exec_ctx, calld->creds, calld->pollent, calld->auth_md_context, + calld->creds, calld->pollent, calld->auth_md_context, &calld->md_array, &calld->async_result_closure, &error)) { // Synchronous return; invoke on_credentials_metadata() directly. - on_credentials_metadata(exec_ctx, batch, error); + on_credentials_metadata(batch, error); GRPC_ERROR_UNREF(error); } else { // Async return; register cancellation closure with call combiner. GRPC_CALL_STACK_REF(calld->owning_call, "cancel_get_request_metadata"); grpc_call_combiner_set_notify_on_cancel( - exec_ctx, calld->call_combiner, + calld->call_combiner, GRPC_CLOSURE_INIT(&calld->get_request_metadata_cancel_closure, cancel_get_request_metadata, elem, grpc_schedule_on_exec_ctx)); } } -static void on_host_checked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_host_checked(void *arg, grpc_error *error) { grpc_transport_stream_op_batch *batch = (grpc_transport_stream_op_batch *)arg; grpc_call_element *elem = (grpc_call_element *)batch->handler_private.extra_arg; call_data *calld = (call_data *)elem->call_data; if (error == GRPC_ERROR_NONE) { - send_security_metadata(exec_ctx, elem, batch); + send_security_metadata(elem, batch); } else { char *error_msg; char *host = grpc_slice_to_c_string(calld->host); @@ -238,31 +232,28 @@ static void on_host_checked(grpc_exec_ctx *exec_ctx, void *arg, host); gpr_free(host); grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, batch, - grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg), - GRPC_ERROR_INT_GRPC_STATUS, - GRPC_STATUS_UNAUTHENTICATED), + batch, grpc_error_set_int( + GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg), + GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED), calld->call_combiner); gpr_free(error_msg); } } -static void cancel_check_call_host(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void cancel_check_call_host(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; if (error != GRPC_ERROR_NONE) { grpc_channel_security_connector_cancel_check_call_host( - exec_ctx, chand->security_connector, &calld->async_result_closure, + chand->security_connector, &calld->async_result_closure, GRPC_ERROR_REF(error)); } - GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, "cancel_check_call_host"); + GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_check_call_host"); } static void auth_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { GPR_TIMER_BEGIN("auth_start_transport_stream_op_batch", 0); /* grab pointers to our data from the call element */ @@ -295,13 +286,13 @@ static void auth_start_transport_stream_op_batch( */ if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_AUTHORITY)) { if (calld->have_host) { - grpc_slice_unref_internal(exec_ctx, calld->host); + grpc_slice_unref_internal(calld->host); } calld->host = grpc_slice_ref_internal(GRPC_MDVALUE(md)); calld->have_host = true; } else if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_PATH)) { if (calld->have_method) { - grpc_slice_unref_internal(exec_ctx, calld->method); + grpc_slice_unref_internal(calld->method); } calld->method = grpc_slice_ref_internal(GRPC_MDVALUE(md)); calld->have_method = true; @@ -314,16 +305,16 @@ static void auth_start_transport_stream_op_batch( char *call_host = grpc_slice_to_c_string(calld->host); grpc_error *error = GRPC_ERROR_NONE; if (grpc_channel_security_connector_check_call_host( - exec_ctx, chand->security_connector, call_host, - chand->auth_context, &calld->async_result_closure, &error)) { + chand->security_connector, call_host, chand->auth_context, + &calld->async_result_closure, &error)) { // Synchronous return; invoke on_host_checked() directly. - on_host_checked(exec_ctx, batch, error); + on_host_checked(batch, error); GRPC_ERROR_UNREF(error); } else { // Async return; register cancellation closure with call combiner. GRPC_CALL_STACK_REF(calld->owning_call, "cancel_check_call_host"); grpc_call_combiner_set_notify_on_cancel( - exec_ctx, calld->call_combiner, + calld->call_combiner, GRPC_CLOSURE_INIT(&calld->check_call_host_cancel_closure, cancel_check_call_host, elem, grpc_schedule_on_exec_ctx)); @@ -335,13 +326,12 @@ static void auth_start_transport_stream_op_batch( } /* pass control down the stack */ - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); GPR_TIMER_END("auth_start_transport_stream_op_batch", 0); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; calld->owning_call = args->call_stack; @@ -349,32 +339,30 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void set_pollset_or_pollset_set(grpc_call_element *elem, grpc_polling_entity *pollent) { call_data *calld = (call_data *)elem->call_data; calld->pollent = pollent; } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { call_data *calld = (call_data *)elem->call_data; - grpc_credentials_mdelem_array_destroy(exec_ctx, &calld->md_array); - grpc_call_credentials_unref(exec_ctx, calld->creds); + grpc_credentials_mdelem_array_destroy(&calld->md_array); + grpc_call_credentials_unref(calld->creds); if (calld->have_host) { - grpc_slice_unref_internal(exec_ctx, calld->host); + grpc_slice_unref_internal(calld->host); } if (calld->have_method) { - grpc_slice_unref_internal(exec_ctx, calld->method); + grpc_slice_unref_internal(calld->method); } reset_auth_metadata_context(&calld->auth_md_context); } /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { grpc_security_connector *sc = grpc_security_connector_find_in_args(args->channel_args); @@ -407,13 +395,12 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for channel data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { /* grab pointers to our data from the channel element */ channel_data *chand = (channel_data *)elem->channel_data; grpc_channel_security_connector *sc = chand->security_connector; if (sc != NULL) { - GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, &sc->base, "client_auth_filter"); + GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "client_auth_filter"); } GRPC_AUTH_CONTEXT_UNREF(chand->auth_context, "client_auth_filter"); } diff --git a/src/core/lib/security/transport/lb_targets_info.cc b/src/core/lib/security/transport/lb_targets_info.cc index 947fc1addff..aa01e911d90 100644 --- a/src/core/lib/security/transport/lb_targets_info.cc +++ b/src/core/lib/security/transport/lb_targets_info.cc @@ -28,8 +28,8 @@ static void *targets_info_copy(void *p) { return grpc_slice_hash_table_ref((grpc_slice_hash_table *)p); } -static void targets_info_destroy(grpc_exec_ctx *exec_ctx, void *p) { - grpc_slice_hash_table_unref(exec_ctx, (grpc_slice_hash_table *)p); +static void targets_info_destroy(void *p) { + grpc_slice_hash_table_unref((grpc_slice_hash_table *)p); } static int targets_info_cmp(void *a, void *b) { return grpc_slice_hash_table_cmp((const grpc_slice_hash_table *)a, diff --git a/src/core/lib/security/transport/secure_endpoint.cc b/src/core/lib/security/transport/secure_endpoint.cc index ae5633b82c4..c784f2390f9 100644 --- a/src/core/lib/security/transport/secure_endpoint.cc +++ b/src/core/lib/security/transport/secure_endpoint.cc @@ -64,28 +64,27 @@ typedef struct { grpc_tracer_flag grpc_trace_secure_endpoint = GRPC_TRACER_INITIALIZER(false, "secure_endpoint"); -static void destroy(grpc_exec_ctx *exec_ctx, secure_endpoint *secure_ep) { +static void destroy(secure_endpoint *secure_ep) { secure_endpoint *ep = secure_ep; - grpc_endpoint_destroy(exec_ctx, ep->wrapped_ep); + grpc_endpoint_destroy(ep->wrapped_ep); tsi_frame_protector_destroy(ep->protector); - tsi_zero_copy_grpc_protector_destroy(exec_ctx, ep->zero_copy_protector); - grpc_slice_buffer_destroy_internal(exec_ctx, &ep->leftover_bytes); - grpc_slice_unref_internal(exec_ctx, ep->read_staging_buffer); - grpc_slice_unref_internal(exec_ctx, ep->write_staging_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &ep->output_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &ep->source_buffer); + tsi_zero_copy_grpc_protector_destroy(ep->zero_copy_protector); + grpc_slice_buffer_destroy_internal(&ep->leftover_bytes); + grpc_slice_unref_internal(ep->read_staging_buffer); + grpc_slice_unref_internal(ep->write_staging_buffer); + grpc_slice_buffer_destroy_internal(&ep->output_buffer); + grpc_slice_buffer_destroy_internal(&ep->source_buffer); gpr_mu_destroy(&ep->protector_mu); gpr_free(ep); } #ifndef NDEBUG -#define SECURE_ENDPOINT_UNREF(exec_ctx, ep, reason) \ - secure_endpoint_unref((exec_ctx), (ep), (reason), __FILE__, __LINE__) +#define SECURE_ENDPOINT_UNREF(ep, reason) \ + secure_endpoint_unref((ep), (reason), __FILE__, __LINE__) #define SECURE_ENDPOINT_REF(ep, reason) \ secure_endpoint_ref((ep), (reason), __FILE__, __LINE__) -static void secure_endpoint_unref(grpc_exec_ctx *exec_ctx, secure_endpoint *ep, - const char *reason, const char *file, - int line) { +static void secure_endpoint_unref(secure_endpoint *ep, const char *reason, + const char *file, int line) { if (GRPC_TRACER_ON(grpc_trace_secure_endpoint)) { gpr_atm val = gpr_atm_no_barrier_load(&ep->ref.count); gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, @@ -93,7 +92,7 @@ static void secure_endpoint_unref(grpc_exec_ctx *exec_ctx, secure_endpoint *ep, val - 1); } if (gpr_unref(&ep->ref)) { - destroy(exec_ctx, ep); + destroy(ep); } } @@ -108,13 +107,11 @@ static void secure_endpoint_ref(secure_endpoint *ep, const char *reason, gpr_ref(&ep->ref); } #else -#define SECURE_ENDPOINT_UNREF(exec_ctx, ep, reason) \ - secure_endpoint_unref((exec_ctx), (ep)) +#define SECURE_ENDPOINT_UNREF(ep, reason) secure_endpoint_unref((ep)) #define SECURE_ENDPOINT_REF(ep, reason) secure_endpoint_ref((ep)) -static void secure_endpoint_unref(grpc_exec_ctx *exec_ctx, - secure_endpoint *ep) { +static void secure_endpoint_unref(secure_endpoint *ep) { if (gpr_unref(&ep->ref)) { - destroy(exec_ctx, ep); + destroy(ep); } } @@ -129,8 +126,7 @@ static void flush_read_staging_buffer(secure_endpoint *ep, uint8_t **cur, *end = GRPC_SLICE_END_PTR(ep->read_staging_buffer); } -static void call_read_cb(grpc_exec_ctx *exec_ctx, secure_endpoint *ep, - grpc_error *error) { +static void call_read_cb(secure_endpoint *ep, grpc_error *error) { if (GRPC_TRACER_ON(grpc_trace_secure_endpoint)) { size_t i; for (i = 0; i < ep->read_buffer->count; i++) { @@ -141,12 +137,11 @@ static void call_read_cb(grpc_exec_ctx *exec_ctx, secure_endpoint *ep, } } ep->read_buffer = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, ep->read_cb, error); - SECURE_ENDPOINT_UNREF(exec_ctx, ep, "read"); + GRPC_CLOSURE_SCHED(ep->read_cb, error); + SECURE_ENDPOINT_UNREF(ep, "read"); } -static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *error) { +static void on_read(void *user_data, grpc_error *error) { unsigned i; uint8_t keep_looping = 0; tsi_result result = TSI_OK; @@ -155,16 +150,16 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, uint8_t *end = GRPC_SLICE_END_PTR(ep->read_staging_buffer); if (error != GRPC_ERROR_NONE) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer); - call_read_cb(exec_ctx, ep, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Secure read failed", &error, 1)); + grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer); + call_read_cb(ep, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Secure read failed", &error, 1)); return; } if (ep->zero_copy_protector != NULL) { // Use zero-copy grpc protector to unprotect. result = tsi_zero_copy_grpc_protector_unprotect( - exec_ctx, ep->zero_copy_protector, &ep->source_buffer, ep->read_buffer); + ep->zero_copy_protector, &ep->source_buffer, ep->read_buffer); } else { // Use frame protector to unprotect. /* TODO(yangg) check error, maybe bail out early */ @@ -217,37 +212,35 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, /* TODO(yangg) experiment with moving this block after read_cb to see if it helps latency */ - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->source_buffer); + grpc_slice_buffer_reset_and_unref_internal(&ep->source_buffer); if (result != TSI_OK) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer); + grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer); call_read_cb( - exec_ctx, ep, - grpc_set_tsi_error_result( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unwrap failed"), result)); + ep, grpc_set_tsi_error_result( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unwrap failed"), result)); return; } - call_read_cb(exec_ctx, ep, GRPC_ERROR_NONE); + call_read_cb(ep, GRPC_ERROR_NONE); } -static void endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void endpoint_read(grpc_endpoint *secure_ep, grpc_slice_buffer *slices, + grpc_closure *cb) { secure_endpoint *ep = (secure_endpoint *)secure_ep; ep->read_cb = cb; ep->read_buffer = slices; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer); + grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer); SECURE_ENDPOINT_REF(ep, "read"); if (ep->leftover_bytes.count) { grpc_slice_buffer_swap(&ep->leftover_bytes, &ep->source_buffer); GPR_ASSERT(ep->leftover_bytes.count == 0); - on_read(exec_ctx, ep, GRPC_ERROR_NONE); + on_read(ep, GRPC_ERROR_NONE); return; } - grpc_endpoint_read(exec_ctx, ep->wrapped_ep, &ep->source_buffer, - &ep->on_read); + grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read); } static void flush_write_staging_buffer(secure_endpoint *ep, uint8_t **cur, @@ -258,8 +251,8 @@ static void flush_write_staging_buffer(secure_endpoint *ep, uint8_t **cur, *end = GRPC_SLICE_END_PTR(ep->write_staging_buffer); } -static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void endpoint_write(grpc_endpoint *secure_ep, grpc_slice_buffer *slices, + grpc_closure *cb) { GPR_TIMER_BEGIN("secure_endpoint.endpoint_write", 0); unsigned i; @@ -268,7 +261,7 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep, uint8_t *cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer); uint8_t *end = GRPC_SLICE_END_PTR(ep->write_staging_buffer); - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->output_buffer); + grpc_slice_buffer_reset_and_unref_internal(&ep->output_buffer); if (GRPC_TRACER_ON(grpc_trace_secure_endpoint)) { for (i = 0; i < slices->count; i++) { @@ -281,8 +274,8 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep, if (ep->zero_copy_protector != NULL) { // Use zero-copy grpc protector to protect. - result = tsi_zero_copy_grpc_protector_protect( - exec_ctx, ep->zero_copy_protector, slices, &ep->output_buffer); + result = tsi_zero_copy_grpc_protector_protect(ep->zero_copy_protector, + slices, &ep->output_buffer); } else { // Use frame protector to protect. for (i = 0; i < slices->count; i++) { @@ -340,43 +333,38 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep, if (result != TSI_OK) { /* TODO(yangg) do different things according to the error type? */ - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->output_buffer); + grpc_slice_buffer_reset_and_unref_internal(&ep->output_buffer); GRPC_CLOSURE_SCHED( - exec_ctx, cb, - grpc_set_tsi_error_result( - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Wrap failed"), result)); + cb, grpc_set_tsi_error_result( + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Wrap failed"), result)); GPR_TIMER_END("secure_endpoint.endpoint_write", 0); return; } - grpc_endpoint_write(exec_ctx, ep->wrapped_ep, &ep->output_buffer, cb); + grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb); GPR_TIMER_END("secure_endpoint.endpoint_write", 0); } -static void endpoint_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep, - grpc_error *why) { +static void endpoint_shutdown(grpc_endpoint *secure_ep, grpc_error *why) { secure_endpoint *ep = (secure_endpoint *)secure_ep; - grpc_endpoint_shutdown(exec_ctx, ep->wrapped_ep, why); + grpc_endpoint_shutdown(ep->wrapped_ep, why); } -static void endpoint_destroy(grpc_exec_ctx *exec_ctx, - grpc_endpoint *secure_ep) { +static void endpoint_destroy(grpc_endpoint *secure_ep) { secure_endpoint *ep = (secure_endpoint *)secure_ep; - SECURE_ENDPOINT_UNREF(exec_ctx, ep, "destroy"); + SECURE_ENDPOINT_UNREF(ep, "destroy"); } -static void endpoint_add_to_pollset(grpc_exec_ctx *exec_ctx, - grpc_endpoint *secure_ep, +static void endpoint_add_to_pollset(grpc_endpoint *secure_ep, grpc_pollset *pollset) { secure_endpoint *ep = (secure_endpoint *)secure_ep; - grpc_endpoint_add_to_pollset(exec_ctx, ep->wrapped_ep, pollset); + grpc_endpoint_add_to_pollset(ep->wrapped_ep, pollset); } -static void endpoint_add_to_pollset_set(grpc_exec_ctx *exec_ctx, - grpc_endpoint *secure_ep, +static void endpoint_add_to_pollset_set(grpc_endpoint *secure_ep, grpc_pollset_set *pollset_set) { secure_endpoint *ep = (secure_endpoint *)secure_ep; - grpc_endpoint_add_to_pollset_set(exec_ctx, ep->wrapped_ep, pollset_set); + grpc_endpoint_add_to_pollset_set(ep->wrapped_ep, pollset_set); } static char *endpoint_get_peer(grpc_endpoint *secure_ep) { diff --git a/src/core/lib/security/transport/security_connector.cc b/src/core/lib/security/transport/security_connector.cc index 80d9a7b77f6..d8259dd1305 100644 --- a/src/core/lib/security/transport/security_connector.cc +++ b/src/core/lib/security/transport/security_connector.cc @@ -106,33 +106,32 @@ const tsi_peer_property *tsi_peer_get_property_by_name(const tsi_peer *peer, } void grpc_channel_security_connector_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *connector, + grpc_channel_security_connector *connector, grpc_handshake_manager *handshake_mgr) { if (connector != NULL) { - connector->add_handshakers(exec_ctx, connector, handshake_mgr); + connector->add_handshakers(connector, handshake_mgr); } } void grpc_server_security_connector_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_server_security_connector *connector, + grpc_server_security_connector *connector, grpc_handshake_manager *handshake_mgr) { if (connector != NULL) { - connector->add_handshakers(exec_ctx, connector, handshake_mgr); + connector->add_handshakers(connector, handshake_mgr); } } -void grpc_security_connector_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, +void grpc_security_connector_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { if (sc == NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, on_peer_checked, + GRPC_CLOSURE_SCHED(on_peer_checked, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "cannot check peer -- no security connector")); tsi_peer_destruct(&peer); } else { - sc->vtable->check_peer(exec_ctx, sc, peer, auth_context, on_peer_checked); + sc->vtable->check_peer(sc, peer, auth_context, on_peer_checked); } } @@ -170,26 +169,26 @@ int grpc_server_security_connector_cmp(grpc_server_security_connector *sc1, } bool grpc_channel_security_connector_check_call_host( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, - const char *host, grpc_auth_context *auth_context, - grpc_closure *on_call_host_checked, grpc_error **error) { + grpc_channel_security_connector *sc, const char *host, + grpc_auth_context *auth_context, grpc_closure *on_call_host_checked, + grpc_error **error) { if (sc == NULL || sc->check_call_host == NULL) { *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "cannot check call host -- no security connector"); return true; } - return sc->check_call_host(exec_ctx, sc, host, auth_context, - on_call_host_checked, error); + return sc->check_call_host(sc, host, auth_context, on_call_host_checked, + error); } void grpc_channel_security_connector_cancel_check_call_host( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, - grpc_closure *on_call_host_checked, grpc_error *error) { + grpc_channel_security_connector *sc, grpc_closure *on_call_host_checked, + grpc_error *error) { if (sc == NULL || sc->cancel_check_call_host == NULL) { GRPC_ERROR_UNREF(error); return; } - sc->cancel_check_call_host(exec_ctx, sc, on_call_host_checked, error); + sc->cancel_check_call_host(sc, on_call_host_checked, error); } #ifndef NDEBUG @@ -213,8 +212,7 @@ grpc_security_connector *grpc_security_connector_ref( } #ifndef NDEBUG -void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, +void grpc_security_connector_unref(grpc_security_connector *sc, const char *file, int line, const char *reason) { if (sc == NULL) return; @@ -225,15 +223,14 @@ void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx, val, val - 1, reason); } #else -void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc) { +void grpc_security_connector_unref(grpc_security_connector *sc) { if (sc == NULL) return; #endif - if (gpr_unref(&sc->refcount)) sc->vtable->destroy(exec_ctx, sc); + if (gpr_unref(&sc->refcount)) sc->vtable->destroy(sc); } -static void connector_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) { - GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, (grpc_security_connector *)p, +static void connector_arg_destroy(void *p) { + GRPC_SECURITY_CONNECTOR_UNREF((grpc_security_connector *)p, "connector_arg_destroy"); } @@ -286,20 +283,16 @@ typedef struct { bool is_lb_channel; } grpc_fake_channel_security_connector; -static void fake_channel_destroy(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc) { +static void fake_channel_destroy(grpc_security_connector *sc) { grpc_fake_channel_security_connector *c = (grpc_fake_channel_security_connector *)sc; - grpc_call_credentials_unref(exec_ctx, c->base.request_metadata_creds); + grpc_call_credentials_unref(c->base.request_metadata_creds); gpr_free(c->target); gpr_free(c->expected_targets); gpr_free(c); } -static void fake_server_destroy(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc) { - gpr_free(sc); -} +static void fake_server_destroy(grpc_security_connector *sc) { gpr_free(sc); } static bool fake_check_target(const char *target_type, const char *target, const char *set_str) { @@ -363,8 +356,7 @@ done: if (!success) abort(); } -static void fake_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, tsi_peer peer, +static void fake_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { const char *prop_name; @@ -396,25 +388,23 @@ static void fake_check_peer(grpc_exec_ctx *exec_ctx, *auth_context, GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME, GRPC_FAKE_TRANSPORT_SECURITY_TYPE); end: - GRPC_CLOSURE_SCHED(exec_ctx, on_peer_checked, error); + GRPC_CLOSURE_SCHED(on_peer_checked, error); tsi_peer_destruct(&peer); } -static void fake_channel_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, tsi_peer peer, +static void fake_channel_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { - fake_check_peer(exec_ctx, sc, peer, auth_context, on_peer_checked); + fake_check_peer(sc, peer, auth_context, on_peer_checked); grpc_fake_channel_security_connector *c = (grpc_fake_channel_security_connector *)sc; fake_secure_name_check(c->target, c->expected_targets, c->is_lb_channel); } -static void fake_server_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, tsi_peer peer, +static void fake_server_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { - fake_check_peer(exec_ctx, sc, peer, auth_context, on_peer_checked); + fake_check_peer(sc, peer, auth_context, on_peer_checked); } static int fake_channel_cmp(grpc_security_connector *sc1, @@ -443,8 +433,7 @@ static int fake_server_cmp(grpc_security_connector *sc1, (grpc_server_security_connector *)sc2); } -static bool fake_channel_check_call_host(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, +static bool fake_channel_check_call_host(grpc_channel_security_connector *sc, const char *host, grpc_auth_context *auth_context, grpc_closure *on_call_host_checked, @@ -453,29 +442,26 @@ static bool fake_channel_check_call_host(grpc_exec_ctx *exec_ctx, } static void fake_channel_cancel_check_call_host( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, - grpc_closure *on_call_host_checked, grpc_error *error) { + grpc_channel_security_connector *sc, grpc_closure *on_call_host_checked, + grpc_error *error) { GRPC_ERROR_UNREF(error); } static void fake_channel_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, + grpc_channel_security_connector *sc, grpc_handshake_manager *handshake_mgr) { grpc_handshake_manager_add( handshake_mgr, grpc_security_handshaker_create( - exec_ctx, tsi_create_fake_handshaker(true /* is_client */), - &sc->base)); + tsi_create_fake_handshaker(true /* is_client */), &sc->base)); } -static void fake_server_add_handshakers(grpc_exec_ctx *exec_ctx, - grpc_server_security_connector *sc, +static void fake_server_add_handshakers(grpc_server_security_connector *sc, grpc_handshake_manager *handshake_mgr) { grpc_handshake_manager_add( handshake_mgr, grpc_security_handshaker_create( - exec_ctx, tsi_create_fake_handshaker(false /* is_client */), - &sc->base)); + tsi_create_fake_handshaker(false /* is_client */), &sc->base)); } static grpc_security_connector_vtable fake_channel_vtable = { @@ -533,12 +519,11 @@ typedef struct { tsi_ssl_server_handshaker_factory *server_handshaker_factory; } grpc_ssl_server_security_connector; -static void ssl_channel_destroy(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc) { +static void ssl_channel_destroy(grpc_security_connector *sc) { grpc_ssl_channel_security_connector *c = (grpc_ssl_channel_security_connector *)sc; - grpc_channel_credentials_unref(exec_ctx, c->base.channel_creds); - grpc_call_credentials_unref(exec_ctx, c->base.request_metadata_creds); + grpc_channel_credentials_unref(c->base.channel_creds); + grpc_call_credentials_unref(c->base.request_metadata_creds); tsi_ssl_client_handshaker_factory_unref(c->client_handshaker_factory); c->client_handshaker_factory = NULL; if (c->target_name != NULL) gpr_free(c->target_name); @@ -546,18 +531,16 @@ static void ssl_channel_destroy(grpc_exec_ctx *exec_ctx, gpr_free(sc); } -static void ssl_server_destroy(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc) { +static void ssl_server_destroy(grpc_security_connector *sc) { grpc_ssl_server_security_connector *c = (grpc_ssl_server_security_connector *)sc; - grpc_server_credentials_unref(exec_ctx, c->base.server_creds); + grpc_server_credentials_unref(c->base.server_creds); tsi_ssl_server_handshaker_factory_unref(c->server_handshaker_factory); c->server_handshaker_factory = NULL; gpr_free(sc); } -static void ssl_channel_add_handshakers(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, +static void ssl_channel_add_handshakers(grpc_channel_security_connector *sc, grpc_handshake_manager *handshake_mgr) { grpc_ssl_channel_security_connector *c = (grpc_ssl_channel_security_connector *)sc; @@ -576,13 +559,11 @@ static void ssl_channel_add_handshakers(grpc_exec_ctx *exec_ctx, // Create handshakers. grpc_handshake_manager_add( - handshake_mgr, - grpc_security_handshaker_create( - exec_ctx, tsi_create_adapter_handshaker(tsi_hs), &sc->base)); + handshake_mgr, grpc_security_handshaker_create( + tsi_create_adapter_handshaker(tsi_hs), &sc->base)); } -static void ssl_server_add_handshakers(grpc_exec_ctx *exec_ctx, - grpc_server_security_connector *sc, +static void ssl_server_add_handshakers(grpc_server_security_connector *sc, grpc_handshake_manager *handshake_mgr) { grpc_ssl_server_security_connector *c = (grpc_ssl_server_security_connector *)sc; @@ -598,9 +579,8 @@ static void ssl_server_add_handshakers(grpc_exec_ctx *exec_ctx, // Create handshakers. grpc_handshake_manager_add( - handshake_mgr, - grpc_security_handshaker_create( - exec_ctx, tsi_create_adapter_handshaker(tsi_hs), &sc->base)); + handshake_mgr, grpc_security_handshaker_create( + tsi_create_adapter_handshaker(tsi_hs), &sc->base)); } static int ssl_host_matches_name(const tsi_peer *peer, const char *peer_name) { @@ -684,8 +664,7 @@ static grpc_error *ssl_check_peer(grpc_security_connector *sc, return GRPC_ERROR_NONE; } -static void ssl_channel_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, tsi_peer peer, +static void ssl_channel_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { grpc_ssl_channel_security_connector *c = @@ -694,17 +673,16 @@ static void ssl_channel_check_peer(grpc_exec_ctx *exec_ctx, ? c->overridden_target_name : c->target_name, &peer, auth_context); - GRPC_CLOSURE_SCHED(exec_ctx, on_peer_checked, error); + GRPC_CLOSURE_SCHED(on_peer_checked, error); tsi_peer_destruct(&peer); } -static void ssl_server_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, tsi_peer peer, +static void ssl_server_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked) { grpc_error *error = ssl_check_peer(sc, NULL, &peer, auth_context); tsi_peer_destruct(&peer); - GRPC_CLOSURE_SCHED(exec_ctx, on_peer_checked, error); + GRPC_CLOSURE_SCHED(on_peer_checked, error); } static int ssl_channel_cmp(grpc_security_connector *sc1, @@ -774,8 +752,7 @@ void tsi_shallow_peer_destruct(tsi_peer *peer) { if (peer->properties != NULL) gpr_free(peer->properties); } -static bool ssl_channel_check_call_host(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, +static bool ssl_channel_check_call_host(grpc_channel_security_connector *sc, const char *host, grpc_auth_context *auth_context, grpc_closure *on_call_host_checked, @@ -800,8 +777,8 @@ static bool ssl_channel_check_call_host(grpc_exec_ctx *exec_ctx, } static void ssl_channel_cancel_check_call_host( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, - grpc_closure *on_call_host_checked, grpc_error *error) { + grpc_channel_security_connector *sc, grpc_closure *on_call_host_checked, + grpc_error *error) { GRPC_ERROR_UNREF(error); } @@ -893,7 +870,7 @@ const char *grpc_get_default_ssl_roots(void) { } grpc_security_status grpc_ssl_channel_security_connector_create( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *channel_creds, + grpc_channel_credentials *channel_creds, grpc_call_credentials *request_metadata_creds, const grpc_ssl_config *config, const char *target_name, const char *overridden_target_name, grpc_channel_security_connector **sc) { @@ -951,7 +928,7 @@ grpc_security_status grpc_ssl_channel_security_connector_create( if (result != TSI_OK) { gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.", tsi_result_to_string(result)); - ssl_channel_destroy(exec_ctx, &c->base.base); + ssl_channel_destroy(&c->base.base); *sc = NULL; goto error; } @@ -965,8 +942,8 @@ error: } grpc_security_status grpc_ssl_server_security_connector_create( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *server_creds, - const grpc_ssl_server_config *config, grpc_server_security_connector **sc) { + grpc_server_credentials *server_creds, const grpc_ssl_server_config *config, + grpc_server_security_connector **sc) { size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions(); const char **alpn_protocol_strings = (const char **)gpr_malloc(sizeof(const char *) * num_alpn_protocols); @@ -998,7 +975,7 @@ grpc_security_status grpc_ssl_server_security_connector_create( if (result != TSI_OK) { gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.", tsi_result_to_string(result)); - ssl_server_destroy(exec_ctx, &c->base.base); + ssl_server_destroy(&c->base.base); *sc = NULL; goto error; } diff --git a/src/core/lib/security/transport/security_connector.h b/src/core/lib/security/transport/security_connector.h index 216bb35e811..78340457726 100644 --- a/src/core/lib/security/transport/security_connector.h +++ b/src/core/lib/security/transport/security_connector.h @@ -56,9 +56,9 @@ typedef struct grpc_security_connector grpc_security_connector; #define GRPC_ARG_SECURITY_CONNECTOR "grpc.security_connector" typedef struct { - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_security_connector *sc); - void (*check_peer)(grpc_exec_ctx *exec_ctx, grpc_security_connector *sc, - tsi_peer peer, grpc_auth_context **auth_context, + void (*destroy)(grpc_security_connector *sc); + void (*check_peer)(grpc_security_connector *sc, tsi_peer peer, + grpc_auth_context **auth_context, grpc_closure *on_peer_checked); int (*cmp)(grpc_security_connector *sc, grpc_security_connector *other); } grpc_security_connector_vtable; @@ -73,29 +73,25 @@ struct grpc_security_connector { #ifndef NDEBUG #define GRPC_SECURITY_CONNECTOR_REF(p, r) \ grpc_security_connector_ref((p), __FILE__, __LINE__, (r)) -#define GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, p, r) \ - grpc_security_connector_unref((exec_ctx), (p), __FILE__, __LINE__, (r)) +#define GRPC_SECURITY_CONNECTOR_UNREF(p, r) \ + grpc_security_connector_unref((p), __FILE__, __LINE__, (r)) grpc_security_connector *grpc_security_connector_ref( grpc_security_connector *policy, const char *file, int line, const char *reason); -void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx, - grpc_security_connector *policy, +void grpc_security_connector_unref(grpc_security_connector *policy, const char *file, int line, const char *reason); #else #define GRPC_SECURITY_CONNECTOR_REF(p, r) grpc_security_connector_ref((p)) -#define GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, p, r) \ - grpc_security_connector_unref((exec_ctx), (p)) +#define GRPC_SECURITY_CONNECTOR_UNREF(p, r) grpc_security_connector_unref((p)) grpc_security_connector *grpc_security_connector_ref( grpc_security_connector *policy); -void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx, - grpc_security_connector *policy); +void grpc_security_connector_unref(grpc_security_connector *policy); #endif /* Check the peer. Callee takes ownership of the peer object. When done, sets *auth_context and invokes on_peer_checked. */ -void grpc_security_connector_check_peer(grpc_exec_ctx *exec_ctx, - grpc_security_connector *sc, +void grpc_security_connector_check_peer(grpc_security_connector *sc, tsi_peer peer, grpc_auth_context **auth_context, grpc_closure *on_peer_checked); @@ -125,17 +121,14 @@ struct grpc_channel_security_connector { grpc_security_connector base; grpc_channel_credentials *channel_creds; grpc_call_credentials *request_metadata_creds; - bool (*check_call_host)(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, const char *host, + bool (*check_call_host)(grpc_channel_security_connector *sc, const char *host, grpc_auth_context *auth_context, grpc_closure *on_call_host_checked, grpc_error **error); - void (*cancel_check_call_host)(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, + void (*cancel_check_call_host)(grpc_channel_security_connector *sc, grpc_closure *on_call_host_checked, grpc_error *error); - void (*add_handshakers)(grpc_exec_ctx *exec_ctx, - grpc_channel_security_connector *sc, + void (*add_handshakers)(grpc_channel_security_connector *sc, grpc_handshake_manager *handshake_mgr); }; @@ -148,20 +141,20 @@ int grpc_channel_security_connector_cmp(grpc_channel_security_connector *sc1, /// be set to indicate the result. Otherwise, \a on_call_host_checked /// will be invoked when complete. bool grpc_channel_security_connector_check_call_host( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, - const char *host, grpc_auth_context *auth_context, - grpc_closure *on_call_host_checked, grpc_error **error); + grpc_channel_security_connector *sc, const char *host, + grpc_auth_context *auth_context, grpc_closure *on_call_host_checked, + grpc_error **error); /// Cancels a pending asychronous call to /// grpc_channel_security_connector_check_call_host() with /// \a on_call_host_checked as its callback. void grpc_channel_security_connector_cancel_check_call_host( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc, - grpc_closure *on_call_host_checked, grpc_error *error); + grpc_channel_security_connector *sc, grpc_closure *on_call_host_checked, + grpc_error *error); /* Registers handshakers with \a handshake_mgr. */ void grpc_channel_security_connector_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *connector, + grpc_channel_security_connector *connector, grpc_handshake_manager *handshake_mgr); /* --- server_security_connector object. --- @@ -174,8 +167,7 @@ typedef struct grpc_server_security_connector grpc_server_security_connector; struct grpc_server_security_connector { grpc_security_connector base; grpc_server_credentials *server_creds; - void (*add_handshakers)(grpc_exec_ctx *exec_ctx, - grpc_server_security_connector *sc, + void (*add_handshakers)(grpc_server_security_connector *sc, grpc_handshake_manager *handshake_mgr); }; @@ -184,7 +176,8 @@ int grpc_server_security_connector_cmp(grpc_server_security_connector *sc1, grpc_server_security_connector *sc2); void grpc_server_security_connector_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_server_security_connector *sc, + grpc_server_security_connector *sc, + grpc_handshake_manager *handshake_mgr); /* --- Creation security connectors. --- */ @@ -222,7 +215,7 @@ typedef struct { specific error code otherwise. */ grpc_security_status grpc_ssl_channel_security_connector_create( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *channel_creds, + grpc_channel_credentials *channel_creds, grpc_call_credentials *request_metadata_creds, const grpc_ssl_config *config, const char *target_name, const char *overridden_target_name, grpc_channel_security_connector **sc); @@ -248,8 +241,8 @@ typedef struct { specific error code otherwise. */ grpc_security_status grpc_ssl_server_security_connector_create( - grpc_exec_ctx *exec_ctx, grpc_server_credentials *server_creds, - const grpc_ssl_server_config *config, grpc_server_security_connector **sc); + grpc_server_credentials *server_creds, const grpc_ssl_server_config *config, + grpc_server_security_connector **sc); /* Util. */ const tsi_peer_property *tsi_peer_get_property_by_name(const tsi_peer *peer, diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc index 3d196056177..ff0fc098170 100644 --- a/src/core/lib/security/transport/security_handshaker.cc +++ b/src/core/lib/security/transport/security_handshaker.cc @@ -65,43 +65,40 @@ typedef struct { tsi_handshaker_result *handshaker_result; } security_handshaker; -static void security_handshaker_unref(grpc_exec_ctx *exec_ctx, - security_handshaker *h) { +static void security_handshaker_unref(security_handshaker *h) { if (gpr_unref(&h->refs)) { gpr_mu_destroy(&h->mu); tsi_handshaker_destroy(h->handshaker); tsi_handshaker_result_destroy(h->handshaker_result); if (h->endpoint_to_destroy != NULL) { - grpc_endpoint_destroy(exec_ctx, h->endpoint_to_destroy); + grpc_endpoint_destroy(h->endpoint_to_destroy); } if (h->read_buffer_to_destroy != NULL) { - grpc_slice_buffer_destroy_internal(exec_ctx, h->read_buffer_to_destroy); + grpc_slice_buffer_destroy_internal(h->read_buffer_to_destroy); gpr_free(h->read_buffer_to_destroy); } gpr_free(h->handshake_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &h->outgoing); + grpc_slice_buffer_destroy_internal(&h->outgoing); GRPC_AUTH_CONTEXT_UNREF(h->auth_context, "handshake"); - GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, h->connector, "handshake"); + GRPC_SECURITY_CONNECTOR_UNREF(h->connector, "handshake"); gpr_free(h); } } // Set args fields to NULL, saving the endpoint and read buffer for // later destruction. -static void cleanup_args_for_failure_locked(grpc_exec_ctx *exec_ctx, - security_handshaker *h) { +static void cleanup_args_for_failure_locked(security_handshaker *h) { h->endpoint_to_destroy = h->args->endpoint; h->args->endpoint = NULL; h->read_buffer_to_destroy = h->args->read_buffer; h->args->read_buffer = NULL; - grpc_channel_args_destroy(exec_ctx, h->args->args); + grpc_channel_args_destroy(h->args->args); h->args->args = NULL; } // If the handshake failed or we're shutting down, clean up and invoke the // callback with the error. -static void security_handshake_failed_locked(grpc_exec_ctx *exec_ctx, - security_handshaker *h, +static void security_handshake_failed_locked(security_handshaker *h, grpc_error *error) { if (error == GRPC_ERROR_NONE) { // If we were shut down after the handshake succeeded but before an @@ -116,34 +113,33 @@ static void security_handshake_failed_locked(grpc_exec_ctx *exec_ctx, // before destroying them, even if we know that there are no // pending read/write callbacks. This should be fixed, at which // point this can be removed. - grpc_endpoint_shutdown(exec_ctx, h->args->endpoint, GRPC_ERROR_REF(error)); + grpc_endpoint_shutdown(h->args->endpoint, GRPC_ERROR_REF(error)); // Not shutting down, so the write failed. Clean up before // invoking the callback. - cleanup_args_for_failure_locked(exec_ctx, h); + cleanup_args_for_failure_locked(h); // Set shutdown to true so that subsequent calls to // security_handshaker_shutdown() do nothing. h->shutdown = true; } // Invoke callback. - GRPC_CLOSURE_SCHED(exec_ctx, h->on_handshake_done, error); + GRPC_CLOSURE_SCHED(h->on_handshake_done, error); } -static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx, - security_handshaker *h, grpc_error *error) { +static void on_peer_checked_inner(security_handshaker *h, grpc_error *error) { if (error != GRPC_ERROR_NONE || h->shutdown) { - security_handshake_failed_locked(exec_ctx, h, GRPC_ERROR_REF(error)); + security_handshake_failed_locked(h, GRPC_ERROR_REF(error)); return; } // Create zero-copy frame protector, if implemented. tsi_zero_copy_grpc_protector *zero_copy_protector = NULL; tsi_result result = tsi_handshaker_result_create_zero_copy_grpc_protector( - exec_ctx, h->handshaker_result, NULL, &zero_copy_protector); + h->handshaker_result, NULL, &zero_copy_protector); if (result != TSI_OK && result != TSI_UNIMPLEMENTED) { error = grpc_set_tsi_error_result( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Zero-copy frame protector creation failed"), result); - security_handshake_failed_locked(exec_ctx, h, error); + security_handshake_failed_locked(h, error); return; } // Create frame protector if zero-copy frame protector is NULL. @@ -155,7 +151,7 @@ static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx, error = grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Frame protector creation failed"), result); - security_handshake_failed_locked(exec_ctx, h, error); + security_handshake_failed_locked(h, error); return; } } @@ -170,7 +166,7 @@ static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx, grpc_slice_from_copied_buffer((char *)unused_bytes, unused_bytes_size); h->args->endpoint = grpc_secure_endpoint_create( protector, zero_copy_protector, h->args->endpoint, &slice, 1); - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); } else { h->args->endpoint = grpc_secure_endpoint_create( protector, zero_copy_protector, h->args->endpoint, NULL, 0); @@ -178,31 +174,29 @@ static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx, tsi_handshaker_result_destroy(h->handshaker_result); h->handshaker_result = NULL; // Clear out the read buffer before it gets passed to the transport. - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, h->args->read_buffer); + grpc_slice_buffer_reset_and_unref_internal(h->args->read_buffer); // Add auth context to channel args. grpc_arg auth_context_arg = grpc_auth_context_to_arg(h->auth_context); grpc_channel_args *tmp_args = h->args->args; h->args->args = grpc_channel_args_copy_and_add(tmp_args, &auth_context_arg, 1); - grpc_channel_args_destroy(exec_ctx, tmp_args); + grpc_channel_args_destroy(tmp_args); // Invoke callback. - GRPC_CLOSURE_SCHED(exec_ctx, h->on_handshake_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(h->on_handshake_done, GRPC_ERROR_NONE); // Set shutdown to true so that subsequent calls to // security_handshaker_shutdown() do nothing. h->shutdown = true; } -static void on_peer_checked(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_peer_checked(void *arg, grpc_error *error) { security_handshaker *h = (security_handshaker *)arg; gpr_mu_lock(&h->mu); - on_peer_checked_inner(exec_ctx, h, error); + on_peer_checked_inner(h, error); gpr_mu_unlock(&h->mu); - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); } -static grpc_error *check_peer_locked(grpc_exec_ctx *exec_ctx, - security_handshaker *h) { +static grpc_error *check_peer_locked(security_handshaker *h) { tsi_peer peer; tsi_result result = tsi_handshaker_result_extract_peer(h->handshaker_result, &peer); @@ -210,20 +204,20 @@ static grpc_error *check_peer_locked(grpc_exec_ctx *exec_ctx, return grpc_set_tsi_error_result( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Peer extraction failed"), result); } - grpc_security_connector_check_peer(exec_ctx, h->connector, peer, - &h->auth_context, &h->on_peer_checked); + grpc_security_connector_check_peer(h->connector, peer, &h->auth_context, + &h->on_peer_checked); return GRPC_ERROR_NONE; } static grpc_error *on_handshake_next_done_locked( - grpc_exec_ctx *exec_ctx, security_handshaker *h, tsi_result result, + security_handshaker *h, tsi_result result, const unsigned char *bytes_to_send, size_t bytes_to_send_size, tsi_handshaker_result *handshaker_result) { grpc_error *error = GRPC_ERROR_NONE; // Read more if we need to. if (result == TSI_INCOMPLETE_DATA) { GPR_ASSERT(bytes_to_send_size == 0); - grpc_endpoint_read(exec_ctx, h->args->endpoint, h->args->read_buffer, + grpc_endpoint_read(h->args->endpoint, h->args->read_buffer, &h->on_handshake_data_received_from_peer); return error; } @@ -240,17 +234,17 @@ static grpc_error *on_handshake_next_done_locked( // Send data to peer, if needed. grpc_slice to_send = grpc_slice_from_copied_buffer( (const char *)bytes_to_send, bytes_to_send_size); - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &h->outgoing); + grpc_slice_buffer_reset_and_unref_internal(&h->outgoing); grpc_slice_buffer_add(&h->outgoing, to_send); - grpc_endpoint_write(exec_ctx, h->args->endpoint, &h->outgoing, + grpc_endpoint_write(h->args->endpoint, &h->outgoing, &h->on_handshake_data_sent_to_peer); } else if (handshaker_result == NULL) { // There is nothing to send, but need to read from peer. - grpc_endpoint_read(exec_ctx, h->args->endpoint, h->args->read_buffer, + grpc_endpoint_read(h->args->endpoint, h->args->read_buffer, &h->on_handshake_data_received_from_peer); } else { // Handshake has finished, check peer and so on. - error = check_peer_locked(exec_ctx, h); + error = check_peer_locked(h); } return error; } @@ -261,24 +255,23 @@ static void on_handshake_next_done_grpc_wrapper( security_handshaker *h = (security_handshaker *)user_data; // This callback will be invoked by TSI in a non-grpc thread, so it's // safe to create our own exec_ctx here. - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_mu_lock(&h->mu); - grpc_error *error = - on_handshake_next_done_locked(&exec_ctx, h, result, bytes_to_send, - bytes_to_send_size, handshaker_result); + grpc_error *error = on_handshake_next_done_locked( + h, result, bytes_to_send, bytes_to_send_size, handshaker_result); if (error != GRPC_ERROR_NONE) { - security_handshake_failed_locked(&exec_ctx, h, error); + security_handshake_failed_locked(h, error); gpr_mu_unlock(&h->mu); - security_handshaker_unref(&exec_ctx, h); + security_handshaker_unref(h); } else { gpr_mu_unlock(&h->mu); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static grpc_error *do_handshaker_next_locked( - grpc_exec_ctx *exec_ctx, security_handshaker *h, - const unsigned char *bytes_received, size_t bytes_received_size) { + security_handshaker *h, const unsigned char *bytes_received, + size_t bytes_received_size) { // Invoke TSI handshaker. const unsigned char *bytes_to_send = NULL; size_t bytes_to_send_size = 0; @@ -293,21 +286,20 @@ static grpc_error *do_handshaker_next_locked( return GRPC_ERROR_NONE; } // Handshaker returned synchronously. Invoke callback directly in - // this thread with our existing exec_ctx. - return on_handshake_next_done_locked(exec_ctx, h, result, bytes_to_send, + // this thread with our existing exec_ctx-> + return on_handshake_next_done_locked(h, result, bytes_to_send, bytes_to_send_size, handshaker_result); } -static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx, - void *arg, grpc_error *error) { +static void on_handshake_data_received_from_peer(void *arg, grpc_error *error) { security_handshaker *h = (security_handshaker *)arg; gpr_mu_lock(&h->mu); if (error != GRPC_ERROR_NONE || h->shutdown) { security_handshake_failed_locked( - exec_ctx, h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Handshake read failed", &error, 1)); + h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Handshake read failed", &error, 1)); gpr_mu_unlock(&h->mu); - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); return; } // Copy all slices received. @@ -329,40 +321,39 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx, offset += slice_size; } // Call TSI handshaker. - error = do_handshaker_next_locked(exec_ctx, h, h->handshake_buffer, - bytes_received_size); + error = + do_handshaker_next_locked(h, h->handshake_buffer, bytes_received_size); if (error != GRPC_ERROR_NONE) { - security_handshake_failed_locked(exec_ctx, h, error); + security_handshake_failed_locked(h, error); gpr_mu_unlock(&h->mu); - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); } else { gpr_mu_unlock(&h->mu); } } -static void on_handshake_data_sent_to_peer(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_handshake_data_sent_to_peer(void *arg, grpc_error *error) { security_handshaker *h = (security_handshaker *)arg; gpr_mu_lock(&h->mu); if (error != GRPC_ERROR_NONE || h->shutdown) { security_handshake_failed_locked( - exec_ctx, h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( - "Handshake write failed", &error, 1)); + h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( + "Handshake write failed", &error, 1)); gpr_mu_unlock(&h->mu); - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); return; } // We may be done. if (h->handshaker_result == NULL) { - grpc_endpoint_read(exec_ctx, h->args->endpoint, h->args->read_buffer, + grpc_endpoint_read(h->args->endpoint, h->args->read_buffer, &h->on_handshake_data_received_from_peer); } else { - error = check_peer_locked(exec_ctx, h); + error = check_peer_locked(h); if (error != GRPC_ERROR_NONE) { - security_handshake_failed_locked(exec_ctx, h, error); + security_handshake_failed_locked(h, error); gpr_mu_unlock(&h->mu); - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); return; } } @@ -373,28 +364,25 @@ static void on_handshake_data_sent_to_peer(grpc_exec_ctx *exec_ctx, void *arg, // public handshaker API // -static void security_handshaker_destroy(grpc_exec_ctx *exec_ctx, - grpc_handshaker *handshaker) { +static void security_handshaker_destroy(grpc_handshaker *handshaker) { security_handshaker *h = (security_handshaker *)handshaker; - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); } -static void security_handshaker_shutdown(grpc_exec_ctx *exec_ctx, - grpc_handshaker *handshaker, +static void security_handshaker_shutdown(grpc_handshaker *handshaker, grpc_error *why) { security_handshaker *h = (security_handshaker *)handshaker; gpr_mu_lock(&h->mu); if (!h->shutdown) { h->shutdown = true; - grpc_endpoint_shutdown(exec_ctx, h->args->endpoint, GRPC_ERROR_REF(why)); - cleanup_args_for_failure_locked(exec_ctx, h); + grpc_endpoint_shutdown(h->args->endpoint, GRPC_ERROR_REF(why)); + cleanup_args_for_failure_locked(h); } gpr_mu_unlock(&h->mu); GRPC_ERROR_UNREF(why); } -static void security_handshaker_do_handshake(grpc_exec_ctx *exec_ctx, - grpc_handshaker *handshaker, +static void security_handshaker_do_handshake(grpc_handshaker *handshaker, grpc_tcp_server_acceptor *acceptor, grpc_closure *on_handshake_done, grpc_handshaker_args *args) { @@ -403,11 +391,11 @@ static void security_handshaker_do_handshake(grpc_exec_ctx *exec_ctx, h->args = args; h->on_handshake_done = on_handshake_done; gpr_ref(&h->refs); - grpc_error *error = do_handshaker_next_locked(exec_ctx, h, NULL, 0); + grpc_error *error = do_handshaker_next_locked(h, NULL, 0); if (error != GRPC_ERROR_NONE) { - security_handshake_failed_locked(exec_ctx, h, error); + security_handshake_failed_locked(h, error); gpr_mu_unlock(&h->mu); - security_handshaker_unref(exec_ctx, h); + security_handshaker_unref(h); return; } gpr_mu_unlock(&h->mu); @@ -418,8 +406,7 @@ static const grpc_handshaker_vtable security_handshaker_vtable = { security_handshaker_do_handshake}; static grpc_handshaker *security_handshaker_create( - grpc_exec_ctx *exec_ctx, tsi_handshaker *handshaker, - grpc_security_connector *connector) { + tsi_handshaker *handshaker, grpc_security_connector *connector) { security_handshaker *h = (security_handshaker *)gpr_zalloc(sizeof(security_handshaker)); grpc_handshaker_init(&security_handshaker_vtable, &h->base); @@ -445,23 +432,20 @@ static grpc_handshaker *security_handshaker_create( // fail_handshaker // -static void fail_handshaker_destroy(grpc_exec_ctx *exec_ctx, - grpc_handshaker *handshaker) { +static void fail_handshaker_destroy(grpc_handshaker *handshaker) { gpr_free(handshaker); } -static void fail_handshaker_shutdown(grpc_exec_ctx *exec_ctx, - grpc_handshaker *handshaker, +static void fail_handshaker_shutdown(grpc_handshaker *handshaker, grpc_error *why) { GRPC_ERROR_UNREF(why); } -static void fail_handshaker_do_handshake(grpc_exec_ctx *exec_ctx, - grpc_handshaker *handshaker, +static void fail_handshaker_do_handshake(grpc_handshaker *handshaker, grpc_tcp_server_acceptor *acceptor, grpc_closure *on_handshake_done, grpc_handshaker_args *args) { - GRPC_CLOSURE_SCHED(exec_ctx, on_handshake_done, + GRPC_CLOSURE_SCHED(on_handshake_done, GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Failed to create security handshaker")); } @@ -481,27 +465,27 @@ static grpc_handshaker *fail_handshaker_create() { // static void client_handshaker_factory_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory, - const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr) { + grpc_handshaker_factory *handshaker_factory, const grpc_channel_args *args, + grpc_handshake_manager *handshake_mgr) { grpc_channel_security_connector *security_connector = (grpc_channel_security_connector *)grpc_security_connector_find_in_args( args); - grpc_channel_security_connector_add_handshakers(exec_ctx, security_connector, + grpc_channel_security_connector_add_handshakers(security_connector, handshake_mgr); } static void server_handshaker_factory_add_handshakers( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *hf, - const grpc_channel_args *args, grpc_handshake_manager *handshake_mgr) { + grpc_handshaker_factory *hf, const grpc_channel_args *args, + grpc_handshake_manager *handshake_mgr) { grpc_server_security_connector *security_connector = (grpc_server_security_connector *)grpc_security_connector_find_in_args( args); - grpc_server_security_connector_add_handshakers(exec_ctx, security_connector, + grpc_server_security_connector_add_handshakers(security_connector, handshake_mgr); } static void handshaker_factory_destroy( - grpc_exec_ctx *exec_ctx, grpc_handshaker_factory *handshaker_factory) {} + grpc_handshaker_factory *handshaker_factory) {} static const grpc_handshaker_factory_vtable client_handshaker_factory_vtable = { client_handshaker_factory_add_handshakers, handshaker_factory_destroy}; @@ -520,14 +504,13 @@ static grpc_handshaker_factory server_handshaker_factory = { // grpc_handshaker *grpc_security_handshaker_create( - grpc_exec_ctx *exec_ctx, tsi_handshaker *handshaker, - grpc_security_connector *connector) { + tsi_handshaker *handshaker, grpc_security_connector *connector) { // If no TSI handshaker was created, return a handshaker that always fails. // Otherwise, return a real security handshaker. if (handshaker == NULL) { return fail_handshaker_create(); } else { - return security_handshaker_create(exec_ctx, handshaker, connector); + return security_handshaker_create(handshaker, connector); } } diff --git a/src/core/lib/security/transport/security_handshaker.h b/src/core/lib/security/transport/security_handshaker.h index 178099bb945..b555a72a65e 100644 --- a/src/core/lib/security/transport/security_handshaker.h +++ b/src/core/lib/security/transport/security_handshaker.h @@ -29,8 +29,7 @@ extern "C" { /// Creates a security handshaker using \a handshaker. grpc_handshaker *grpc_security_handshaker_create( - grpc_exec_ctx *exec_ctx, tsi_handshaker *handshaker, - grpc_security_connector *connector); + tsi_handshaker *handshaker, grpc_security_connector *connector); /// Registers security handshaker factories. void grpc_security_register_handshaker_factories(); diff --git a/src/core/lib/security/transport/server_auth_filter.cc b/src/core/lib/security/transport/server_auth_filter.cc index f5e02f42fe0..36d0b7612b0 100644 --- a/src/core/lib/security/transport/server_auth_filter.cc +++ b/src/core/lib/security/transport/server_auth_filter.cc @@ -73,8 +73,7 @@ static grpc_metadata_array metadata_batch_to_md_array( return result; } -static grpc_filtered_mdelem remove_consumed_md(grpc_exec_ctx *exec_ctx, - void *user_data, +static grpc_filtered_mdelem remove_consumed_md(void *user_data, grpc_mdelem md) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; @@ -88,8 +87,7 @@ static grpc_filtered_mdelem remove_consumed_md(grpc_exec_ctx *exec_ctx, return GRPC_FILTERED_MDELEM(md); } -static void on_md_processing_done_inner(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void on_md_processing_done_inner(grpc_call_element *elem, const grpc_metadata *consumed_md, size_t num_consumed_md, const grpc_metadata *response_md, @@ -107,11 +105,10 @@ static void on_md_processing_done_inner(grpc_exec_ctx *exec_ctx, calld->consumed_md = consumed_md; calld->num_consumed_md = num_consumed_md; error = grpc_metadata_batch_filter( - exec_ctx, batch->payload->recv_initial_metadata.recv_initial_metadata, + batch->payload->recv_initial_metadata.recv_initial_metadata, remove_consumed_md, elem, "Response metadata filtering error"); } - GRPC_CLOSURE_SCHED(exec_ctx, calld->original_recv_initial_metadata_ready, - error); + GRPC_CLOSURE_SCHED(calld->original_recv_initial_metadata_ready, error); } // Called from application code. @@ -121,7 +118,7 @@ static void on_md_processing_done( grpc_status_code status, const char *error_details) { grpc_call_element *elem = (grpc_call_element *)user_data; call_data *calld = (call_data *)elem->call_data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; // If the call was not cancelled while we were in flight, process the result. if (gpr_atm_full_cas(&calld->state, (gpr_atm)STATE_INIT, (gpr_atm)STATE_DONE)) { @@ -134,34 +131,32 @@ static void on_md_processing_done( GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_details), GRPC_ERROR_INT_GRPC_STATUS, status); } - on_md_processing_done_inner(&exec_ctx, elem, consumed_md, num_consumed_md, - response_md, num_response_md, error); + on_md_processing_done_inner(elem, consumed_md, num_consumed_md, response_md, + num_response_md, error); } // Clean up. for (size_t i = 0; i < calld->md.count; i++) { - grpc_slice_unref_internal(&exec_ctx, calld->md.metadata[i].key); - grpc_slice_unref_internal(&exec_ctx, calld->md.metadata[i].value); + grpc_slice_unref_internal(calld->md.metadata[i].key); + grpc_slice_unref_internal(calld->md.metadata[i].value); } grpc_metadata_array_destroy(&calld->md); - GRPC_CALL_STACK_UNREF(&exec_ctx, calld->owning_call, "server_auth_metadata"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CALL_STACK_UNREF(calld->owning_call, "server_auth_metadata"); + grpc_exec_ctx_finish(); } -static void cancel_call(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void cancel_call(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; // If the result was not already processed, invoke the callback now. if (error != GRPC_ERROR_NONE && gpr_atm_full_cas(&calld->state, (gpr_atm)STATE_INIT, (gpr_atm)STATE_CANCELLED)) { - on_md_processing_done_inner(exec_ctx, elem, NULL, 0, NULL, 0, - GRPC_ERROR_REF(error)); + on_md_processing_done_inner(elem, NULL, 0, NULL, 0, GRPC_ERROR_REF(error)); } - GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, "cancel_call"); + GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_call"); } -static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void recv_initial_metadata_ready(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; @@ -173,7 +168,7 @@ static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, void *arg, GRPC_CALL_STACK_REF(calld->owning_call, "cancel_call"); GRPC_CLOSURE_INIT(&calld->cancel_closure, cancel_call, elem, grpc_schedule_on_exec_ctx); - grpc_call_combiner_set_notify_on_cancel(exec_ctx, calld->call_combiner, + grpc_call_combiner_set_notify_on_cancel(calld->call_combiner, &calld->cancel_closure); GRPC_CALL_STACK_REF(calld->owning_call, "server_auth_metadata"); calld->md = metadata_batch_to_md_array( @@ -184,13 +179,12 @@ static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, void *arg, return; } } - GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_initial_metadata_ready, + GRPC_CLOSURE_RUN(calld->original_recv_initial_metadata_ready, GRPC_ERROR_REF(error)); } static void auth_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *batch) { + grpc_call_element *elem, grpc_transport_stream_op_batch *batch) { call_data *calld = (call_data *)elem->call_data; if (batch->recv_initial_metadata) { // Inject our callback. @@ -200,12 +194,11 @@ static void auth_start_transport_stream_op_batch( batch->payload->recv_initial_metadata.recv_initial_metadata_ready = &calld->recv_initial_metadata_ready; } - grpc_call_next_op(exec_ctx, elem, batch); + grpc_call_next_op(elem, batch); } /* Constructor for call_data */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; @@ -231,13 +224,12 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for call_data */ -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) {} /* Constructor for channel_data */ -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { GPR_ASSERT(!args->is_last); channel_data *chand = (channel_data *)elem->channel_data; @@ -253,11 +245,10 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, } /* Destructor for channel data */ -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; GRPC_AUTH_CONTEXT_UNREF(chand->auth_context, "server_auth_filter"); - grpc_server_credentials_unref(exec_ctx, chand->creds); + grpc_server_credentials_unref(chand->creds); } const grpc_channel_filter grpc_server_auth_filter = { diff --git a/src/core/lib/slice/b64.cc b/src/core/lib/slice/b64.cc index 50264719a4b..69c64989238 100644 --- a/src/core/lib/slice/b64.cc +++ b/src/core/lib/slice/b64.cc @@ -122,9 +122,8 @@ void grpc_base64_encode_core(char *result, const void *vdata, size_t data_size, result[current - result] = '\0'; } -grpc_slice grpc_base64_decode(grpc_exec_ctx *exec_ctx, const char *b64, - int url_safe) { - return grpc_base64_decode_with_len(exec_ctx, b64, strlen(b64), url_safe); +grpc_slice grpc_base64_decode(const char *b64, int url_safe) { + return grpc_base64_decode_with_len(b64, strlen(b64), url_safe); } static void decode_one_char(const unsigned char *codes, unsigned char *result, @@ -185,8 +184,8 @@ static int decode_group(const unsigned char *codes, size_t num_codes, return 1; } -grpc_slice grpc_base64_decode_with_len(grpc_exec_ctx *exec_ctx, const char *b64, - size_t b64_len, int url_safe) { +grpc_slice grpc_base64_decode_with_len(const char *b64, size_t b64_len, + int url_safe) { grpc_slice result = GRPC_SLICE_MALLOC(b64_len); unsigned char *current = GRPC_SLICE_START_PTR(result); size_t result_size = 0; @@ -231,6 +230,6 @@ grpc_slice grpc_base64_decode_with_len(grpc_exec_ctx *exec_ctx, const char *b64, return result; fail: - grpc_slice_unref_internal(exec_ctx, result); + grpc_slice_unref_internal(result); return grpc_empty_slice(); } diff --git a/src/core/lib/slice/b64.h b/src/core/lib/slice/b64.h index 9b4dc65dbbb..0a60f5a3517 100644 --- a/src/core/lib/slice/b64.h +++ b/src/core/lib/slice/b64.h @@ -44,12 +44,11 @@ void grpc_base64_encode_core(char *result, const void *vdata, size_t data_size, /* Decodes data according to the base64 specification. Returns an empty slice in case of failure. */ -grpc_slice grpc_base64_decode(grpc_exec_ctx *exec_ctx, const char *b64, - int url_safe); +grpc_slice grpc_base64_decode(const char *b64, int url_safe); /* Same as above except that the length is provided by the caller. */ -grpc_slice grpc_base64_decode_with_len(grpc_exec_ctx *exec_ctx, const char *b64, - size_t b64_len, int url_safe); +grpc_slice grpc_base64_decode_with_len(const char *b64, size_t b64_len, + int url_safe); #ifdef __cplusplus } diff --git a/src/core/lib/slice/slice.cc b/src/core/lib/slice/slice.cc index 0764eda0527..07fc49e189d 100644 --- a/src/core/lib/slice/slice.cc +++ b/src/core/lib/slice/slice.cc @@ -54,9 +54,9 @@ grpc_slice grpc_slice_ref_internal(grpc_slice slice) { return slice; } -void grpc_slice_unref_internal(grpc_exec_ctx *exec_ctx, grpc_slice slice) { +void grpc_slice_unref_internal(grpc_slice slice) { if (slice.refcount) { - slice.refcount->vtable->unref(exec_ctx, slice.refcount); + slice.refcount->vtable->unref(slice.refcount); } } @@ -67,15 +67,15 @@ grpc_slice grpc_slice_ref(grpc_slice slice) { /* Public API */ void grpc_slice_unref(grpc_slice slice) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_unref_internal(&exec_ctx, slice); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_slice_unref_internal(slice); + grpc_exec_ctx_finish(); } /* grpc_slice_from_static_string support structure - a refcount that does nothing */ static void noop_ref(void *unused) {} -static void noop_unref(grpc_exec_ctx *exec_ctx, void *unused) {} +static void noop_unref(void *unused) {} static const grpc_slice_refcount_vtable noop_refcount_vtable = { noop_ref, noop_unref, grpc_slice_default_eq_impl, @@ -109,7 +109,7 @@ static void new_slice_ref(void *p) { gpr_ref(&r->refs); } -static void new_slice_unref(grpc_exec_ctx *exec_ctx, void *p) { +static void new_slice_unref(void *p) { new_slice_refcount *r = (new_slice_refcount *)p; if (gpr_unref(&r->refs)) { r->user_destroy(r->user_data); @@ -159,7 +159,7 @@ static void new_with_len_ref(void *p) { gpr_ref(&r->refs); } -static void new_with_len_unref(grpc_exec_ctx *exec_ctx, void *p) { +static void new_with_len_unref(void *p) { new_with_len_slice_refcount *r = (new_with_len_slice_refcount *)p; if (gpr_unref(&r->refs)) { r->user_destroy(r->user_data, r->user_length); @@ -210,7 +210,7 @@ static void malloc_ref(void *p) { gpr_ref(&r->refs); } -static void malloc_unref(grpc_exec_ctx *exec_ctx, void *p) { +static void malloc_unref(void *p) { malloc_refcount *r = (malloc_refcount *)p; if (gpr_unref(&r->refs)) { gpr_free(r); diff --git a/src/core/lib/slice/slice_buffer.cc b/src/core/lib/slice/slice_buffer.cc index 63ffc0b00dc..c76d91bd1cf 100644 --- a/src/core/lib/slice/slice_buffer.cc +++ b/src/core/lib/slice/slice_buffer.cc @@ -65,18 +65,17 @@ void grpc_slice_buffer_init(grpc_slice_buffer *sb) { sb->base_slices = sb->slices = sb->inlined; } -void grpc_slice_buffer_destroy_internal(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *sb) { - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, sb); +void grpc_slice_buffer_destroy_internal(grpc_slice_buffer *sb) { + grpc_slice_buffer_reset_and_unref_internal(sb); if (sb->base_slices != sb->inlined) { gpr_free(sb->base_slices); } } void grpc_slice_buffer_destroy(grpc_slice_buffer *sb) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_buffer_destroy_internal(&exec_ctx, sb); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_slice_buffer_destroy_internal(sb); + grpc_exec_ctx_finish(); } uint8_t *grpc_slice_buffer_tiny_add(grpc_slice_buffer *sb, size_t n) { @@ -163,11 +162,10 @@ void grpc_slice_buffer_pop(grpc_slice_buffer *sb) { } } -void grpc_slice_buffer_reset_and_unref_internal(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *sb) { +void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer *sb) { size_t i; for (i = 0; i < sb->count; i++) { - grpc_slice_unref_internal(exec_ctx, sb->slices[i]); + grpc_slice_unref_internal(sb->slices[i]); } sb->count = 0; @@ -175,9 +173,9 @@ void grpc_slice_buffer_reset_and_unref_internal(grpc_exec_ctx *exec_ctx, } void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer *sb) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, sb); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_slice_buffer_reset_and_unref_internal(sb); + grpc_exec_ctx_finish(); } void grpc_slice_buffer_swap(grpc_slice_buffer *a, grpc_slice_buffer *b) { @@ -289,8 +287,7 @@ void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer *src, size_t n, slice_buffer_move_first_maybe_ref(src, n, dst, false); } -void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *src, size_t n, +void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer *src, size_t n, void *dst) { char *dstp = (char *)dst; GPR_ASSERT(src->length >= n); @@ -305,13 +302,13 @@ void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx *exec_ctx, n = 0; } else if (slice_len == n) { memcpy(dstp, GRPC_SLICE_START_PTR(slice), n); - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); n = 0; } else { memcpy(dstp, GRPC_SLICE_START_PTR(slice), slice_len); dstp += slice_len; n -= slice_len; - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(slice); } } } diff --git a/src/core/lib/slice/slice_hash_table.cc b/src/core/lib/slice/slice_hash_table.cc index 6c2c9c201c3..c122c9f4ef8 100644 --- a/src/core/lib/slice/slice_hash_table.cc +++ b/src/core/lib/slice/slice_hash_table.cc @@ -27,7 +27,7 @@ struct grpc_slice_hash_table { gpr_refcount refs; - void (*destroy_value)(grpc_exec_ctx* exec_ctx, void* value); + void (*destroy_value)(void* value); int (*value_cmp)(void* a, void* b); size_t size; size_t max_num_probes; @@ -58,8 +58,7 @@ static void grpc_slice_hash_table_add(grpc_slice_hash_table* table, grpc_slice_hash_table* grpc_slice_hash_table_create( size_t num_entries, grpc_slice_hash_table_entry* entries, - void (*destroy_value)(grpc_exec_ctx* exec_ctx, void* value), - int (*value_cmp)(void* a, void* b)) { + void (*destroy_value)(void* value), int (*value_cmp)(void* a, void* b)) { grpc_slice_hash_table* table = (grpc_slice_hash_table*)gpr_zalloc(sizeof(*table)); gpr_ref_init(&table->refs, 1); @@ -81,14 +80,13 @@ grpc_slice_hash_table* grpc_slice_hash_table_ref(grpc_slice_hash_table* table) { return table; } -void grpc_slice_hash_table_unref(grpc_exec_ctx* exec_ctx, - grpc_slice_hash_table* table) { +void grpc_slice_hash_table_unref(grpc_slice_hash_table* table) { if (table != NULL && gpr_unref(&table->refs)) { for (size_t i = 0; i < table->size; ++i) { grpc_slice_hash_table_entry* entry = &table->entries[i]; if (!is_empty(entry)) { - grpc_slice_unref_internal(exec_ctx, entry->key); - table->destroy_value(exec_ctx, entry->value); + grpc_slice_unref_internal(entry->key); + table->destroy_value(entry->value); } } gpr_free(table->entries); diff --git a/src/core/lib/slice/slice_hash_table.h b/src/core/lib/slice/slice_hash_table.h index 41250df7385..a3df9c92e55 100644 --- a/src/core/lib/slice/slice_hash_table.h +++ b/src/core/lib/slice/slice_hash_table.h @@ -50,12 +50,10 @@ typedef struct grpc_slice_hash_table_entry { will be used. */ grpc_slice_hash_table *grpc_slice_hash_table_create( size_t num_entries, grpc_slice_hash_table_entry *entries, - void (*destroy_value)(grpc_exec_ctx *exec_ctx, void *value), - int (*value_cmp)(void *a, void *b)); + void (*destroy_value)(void *value), int (*value_cmp)(void *a, void *b)); grpc_slice_hash_table *grpc_slice_hash_table_ref(grpc_slice_hash_table *table); -void grpc_slice_hash_table_unref(grpc_exec_ctx *exec_ctx, - grpc_slice_hash_table *table); +void grpc_slice_hash_table_unref(grpc_slice_hash_table *table); /** Returns the value from \a table associated with \a key. Returns NULL if \a key is not found. */ diff --git a/src/core/lib/slice/slice_intern.cc b/src/core/lib/slice/slice_intern.cc index 1ea9a2aa677..2503ee81772 100644 --- a/src/core/lib/slice/slice_intern.cc +++ b/src/core/lib/slice/slice_intern.cc @@ -90,7 +90,7 @@ static void interned_slice_destroy(interned_slice_refcount *s) { gpr_mu_unlock(&shard->mu); } -static void interned_slice_unref(grpc_exec_ctx *exec_ctx, void *p) { +static void interned_slice_unref(void *p) { interned_slice_refcount *s = (interned_slice_refcount *)p; if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) { interned_slice_destroy(s); @@ -101,9 +101,8 @@ static void interned_slice_sub_ref(void *p) { interned_slice_ref(((char *)p) - offsetof(interned_slice_refcount, sub)); } -static void interned_slice_sub_unref(grpc_exec_ctx *exec_ctx, void *p) { - interned_slice_unref(exec_ctx, - ((char *)p) - offsetof(interned_slice_refcount, sub)); +static void interned_slice_sub_unref(void *p) { + interned_slice_unref(((char *)p) - offsetof(interned_slice_refcount, sub)); } static uint32_t interned_slice_hash(grpc_slice slice) { diff --git a/src/core/lib/slice/slice_internal.h b/src/core/lib/slice/slice_internal.h index fcf70a0e55f..5156f3fc509 100644 --- a/src/core/lib/slice/slice_internal.h +++ b/src/core/lib/slice/slice_internal.h @@ -29,11 +29,9 @@ extern "C" { #endif grpc_slice grpc_slice_ref_internal(grpc_slice slice); -void grpc_slice_unref_internal(grpc_exec_ctx *exec_ctx, grpc_slice slice); -void grpc_slice_buffer_reset_and_unref_internal(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *sb); -void grpc_slice_buffer_destroy_internal(grpc_exec_ctx *exec_ctx, - grpc_slice_buffer *sb); +void grpc_slice_unref_internal(grpc_slice slice); +void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer *sb); +void grpc_slice_buffer_destroy_internal(grpc_slice_buffer *sb); /* Check if a slice is interned */ bool grpc_slice_is_interned(grpc_slice slice); diff --git a/src/core/lib/surface/alarm.cc b/src/core/lib/surface/alarm.cc index 16a16bfd93b..4f3bc5172d2 100644 --- a/src/core/lib/surface/alarm.cc +++ b/src/core/lib/surface/alarm.cc @@ -47,11 +47,11 @@ static void alarm_ref(grpc_alarm *alarm) { gpr_ref(&alarm->refs); } static void alarm_unref(grpc_alarm *alarm) { if (gpr_unref(&alarm->refs)) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; if (alarm->cq != NULL) { - GRPC_CQ_INTERNAL_UNREF(&exec_ctx, alarm->cq, "alarm"); + GRPC_CQ_INTERNAL_UNREF(alarm->cq, "alarm"); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(alarm); } } @@ -82,20 +82,19 @@ static void alarm_unref_dbg(grpc_alarm *alarm, const char *reason, } #endif -static void alarm_end_completion(grpc_exec_ctx *exec_ctx, void *arg, - grpc_cq_completion *c) { +static void alarm_end_completion(void *arg, grpc_cq_completion *c) { grpc_alarm *alarm = (grpc_alarm *)arg; GRPC_ALARM_UNREF(alarm, "dequeue-end-op"); } -static void alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void alarm_cb(void *arg, grpc_error *error) { grpc_alarm *alarm = (grpc_alarm *)arg; /* We are queuing an op on completion queue. This means, the alarm's structure cannot be destroyed until the op is dequeued. Adding an extra ref here and unref'ing when the op is dequeued will achieve this */ GRPC_ALARM_REF(alarm, "queue-end-op"); - grpc_cq_end_op(exec_ctx, alarm->cq, alarm->tag, error, alarm_end_completion, + grpc_cq_end_op(alarm->cq, alarm->tag, error, alarm_end_completion, (void *)alarm, &alarm->completion); } @@ -118,22 +117,22 @@ grpc_alarm *grpc_alarm_create(void *reserved) { void grpc_alarm_set(grpc_alarm *alarm, grpc_completion_queue *cq, gpr_timespec deadline, void *tag, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_CQ_INTERNAL_REF(cq, "alarm"); alarm->cq = cq; alarm->tag = tag; GPR_ASSERT(grpc_cq_begin_op(cq, tag)); - grpc_timer_init(&exec_ctx, &alarm->alarm, - grpc_timespec_to_millis_round_up(deadline), &alarm->on_alarm); - grpc_exec_ctx_finish(&exec_ctx); + grpc_timer_init(&alarm->alarm, grpc_timespec_to_millis_round_up(deadline), + &alarm->on_alarm); + grpc_exec_ctx_finish(); } void grpc_alarm_cancel(grpc_alarm *alarm, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_timer_cancel(&exec_ctx, &alarm->alarm); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_timer_cancel(&alarm->alarm); + grpc_exec_ctx_finish(); } void grpc_alarm_destroy(grpc_alarm *alarm, void *reserved) { diff --git a/src/core/lib/surface/byte_buffer.cc b/src/core/lib/surface/byte_buffer.cc index 7ed550ef87c..51231896712 100644 --- a/src/core/lib/surface/byte_buffer.cc +++ b/src/core/lib/surface/byte_buffer.cc @@ -71,14 +71,14 @@ grpc_byte_buffer *grpc_byte_buffer_copy(grpc_byte_buffer *bb) { void grpc_byte_buffer_destroy(grpc_byte_buffer *bb) { if (!bb) return; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; switch (bb->type) { case GRPC_BB_RAW: - grpc_slice_buffer_destroy_internal(&exec_ctx, &bb->data.raw.slice_buffer); + grpc_slice_buffer_destroy_internal(&bb->data.raw.slice_buffer); break; } gpr_free(bb); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } size_t grpc_byte_buffer_length(grpc_byte_buffer *bb) { diff --git a/src/core/lib/surface/byte_buffer_reader.cc b/src/core/lib/surface/byte_buffer_reader.cc index 87bd3239c03..5f5596c8035 100644 --- a/src/core/lib/surface/byte_buffer_reader.cc +++ b/src/core/lib/surface/byte_buffer_reader.cc @@ -42,15 +42,14 @@ static int is_compressed(grpc_byte_buffer *buffer) { int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader *reader, grpc_byte_buffer *buffer) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_slice_buffer decompressed_slices_buffer; reader->buffer_in = buffer; switch (reader->buffer_in->type) { case GRPC_BB_RAW: grpc_slice_buffer_init(&decompressed_slices_buffer); if (is_compressed(reader->buffer_in)) { - if (grpc_msg_decompress(&exec_ctx, - reader->buffer_in->data.raw.compression, + if (grpc_msg_decompress(reader->buffer_in->data.raw.compression, &reader->buffer_in->data.raw.slice_buffer, &decompressed_slices_buffer) == 0) { gpr_log(GPR_ERROR, @@ -64,15 +63,14 @@ int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader *reader, grpc_raw_byte_buffer_create(decompressed_slices_buffer.slices, decompressed_slices_buffer.count); } - grpc_slice_buffer_destroy_internal(&exec_ctx, - &decompressed_slices_buffer); + grpc_slice_buffer_destroy_internal(&decompressed_slices_buffer); } else { /* not compressed, use the input buffer as output */ reader->buffer_out = reader->buffer_in; } reader->current.index = 0; break; } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return 1; } @@ -112,14 +110,14 @@ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader *reader) { grpc_slice out_slice = GRPC_SLICE_MALLOC(input_size); uint8_t *const outbuf = GRPC_SLICE_START_PTR(out_slice); /* just an alias */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (grpc_byte_buffer_reader_next(reader, &in_slice) != 0) { const size_t slice_length = GRPC_SLICE_LENGTH(in_slice); memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length); bytes_read += slice_length; - grpc_slice_unref_internal(&exec_ctx, in_slice); + grpc_slice_unref_internal(in_slice); GPR_ASSERT(bytes_read <= input_size); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return out_slice; } diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc index 8216aa0ec81..26002056eae 100644 --- a/src/core/lib/surface/call.cc +++ b/src/core/lib/surface/call.cc @@ -271,29 +271,26 @@ grpc_tracer_flag grpc_compression_trace = #define CALL_FROM_TOP_ELEM(top_elem) \ CALL_FROM_CALL_STACK(grpc_call_stack_from_top_element(top_elem)) -static void execute_batch(grpc_exec_ctx *exec_ctx, grpc_call *call, - grpc_transport_stream_op_batch *op, +static void execute_batch(grpc_call *call, grpc_transport_stream_op_batch *op, grpc_closure *start_batch_closure); -static void cancel_with_status(grpc_exec_ctx *exec_ctx, grpc_call *c, - status_source source, grpc_status_code status, +static void cancel_with_status(grpc_call *c, status_source source, + grpc_status_code status, const char *description); -static void cancel_with_error(grpc_exec_ctx *exec_ctx, grpc_call *c, - status_source source, grpc_error *error); -static void destroy_call(grpc_exec_ctx *exec_ctx, void *call_stack, - grpc_error *error); -static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp, - grpc_error *error); -static void get_final_status(grpc_exec_ctx *exec_ctx, grpc_call *call, +static void cancel_with_error(grpc_call *c, status_source source, + grpc_error *error); +static void destroy_call(void *call_stack, grpc_error *error); +static void receiving_slice_ready(void *bctlp, grpc_error *error); +static void get_final_status(grpc_call *call, void (*set_value)(grpc_status_code code, void *user_data), void *set_value_user_data, grpc_slice *details); static void set_status_value_directly(grpc_status_code status, void *dest); -static void set_status_from_error(grpc_exec_ctx *exec_ctx, grpc_call *call, - status_source source, grpc_error *error); -static void process_data_after_md(grpc_exec_ctx *exec_ctx, batch_control *bctl); -static void post_batch_completion(grpc_exec_ctx *exec_ctx, batch_control *bctl); -static void add_batch_error(grpc_exec_ctx *exec_ctx, batch_control *bctl, - grpc_error *error, bool has_cancelled); +static void set_status_from_error(grpc_call *call, status_source source, + grpc_error *error); +static void process_data_after_md(batch_control *bctl); +static void post_batch_completion(batch_control *bctl); +static void add_batch_error(batch_control *bctl, grpc_error *error, + bool has_cancelled); static void add_init_error(grpc_error **composite, grpc_error *new_err) { if (new_err == GRPC_ERROR_NONE) return; @@ -323,8 +320,7 @@ static parent_call *get_parent_call(grpc_call *call) { return (parent_call *)gpr_atm_acq_load(&call->parent_call_atm); } -grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx, - const grpc_call_create_args *args, +grpc_error *grpc_call_create(const grpc_call_create_args *args, grpc_call **out_call) { size_t i, j; grpc_error *error = GRPC_ERROR_NONE; @@ -333,7 +329,7 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx, grpc_call *call; GPR_TIMER_BEGIN("grpc_call_create", 0); size_t initial_size = grpc_channel_get_call_size_estimate(args->channel); - GRPC_STATS_INC_CALL_INITIAL_SIZE(exec_ctx, initial_size); + GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size); gpr_arena *arena = gpr_arena_create(initial_size); call = (grpc_call *)gpr_arena_alloc( arena, sizeof(grpc_call) + channel_stack->call_stack_size); @@ -348,9 +344,9 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx, GPR_BITSET(&call->encodings_accepted_by_peer, GRPC_COMPRESS_NONE); call->is_client = args->server_transport_data == NULL; if (call->is_client) { - GRPC_STATS_INC_CLIENT_CALLS_CREATED(exec_ctx); + GRPC_STATS_INC_CLIENT_CALLS_CREATED(); } else { - GRPC_STATS_INC_SERVER_CALLS_CREATED(exec_ctx); + GRPC_STATS_INC_SERVER_CALLS_CREATED(); } call->stream_op_payload.context = call->context; grpc_slice path = grpc_empty_slice(); @@ -445,15 +441,13 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx, send_deadline, call->arena, &call->call_combiner}; - add_init_error(&error, grpc_call_stack_init(exec_ctx, channel_stack, 1, - destroy_call, call, &call_args)); + add_init_error(&error, grpc_call_stack_init(channel_stack, 1, destroy_call, + call, &call_args)); if (error != GRPC_ERROR_NONE) { - cancel_with_error(exec_ctx, call, STATUS_FROM_SURFACE, - GRPC_ERROR_REF(error)); + cancel_with_error(call, STATUS_FROM_SURFACE, GRPC_ERROR_REF(error)); } if (immediately_cancel) { - cancel_with_error(exec_ctx, call, STATUS_FROM_API_OVERRIDE, - GRPC_ERROR_CANCELLED); + cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); } if (args->cq != NULL) { GPR_ASSERT( @@ -468,17 +462,17 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx, args->pollset_set_alternative); } if (!grpc_polling_entity_is_empty(&call->pollent)) { - grpc_call_stack_set_pollset_or_pollset_set( - exec_ctx, CALL_STACK_FROM_CALL(call), &call->pollent); + grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call), + &call->pollent); } - grpc_slice_unref_internal(exec_ctx, path); + grpc_slice_unref_internal(path); GPR_TIMER_END("grpc_call_create", 0); return error; } -void grpc_call_set_completion_queue(grpc_exec_ctx *exec_ctx, grpc_call *call, +void grpc_call_set_completion_queue(grpc_call *call, grpc_completion_queue *cq) { GPR_ASSERT(cq); @@ -489,8 +483,8 @@ void grpc_call_set_completion_queue(grpc_exec_ctx *exec_ctx, grpc_call *call, call->cq = cq; GRPC_CQ_INTERNAL_REF(cq, "bind"); call->pollent = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)); - grpc_call_stack_set_pollset_or_pollset_set( - exec_ctx, CALL_STACK_FROM_CALL(call), &call->pollent); + grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call), + &call->pollent); } #ifndef NDEBUG @@ -503,40 +497,38 @@ void grpc_call_set_completion_queue(grpc_exec_ctx *exec_ctx, grpc_call *call, void grpc_call_internal_ref(grpc_call *c REF_ARG) { GRPC_CALL_STACK_REF(CALL_STACK_FROM_CALL(c), REF_REASON); } -void grpc_call_internal_unref(grpc_exec_ctx *exec_ctx, grpc_call *c REF_ARG) { - GRPC_CALL_STACK_UNREF(exec_ctx, CALL_STACK_FROM_CALL(c), REF_REASON); +void grpc_call_internal_unref(grpc_call *c REF_ARG) { + GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON); } -static void release_call(grpc_exec_ctx *exec_ctx, void *call, - grpc_error *error) { +static void release_call(void *call, grpc_error *error) { grpc_call *c = (grpc_call *)call; grpc_channel *channel = c->channel; grpc_call_combiner_destroy(&c->call_combiner); gpr_free((char *)c->peer_string); grpc_channel_update_call_size_estimate(channel, gpr_arena_destroy(c->arena)); - GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, "call"); + GRPC_CHANNEL_INTERNAL_UNREF(channel, "call"); } static void set_status_value_directly(grpc_status_code status, void *dest); -static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, - grpc_error *error) { +static void destroy_call(void *call, grpc_error *error) { size_t i; int ii; grpc_call *c = (grpc_call *)call; GPR_TIMER_BEGIN("destroy_call", 0); for (i = 0; i < 2; i++) { grpc_metadata_batch_destroy( - exec_ctx, &c->metadata_batch[1 /* is_receiving */][i /* is_initial */]); + &c->metadata_batch[1 /* is_receiving */][i /* is_initial */]); } if (c->receiving_stream != NULL) { - grpc_byte_stream_destroy(exec_ctx, c->receiving_stream); + grpc_byte_stream_destroy(c->receiving_stream); } parent_call *pc = get_parent_call(c); if (pc != NULL) { gpr_mu_destroy(&pc->child_list_mu); } for (ii = 0; ii < c->send_extra_metadata_count; ii++) { - GRPC_MDELEM_UNREF(exec_ctx, c->send_extra_metadata[ii].md); + GRPC_MDELEM_UNREF(c->send_extra_metadata[ii].md); } for (i = 0; i < GRPC_CONTEXT_COUNT; i++) { if (c->context[i].destroy) { @@ -544,11 +536,11 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, } } if (c->cq) { - GRPC_CQ_INTERNAL_UNREF(exec_ctx, c->cq, "bind"); + GRPC_CQ_INTERNAL_UNREF(c->cq, "bind"); } - get_final_status(exec_ctx, c, set_status_value_directly, - &c->final_info.final_status, NULL); + get_final_status(c, set_status_value_directly, &c->final_info.final_status, + NULL); c->final_info.stats.latency = gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), c->start_time); @@ -557,7 +549,7 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, unpack_received_status(gpr_atm_acq_load(&c->status[i])).error); } - grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), &c->final_info, + grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info, GRPC_CLOSURE_INIT(&c->release_call, release_call, c, grpc_schedule_on_exec_ctx)); GPR_TIMER_END("destroy_call", 0); @@ -569,7 +561,7 @@ void grpc_call_unref(grpc_call *c) { if (!gpr_unref(&c->ext_ref)) return; child_call *cc = c->child; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GPR_TIMER_BEGIN("grpc_call_unref", 0); GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c)); @@ -586,7 +578,7 @@ void grpc_call_unref(grpc_call *c) { cc->sibling_prev->child->sibling_next = cc->sibling_next; cc->sibling_next->child->sibling_prev = cc->sibling_prev; gpr_mu_unlock(&pc->child_list_mu); - GRPC_CALL_INTERNAL_UNREF(&exec_ctx, cc->parent, "child"); + GRPC_CALL_INTERNAL_UNREF(cc->parent, "child"); } GPR_ASSERT(!c->destroy_called); @@ -594,52 +586,49 @@ void grpc_call_unref(grpc_call *c) { bool cancel = gpr_atm_acq_load(&c->any_ops_sent_atm) != 0 && gpr_atm_acq_load(&c->received_final_op_atm) == 0; if (cancel) { - cancel_with_error(&exec_ctx, c, STATUS_FROM_API_OVERRIDE, - GRPC_ERROR_CANCELLED); + cancel_with_error(c, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); } else { // Unset the call combiner cancellation closure. This has the // effect of scheduling the previously set cancellation closure, if // any, so that it can release any internal references it may be // holding to the call stack. - grpc_call_combiner_set_notify_on_cancel(&exec_ctx, &c->call_combiner, NULL); + grpc_call_combiner_set_notify_on_cancel(&c->call_combiner, NULL); } - GRPC_CALL_INTERNAL_UNREF(&exec_ctx, c, "destroy"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CALL_INTERNAL_UNREF(c, "destroy"); + grpc_exec_ctx_finish(); GPR_TIMER_END("grpc_call_unref", 0); } grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved) { GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved)); GPR_ASSERT(!reserved); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - cancel_with_error(&exec_ctx, call, STATUS_FROM_API_OVERRIDE, - GRPC_ERROR_CANCELLED); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); + grpc_exec_ctx_finish(); return GRPC_CALL_OK; } // This is called via the call combiner to start sending a batch down // the filter stack. -static void execute_batch_in_call_combiner(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *ignored) { +static void execute_batch_in_call_combiner(void *arg, grpc_error *ignored) { grpc_transport_stream_op_batch *batch = (grpc_transport_stream_op_batch *)arg; grpc_call *call = (grpc_call *)batch->handler_private.extra_arg; GPR_TIMER_BEGIN("execute_batch", 0); grpc_call_element *elem = CALL_ELEM_FROM_CALL(call, 0); GRPC_CALL_LOG_OP(GPR_INFO, elem, batch); - elem->filter->start_transport_stream_op_batch(exec_ctx, elem, batch); + elem->filter->start_transport_stream_op_batch(elem, batch); GPR_TIMER_END("execute_batch", 0); } // start_batch_closure points to a caller-allocated closure to be used // for entering the call combiner. -static void execute_batch(grpc_exec_ctx *exec_ctx, grpc_call *call, +static void execute_batch(grpc_call *call, grpc_transport_stream_op_batch *batch, grpc_closure *start_batch_closure) { batch->handler_private.extra_arg = call; GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch, grpc_schedule_on_exec_ctx); - GRPC_CALL_COMBINER_START(exec_ctx, &call->call_combiner, start_batch_closure, + GRPC_CALL_COMBINER_START(&call->call_combiner, start_batch_closure, GRPC_ERROR_NONE, "executing batch"); } @@ -663,15 +652,14 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call *c, grpc_status_code status, const char *description, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_call_cancel_with_status(" "c=%p, status=%d, description=%s, reserved=%p)", 4, (c, (int)status, description, reserved)); GPR_ASSERT(reserved == NULL); - cancel_with_status(&exec_ctx, c, STATUS_FROM_API_OVERRIDE, status, - description); - grpc_exec_ctx_finish(&exec_ctx); + cancel_with_status(c, STATUS_FROM_API_OVERRIDE, status, description); + grpc_exec_ctx_finish(); return GRPC_CALL_OK; } @@ -683,24 +671,23 @@ typedef struct { // The on_complete callback used when sending a cancel_stream batch down // the filter stack. Yields the call combiner when the batch is done. -static void done_termination(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void done_termination(void *arg, grpc_error *error) { cancel_state *state = (cancel_state *)arg; - GRPC_CALL_COMBINER_STOP(exec_ctx, &state->call->call_combiner, + GRPC_CALL_COMBINER_STOP(&state->call->call_combiner, "on_complete for cancel_stream op"); - GRPC_CALL_INTERNAL_UNREF(exec_ctx, state->call, "termination"); + GRPC_CALL_INTERNAL_UNREF(state->call, "termination"); gpr_free(state); } -static void cancel_with_error(grpc_exec_ctx *exec_ctx, grpc_call *c, - status_source source, grpc_error *error) { +static void cancel_with_error(grpc_call *c, status_source source, + grpc_error *error) { GRPC_CALL_INTERNAL_REF(c, "termination"); // Inform the call combiner of the cancellation, so that it can cancel // any in-flight asynchronous actions that may be holding the call // combiner. This ensures that the cancel_stream batch can be sent // down the filter stack in a timely manner. - grpc_call_combiner_cancel(exec_ctx, &c->call_combiner, GRPC_ERROR_REF(error)); - set_status_from_error(exec_ctx, c, source, GRPC_ERROR_REF(error)); + grpc_call_combiner_cancel(&c->call_combiner, GRPC_ERROR_REF(error)); + set_status_from_error(c, source, GRPC_ERROR_REF(error)); cancel_state *state = (cancel_state *)gpr_malloc(sizeof(*state)); state->call = c; GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state, @@ -709,7 +696,7 @@ static void cancel_with_error(grpc_exec_ctx *exec_ctx, grpc_call *c, grpc_make_transport_stream_op(&state->finish_batch); op->cancel_stream = true; op->payload->cancel_stream.cancel_error = error; - execute_batch(exec_ctx, c, op, &state->start_batch); + execute_batch(c, op, &state->start_batch); } static grpc_error *error_from_status(grpc_status_code status, @@ -723,27 +710,23 @@ static grpc_error *error_from_status(grpc_status_code status, GRPC_ERROR_INT_GRPC_STATUS, status); } -static void cancel_with_status(grpc_exec_ctx *exec_ctx, grpc_call *c, - status_source source, grpc_status_code status, +static void cancel_with_status(grpc_call *c, status_source source, + grpc_status_code status, const char *description) { - cancel_with_error(exec_ctx, c, source, - error_from_status(status, description)); + cancel_with_error(c, source, error_from_status(status, description)); } /******************************************************************************* * FINAL STATUS CODE MANIPULATION */ -static bool get_final_status_from(grpc_exec_ctx *exec_ctx, grpc_call *call, - grpc_error *error, bool allow_ok_status, - void (*set_value)(grpc_status_code code, - void *user_data), - void *set_value_user_data, - grpc_slice *details) { +static bool get_final_status_from( + grpc_call *call, grpc_error *error, bool allow_ok_status, + void (*set_value)(grpc_status_code code, void *user_data), + void *set_value_user_data, grpc_slice *details) { grpc_status_code code; grpc_slice slice = grpc_empty_slice(); - grpc_error_get_status(exec_ctx, error, call->send_deadline, &code, &slice, - NULL); + grpc_error_get_status(error, call->send_deadline, &code, &slice, NULL); if (code == GRPC_STATUS_OK && !allow_ok_status) { return false; } @@ -755,7 +738,7 @@ static bool get_final_status_from(grpc_exec_ctx *exec_ctx, grpc_call *call, return true; } -static void get_final_status(grpc_exec_ctx *exec_ctx, grpc_call *call, +static void get_final_status(grpc_call *call, void (*set_value)(grpc_status_code code, void *user_data), void *set_value_user_data, grpc_slice *details) { @@ -780,9 +763,8 @@ static void get_final_status(grpc_exec_ctx *exec_ctx, grpc_call *call, for (i = 0; i < STATUS_SOURCE_COUNT; i++) { if (status[i].is_set && grpc_error_has_clear_grpc_status(status[i].error)) { - if (get_final_status_from(exec_ctx, call, status[i].error, - allow_ok_status != 0, set_value, - set_value_user_data, details)) { + if (get_final_status_from(call, status[i].error, allow_ok_status != 0, + set_value, set_value_user_data, details)) { return; } } @@ -790,9 +772,8 @@ static void get_final_status(grpc_exec_ctx *exec_ctx, grpc_call *call, /* If no clearly defined status exists, search for 'anything' */ for (i = 0; i < STATUS_SOURCE_COUNT; i++) { if (status[i].is_set) { - if (get_final_status_from(exec_ctx, call, status[i].error, - allow_ok_status != 0, set_value, - set_value_user_data, details)) { + if (get_final_status_from(call, status[i].error, allow_ok_status != 0, + set_value, set_value_user_data, details)) { return; } } @@ -806,8 +787,8 @@ static void get_final_status(grpc_exec_ctx *exec_ctx, grpc_call *call, } } -static void set_status_from_error(grpc_exec_ctx *exec_ctx, grpc_call *call, - status_source source, grpc_error *error) { +static void set_status_from_error(grpc_call *call, status_source source, + grpc_error *error) { if (!gpr_atm_rel_cas(&call->status[source], pack_received_status({false, GRPC_ERROR_NONE}), pack_received_status({true, error}))) { @@ -859,8 +840,7 @@ uint32_t grpc_call_test_only_get_message_flags(grpc_call *call) { static void destroy_encodings_accepted_by_peer(void *p) { return; } -static void set_encodings_accepted_by_peer(grpc_exec_ctx *exec_ctx, - grpc_call *call, grpc_mdelem mdel) { +static void set_encodings_accepted_by_peer(grpc_call *call, grpc_mdelem mdel) { size_t i; grpc_compression_algorithm algorithm; grpc_slice_buffer accept_encoding_parts; @@ -898,15 +878,14 @@ static void set_encodings_accepted_by_peer(grpc_exec_ctx *exec_ctx, } } - grpc_slice_buffer_destroy_internal(exec_ctx, &accept_encoding_parts); + grpc_slice_buffer_destroy_internal(&accept_encoding_parts); grpc_mdelem_set_user_data( mdel, destroy_encodings_accepted_by_peer, (void *)(((uintptr_t)call->encodings_accepted_by_peer) + 1)); } -static void set_stream_encodings_accepted_by_peer(grpc_exec_ctx *exec_ctx, - grpc_call *call, +static void set_stream_encodings_accepted_by_peer(grpc_call *call, grpc_mdelem mdel) { size_t i; grpc_stream_compression_algorithm algorithm; @@ -944,7 +923,7 @@ static void set_stream_encodings_accepted_by_peer(grpc_exec_ctx *exec_ctx, } } - grpc_slice_buffer_destroy_internal(exec_ctx, &accept_encoding_parts); + grpc_slice_buffer_destroy_internal(&accept_encoding_parts); grpc_mdelem_set_user_data( mdel, destroy_encodings_accepted_by_peer, @@ -982,10 +961,12 @@ static grpc_metadata *get_md_elem(grpc_metadata *metadata, return res; } -static int prepare_application_metadata( - grpc_exec_ctx *exec_ctx, grpc_call *call, int count, - grpc_metadata *metadata, int is_trailing, int prepend_extra_metadata, - grpc_metadata *additional_metadata, int additional_metadata_count) { +static int prepare_application_metadata(grpc_call *call, int count, + grpc_metadata *metadata, + int is_trailing, + int prepend_extra_metadata, + grpc_metadata *additional_metadata, + int additional_metadata_count) { int total_count = count + additional_metadata_count; int i; grpc_metadata_batch *batch = @@ -1004,14 +985,14 @@ static int prepare_application_metadata( grpc_validate_header_nonbin_value_is_legal(md->value))) { break; } - l->md = grpc_mdelem_from_grpc_metadata(exec_ctx, (grpc_metadata *)md); + l->md = grpc_mdelem_from_grpc_metadata((grpc_metadata *)md); } if (i != total_count) { for (int j = 0; j < i; j++) { const grpc_metadata *md = get_md_elem(metadata, additional_metadata, j, count); grpc_linked_mdelem *l = linked_from_md(md); - GRPC_MDELEM_UNREF(exec_ctx, l->md); + GRPC_MDELEM_UNREF(l->md); } return 0; } @@ -1022,16 +1003,16 @@ static int prepare_application_metadata( for (i = 0; i < call->send_extra_metadata_count; i++) { GRPC_LOG_IF_ERROR("prepare_application_metadata", grpc_metadata_batch_link_tail( - exec_ctx, batch, &call->send_extra_metadata[i])); + batch, &call->send_extra_metadata[i])); } } } for (i = 0; i < total_count; i++) { grpc_metadata *md = get_md_elem(metadata, additional_metadata, i, count); grpc_linked_mdelem *l = linked_from_md(md); - grpc_error *error = grpc_metadata_batch_link_tail(exec_ctx, batch, l); + grpc_error *error = grpc_metadata_batch_link_tail(batch, l); if (error != GRPC_ERROR_NONE) { - GRPC_MDELEM_UNREF(exec_ctx, l->md); + GRPC_MDELEM_UNREF(l->md); } GRPC_LOG_IF_ERROR("prepare_application_metadata", error); } @@ -1118,46 +1099,43 @@ static void publish_app_metadata(grpc_call *call, grpc_metadata_batch *b, GPR_TIMER_END("publish_app_metadata", 0); } -static void recv_initial_filter(grpc_exec_ctx *exec_ctx, grpc_call *call, - grpc_metadata_batch *b) { +static void recv_initial_filter(grpc_call *call, grpc_metadata_batch *b) { if (b->idx.named.content_encoding != NULL) { if (b->idx.named.grpc_encoding != NULL) { gpr_log(GPR_ERROR, "Received both content-encoding and grpc-encoding header. " "Ignoring grpc-encoding."); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_encoding); + grpc_metadata_batch_remove(b, b->idx.named.grpc_encoding); } GPR_TIMER_BEGIN("incoming_stream_compression_algorithm", 0); set_incoming_stream_compression_algorithm( call, decode_stream_compression(b->idx.named.content_encoding->md)); GPR_TIMER_END("incoming_stream_compression_algorithm", 0); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.content_encoding); + grpc_metadata_batch_remove(b, b->idx.named.content_encoding); } else if (b->idx.named.grpc_encoding != NULL) { GPR_TIMER_BEGIN("incoming_compression_algorithm", 0); set_incoming_compression_algorithm( call, decode_compression(b->idx.named.grpc_encoding->md)); GPR_TIMER_END("incoming_compression_algorithm", 0); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_encoding); + grpc_metadata_batch_remove(b, b->idx.named.grpc_encoding); } if (b->idx.named.grpc_accept_encoding != NULL) { GPR_TIMER_BEGIN("encodings_accepted_by_peer", 0); - set_encodings_accepted_by_peer(exec_ctx, call, - b->idx.named.grpc_accept_encoding->md); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_accept_encoding); + set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md); + grpc_metadata_batch_remove(b, b->idx.named.grpc_accept_encoding); GPR_TIMER_END("encodings_accepted_by_peer", 0); } if (b->idx.named.accept_encoding != NULL) { GPR_TIMER_BEGIN("stream_encodings_accepted_by_peer", 0); - set_stream_encodings_accepted_by_peer(exec_ctx, call, + set_stream_encodings_accepted_by_peer(call, b->idx.named.accept_encoding->md); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.accept_encoding); + grpc_metadata_batch_remove(b, b->idx.named.accept_encoding); GPR_TIMER_END("stream_encodings_accepted_by_peer", 0); } publish_app_metadata(call, b, false); } -static void recv_trailing_filter(grpc_exec_ctx *exec_ctx, void *args, - grpc_metadata_batch *b) { +static void recv_trailing_filter(void *args, grpc_metadata_batch *b) { grpc_call *call = (grpc_call *)args; if (b->idx.named.grpc_status != NULL) { uint32_t status_code = decode_status(b->idx.named.grpc_status->md); @@ -1172,13 +1150,13 @@ static void recv_trailing_filter(grpc_exec_ctx *exec_ctx, void *args, error = grpc_error_set_str( error, GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_ref_internal(GRPC_MDVALUE(b->idx.named.grpc_message->md))); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_message); + grpc_metadata_batch_remove(b, b->idx.named.grpc_message); } else if (error != GRPC_ERROR_NONE) { error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, grpc_empty_slice()); } - set_status_from_error(exec_ctx, call, STATUS_FROM_WIRE, error); - grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_status); + set_status_from_error(call, STATUS_FROM_WIRE, error); + grpc_metadata_batch_remove(b, b->idx.named.grpc_status); } publish_app_metadata(call, b, true); } @@ -1255,12 +1233,12 @@ static batch_control *allocate_batch_control(grpc_call *call, return bctl; } -static void finish_batch_completion(grpc_exec_ctx *exec_ctx, void *user_data, +static void finish_batch_completion(void *user_data, grpc_cq_completion *storage) { batch_control *bctl = (batch_control *)user_data; grpc_call *call = bctl->call; bctl->call = NULL; - GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completion"); + GRPC_CALL_INTERNAL_UNREF(call, "completion"); } static grpc_error *consolidate_batch_errors(batch_control *bctl) { @@ -1284,15 +1262,13 @@ static grpc_error *consolidate_batch_errors(batch_control *bctl) { } } -static void post_batch_completion(grpc_exec_ctx *exec_ctx, - batch_control *bctl) { +static void post_batch_completion(batch_control *bctl) { grpc_call *next_child_call; grpc_call *call = bctl->call; grpc_error *error = consolidate_batch_errors(bctl); if (bctl->op.send_initial_metadata) { grpc_metadata_batch_destroy( - exec_ctx, &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]); } if (bctl->op.send_message) { @@ -1300,13 +1276,12 @@ static void post_batch_completion(grpc_exec_ctx *exec_ctx, } if (bctl->op.send_trailing_metadata) { grpc_metadata_batch_destroy( - exec_ctx, &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]); } if (bctl->op.recv_trailing_metadata) { grpc_metadata_batch *md = &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */]; - recv_trailing_filter(exec_ctx, call, md); + recv_trailing_filter(call, md); /* propagate cancellation to any interested children */ gpr_atm_rel_store(&call->received_final_op_atm, 1); @@ -1320,9 +1295,9 @@ static void post_batch_completion(grpc_exec_ctx *exec_ctx, next_child_call = child->child->sibling_next; if (child->cancellation_is_inherited) { GRPC_CALL_INTERNAL_REF(child, "propagate_cancel"); - cancel_with_error(exec_ctx, child, STATUS_FROM_API_OVERRIDE, + cancel_with_error(child, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); - GRPC_CALL_INTERNAL_UNREF(exec_ctx, child, "propagate_cancel"); + GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel"); } child = next_child_call; } while (child != pc->first_child); @@ -1331,11 +1306,11 @@ static void post_batch_completion(grpc_exec_ctx *exec_ctx, } if (call->is_client) { - get_final_status(exec_ctx, call, set_status_value_directly, + get_final_status(call, set_status_value_directly, call->final_op.client.status, call->final_op.client.status_details); } else { - get_final_status(exec_ctx, call, set_cancelled_value, + get_final_status(call, set_cancelled_value, call->final_op.server.cancelled, NULL); } @@ -1351,25 +1326,24 @@ static void post_batch_completion(grpc_exec_ctx *exec_ctx, if (bctl->completion_data.notify_tag.is_closure) { /* unrefs bctl->error */ bctl->call = NULL; - GRPC_CLOSURE_RUN( - exec_ctx, (grpc_closure *)bctl->completion_data.notify_tag.tag, error); - GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completion"); + GRPC_CLOSURE_RUN((grpc_closure *)bctl->completion_data.notify_tag.tag, + error); + GRPC_CALL_INTERNAL_UNREF(call, "completion"); } else { /* unrefs bctl->error */ - grpc_cq_end_op( - exec_ctx, bctl->call->cq, bctl->completion_data.notify_tag.tag, error, - finish_batch_completion, bctl, &bctl->completion_data.cq_completion); + grpc_cq_end_op(bctl->call->cq, bctl->completion_data.notify_tag.tag, error, + finish_batch_completion, bctl, + &bctl->completion_data.cq_completion); } } -static void finish_batch_step(grpc_exec_ctx *exec_ctx, batch_control *bctl) { +static void finish_batch_step(batch_control *bctl) { if (gpr_unref(&bctl->steps_to_complete)) { - post_batch_completion(exec_ctx, bctl); + post_batch_completion(bctl); } } -static void continue_receiving_slices(grpc_exec_ctx *exec_ctx, - batch_control *bctl) { +static void continue_receiving_slices(batch_control *bctl) { grpc_error *error; grpc_call *call = bctl->call; for (;;) { @@ -1377,25 +1351,25 @@ static void continue_receiving_slices(grpc_exec_ctx *exec_ctx, (*call->receiving_buffer)->data.raw.slice_buffer.length; if (remaining == 0) { call->receiving_message = 0; - grpc_byte_stream_destroy(exec_ctx, call->receiving_stream); + grpc_byte_stream_destroy(call->receiving_stream); call->receiving_stream = NULL; - finish_batch_step(exec_ctx, bctl); + finish_batch_step(bctl); return; } - if (grpc_byte_stream_next(exec_ctx, call->receiving_stream, remaining, + if (grpc_byte_stream_next(call->receiving_stream, remaining, &call->receiving_slice_ready)) { - error = grpc_byte_stream_pull(exec_ctx, call->receiving_stream, - &call->receiving_slice); + error = + grpc_byte_stream_pull(call->receiving_stream, &call->receiving_slice); if (error == GRPC_ERROR_NONE) { grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer, call->receiving_slice); } else { - grpc_byte_stream_destroy(exec_ctx, call->receiving_stream); + grpc_byte_stream_destroy(call->receiving_stream); call->receiving_stream = NULL; grpc_byte_buffer_destroy(*call->receiving_buffer); *call->receiving_buffer = NULL; call->receiving_message = 0; - finish_batch_step(exec_ctx, bctl); + finish_batch_step(bctl); return; } } else { @@ -1404,8 +1378,7 @@ static void continue_receiving_slices(grpc_exec_ctx *exec_ctx, } } -static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp, - grpc_error *error) { +static void receiving_slice_ready(void *bctlp, grpc_error *error) { batch_control *bctl = (batch_control *)bctlp; grpc_call *call = bctl->call; grpc_byte_stream *bs = call->receiving_stream; @@ -1413,11 +1386,11 @@ static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp, if (error == GRPC_ERROR_NONE) { grpc_slice slice; - error = grpc_byte_stream_pull(exec_ctx, bs, &slice); + error = grpc_byte_stream_pull(bs, &slice); if (error == GRPC_ERROR_NONE) { grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer, slice); - continue_receiving_slices(exec_ctx, bctl); + continue_receiving_slices(bctl); } else { /* Error returned by grpc_byte_stream_pull needs to be released manually */ @@ -1429,25 +1402,24 @@ static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp, if (GRPC_TRACER_ON(grpc_trace_operation_failures)) { GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error)); } - grpc_byte_stream_destroy(exec_ctx, call->receiving_stream); + grpc_byte_stream_destroy(call->receiving_stream); call->receiving_stream = NULL; grpc_byte_buffer_destroy(*call->receiving_buffer); *call->receiving_buffer = NULL; call->receiving_message = 0; - finish_batch_step(exec_ctx, bctl); + finish_batch_step(bctl); if (release_error) { GRPC_ERROR_UNREF(error); } } } -static void process_data_after_md(grpc_exec_ctx *exec_ctx, - batch_control *bctl) { +static void process_data_after_md(batch_control *bctl) { grpc_call *call = bctl->call; if (call->receiving_stream == NULL) { *call->receiving_buffer = NULL; call->receiving_message = 0; - finish_batch_step(exec_ctx, bctl); + finish_batch_step(bctl); } else { call->test_only_last_message_flags = call->receiving_stream->flags; if ((call->receiving_stream->flags & GRPC_WRITE_INTERNAL_COMPRESS) && @@ -1459,46 +1431,42 @@ static void process_data_after_md(grpc_exec_ctx *exec_ctx, } GRPC_CLOSURE_INIT(&call->receiving_slice_ready, receiving_slice_ready, bctl, grpc_schedule_on_exec_ctx); - continue_receiving_slices(exec_ctx, bctl); + continue_receiving_slices(bctl); } } -static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp, - grpc_error *error) { +static void receiving_stream_ready(void *bctlp, grpc_error *error) { batch_control *bctl = (batch_control *)bctlp; grpc_call *call = bctl->call; if (error != GRPC_ERROR_NONE) { if (call->receiving_stream != NULL) { - grpc_byte_stream_destroy(exec_ctx, call->receiving_stream); + grpc_byte_stream_destroy(call->receiving_stream); call->receiving_stream = NULL; } - add_batch_error(exec_ctx, bctl, GRPC_ERROR_REF(error), true); - cancel_with_error(exec_ctx, call, STATUS_FROM_SURFACE, - GRPC_ERROR_REF(error)); + add_batch_error(bctl, GRPC_ERROR_REF(error), true); + cancel_with_error(call, STATUS_FROM_SURFACE, GRPC_ERROR_REF(error)); } /* If recv_state is RECV_NONE, we will save the batch_control * object with rel_cas, and will not use it after the cas. Its corresponding * acq_load is in receiving_initial_metadata_ready() */ if (error != GRPC_ERROR_NONE || call->receiving_stream == NULL || !gpr_atm_rel_cas(&call->recv_state, RECV_NONE, (gpr_atm)bctlp)) { - process_data_after_md(exec_ctx, bctl); + process_data_after_md(bctl); } } // The recv_message_ready callback used when sending a batch containing // a recv_message op down the filter stack. Yields the call combiner // before processing the received message. -static void receiving_stream_ready_in_call_combiner(grpc_exec_ctx *exec_ctx, - void *bctlp, +static void receiving_stream_ready_in_call_combiner(void *bctlp, grpc_error *error) { batch_control *bctl = (batch_control *)bctlp; grpc_call *call = bctl->call; - GRPC_CALL_COMBINER_STOP(exec_ctx, &call->call_combiner, "recv_message_ready"); - receiving_stream_ready(exec_ctx, bctlp, error); + GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready"); + receiving_stream_ready(bctlp, error); } -static void validate_filtered_metadata(grpc_exec_ctx *exec_ctx, - batch_control *bctl) { +static void validate_filtered_metadata(batch_control *bctl) { grpc_call *call = bctl->call; /* validate compression algorithms */ if (call->incoming_stream_compression_algorithm != @@ -1512,8 +1480,8 @@ static void validate_filtered_metadata(grpc_exec_ctx *exec_ctx, gpr_asprintf(&error_msg, "Invalid stream compression algorithm value '%d'.", algo); gpr_log(GPR_ERROR, "%s", error_msg); - cancel_with_status(exec_ctx, call, STATUS_FROM_SURFACE, - GRPC_STATUS_UNIMPLEMENTED, error_msg); + cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED, + error_msg); } else if (grpc_compression_options_is_stream_compression_algorithm_enabled( &compression_options, algo) == 0) { /* check if algorithm is supported by current channel config */ @@ -1522,8 +1490,8 @@ static void validate_filtered_metadata(grpc_exec_ctx *exec_ctx, gpr_asprintf(&error_msg, "Stream compression algorithm '%s' is disabled.", algo_name); gpr_log(GPR_ERROR, "%s", error_msg); - cancel_with_status(exec_ctx, call, STATUS_FROM_SURFACE, - GRPC_STATUS_UNIMPLEMENTED, error_msg); + cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED, + error_msg); } gpr_free(error_msg); @@ -1553,8 +1521,8 @@ static void validate_filtered_metadata(grpc_exec_ctx *exec_ctx, gpr_asprintf(&error_msg, "Invalid compression algorithm value '%d'.", algo); gpr_log(GPR_ERROR, "%s", error_msg); - cancel_with_status(exec_ctx, call, STATUS_FROM_SURFACE, - GRPC_STATUS_UNIMPLEMENTED, error_msg); + cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED, + error_msg); } else if (grpc_compression_options_is_algorithm_enabled( &compression_options, algo) == 0) { /* check if algorithm is supported by current channel config */ @@ -1563,8 +1531,8 @@ static void validate_filtered_metadata(grpc_exec_ctx *exec_ctx, gpr_asprintf(&error_msg, "Compression algorithm '%s' is disabled.", algo_name); gpr_log(GPR_ERROR, "%s", error_msg); - cancel_with_status(exec_ctx, call, STATUS_FROM_SURFACE, - GRPC_STATUS_UNIMPLEMENTED, error_msg); + cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED, + error_msg); } else { call->incoming_compression_algorithm = algo; } @@ -1587,34 +1555,31 @@ static void validate_filtered_metadata(grpc_exec_ctx *exec_ctx, } } -static void add_batch_error(grpc_exec_ctx *exec_ctx, batch_control *bctl, - grpc_error *error, bool has_cancelled) { +static void add_batch_error(batch_control *bctl, grpc_error *error, + bool has_cancelled) { if (error == GRPC_ERROR_NONE) return; int idx = (int)gpr_atm_full_fetch_add(&bctl->num_errors, 1); if (idx == 0 && !has_cancelled) { - cancel_with_error(exec_ctx, bctl->call, STATUS_FROM_CORE, - GRPC_ERROR_REF(error)); + cancel_with_error(bctl->call, STATUS_FROM_CORE, GRPC_ERROR_REF(error)); } bctl->errors[idx] = error; } -static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx, - void *bctlp, grpc_error *error) { +static void receiving_initial_metadata_ready(void *bctlp, grpc_error *error) { batch_control *bctl = (batch_control *)bctlp; grpc_call *call = bctl->call; - GRPC_CALL_COMBINER_STOP(exec_ctx, &call->call_combiner, - "recv_initial_metadata_ready"); + GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready"); - add_batch_error(exec_ctx, bctl, GRPC_ERROR_REF(error), false); + add_batch_error(bctl, GRPC_ERROR_REF(error), false); if (error == GRPC_ERROR_NONE) { grpc_metadata_batch *md = &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */]; - recv_initial_filter(exec_ctx, call, md); + recv_initial_filter(call, md); /* TODO(ctiller): this could be moved into recv_initial_filter now */ GPR_TIMER_BEGIN("validate_filtered_metadata", 0); - validate_filtered_metadata(exec_ctx, bctl); + validate_filtered_metadata(bctl); GPR_TIMER_END("validate_filtered_metadata", 0); if (md->deadline != GRPC_MILLIS_INF_FUTURE && !call->is_client) { @@ -1647,28 +1612,25 @@ static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx, } } if (saved_rsr_closure != NULL) { - GRPC_CLOSURE_RUN(exec_ctx, saved_rsr_closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(saved_rsr_closure, GRPC_ERROR_REF(error)); } - finish_batch_step(exec_ctx, bctl); + finish_batch_step(bctl); } -static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, - grpc_error *error) { +static void finish_batch(void *bctlp, grpc_error *error) { batch_control *bctl = (batch_control *)bctlp; grpc_call *call = bctl->call; - GRPC_CALL_COMBINER_STOP(exec_ctx, &call->call_combiner, "on_complete"); - add_batch_error(exec_ctx, bctl, GRPC_ERROR_REF(error), false); - finish_batch_step(exec_ctx, bctl); + GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete"); + add_batch_error(bctl, GRPC_ERROR_REF(error), false); + finish_batch_step(bctl); } -static void free_no_op_completion(grpc_exec_ctx *exec_ctx, void *p, - grpc_cq_completion *completion) { +static void free_no_op_completion(void *p, grpc_cq_completion *completion) { gpr_free(completion); } -static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, - grpc_call *call, const grpc_op *ops, +static grpc_call_error call_start_batch(grpc_call *call, const grpc_op *ops, size_t nops, void *notify_tag, int is_notify_tag_closure) { size_t i; @@ -1686,11 +1648,10 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, if (!is_notify_tag_closure) { GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag)); grpc_cq_end_op( - exec_ctx, call->cq, notify_tag, GRPC_ERROR_NONE, - free_no_op_completion, NULL, + call->cq, notify_tag, GRPC_ERROR_NONE, free_no_op_completion, NULL, (grpc_cq_completion *)gpr_malloc(sizeof(grpc_cq_completion))); } else { - GRPC_CLOSURE_SCHED(exec_ctx, (grpc_closure *)notify_tag, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED((grpc_closure *)notify_tag, GRPC_ERROR_NONE); } error = GRPC_CALL_OK; goto done; @@ -1790,7 +1751,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, stream_op->send_initial_metadata = true; call->sent_initial_metadata = true; if (!prepare_application_metadata( - exec_ctx, call, (int)op->data.send_initial_metadata.count, + call, (int)op->data.send_initial_metadata.count, op->data.send_initial_metadata.metadata, 0, call->is_client, &call->compression_md, (int)additional_metadata_count)) { error = GRPC_CALL_ERROR_INVALID_METADATA; @@ -1884,7 +1845,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, GPR_ASSERT(call->send_extra_metadata_count == 0); call->send_extra_metadata_count = 1; call->send_extra_metadata[0].md = grpc_channel_get_reffed_status_elem( - exec_ctx, call->channel, op->data.send_status_from_server.status); + call->channel, op->data.send_status_from_server.status); { grpc_error *override_error = GRPC_ERROR_NONE; if (op->data.send_status_from_server.status != GRPC_STATUS_OK) { @@ -1893,7 +1854,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, } if (op->data.send_status_from_server.status_details != NULL) { call->send_extra_metadata[1].md = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_GRPC_MESSAGE, + GRPC_MDSTR_GRPC_MESSAGE, grpc_slice_ref_internal( *op->data.send_status_from_server.status_details)); call->send_extra_metadata_count++; @@ -1904,16 +1865,15 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, grpc_slice_from_copied_string(msg)); gpr_free(msg); } - set_status_from_error(exec_ctx, call, STATUS_FROM_API_OVERRIDE, - override_error); + set_status_from_error(call, STATUS_FROM_API_OVERRIDE, override_error); } if (!prepare_application_metadata( - exec_ctx, call, + call, (int)op->data.send_status_from_server.trailing_metadata_count, op->data.send_status_from_server.trailing_metadata, 1, 1, NULL, 0)) { for (int n = 0; n < call->send_extra_metadata_count; n++) { - GRPC_MDELEM_UNREF(exec_ctx, call->send_extra_metadata[n].md); + GRPC_MDELEM_UNREF(call->send_extra_metadata[n].md); } call->send_extra_metadata_count = 0; error = GRPC_CALL_ERROR_INVALID_METADATA; @@ -2040,7 +2000,7 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx, stream_op->on_complete = &bctl->finish_batch; gpr_atm_rel_store(&call->any_ops_sent_atm, 1); - execute_batch(exec_ctx, call, stream_op, &bctl->start_batch); + execute_batch(call, stream_op, &bctl->start_batch); done: GPR_TIMER_END("grpc_call_start_batch", 0); @@ -2050,15 +2010,15 @@ done_with_error: /* reverse any mutations that occured */ if (stream_op->send_initial_metadata) { call->sent_initial_metadata = false; - grpc_metadata_batch_clear(exec_ctx, &call->metadata_batch[0][0]); + grpc_metadata_batch_clear(&call->metadata_batch[0][0]); } if (stream_op->send_message) { call->sending_message = false; - grpc_byte_stream_destroy(exec_ctx, &call->sending_stream.base); + grpc_byte_stream_destroy(&call->sending_stream.base); } if (stream_op->send_trailing_metadata) { call->sent_final_op = false; - grpc_metadata_batch_clear(exec_ctx, &call->metadata_batch[0][1]); + grpc_metadata_batch_clear(&call->metadata_batch[0][1]); } if (stream_op->recv_initial_metadata) { call->received_initial_metadata = false; @@ -2074,7 +2034,7 @@ done_with_error: grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, size_t nops, void *tag, void *reserved) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_call_error err; GRPC_API_TRACE( @@ -2085,19 +2045,18 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, if (reserved != NULL) { err = GRPC_CALL_ERROR; } else { - err = call_start_batch(&exec_ctx, call, ops, nops, tag, 0); + err = call_start_batch(call, ops, nops, tag, 0); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return err; } -grpc_call_error grpc_call_start_batch_and_execute(grpc_exec_ctx *exec_ctx, - grpc_call *call, +grpc_call_error grpc_call_start_batch_and_execute(grpc_call *call, const grpc_op *ops, size_t nops, grpc_closure *closure) { - return call_start_batch(exec_ctx, call, ops, nops, closure, 1); + return call_start_batch(call, ops, nops, closure, 1); } void grpc_call_context_set(grpc_call *call, grpc_context_index elem, diff --git a/src/core/lib/surface/call.h b/src/core/lib/surface/call.h index 27c2f5243ca..eba96e04b97 100644 --- a/src/core/lib/surface/call.h +++ b/src/core/lib/surface/call.h @@ -30,8 +30,7 @@ extern "C" { #include <grpc/grpc.h> #include <grpc/impl/codegen/compression_types.h> -typedef void (*grpc_ioreq_completion_func)(grpc_exec_ctx *exec_ctx, - grpc_call *call, int success, +typedef void (*grpc_ioreq_completion_func)(grpc_call *call, int success, void *user_data); typedef struct grpc_call_create_args { @@ -55,33 +54,28 @@ typedef struct grpc_call_create_args { /* Create a new call based on \a args. Regardless of success or failure, always returns a valid new call into *call */ -grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx, - const grpc_call_create_args *args, +grpc_error *grpc_call_create(const grpc_call_create_args *args, grpc_call **call); -void grpc_call_set_completion_queue(grpc_exec_ctx *exec_ctx, grpc_call *call, - grpc_completion_queue *cq); +void grpc_call_set_completion_queue(grpc_call *call, grpc_completion_queue *cq); #ifndef NDEBUG void grpc_call_internal_ref(grpc_call *call, const char *reason); -void grpc_call_internal_unref(grpc_exec_ctx *exec_ctx, grpc_call *call, - const char *reason); +void grpc_call_internal_unref(grpc_call *call, const char *reason); #define GRPC_CALL_INTERNAL_REF(call, reason) \ grpc_call_internal_ref(call, reason) -#define GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, reason) \ - grpc_call_internal_unref(exec_ctx, call, reason) +#define GRPC_CALL_INTERNAL_UNREF(call, reason) \ + grpc_call_internal_unref(call, reason) #else void grpc_call_internal_ref(grpc_call *call); -void grpc_call_internal_unref(grpc_exec_ctx *exec_ctx, grpc_call *call); +void grpc_call_internal_unref(grpc_call *call); #define GRPC_CALL_INTERNAL_REF(call, reason) grpc_call_internal_ref(call) -#define GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, reason) \ - grpc_call_internal_unref(exec_ctx, call) +#define GRPC_CALL_INTERNAL_UNREF(call, reason) grpc_call_internal_unref(call) #endif grpc_call_stack *grpc_call_get_call_stack(grpc_call *call); -grpc_call_error grpc_call_start_batch_and_execute(grpc_exec_ctx *exec_ctx, - grpc_call *call, +grpc_call_error grpc_call_start_batch_and_execute(grpc_call *call, const grpc_op *ops, size_t nops, grpc_closure *closure); diff --git a/src/core/lib/surface/call_details.cc b/src/core/lib/surface/call_details.cc index ea9208c7e32..01b19abefbd 100644 --- a/src/core/lib/surface/call_details.cc +++ b/src/core/lib/surface/call_details.cc @@ -34,8 +34,8 @@ void grpc_call_details_init(grpc_call_details* cd) { void grpc_call_details_destroy(grpc_call_details* cd) { GRPC_API_TRACE("grpc_call_details_destroy(cd=%p)", 1, (cd)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_unref_internal(&exec_ctx, cd->method); - grpc_slice_unref_internal(&exec_ctx, cd->host); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_slice_unref_internal(cd->method); + grpc_slice_unref_internal(cd->host); + grpc_exec_ctx_finish(); } diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index 860dcc82db0..0511f561acc 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -69,23 +69,22 @@ struct grpc_channel { #define CHANNEL_FROM_TOP_ELEM(top_elem) \ CHANNEL_FROM_CHANNEL_STACK(grpc_channel_stack_from_top_element(top_elem)) -static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error); +static void destroy_channel(void *arg, grpc_error *error); grpc_channel *grpc_channel_create_with_builder( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, + grpc_channel_stack_builder *builder, grpc_channel_stack_type channel_stack_type) { char *target = gpr_strdup(grpc_channel_stack_builder_get_target(builder)); grpc_channel_args *args = grpc_channel_args_copy( grpc_channel_stack_builder_get_channel_arguments(builder)); grpc_channel *channel; if (channel_stack_type == GRPC_SERVER_CHANNEL) { - GRPC_STATS_INC_SERVER_CHANNELS_CREATED(exec_ctx); + GRPC_STATS_INC_SERVER_CHANNELS_CREATED(); } else { - GRPC_STATS_INC_CLIENT_CHANNELS_CREATED(exec_ctx); + GRPC_STATS_INC_CLIENT_CHANNELS_CREATED(); } grpc_error *error = grpc_channel_stack_builder_finish( - exec_ctx, builder, sizeof(grpc_channel), 1, destroy_channel, NULL, + builder, sizeof(grpc_channel), 1, destroy_channel, NULL, (void **)&channel); if (error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "channel stack builder failed: %s", @@ -114,10 +113,10 @@ grpc_channel *grpc_channel_create_with_builder( } else { if (!GRPC_MDISNULL(channel->default_authority)) { /* setting this takes precedence over anything else */ - GRPC_MDELEM_UNREF(exec_ctx, channel->default_authority); + GRPC_MDELEM_UNREF(channel->default_authority); } channel->default_authority = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_AUTHORITY, + GRPC_MDSTR_AUTHORITY, grpc_slice_intern( grpc_slice_from_static_string(args->args[i].value.string))); } @@ -134,7 +133,7 @@ grpc_channel *grpc_channel_create_with_builder( GRPC_SSL_TARGET_NAME_OVERRIDE_ARG); } else { channel->default_authority = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_AUTHORITY, + GRPC_MDSTR_AUTHORITY, grpc_slice_intern( grpc_slice_from_static_string(args->args[i].value.string))); } @@ -191,25 +190,23 @@ grpc_channel *grpc_channel_create_with_builder( } done: - grpc_channel_args_destroy(exec_ctx, args); + grpc_channel_args_destroy(args); return channel; } -grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target, +grpc_channel *grpc_channel_create(const char *target, const grpc_channel_args *input_args, grpc_channel_stack_type channel_stack_type, grpc_transport *optional_transport) { grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create(); - grpc_channel_stack_builder_set_channel_arguments(exec_ctx, builder, - input_args); + grpc_channel_stack_builder_set_channel_arguments(builder, input_args); grpc_channel_stack_builder_set_target(builder, target); grpc_channel_stack_builder_set_transport(builder, optional_transport); - if (!grpc_channel_init_create_stack(exec_ctx, builder, channel_stack_type)) { - grpc_channel_stack_builder_destroy(exec_ctx, builder); + if (!grpc_channel_init_create_stack(builder, channel_stack_type)) { + grpc_channel_stack_builder_destroy(builder); return NULL; } - return grpc_channel_create_with_builder(exec_ctx, builder, - channel_stack_type); + return grpc_channel_create_with_builder(builder, channel_stack_type); } size_t grpc_channel_get_call_size_estimate(grpc_channel *channel) { @@ -251,18 +248,18 @@ char *grpc_channel_get_target(grpc_channel *channel) { void grpc_channel_get_info(grpc_channel *channel, const grpc_channel_info *channel_info) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_channel_element *elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0); - elem->filter->get_channel_info(&exec_ctx, elem, channel_info); - grpc_exec_ctx_finish(&exec_ctx); + elem->filter->get_channel_info(elem, channel_info); + grpc_exec_ctx_finish(); } static grpc_call *grpc_channel_create_call_internal( - grpc_exec_ctx *exec_ctx, grpc_channel *channel, grpc_call *parent_call, - uint32_t propagation_mask, grpc_completion_queue *cq, - grpc_pollset_set *pollset_set_alternative, grpc_mdelem path_mdelem, - grpc_mdelem authority_mdelem, grpc_millis deadline) { + grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, + grpc_completion_queue *cq, grpc_pollset_set *pollset_set_alternative, + grpc_mdelem path_mdelem, grpc_mdelem authority_mdelem, + grpc_millis deadline) { grpc_mdelem send_metadata[2]; size_t num_metadata = 0; @@ -289,7 +286,7 @@ static grpc_call *grpc_channel_create_call_internal( args.send_deadline = deadline; grpc_call *call; - GRPC_LOG_IF_ERROR("call_create", grpc_call_create(exec_ctx, &args, &call)); + GRPC_LOG_IF_ERROR("call_create", grpc_call_create(&args, &call)); return call; } @@ -300,29 +297,27 @@ grpc_call *grpc_channel_create_call(grpc_channel *channel, grpc_slice method, const grpc_slice *host, gpr_timespec deadline, void *reserved) { GPR_ASSERT(!reserved); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_call *call = grpc_channel_create_call_internal( - &exec_ctx, channel, parent_call, propagation_mask, cq, NULL, - grpc_mdelem_from_slices(&exec_ctx, GRPC_MDSTR_PATH, - grpc_slice_ref_internal(method)), - host != NULL ? grpc_mdelem_from_slices(&exec_ctx, GRPC_MDSTR_AUTHORITY, + channel, parent_call, propagation_mask, cq, NULL, + grpc_mdelem_from_slices(GRPC_MDSTR_PATH, grpc_slice_ref_internal(method)), + host != NULL ? grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_ref_internal(*host)) : GRPC_MDNULL, grpc_timespec_to_millis_round_up(deadline)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return call; } grpc_call *grpc_channel_create_pollset_set_call( - grpc_exec_ctx *exec_ctx, grpc_channel *channel, grpc_call *parent_call, - uint32_t propagation_mask, grpc_pollset_set *pollset_set, grpc_slice method, - const grpc_slice *host, grpc_millis deadline, void *reserved) { + grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, + grpc_pollset_set *pollset_set, grpc_slice method, const grpc_slice *host, + grpc_millis deadline, void *reserved) { GPR_ASSERT(!reserved); return grpc_channel_create_call_internal( - exec_ctx, channel, parent_call, propagation_mask, NULL, pollset_set, - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_PATH, - grpc_slice_ref_internal(method)), - host != NULL ? grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY, + channel, parent_call, propagation_mask, NULL, pollset_set, + grpc_mdelem_from_slices(GRPC_MDSTR_PATH, grpc_slice_ref_internal(method)), + host != NULL ? grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_ref_internal(*host)) : GRPC_MDNULL, deadline); @@ -335,21 +330,21 @@ void *grpc_channel_register_call(grpc_channel *channel, const char *method, "grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)", 4, (channel, method, host, reserved)); GPR_ASSERT(!reserved); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; rc->path = grpc_mdelem_from_slices( - &exec_ctx, GRPC_MDSTR_PATH, + GRPC_MDSTR_PATH, grpc_slice_intern(grpc_slice_from_static_string(method))); rc->authority = host ? grpc_mdelem_from_slices( - &exec_ctx, GRPC_MDSTR_AUTHORITY, + GRPC_MDSTR_AUTHORITY, grpc_slice_intern(grpc_slice_from_static_string(host))) : GRPC_MDNULL; gpr_mu_lock(&channel->registered_call_mu); rc->next = channel->registered_calls; channel->registered_calls = rc; gpr_mu_unlock(&channel->registered_call_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return rc; } @@ -369,12 +364,12 @@ grpc_call *grpc_channel_create_registered_call( registered_call_handle, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type, reserved)); GPR_ASSERT(!reserved); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_call *call = grpc_channel_create_call_internal( - &exec_ctx, channel, parent_call, propagation_mask, completion_queue, NULL, + channel, parent_call, propagation_mask, completion_queue, NULL, GRPC_MDELEM_REF(rc->path), GRPC_MDELEM_REF(rc->authority), grpc_timespec_to_millis_round_up(deadline)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return call; } @@ -389,23 +384,21 @@ void grpc_channel_internal_ref(grpc_channel *c REF_ARG) { GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(c), REF_REASON); } -void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx, - grpc_channel *c REF_ARG) { - GRPC_CHANNEL_STACK_UNREF(exec_ctx, CHANNEL_STACK_FROM_CHANNEL(c), REF_REASON); +void grpc_channel_internal_unref(grpc_channel *c REF_ARG) { + GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(c), REF_REASON); } -static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void destroy_channel(void *arg, grpc_error *error) { grpc_channel *channel = (grpc_channel *)arg; - grpc_channel_stack_destroy(exec_ctx, CHANNEL_STACK_FROM_CHANNEL(channel)); + grpc_channel_stack_destroy(CHANNEL_STACK_FROM_CHANNEL(channel)); while (channel->registered_calls) { registered_call *rc = channel->registered_calls; channel->registered_calls = rc->next; - GRPC_MDELEM_UNREF(exec_ctx, rc->path); - GRPC_MDELEM_UNREF(exec_ctx, rc->authority); + GRPC_MDELEM_UNREF(rc->path); + GRPC_MDELEM_UNREF(rc->authority); gpr_free(rc); } - GRPC_MDELEM_UNREF(exec_ctx, channel->default_authority); + GRPC_MDELEM_UNREF(channel->default_authority); gpr_mu_destroy(&channel->registered_call_mu); gpr_free(channel->target); gpr_free(channel); @@ -414,16 +407,16 @@ static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg, void grpc_channel_destroy(grpc_channel *channel) { grpc_transport_op *op = grpc_make_transport_op(NULL); grpc_channel_element *elem; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (channel)); op->disconnect_with_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Destroyed"); elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0); - elem->filter->start_transport_op(&exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); - GRPC_CHANNEL_INTERNAL_UNREF(&exec_ctx, channel, "channel"); + GRPC_CHANNEL_INTERNAL_UNREF(channel, "channel"); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } grpc_channel_stack *grpc_channel_get_channel_stack(grpc_channel *channel) { @@ -435,8 +428,7 @@ grpc_compression_options grpc_channel_compression_options( return channel->compression_options; } -grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_exec_ctx *exec_ctx, - grpc_channel *channel, int i) { +grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_channel *channel, int i) { char tmp[GPR_LTOA_MIN_BUFSIZE]; switch (i) { case 0: @@ -447,6 +439,6 @@ grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_exec_ctx *exec_ctx, return GRPC_MDELEM_GRPC_STATUS_2; } gpr_ltoa(i, tmp); - return grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_GRPC_STATUS, + return grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_STATUS, grpc_slice_from_copied_string(tmp)); } diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h index 4d1c7e369fd..dd8b8983ba8 100644 --- a/src/core/lib/surface/channel.h +++ b/src/core/lib/surface/channel.h @@ -27,13 +27,13 @@ extern "C" { #endif -grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target, +grpc_channel *grpc_channel_create(const char *target, const grpc_channel_args *args, grpc_channel_stack_type channel_stack_type, grpc_transport *optional_transport); grpc_channel *grpc_channel_create_with_builder( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, + grpc_channel_stack_builder *builder, grpc_channel_stack_type channel_stack_type); /** Create a call given a grpc_channel, in order to call \a method. @@ -45,9 +45,9 @@ grpc_channel *grpc_channel_create_with_builder( properties from the server call to this new client call, depending on the value of \a propagation_mask (see propagation_bits.h for possible values) */ grpc_call *grpc_channel_create_pollset_set_call( - grpc_exec_ctx *exec_ctx, grpc_channel *channel, grpc_call *parent_call, - uint32_t propagation_mask, grpc_pollset_set *pollset_set, grpc_slice method, - const grpc_slice *host, grpc_millis deadline, void *reserved); + grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, + grpc_pollset_set *pollset_set, grpc_slice method, const grpc_slice *host, + grpc_millis deadline, void *reserved); /** Get a (borrowed) pointer to this channels underlying channel stack */ grpc_channel_stack *grpc_channel_get_channel_stack(grpc_channel *channel); @@ -56,8 +56,7 @@ grpc_channel_stack *grpc_channel_get_channel_stack(grpc_channel *channel); status_code. The returned elem is owned by the caller. */ -grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_exec_ctx *exec_ctx, - grpc_channel *channel, +grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_channel *channel, int status_code); size_t grpc_channel_get_call_size_estimate(grpc_channel *channel); @@ -65,20 +64,18 @@ void grpc_channel_update_call_size_estimate(grpc_channel *channel, size_t size); #ifndef NDEBUG void grpc_channel_internal_ref(grpc_channel *channel, const char *reason); -void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx, grpc_channel *channel, - const char *reason); +void grpc_channel_internal_unref(grpc_channel *channel, const char *reason); #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \ grpc_channel_internal_ref(channel, reason) -#define GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, reason) \ - grpc_channel_internal_unref(exec_ctx, channel, reason) +#define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \ + grpc_channel_internal_unref(channel, reason) #else void grpc_channel_internal_ref(grpc_channel *channel); -void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx, - grpc_channel *channel); +void grpc_channel_internal_unref(grpc_channel *channel); #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \ grpc_channel_internal_ref(channel) -#define GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, reason) \ - grpc_channel_internal_unref(exec_ctx, channel) +#define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \ + grpc_channel_internal_unref(channel) #endif /** Return the channel's compression options. */ diff --git a/src/core/lib/surface/channel_init.cc b/src/core/lib/surface/channel_init.cc index 33f444b89e9..a2ea3160c0e 100644 --- a/src/core/lib/surface/channel_init.cc +++ b/src/core/lib/surface/channel_init.cc @@ -89,8 +89,7 @@ void grpc_channel_init_shutdown(void) { } } -bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +bool grpc_channel_init_create_stack(grpc_channel_stack_builder *builder, grpc_channel_stack_type type) { GPR_ASSERT(g_finalized); @@ -99,7 +98,7 @@ bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx, for (size_t i = 0; i < g_slots[type].num_slots; i++) { const stage_slot *slot = &g_slots[type].slots[i]; - if (!slot->fn(exec_ctx, builder, slot->arg)) { + if (!slot->fn(builder, slot->arg)) { return false; } } diff --git a/src/core/lib/surface/channel_init.h b/src/core/lib/surface/channel_init.h index 5f109332ad6..1c5e0a29764 100644 --- a/src/core/lib/surface/channel_init.h +++ b/src/core/lib/surface/channel_init.h @@ -36,8 +36,7 @@ extern "C" { /// One stage of mutation: call functions against \a builder to influence the /// finally constructed channel stack -typedef bool (*grpc_channel_init_stage)(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +typedef bool (*grpc_channel_init_stage)(grpc_channel_stack_builder *builder, void *arg); /// Global initialization of the system @@ -70,8 +69,7 @@ void grpc_channel_init_shutdown(void); /// \a optional_transport is either NULL or a constructed transport object /// Returns a pointer to the base of the memory allocated (the actual channel /// stack object will be prefix_bytes past that pointer) -bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +bool grpc_channel_init_create_stack(grpc_channel_stack_builder *builder, grpc_channel_stack_type type); #ifdef __cplusplus diff --git a/src/core/lib/surface/channel_ping.cc b/src/core/lib/surface/channel_ping.cc index f45b5689588..5d41b8e9e43 100644 --- a/src/core/lib/surface/channel_ping.cc +++ b/src/core/lib/surface/channel_ping.cc @@ -33,15 +33,14 @@ typedef struct { grpc_cq_completion completion_storage; } ping_result; -static void ping_destroy(grpc_exec_ctx *exec_ctx, void *arg, - grpc_cq_completion *storage) { +static void ping_destroy(void *arg, grpc_cq_completion *storage) { gpr_free(arg); } -static void ping_done(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void ping_done(void *arg, grpc_error *error) { ping_result *pr = (ping_result *)arg; - grpc_cq_end_op(exec_ctx, pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy, - pr, &pr->completion_storage); + grpc_cq_end_op(pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy, pr, + &pr->completion_storage); } void grpc_channel_ping(grpc_channel *channel, grpc_completion_queue *cq, @@ -52,7 +51,7 @@ void grpc_channel_ping(grpc_channel *channel, grpc_completion_queue *cq, ping_result *pr = (ping_result *)gpr_malloc(sizeof(*pr)); grpc_channel_element *top_elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GPR_ASSERT(reserved == NULL); pr->tag = tag; pr->cq = cq; @@ -60,6 +59,6 @@ void grpc_channel_ping(grpc_channel *channel, grpc_completion_queue *cq, op->send_ping = &pr->closure; op->bind_pollset = grpc_cq_pollset(cq); GPR_ASSERT(grpc_cq_begin_op(cq, tag)); - top_elem->filter->start_transport_op(&exec_ctx, top_elem, op); - grpc_exec_ctx_finish(&exec_ctx); + top_elem->filter->start_transport_op(top_elem, op); + grpc_exec_ctx_finish(); } diff --git a/src/core/lib/surface/completion_queue.cc b/src/core/lib/surface/completion_queue.cc index 21664f03c8b..8abcb70d255 100644 --- a/src/core/lib/surface/completion_queue.cc +++ b/src/core/lib/surface/completion_queue.cc @@ -58,13 +58,12 @@ typedef struct { bool can_listen; size_t (*size)(void); void (*init)(grpc_pollset *pollset, gpr_mu **mu); - grpc_error *(*kick)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, + grpc_error *(*kick)(grpc_pollset *pollset, grpc_pollset_worker *specific_worker); - grpc_error *(*work)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_pollset_worker **worker, grpc_millis deadline); - void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_closure *closure); - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset); + grpc_error *(*work)(grpc_pollset *pollset, grpc_pollset_worker **worker, + grpc_millis deadline); + void (*shutdown)(grpc_pollset *pollset, grpc_closure *closure); + void (*destroy)(grpc_pollset *pollset); } cq_poller_vtable; typedef struct non_polling_worker { @@ -90,14 +89,12 @@ static void non_polling_poller_init(grpc_pollset *pollset, gpr_mu **mu) { *mu = &npp->mu; } -static void non_polling_poller_destroy(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset) { +static void non_polling_poller_destroy(grpc_pollset *pollset) { non_polling_poller *npp = (non_polling_poller *)pollset; gpr_mu_destroy(&npp->mu); } -static grpc_error *non_polling_poller_work(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset, +static grpc_error *non_polling_poller_work(grpc_pollset *pollset, grpc_pollset_worker **worker, grpc_millis deadline) { non_polling_poller *npp = (non_polling_poller *)pollset; @@ -122,7 +119,7 @@ static grpc_error *non_polling_poller_work(grpc_exec_ctx *exec_ctx, npp->root = w.next; if (&w == npp->root) { if (npp->shutdown) { - GRPC_CLOSURE_SCHED(exec_ctx, npp->shutdown, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(npp->shutdown, GRPC_ERROR_NONE); } npp->root = NULL; } @@ -135,8 +132,7 @@ static grpc_error *non_polling_poller_work(grpc_exec_ctx *exec_ctx, } static grpc_error *non_polling_poller_kick( - grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, - grpc_pollset_worker *specific_worker) { + grpc_pollset *pollset, grpc_pollset_worker *specific_worker) { non_polling_poller *p = (non_polling_poller *)pollset; if (specific_worker == NULL) specific_worker = (grpc_pollset_worker *)p->root; if (specific_worker != NULL) { @@ -149,14 +145,13 @@ static grpc_error *non_polling_poller_kick( return GRPC_ERROR_NONE; } -static void non_polling_poller_shutdown(grpc_exec_ctx *exec_ctx, - grpc_pollset *pollset, +static void non_polling_poller_shutdown(grpc_pollset *pollset, grpc_closure *closure) { non_polling_poller *p = (non_polling_poller *)pollset; GPR_ASSERT(closure != NULL); p->shutdown = closure; if (p->root == NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } else { non_polling_worker *w = p->root; do { @@ -183,13 +178,11 @@ typedef struct cq_vtable { grpc_cq_completion_type cq_completion_type; size_t data_size; void (*init)(void *data); - void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq); + void (*shutdown)(grpc_completion_queue *cq); void (*destroy)(void *data); bool (*begin_op)(grpc_completion_queue *cq, void *tag); - void (*end_op)(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq, void *tag, - grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, void *done_arg, - grpc_cq_completion *storage), + void (*end_op)(grpc_completion_queue *cq, void *tag, grpc_error *error, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage); grpc_event (*next)(grpc_completion_queue *cq, gpr_timespec deadline, void *reserved); @@ -274,31 +267,23 @@ struct grpc_completion_queue { }; /* Forward declarations */ -static void cq_finish_shutdown_next(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq); -static void cq_finish_shutdown_pluck(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq); -static void cq_shutdown_next(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq); -static void cq_shutdown_pluck(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq); +static void cq_finish_shutdown_next(grpc_completion_queue *cq); +static void cq_finish_shutdown_pluck(grpc_completion_queue *cq); +static void cq_shutdown_next(grpc_completion_queue *cq); +static void cq_shutdown_pluck(grpc_completion_queue *cq); static bool cq_begin_op_for_next(grpc_completion_queue *cq, void *tag); static bool cq_begin_op_for_pluck(grpc_completion_queue *cq, void *tag); -static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq, void *tag, +static void cq_end_op_for_next(grpc_completion_queue *cq, void *tag, grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, - void *done_arg, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage); -static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq, void *tag, +static void cq_end_op_for_pluck(grpc_completion_queue *cq, void *tag, grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, - void *done_arg, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage); @@ -342,8 +327,7 @@ grpc_tracer_flag grpc_cq_event_timeout_trace = gpr_free(_ev); \ } -static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *cq, - grpc_error *error); +static void on_pollset_shutdown_done(void *cq, grpc_error *error); static void cq_event_queue_init(grpc_cq_event_queue *q) { gpr_mpscq_init(&q->queue); @@ -362,23 +346,23 @@ static bool cq_event_queue_push(grpc_cq_event_queue *q, grpc_cq_completion *c) { static grpc_cq_completion *cq_event_queue_pop(grpc_cq_event_queue *q) { grpc_cq_completion *c = NULL; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; if (gpr_spinlock_trylock(&q->queue_lock)) { - GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES(&exec_ctx); + GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES(); bool is_empty = false; c = (grpc_cq_completion *)gpr_mpscq_pop_and_check_end(&q->queue, &is_empty); gpr_spinlock_unlock(&q->queue_lock); if (c == NULL && !is_empty) { - GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES(&exec_ctx); + GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES(); } } else { - GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES(&exec_ctx); + GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); if (c) { gpr_atm_no_barrier_fetch_add(&q->num_queue_items, -1); @@ -409,9 +393,9 @@ grpc_completion_queue *grpc_completion_queue_create_internal( const cq_poller_vtable *poller_vtable = &g_poller_vtable_by_poller_type[polling_type]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_STATS_INC_CQS_CREATED(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + GRPC_STATS_INC_CQS_CREATED(); + grpc_exec_ctx_finish(); cq = (grpc_completion_queue *)gpr_zalloc(sizeof(grpc_completion_queue) + vtable->data_size + @@ -493,15 +477,14 @@ void grpc_cq_internal_ref(grpc_completion_queue *cq) { gpr_ref(&cq->owning_refs); } -static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_pollset_shutdown_done(void *arg, grpc_error *error) { grpc_completion_queue *cq = (grpc_completion_queue *)arg; - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "pollset_destroy"); + GRPC_CQ_INTERNAL_UNREF(cq, "pollset_destroy"); } #ifndef NDEBUG -void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq, - const char *reason, const char *file, int line) { +void grpc_cq_internal_unref(grpc_completion_queue *cq, const char *reason, + const char *file, int line) { if (GRPC_TRACER_ON(grpc_trace_cq_refcount)) { gpr_atm val = gpr_atm_no_barrier_load(&cq->owning_refs.count); gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, @@ -509,12 +492,11 @@ void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq, reason); } #else -void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq) { +void grpc_cq_internal_unref(grpc_completion_queue *cq) { #endif if (gpr_unref(&cq->owning_refs)) { cq->vtable->destroy(DATA_FROM_CQ(cq)); - cq->poller_vtable->destroy(exec_ctx, POLLSET_FROM_CQ(cq)); + cq->poller_vtable->destroy(POLLSET_FROM_CQ(cq)); #ifndef NDEBUG gpr_free(cq->outstanding_tags); #endif @@ -595,11 +577,9 @@ bool grpc_cq_begin_op(grpc_completion_queue *cq, void *tag) { /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a * completion * type of GRPC_CQ_NEXT) */ -static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq, void *tag, +static void cq_end_op_for_next(grpc_completion_queue *cq, void *tag, grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, - void *done_arg, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage) { GPR_TIMER_BEGIN("cq_end_op_for_next", 0); @@ -609,9 +589,9 @@ static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx, error != GRPC_ERROR_NONE)) { const char *errmsg = grpc_error_string(error); GRPC_API_TRACE( - "cq_end_op_for_next(exec_ctx=%p, cq=%p, tag=%p, error=%s, " + "cq_end_op_for_next(=%p, cq=%p, tag=%p, error=%s, " "done=%p, done_arg=%p, storage=%p)", - 7, (exec_ctx, cq, tag, errmsg, done, done_arg, storage)); + 7, (&exec_ctx, cq, tag, errmsg, done, done_arg, storage)); if (GRPC_TRACER_ON(grpc_trace_operation_failures) && error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg); @@ -643,7 +623,7 @@ static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx, if (is_first) { gpr_mu_lock(cq->mu); grpc_error *kick_error = - cq->poller_vtable->kick(exec_ctx, POLLSET_FROM_CQ(cq), NULL); + cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), NULL); gpr_mu_unlock(cq->mu); if (kick_error != GRPC_ERROR_NONE) { @@ -655,17 +635,17 @@ static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx, if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) { GRPC_CQ_INTERNAL_REF(cq, "shutting_down"); gpr_mu_lock(cq->mu); - cq_finish_shutdown_next(exec_ctx, cq); + cq_finish_shutdown_next(cq); gpr_mu_unlock(cq->mu); - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down"); + GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down"); } } else { GRPC_CQ_INTERNAL_REF(cq, "shutting_down"); gpr_atm_rel_store(&cqd->pending_events, 0); gpr_mu_lock(cq->mu); - cq_finish_shutdown_next(exec_ctx, cq); + cq_finish_shutdown_next(cq); gpr_mu_unlock(cq->mu); - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down"); + GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down"); } GPR_TIMER_END("cq_end_op_for_next", 0); @@ -676,11 +656,9 @@ static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx, /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a * completion * type of GRPC_CQ_PLUCK) */ -static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq, void *tag, +static void cq_end_op_for_pluck(grpc_completion_queue *cq, void *tag, grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, - void *done_arg, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage) { cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq); @@ -693,9 +671,9 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx, error != GRPC_ERROR_NONE)) { const char *errmsg = grpc_error_string(error); GRPC_API_TRACE( - "cq_end_op_for_pluck(exec_ctx=%p, cq=%p, tag=%p, error=%s, " + "cq_end_op_for_pluck(=%p, cq=%p, tag=%p, error=%s, " "done=%p, done_arg=%p, storage=%p)", - 7, (exec_ctx, cq, tag, errmsg, done, done_arg, storage)); + 7, (&exec_ctx, cq, tag, errmsg, done, done_arg, storage)); if (GRPC_TRACER_ON(grpc_trace_operation_failures) && error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg); @@ -717,7 +695,7 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx, cqd->completed_tail = storage; if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) { - cq_finish_shutdown_pluck(exec_ctx, cq); + cq_finish_shutdown_pluck(cq); gpr_mu_unlock(cq->mu); } else { grpc_pollset_worker *pluck_worker = NULL; @@ -729,7 +707,7 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx, } grpc_error *kick_error = - cq->poller_vtable->kick(exec_ctx, POLLSET_FROM_CQ(cq), pluck_worker); + cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker); gpr_mu_unlock(cq->mu); @@ -746,12 +724,10 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx, GRPC_ERROR_UNREF(error); } -void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq, - void *tag, grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, void *done_arg, - grpc_cq_completion *storage), +void grpc_cq_end_op(grpc_completion_queue *cq, void *tag, grpc_error *error, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage) { - cq->vtable->end_op(exec_ctx, cq, tag, error, done, done_arg, storage); + cq->vtable->end_op(cq, tag, error, done, done_arg, storage); } typedef struct { @@ -763,7 +739,7 @@ typedef struct { bool first_loop; } cq_is_finished_arg; -static bool cq_is_next_finished(grpc_exec_ctx *exec_ctx, void *arg) { +static bool cq_is_next_finished(void *arg) { cq_is_finished_arg *a = (cq_is_finished_arg *)arg; grpc_completion_queue *cq = a->cq; cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq); @@ -786,7 +762,7 @@ static bool cq_is_next_finished(grpc_exec_ctx *exec_ctx, void *arg) { return true; } } - return !a->first_loop && a->deadline < grpc_exec_ctx_now(exec_ctx); + return !a->first_loop && a->deadline < grpc_exec_ctx_now(); } #ifndef NDEBUG @@ -841,8 +817,7 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, NULL, NULL, true}; - grpc_exec_ctx exec_ctx = - GRPC_EXEC_CTX_INITIALIZER(0, cq_is_next_finished, &is_finished_arg); + ExecCtx _local_exec_ctx(0, cq_is_next_finished, &is_finished_arg); for (;;) { grpc_millis iteration_deadline = deadline_millis; @@ -852,7 +827,7 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, ret.type = GRPC_OP_COMPLETE; ret.success = c->next & 1u; ret.tag = c->tag; - c->done(&exec_ctx, c->done_arg, c); + c->done(c->done_arg, c); break; } @@ -862,7 +837,7 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, ret.type = GRPC_OP_COMPLETE; ret.success = c->next & 1u; ret.tag = c->tag; - c->done(&exec_ctx, c->done_arg, c); + c->done(c->done_arg, c); break; } else { /* If c == NULL it means either the queue is empty OR in an transient @@ -892,8 +867,7 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, break; } - if (!is_finished_arg.first_loop && - grpc_exec_ctx_now(&exec_ctx) >= deadline_millis) { + if (!is_finished_arg.first_loop && grpc_exec_ctx_now() >= deadline_millis) { memset(&ret, 0, sizeof(ret)); ret.type = GRPC_QUEUE_TIMEOUT; dump_pending_tags(cq); @@ -903,8 +877,8 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, /* The main polling work happens in grpc_pollset_work */ gpr_mu_lock(cq->mu); cq->num_polls++; - grpc_error *err = cq->poller_vtable->work(&exec_ctx, POLLSET_FROM_CQ(cq), - NULL, iteration_deadline); + grpc_error *err = + cq->poller_vtable->work(POLLSET_FROM_CQ(cq), NULL, iteration_deadline); gpr_mu_unlock(cq->mu); if (err != GRPC_ERROR_NONE) { @@ -923,13 +897,13 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, if (cq_event_queue_num_items(&cqd->queue) > 0 && gpr_atm_acq_load(&cqd->pending_events) > 0) { gpr_mu_lock(cq->mu); - cq->poller_vtable->kick(&exec_ctx, POLLSET_FROM_CQ(cq), NULL); + cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), NULL); gpr_mu_unlock(cq->mu); } GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret); - GRPC_CQ_INTERNAL_UNREF(&exec_ctx, cq, "next"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CQ_INTERNAL_UNREF(cq, "next"); + grpc_exec_ctx_finish(); GPR_ASSERT(is_finished_arg.stolen_completion == NULL); GPR_TIMER_END("grpc_completion_queue_next", 0); @@ -943,19 +917,16 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline, - Must be called only once in completion queue's lifetime - grpc_completion_queue_shutdown() MUST have been called before calling this function */ -static void cq_finish_shutdown_next(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq) { +static void cq_finish_shutdown_next(grpc_completion_queue *cq) { cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq); GPR_ASSERT(cqd->shutdown_called); GPR_ASSERT(gpr_atm_no_barrier_load(&cqd->pending_events) == 0); - cq->poller_vtable->shutdown(exec_ctx, POLLSET_FROM_CQ(cq), - &cq->pollset_shutdown_done); + cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done); } -static void cq_shutdown_next(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq) { +static void cq_shutdown_next(grpc_completion_queue *cq) { cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq); /* Need an extra ref for cq here because: @@ -968,7 +939,7 @@ static void cq_shutdown_next(grpc_exec_ctx *exec_ctx, gpr_mu_lock(cq->mu); if (cqd->shutdown_called) { gpr_mu_unlock(cq->mu); - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down"); + GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down"); return; } cqd->shutdown_called = true; @@ -976,10 +947,10 @@ static void cq_shutdown_next(grpc_exec_ctx *exec_ctx, * cq_begin_op_for_next and and cq_end_op_for_next functions which read/write * on this counter without necessarily holding a lock on cq */ if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) { - cq_finish_shutdown_next(exec_ctx, cq); + cq_finish_shutdown_next(cq); } gpr_mu_unlock(cq->mu); - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down"); + GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down"); } grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, @@ -1012,7 +983,7 @@ static void del_plucker(grpc_completion_queue *cq, void *tag, GPR_UNREACHABLE_CODE(return ); } -static bool cq_is_pluck_finished(grpc_exec_ctx *exec_ctx, void *arg) { +static bool cq_is_pluck_finished(void *arg) { cq_is_finished_arg *a = (cq_is_finished_arg *)arg; grpc_completion_queue *cq = a->cq; cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq); @@ -1041,7 +1012,7 @@ static bool cq_is_pluck_finished(grpc_exec_ctx *exec_ctx, void *arg) { } gpr_mu_unlock(cq->mu); } - return !a->first_loop && a->deadline < grpc_exec_ctx_now(exec_ctx); + return !a->first_loop && a->deadline < grpc_exec_ctx_now(); } static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, @@ -1078,8 +1049,7 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, NULL, tag, true}; - grpc_exec_ctx exec_ctx = - GRPC_EXEC_CTX_INITIALIZER(0, cq_is_pluck_finished, &is_finished_arg); + ExecCtx _local_exec_ctx(0, cq_is_pluck_finished, &is_finished_arg); for (;;) { if (is_finished_arg.stolen_completion != NULL) { gpr_mu_unlock(cq->mu); @@ -1088,7 +1058,7 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, ret.type = GRPC_OP_COMPLETE; ret.success = c->next & 1u; ret.tag = c->tag; - c->done(&exec_ctx, c->done_arg, c); + c->done(c->done_arg, c); break; } prev = &cqd->completed_head; @@ -1103,7 +1073,7 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, ret.type = GRPC_OP_COMPLETE; ret.success = c->next & 1u; ret.tag = c->tag; - c->done(&exec_ctx, c->done_arg, c); + c->done(c->done_arg, c); goto done; } prev = c; @@ -1126,8 +1096,7 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, dump_pending_tags(cq); break; } - if (!is_finished_arg.first_loop && - grpc_exec_ctx_now(&exec_ctx) >= deadline_millis) { + if (!is_finished_arg.first_loop && grpc_exec_ctx_now() >= deadline_millis) { del_plucker(cq, tag, &worker); gpr_mu_unlock(cq->mu); memset(&ret, 0, sizeof(ret)); @@ -1136,8 +1105,8 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, break; } cq->num_polls++; - grpc_error *err = cq->poller_vtable->work(&exec_ctx, POLLSET_FROM_CQ(cq), - &worker, deadline_millis); + grpc_error *err = + cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis); if (err != GRPC_ERROR_NONE) { del_plucker(cq, tag, &worker); gpr_mu_unlock(cq->mu); @@ -1155,8 +1124,8 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag, } done: GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret); - GRPC_CQ_INTERNAL_UNREF(&exec_ctx, cq, "pluck"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_CQ_INTERNAL_UNREF(cq, "pluck"); + grpc_exec_ctx_finish(); GPR_ASSERT(is_finished_arg.stolen_completion == NULL); GPR_TIMER_END("grpc_completion_queue_pluck", 0); @@ -1169,22 +1138,19 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, void *tag, return cq->vtable->pluck(cq, tag, deadline, reserved); } -static void cq_finish_shutdown_pluck(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq) { +static void cq_finish_shutdown_pluck(grpc_completion_queue *cq) { cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq); GPR_ASSERT(cqd->shutdown_called); GPR_ASSERT(!gpr_atm_no_barrier_load(&cqd->shutdown)); gpr_atm_no_barrier_store(&cqd->shutdown, 1); - cq->poller_vtable->shutdown(exec_ctx, POLLSET_FROM_CQ(cq), - &cq->pollset_shutdown_done); + cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done); } /* NOTE: This function is almost exactly identical to cq_shutdown_next() but * merging them is a bit tricky and probably not worth it */ -static void cq_shutdown_pluck(grpc_exec_ctx *exec_ctx, - grpc_completion_queue *cq) { +static void cq_shutdown_pluck(grpc_completion_queue *cq) { cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq); /* Need an extra ref for cq here because: @@ -1197,25 +1163,25 @@ static void cq_shutdown_pluck(grpc_exec_ctx *exec_ctx, gpr_mu_lock(cq->mu); if (cqd->shutdown_called) { gpr_mu_unlock(cq->mu); - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down (pluck cq)"); + GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (pluck cq)"); return; } cqd->shutdown_called = true; if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) { - cq_finish_shutdown_pluck(exec_ctx, cq); + cq_finish_shutdown_pluck(cq); } gpr_mu_unlock(cq->mu); - GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down (pluck cq)"); + GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (pluck cq)"); } /* Shutdown simply drops a ref that we reserved at creation time; if we drop to zero here, then enter shutdown mode and wake up any waiters */ void grpc_completion_queue_shutdown(grpc_completion_queue *cq) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GPR_TIMER_BEGIN("grpc_completion_queue_shutdown", 0); GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq)); - cq->vtable->shutdown(&exec_ctx, cq); - grpc_exec_ctx_finish(&exec_ctx); + cq->vtable->shutdown(cq); + grpc_exec_ctx_finish(); GPR_TIMER_END("grpc_completion_queue_shutdown", 0); } @@ -1224,9 +1190,9 @@ void grpc_completion_queue_destroy(grpc_completion_queue *cq) { GPR_TIMER_BEGIN("grpc_completion_queue_destroy", 0); grpc_completion_queue_shutdown(cq); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_CQ_INTERNAL_UNREF(&exec_ctx, cq, "destroy"); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + GRPC_CQ_INTERNAL_UNREF(cq, "destroy"); + grpc_exec_ctx_finish(); GPR_TIMER_END("grpc_completion_queue_destroy", 0); } diff --git a/src/core/lib/surface/completion_queue.h b/src/core/lib/surface/completion_queue.h index 69d144bd95c..304afb17f79 100644 --- a/src/core/lib/surface/completion_queue.h +++ b/src/core/lib/surface/completion_queue.h @@ -47,8 +47,7 @@ typedef struct grpc_cq_completion { void *tag; /** done callback - called when this queue element is no longer needed by the completion queue */ - void (*done)(grpc_exec_ctx *exec_ctx, void *done_arg, - struct grpc_cq_completion *c); + void (*done)(void *done_arg, struct grpc_cq_completion *c); void *done_arg; /** next pointer; low bit is used to indicate success or not */ uintptr_t next; @@ -57,17 +56,17 @@ typedef struct grpc_cq_completion { #ifndef NDEBUG void grpc_cq_internal_ref(grpc_completion_queue *cc, const char *reason, const char *file, int line); -void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc, - const char *reason, const char *file, int line); +void grpc_cq_internal_unref(grpc_completion_queue *cc, const char *reason, + const char *file, int line); #define GRPC_CQ_INTERNAL_REF(cc, reason) \ grpc_cq_internal_ref(cc, reason, __FILE__, __LINE__) -#define GRPC_CQ_INTERNAL_UNREF(ec, cc, reason) \ - grpc_cq_internal_unref(ec, cc, reason, __FILE__, __LINE__) +#define GRPC_CQ_INTERNAL_UNREF(cc, reason) \ + grpc_cq_internal_unref(cc, reason, __FILE__, __LINE__) #else void grpc_cq_internal_ref(grpc_completion_queue *cc); -void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc); +void grpc_cq_internal_unref(grpc_completion_queue *cc); #define GRPC_CQ_INTERNAL_REF(cc, reason) grpc_cq_internal_ref(cc) -#define GRPC_CQ_INTERNAL_UNREF(ec, cc, reason) grpc_cq_internal_unref(ec, cc) +#define GRPC_CQ_INTERNAL_UNREF(cc, reason) grpc_cq_internal_unref(cc) #endif /* Flag that an operation is beginning: the completion channel will not finish @@ -78,10 +77,8 @@ bool grpc_cq_begin_op(grpc_completion_queue *cc, void *tag); /* Queue a GRPC_OP_COMPLETED operation; tag must correspond to the tag passed to grpc_cq_begin_op */ -void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc, - void *tag, grpc_error *error, - void (*done)(grpc_exec_ctx *exec_ctx, void *done_arg, - grpc_cq_completion *storage), +void grpc_cq_end_op(grpc_completion_queue *cc, void *tag, grpc_error *error, + void (*done)(void *done_arg, grpc_cq_completion *storage), void *done_arg, grpc_cq_completion *storage); grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc); diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index b089da2c54f..16d2cd189d2 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -67,14 +67,12 @@ static void do_basic_init(void) { g_initializations = 0; } -static bool append_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, void *arg) { +static bool append_filter(grpc_channel_stack_builder *builder, void *arg) { return grpc_channel_stack_builder_append_filter( builder, (const grpc_channel_filter *)arg, NULL, NULL); } -static bool prepend_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, void *arg) { +static bool prepend_filter(grpc_channel_stack_builder *builder, void *arg) { return grpc_channel_stack_builder_prepend_filter( builder, (const grpc_channel_filter *)arg, NULL, NULL); } @@ -117,7 +115,7 @@ void grpc_init(void) { int i; gpr_once_init(&g_basic_init, do_basic_init); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_mu_lock(&g_init_mu); if (++g_initializations == 1) { gpr_time_init(); @@ -150,7 +148,7 @@ void grpc_init(void) { grpc_register_tracer(&grpc_trace_metadata); #endif grpc_security_pre_init(); - grpc_iomgr_init(&exec_ctx); + grpc_iomgr_init(); gpr_timers_global_init(); grpc_handshaker_factory_registry_init(); grpc_security_init(); @@ -166,37 +164,36 @@ void grpc_init(void) { grpc_tracer_init("GRPC_TRACE"); /* no more changes to channel init pipelines */ grpc_channel_init_finalize(); - grpc_iomgr_start(&exec_ctx); + grpc_iomgr_start(); } gpr_mu_unlock(&g_init_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); GRPC_API_TRACE("grpc_init(void)", 0, ()); } void grpc_shutdown(void) { int i; GRPC_API_TRACE("grpc_shutdown(void)", 0, ()); - grpc_exec_ctx exec_ctx = - GRPC_EXEC_CTX_INITIALIZER(0, grpc_never_ready_to_finish, NULL); + ExecCtx _local_exec_ctx(0, grpc_never_ready_to_finish, NULL); gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { - grpc_executor_shutdown(&exec_ctx); + grpc_executor_shutdown(); grpc_timer_manager_set_threading(false); // shutdown timer_manager thread for (i = g_number_of_plugins; i >= 0; i--) { if (g_all_of_the_plugins[i].destroy != NULL) { g_all_of_the_plugins[i].destroy(); } } - grpc_iomgr_shutdown(&exec_ctx); + grpc_iomgr_shutdown(); gpr_timers_global_destroy(); grpc_tracer_shutdown(); - grpc_mdctx_global_shutdown(&exec_ctx); - grpc_handshaker_factory_registry_shutdown(&exec_ctx); + grpc_mdctx_global_shutdown(); + grpc_handshaker_factory_registry_shutdown(); grpc_slice_intern_shutdown(); grpc_stats_shutdown(); } gpr_mu_unlock(&g_init_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int grpc_is_initialized(void) { diff --git a/src/core/lib/surface/init_secure.cc b/src/core/lib/surface/init_secure.cc index 8fbde3d1b4a..9fc721b5e4d 100644 --- a/src/core/lib/surface/init_secure.cc +++ b/src/core/lib/surface/init_secure.cc @@ -47,7 +47,7 @@ void grpc_security_pre_init(void) { } static bool maybe_prepend_client_auth_filter( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, void *arg) { + grpc_channel_stack_builder *builder, void *arg) { const grpc_channel_args *args = grpc_channel_stack_builder_get_channel_arguments(builder); if (args) { @@ -62,7 +62,7 @@ static bool maybe_prepend_client_auth_filter( } static bool maybe_prepend_server_auth_filter( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, void *arg) { + grpc_channel_stack_builder *builder, void *arg) { const grpc_channel_args *args = grpc_channel_stack_builder_get_channel_arguments(builder); if (args) { diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index 88e26cbeb70..79131a7b68d 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -51,8 +51,7 @@ struct ChannelData { const char *error_message; }; -static void fill_metadata(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_metadata_batch *mdb) { +static void fill_metadata(grpc_call_element *elem, grpc_metadata_batch *mdb) { CallData *calld = reinterpret_cast<CallData *>(elem->call_data); bool expected = false; if (!calld->filled_metadata.compare_exchange_strong( @@ -64,9 +63,9 @@ static void fill_metadata(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, char tmp[GPR_LTOA_MIN_BUFSIZE]; gpr_ltoa(chand->error_code, tmp); calld->status.md = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_GRPC_STATUS, grpc_slice_from_copied_string(tmp)); + GRPC_MDSTR_GRPC_STATUS, grpc_slice_from_copied_string(tmp)); calld->details.md = grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_GRPC_MESSAGE, + GRPC_MDSTR_GRPC_MESSAGE, grpc_slice_from_copied_string(chand->error_message)); calld->status.prev = calld->details.next = NULL; calld->status.next = &calld->details; @@ -78,69 +77,61 @@ static void fill_metadata(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, } static void lame_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *op) { + grpc_call_element *elem, grpc_transport_stream_op_batch *op) { CallData *calld = reinterpret_cast<CallData *>(elem->call_data); if (op->recv_initial_metadata) { - fill_metadata(exec_ctx, elem, + fill_metadata(elem, op->payload->recv_initial_metadata.recv_initial_metadata); } else if (op->recv_trailing_metadata) { - fill_metadata(exec_ctx, elem, + fill_metadata(elem, op->payload->recv_trailing_metadata.recv_trailing_metadata); } grpc_transport_stream_op_batch_finish_with_failure( - exec_ctx, op, GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"), + op, GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"), calld->call_combiner); } -static void lame_get_channel_info(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void lame_get_channel_info(grpc_channel_element *elem, const grpc_channel_info *channel_info) {} -static void lame_start_transport_op(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void lame_start_transport_op(grpc_channel_element *elem, grpc_transport_op *op) { if (op->on_connectivity_state_change) { GPR_ASSERT(*op->connectivity_state != GRPC_CHANNEL_SHUTDOWN); *op->connectivity_state = GRPC_CHANNEL_SHUTDOWN; - GRPC_CLOSURE_SCHED(exec_ctx, op->on_connectivity_state_change, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_connectivity_state_change, GRPC_ERROR_NONE); } if (op->send_ping != NULL) { - GRPC_CLOSURE_SCHED( - exec_ctx, op->send_ping, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel")); + GRPC_CLOSURE_SCHED(op->send_ping, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "lame client channel")); } GRPC_ERROR_UNREF(op->disconnect_with_error); if (op->on_consumed != NULL) { - GRPC_CLOSURE_SCHED(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE); } } -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { CallData *calld = reinterpret_cast<CallData *>(elem->call_data); calld->call_combiner = args->call_combiner; return GRPC_ERROR_NONE; } -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_schedule_closure) { - GRPC_CLOSURE_SCHED(exec_ctx, then_schedule_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(then_schedule_closure, GRPC_ERROR_NONE); } -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { GPR_ASSERT(args->is_first); GPR_ASSERT(args->is_last); return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} } // namespace @@ -165,10 +156,10 @@ extern "C" const grpc_channel_filter grpc_lame_filter = { grpc_channel *grpc_lame_client_channel_create(const char *target, grpc_status_code error_code, const char *error_message) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_channel_element *elem; - grpc_channel *channel = grpc_channel_create(&exec_ctx, target, NULL, - GRPC_CLIENT_LAME_CHANNEL, NULL); + grpc_channel *channel = + grpc_channel_create(target, NULL, GRPC_CLIENT_LAME_CHANNEL, NULL); elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); GRPC_API_TRACE( "grpc_lame_client_channel_create(target=%s, error_code=%d, " @@ -178,6 +169,6 @@ grpc_channel *grpc_lame_client_channel_create(const char *target, auto chand = reinterpret_cast<grpc_core::ChannelData *>(elem->channel_data); chand->error_code = error_code; chand->error_message = error_message; - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return channel; } diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc index dd09cb91de4..cf6883bd7ed 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/lib/surface/server.cc @@ -45,10 +45,9 @@ typedef struct listener { void *arg; - void (*start)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - grpc_pollset **pollsets, size_t pollset_count); - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - grpc_closure *closure); + void (*start)(grpc_server *server, void *arg, grpc_pollset **pollsets, + size_t pollset_count); + void (*destroy)(grpc_server *server, void *arg, grpc_closure *closure); struct listener *next; grpc_closure destroy_done; } listener; @@ -231,13 +230,12 @@ struct grpc_server { #define SERVER_FROM_CALL_ELEM(elem) \ (((channel_data *)(elem)->channel_data)->server) -static void publish_new_rpc(grpc_exec_ctx *exec_ctx, void *calld, - grpc_error *error); -static void fail_call(grpc_exec_ctx *exec_ctx, grpc_server *server, - size_t cq_idx, requested_call *rc, grpc_error *error); +static void publish_new_rpc(void *calld, grpc_error *error); +static void fail_call(grpc_server *server, size_t cq_idx, requested_call *rc, + grpc_error *error); /* Before calling maybe_finish_shutdown, we must hold mu_global and not hold mu_call */ -static void maybe_finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_server *server); +static void maybe_finish_shutdown(grpc_server *server); /* * channel broadcaster @@ -265,15 +263,14 @@ struct shutdown_cleanup_args { grpc_slice slice; }; -static void shutdown_cleanup(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void shutdown_cleanup(void *arg, grpc_error *error) { struct shutdown_cleanup_args *a = (struct shutdown_cleanup_args *)arg; - grpc_slice_unref_internal(exec_ctx, a->slice); + grpc_slice_unref_internal(a->slice); gpr_free(a); } -static void send_shutdown(grpc_exec_ctx *exec_ctx, grpc_channel *channel, - bool send_goaway, grpc_error *send_disconnect) { +static void send_shutdown(grpc_channel *channel, bool send_goaway, + grpc_error *send_disconnect) { struct shutdown_cleanup_args *sc = (struct shutdown_cleanup_args *)gpr_malloc(sizeof(*sc)); GRPC_CLOSURE_INIT(&sc->closure, shutdown_cleanup, sc, @@ -291,19 +288,18 @@ static void send_shutdown(grpc_exec_ctx *exec_ctx, grpc_channel *channel, op->disconnect_with_error = send_disconnect; elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); - elem->filter->start_transport_op(exec_ctx, elem, op); + elem->filter->start_transport_op(elem, op); } -static void channel_broadcaster_shutdown(grpc_exec_ctx *exec_ctx, - channel_broadcaster *cb, +static void channel_broadcaster_shutdown(channel_broadcaster *cb, bool send_goaway, grpc_error *force_disconnect) { size_t i; for (i = 0; i < cb->num_channels; i++) { - send_shutdown(exec_ctx, cb->channels[i], send_goaway, + send_shutdown(cb->channels[i], send_goaway, GRPC_ERROR_REF(force_disconnect)); - GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, cb->channels[i], "broadcast"); + GRPC_CHANNEL_INTERNAL_UNREF(cb->channels[i], "broadcast"); } gpr_free(cb->channels); GRPC_ERROR_UNREF(force_disconnect); @@ -332,13 +328,11 @@ static void request_matcher_destroy(request_matcher *rm) { gpr_free(rm->requests_per_cq); } -static void kill_zombie(grpc_exec_ctx *exec_ctx, void *elem, - grpc_error *error) { +static void kill_zombie(void *elem, grpc_error *error) { grpc_call_unref(grpc_call_from_top_element((grpc_call_element *)elem)); } -static void request_matcher_zombify_all_pending_calls(grpc_exec_ctx *exec_ctx, - request_matcher *rm) { +static void request_matcher_zombify_all_pending_calls(request_matcher *rm) { while (rm->pending_head) { call_data *calld = rm->pending_head; rm->pending_head = calld->pending_next; @@ -349,20 +343,18 @@ static void request_matcher_zombify_all_pending_calls(grpc_exec_ctx *exec_ctx, &calld->kill_zombie_closure, kill_zombie, grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0), grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(exec_ctx, &calld->kill_zombie_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&calld->kill_zombie_closure, GRPC_ERROR_NONE); } } -static void request_matcher_kill_requests(grpc_exec_ctx *exec_ctx, - grpc_server *server, +static void request_matcher_kill_requests(grpc_server *server, request_matcher *rm, grpc_error *error) { int request_id; for (size_t i = 0; i < server->cq_count; i++) { while ((request_id = gpr_stack_lockfree_pop(rm->requests_per_cq[i])) != -1) { - fail_call(exec_ctx, server, i, - &server->requested_calls_per_cq[i][request_id], + fail_call(server, i, &server->requested_calls_per_cq[i][request_id], GRPC_ERROR_REF(error)); } } @@ -377,10 +369,10 @@ static void server_ref(grpc_server *server) { gpr_ref(&server->internal_refcount); } -static void server_delete(grpc_exec_ctx *exec_ctx, grpc_server *server) { +static void server_delete(grpc_server *server) { registered_method *rm; size_t i; - grpc_channel_args_destroy(exec_ctx, server->channel_args); + grpc_channel_args_destroy(server->channel_args); gpr_mu_destroy(&server->mu_global); gpr_mu_destroy(&server->mu_call); gpr_cv_destroy(&server->starting_cv); @@ -397,7 +389,7 @@ static void server_delete(grpc_exec_ctx *exec_ctx, grpc_server *server) { request_matcher_destroy(&server->unregistered_request_matcher); } for (i = 0; i < server->cq_count; i++) { - GRPC_CQ_INTERNAL_UNREF(exec_ctx, server->cqs[i], "server"); + GRPC_CQ_INTERNAL_UNREF(server->cqs[i], "server"); if (server->started) { gpr_stack_lockfree_destroy(server->request_freelist_per_cq[i]); gpr_free(server->requested_calls_per_cq[i]); @@ -411,9 +403,9 @@ static void server_delete(grpc_exec_ctx *exec_ctx, grpc_server *server) { gpr_free(server); } -static void server_unref(grpc_exec_ctx *exec_ctx, grpc_server *server) { +static void server_unref(grpc_server *server) { if (gpr_unref(&server->internal_refcount)) { - server_delete(exec_ctx, server); + server_delete(server); } } @@ -427,21 +419,19 @@ static void orphan_channel(channel_data *chand) { chand->next = chand->prev = chand; } -static void finish_destroy_channel(grpc_exec_ctx *exec_ctx, void *cd, - grpc_error *error) { +static void finish_destroy_channel(void *cd, grpc_error *error) { channel_data *chand = (channel_data *)cd; grpc_server *server = chand->server; - GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, chand->channel, "server"); - server_unref(exec_ctx, server); + GRPC_CHANNEL_INTERNAL_UNREF(chand->channel, "server"); + server_unref(server); } -static void destroy_channel(grpc_exec_ctx *exec_ctx, channel_data *chand, - grpc_error *error) { +static void destroy_channel(channel_data *chand, grpc_error *error) { if (is_channel_orphaned(chand)) return; GPR_ASSERT(chand->server != NULL); orphan_channel(chand); server_ref(chand->server); - maybe_finish_shutdown(exec_ctx, chand->server); + maybe_finish_shutdown(chand->server); GRPC_CLOSURE_INIT(&chand->finish_destroy_channel_closure, finish_destroy_channel, chand, grpc_schedule_on_exec_ctx); @@ -454,14 +444,12 @@ static void destroy_channel(grpc_exec_ctx *exec_ctx, channel_data *chand, grpc_transport_op *op = grpc_make_transport_op(&chand->finish_destroy_channel_closure); op->set_accept_stream = true; - grpc_channel_next_op(exec_ctx, - grpc_channel_stack_element( + grpc_channel_next_op(grpc_channel_stack_element( grpc_channel_get_channel_stack(chand->channel), 0), op); } -static void done_request_event(grpc_exec_ctx *exec_ctx, void *req, - grpc_cq_completion *c) { +static void done_request_event(void *req, grpc_cq_completion *c) { requested_call *rc = (requested_call *)req; grpc_server *server = rc->server; @@ -476,12 +464,12 @@ static void done_request_event(grpc_exec_ctx *exec_ctx, void *req, gpr_free(req); } - server_unref(exec_ctx, server); + server_unref(server); } -static void publish_call(grpc_exec_ctx *exec_ctx, grpc_server *server, - call_data *calld, size_t cq_idx, requested_call *rc) { - grpc_call_set_completion_queue(exec_ctx, calld->call, rc->cq_bound_to_call); +static void publish_call(grpc_server *server, call_data *calld, size_t cq_idx, + requested_call *rc) { + grpc_call_set_completion_queue(calld->call, rc->cq_bound_to_call); grpc_call *call = calld->call; *rc->call = call; calld->cq_new = server->cqs[cq_idx]; @@ -512,12 +500,11 @@ static void publish_call(grpc_exec_ctx *exec_ctx, grpc_server *server, grpc_call_stack_element(grpc_call_get_call_stack(call), 0); channel_data *chand = (channel_data *)elem->channel_data; server_ref(chand->server); - grpc_cq_end_op(exec_ctx, calld->cq_new, rc->tag, GRPC_ERROR_NONE, - done_request_event, rc, &rc->completion); + grpc_cq_end_op(calld->cq_new, rc->tag, GRPC_ERROR_NONE, done_request_event, + rc, &rc->completion); } -static void publish_new_rpc(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void publish_new_rpc(void *arg, grpc_error *error) { grpc_call_element *call_elem = (grpc_call_element *)arg; call_data *calld = (call_data *)call_elem->call_data; channel_data *chand = (channel_data *)call_elem->channel_data; @@ -532,8 +519,7 @@ static void publish_new_rpc(grpc_exec_ctx *exec_ctx, void *arg, &calld->kill_zombie_closure, kill_zombie, grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0), grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(exec_ctx, &calld->kill_zombie_closure, - GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(&calld->kill_zombie_closure, GRPC_ERROR_REF(error)); return; } @@ -543,18 +529,18 @@ static void publish_new_rpc(grpc_exec_ctx *exec_ctx, void *arg, if (request_id == -1) { continue; } else { - GRPC_STATS_INC_SERVER_CQS_CHECKED(exec_ctx, i); + GRPC_STATS_INC_SERVER_CQS_CHECKED(i); gpr_mu_lock(&calld->mu_state); calld->state = ACTIVATED; gpr_mu_unlock(&calld->mu_state); - publish_call(exec_ctx, server, calld, cq_idx, + publish_call(server, calld, cq_idx, &server->requested_calls_per_cq[cq_idx][request_id]); return; /* early out */ } } /* no cq to take the request found: queue it on the slow list */ - GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED(exec_ctx); + GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED(); gpr_mu_lock(&server->mu_call); gpr_mu_lock(&calld->mu_state); calld->state = PENDING; @@ -570,8 +556,7 @@ static void publish_new_rpc(grpc_exec_ctx *exec_ctx, void *arg, } static void finish_start_new_rpc( - grpc_exec_ctx *exec_ctx, grpc_server *server, grpc_call_element *elem, - request_matcher *rm, + grpc_server *server, grpc_call_element *elem, request_matcher *rm, grpc_server_register_method_payload_handling payload_handling) { call_data *calld = (call_data *)elem->call_data; @@ -581,7 +566,7 @@ static void finish_start_new_rpc( gpr_mu_unlock(&calld->mu_state); GRPC_CLOSURE_INIT(&calld->kill_zombie_closure, kill_zombie, elem, grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(exec_ctx, &calld->kill_zombie_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&calld->kill_zombie_closure, GRPC_ERROR_NONE); return; } @@ -589,7 +574,7 @@ static void finish_start_new_rpc( switch (payload_handling) { case GRPC_SRM_PAYLOAD_NONE: - publish_new_rpc(exec_ctx, elem, GRPC_ERROR_NONE); + publish_new_rpc(elem, GRPC_ERROR_NONE); break; case GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER: { grpc_op op; @@ -598,14 +583,13 @@ static void finish_start_new_rpc( op.data.recv_message.recv_message = &calld->payload; GRPC_CLOSURE_INIT(&calld->publish, publish_new_rpc, elem, grpc_schedule_on_exec_ctx); - grpc_call_start_batch_and_execute(exec_ctx, calld->call, &op, 1, - &calld->publish); + grpc_call_start_batch_and_execute(calld->call, &op, 1, &calld->publish); break; } } } -static void start_new_rpc(grpc_exec_ctx *exec_ctx, grpc_call_element *elem) { +static void start_new_rpc(grpc_call_element *elem) { channel_data *chand = (channel_data *)elem->channel_data; call_data *calld = (call_data *)elem->call_data; grpc_server *server = chand->server; @@ -630,8 +614,7 @@ static void start_new_rpc(grpc_exec_ctx *exec_ctx, grpc_call_element *elem) { GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST)) { continue; } - finish_start_new_rpc(exec_ctx, server, elem, - &rm->server_registered_method->matcher, + finish_start_new_rpc(server, elem, &rm->server_registered_method->matcher, rm->server_registered_method->payload_handling); return; } @@ -648,14 +631,12 @@ static void start_new_rpc(grpc_exec_ctx *exec_ctx, grpc_call_element *elem) { GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST)) { continue; } - finish_start_new_rpc(exec_ctx, server, elem, - &rm->server_registered_method->matcher, + finish_start_new_rpc(server, elem, &rm->server_registered_method->matcher, rm->server_registered_method->payload_handling); return; } } - finish_start_new_rpc(exec_ctx, server, elem, - &server->unregistered_request_matcher, + finish_start_new_rpc(server, elem, &server->unregistered_request_matcher, GRPC_SRM_PAYLOAD_NONE); } @@ -668,9 +649,8 @@ static int num_listeners(grpc_server *server) { return n; } -static void done_shutdown_event(grpc_exec_ctx *exec_ctx, void *server, - grpc_cq_completion *completion) { - server_unref(exec_ctx, (grpc_server *)server); +static void done_shutdown_event(void *server, grpc_cq_completion *completion) { + server_unref((grpc_server *)server); } static int num_channels(grpc_server *server) { @@ -683,34 +663,30 @@ static int num_channels(grpc_server *server) { return n; } -static void kill_pending_work_locked(grpc_exec_ctx *exec_ctx, - grpc_server *server, grpc_error *error) { +static void kill_pending_work_locked(grpc_server *server, grpc_error *error) { if (server->started) { - request_matcher_kill_requests(exec_ctx, server, - &server->unregistered_request_matcher, + request_matcher_kill_requests(server, &server->unregistered_request_matcher, GRPC_ERROR_REF(error)); request_matcher_zombify_all_pending_calls( - exec_ctx, &server->unregistered_request_matcher); + &server->unregistered_request_matcher); for (registered_method *rm = server->registered_methods; rm; rm = rm->next) { - request_matcher_kill_requests(exec_ctx, server, &rm->matcher, + request_matcher_kill_requests(server, &rm->matcher, GRPC_ERROR_REF(error)); - request_matcher_zombify_all_pending_calls(exec_ctx, &rm->matcher); + request_matcher_zombify_all_pending_calls(&rm->matcher); } } GRPC_ERROR_UNREF(error); } -static void maybe_finish_shutdown(grpc_exec_ctx *exec_ctx, - grpc_server *server) { +static void maybe_finish_shutdown(grpc_server *server) { size_t i; if (!gpr_atm_acq_load(&server->shutdown_flag) || server->shutdown_published) { return; } kill_pending_work_locked( - exec_ctx, server, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown")); + server, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown")); if (server->root_channel_data.next != &server->root_channel_data || server->listeners_destroyed < num_listeners(server)) { @@ -730,15 +706,13 @@ static void maybe_finish_shutdown(grpc_exec_ctx *exec_ctx, server->shutdown_published = 1; for (i = 0; i < server->num_shutdown_tags; i++) { server_ref(server); - grpc_cq_end_op(exec_ctx, server->shutdown_tags[i].cq, - server->shutdown_tags[i].tag, GRPC_ERROR_NONE, - done_shutdown_event, server, + grpc_cq_end_op(server->shutdown_tags[i].cq, server->shutdown_tags[i].tag, + GRPC_ERROR_NONE, done_shutdown_event, server, &server->shutdown_tags[i].completion); } } -static void server_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr, - grpc_error *error) { +static void server_on_recv_initial_metadata(void *ptr, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)ptr; call_data *calld = (call_data *)elem->call_data; grpc_millis op_deadline; @@ -752,10 +726,10 @@ static void server_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr, GRPC_MDVALUE(calld->recv_initial_metadata->idx.named.authority->md)); calld->path_set = true; calld->host_set = true; - grpc_metadata_batch_remove(exec_ctx, calld->recv_initial_metadata, + grpc_metadata_batch_remove(calld->recv_initial_metadata, calld->recv_initial_metadata->idx.named.path); grpc_metadata_batch_remove( - exec_ctx, calld->recv_initial_metadata, + calld->recv_initial_metadata, calld->recv_initial_metadata->idx.named.authority); } else { GRPC_ERROR_REF(error); @@ -773,7 +747,7 @@ static void server_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr, GRPC_ERROR_UNREF(src_error); } - GRPC_CLOSURE_RUN(exec_ctx, calld->on_done_recv_initial_metadata, error); + GRPC_CLOSURE_RUN(calld->on_done_recv_initial_metadata, error); } static void server_mutate_op(grpc_call_element *elem, @@ -794,18 +768,16 @@ static void server_mutate_op(grpc_call_element *elem, } static void server_start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *op) { + grpc_call_element *elem, grpc_transport_stream_op_batch *op) { server_mutate_op(elem, op); - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } -static void got_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr, - grpc_error *error) { +static void got_initial_metadata(void *ptr, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)ptr; call_data *calld = (call_data *)elem->call_data; if (error == GRPC_ERROR_NONE) { - start_new_rpc(exec_ctx, elem); + start_new_rpc(elem); } else { gpr_mu_lock(&calld->mu_state); if (calld->state == NOT_STARTED) { @@ -813,8 +785,7 @@ static void got_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr, gpr_mu_unlock(&calld->mu_state); GRPC_CLOSURE_INIT(&calld->kill_zombie_closure, kill_zombie, elem, grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(exec_ctx, &calld->kill_zombie_closure, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&calld->kill_zombie_closure, GRPC_ERROR_NONE); } else if (calld->state == PENDING) { calld->state = ZOMBIED; gpr_mu_unlock(&calld->mu_state); @@ -826,8 +797,7 @@ static void got_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr, } } -static void accept_stream(grpc_exec_ctx *exec_ctx, void *cd, - grpc_transport *transport, +static void accept_stream(void *cd, grpc_transport *transport, const void *transport_server_data) { channel_data *chand = (channel_data *)cd; /* create a call */ @@ -837,11 +807,11 @@ static void accept_stream(grpc_exec_ctx *exec_ctx, void *cd, args.server_transport_data = transport_server_data; args.send_deadline = GRPC_MILLIS_INF_FUTURE; grpc_call *call; - grpc_error *error = grpc_call_create(exec_ctx, &args, &call); + grpc_error *error = grpc_call_create(&args, &call); grpc_call_element *elem = grpc_call_stack_element(grpc_call_get_call_stack(call), 0); if (error != GRPC_ERROR_NONE) { - got_initial_metadata(exec_ctx, elem, error); + got_initial_metadata(elem, error); GRPC_ERROR_UNREF(error); return; } @@ -853,32 +823,28 @@ static void accept_stream(grpc_exec_ctx *exec_ctx, void *cd, &calld->initial_metadata; GRPC_CLOSURE_INIT(&calld->got_initial_metadata, got_initial_metadata, elem, grpc_schedule_on_exec_ctx); - grpc_call_start_batch_and_execute(exec_ctx, call, &op, 1, - &calld->got_initial_metadata); + grpc_call_start_batch_and_execute(call, &op, 1, &calld->got_initial_metadata); } -static void channel_connectivity_changed(grpc_exec_ctx *exec_ctx, void *cd, - grpc_error *error) { +static void channel_connectivity_changed(void *cd, grpc_error *error) { channel_data *chand = (channel_data *)cd; grpc_server *server = chand->server; if (chand->connectivity_state != GRPC_CHANNEL_SHUTDOWN) { grpc_transport_op *op = grpc_make_transport_op(NULL); op->on_connectivity_state_change = &chand->channel_connectivity_changed, op->connectivity_state = &chand->connectivity_state; - grpc_channel_next_op(exec_ctx, - grpc_channel_stack_element( + grpc_channel_next_op(grpc_channel_stack_element( grpc_channel_get_channel_stack(chand->channel), 0), op); } else { gpr_mu_lock(&server->mu_global); - destroy_channel(exec_ctx, chand, GRPC_ERROR_REF(error)); + destroy_channel(chand, GRPC_ERROR_REF(error)); gpr_mu_unlock(&server->mu_global); - GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, chand->channel, "connectivity"); + GRPC_CHANNEL_INTERNAL_UNREF(chand->channel, "connectivity"); } } -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = (call_data *)elem->call_data; channel_data *chand = (channel_data *)elem->channel_data; @@ -895,7 +861,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { channel_data *chand = (channel_data *)elem->channel_data; @@ -904,21 +870,20 @@ static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, GPR_ASSERT(calld->state != PENDING); if (calld->host_set) { - grpc_slice_unref_internal(exec_ctx, calld->host); + grpc_slice_unref_internal(calld->host); } if (calld->path_set) { - grpc_slice_unref_internal(exec_ctx, calld->path); + grpc_slice_unref_internal(calld->path); } grpc_metadata_array_destroy(&calld->initial_metadata); grpc_byte_buffer_destroy(calld->payload); gpr_mu_destroy(&calld->mu_state); - server_unref(exec_ctx, chand->server); + server_unref(chand->server); } -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { channel_data *chand = (channel_data *)elem->channel_data; GPR_ASSERT(args->is_first); @@ -934,15 +899,14 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { +static void destroy_channel_elem(grpc_channel_element *elem) { size_t i; channel_data *chand = (channel_data *)elem->channel_data; if (chand->registered_methods) { for (i = 0; i < chand->registered_method_slots; i++) { - grpc_slice_unref_internal(exec_ctx, chand->registered_methods[i].method); + grpc_slice_unref_internal(chand->registered_methods[i].method); if (chand->registered_methods[i].has_host) { - grpc_slice_unref_internal(exec_ctx, chand->registered_methods[i].host); + grpc_slice_unref_internal(chand->registered_methods[i].host); } } gpr_free(chand->registered_methods); @@ -952,9 +916,9 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, chand->next->prev = chand->prev; chand->prev->next = chand->next; chand->next = chand->prev = chand; - maybe_finish_shutdown(exec_ctx, chand->server); + maybe_finish_shutdown(chand->server); gpr_mu_unlock(&chand->server->mu_global); - server_unref(exec_ctx, chand->server); + server_unref(chand->server); } } @@ -1070,11 +1034,10 @@ void *grpc_server_register_method( return m; } -static void start_listeners(grpc_exec_ctx *exec_ctx, void *s, - grpc_error *error) { +static void start_listeners(void *s, grpc_error *error) { grpc_server *server = (grpc_server *)s; for (listener *l = server->listeners; l; l = l->next) { - l->start(exec_ctx, server, l->arg, server->pollsets, server->pollset_count); + l->start(server, l->arg, server->pollsets, server->pollset_count); } gpr_mu_lock(&server->mu_global); @@ -1082,12 +1045,12 @@ static void start_listeners(grpc_exec_ctx *exec_ctx, void *s, gpr_cv_signal(&server->starting_cv); gpr_mu_unlock(&server->mu_global); - server_unref(exec_ctx, server); + server_unref(server); } void grpc_server_start(grpc_server *server) { size_t i; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_start(server=%p)", 1, (server)); @@ -1123,12 +1086,11 @@ void grpc_server_start(grpc_server *server) { server_ref(server); server->starting = true; GRPC_CLOSURE_SCHED( - &exec_ctx, GRPC_CLOSURE_CREATE(start_listeners, server, grpc_executor_scheduler(GRPC_EXECUTOR_SHORT)), GRPC_ERROR_NONE); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void grpc_server_get_pollsets(grpc_server *server, grpc_pollset ***pollsets, @@ -1137,8 +1099,7 @@ void grpc_server_get_pollsets(grpc_server *server, grpc_pollset ***pollsets, *pollsets = server->pollsets; } -void grpc_server_setup_transport(grpc_exec_ctx *exec_ctx, grpc_server *s, - grpc_transport *transport, +void grpc_server_setup_transport(grpc_server *s, grpc_transport *transport, grpc_pollset *accepting_pollset, const grpc_channel_args *args) { size_t num_registered_methods; @@ -1153,8 +1114,7 @@ void grpc_server_setup_transport(grpc_exec_ctx *exec_ctx, grpc_server *s, uint32_t max_probes = 0; grpc_transport_op *op = NULL; - channel = - grpc_channel_create(exec_ctx, NULL, args, GRPC_SERVER_CHANNEL, transport); + channel = grpc_channel_create(NULL, args, GRPC_SERVER_CHANNEL, transport); chand = (channel_data *)grpc_channel_stack_element( grpc_channel_get_channel_stack(channel), 0) ->channel_data; @@ -1231,21 +1191,19 @@ void grpc_server_setup_transport(grpc_exec_ctx *exec_ctx, grpc_server *s, op->disconnect_with_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"); } - grpc_transport_perform_op(exec_ctx, transport, op); + grpc_transport_perform_op(transport, op); } -void done_published_shutdown(grpc_exec_ctx *exec_ctx, void *done_arg, - grpc_cq_completion *storage) { +void done_published_shutdown(void *done_arg, grpc_cq_completion *storage) { (void)done_arg; gpr_free(storage); } -static void listener_destroy_done(grpc_exec_ctx *exec_ctx, void *s, - grpc_error *error) { +static void listener_destroy_done(void *s, grpc_error *error) { grpc_server *server = (grpc_server *)s; gpr_mu_lock(&server->mu_global); server->listeners_destroyed++; - maybe_finish_shutdown(exec_ctx, server); + maybe_finish_shutdown(server); gpr_mu_unlock(&server->mu_global); } @@ -1254,7 +1212,7 @@ void grpc_server_shutdown_and_notify(grpc_server *server, listener *l; shutdown_tag *sdt; channel_broadcaster broadcaster; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_shutdown_and_notify(server=%p, cq=%p, tag=%p)", 3, (server, cq, tag)); @@ -1270,7 +1228,7 @@ void grpc_server_shutdown_and_notify(grpc_server *server, GPR_ASSERT(grpc_cq_begin_op(cq, tag)); if (server->shutdown_published) { grpc_cq_end_op( - &exec_ctx, cq, tag, GRPC_ERROR_NONE, done_published_shutdown, NULL, + cq, tag, GRPC_ERROR_NONE, done_published_shutdown, NULL, (grpc_cq_completion *)gpr_malloc(sizeof(grpc_cq_completion))); gpr_mu_unlock(&server->mu_global); goto done; @@ -1295,30 +1253,29 @@ void grpc_server_shutdown_and_notify(grpc_server *server, /* collect all unregistered then registered calls */ gpr_mu_lock(&server->mu_call); kill_pending_work_locked( - &exec_ctx, server, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown")); + server, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown")); gpr_mu_unlock(&server->mu_call); - maybe_finish_shutdown(&exec_ctx, server); + maybe_finish_shutdown(server); gpr_mu_unlock(&server->mu_global); /* Shutdown listeners */ for (l = server->listeners; l; l = l->next) { GRPC_CLOSURE_INIT(&l->destroy_done, listener_destroy_done, server, grpc_schedule_on_exec_ctx); - l->destroy(&exec_ctx, server, l->arg, &l->destroy_done); + l->destroy(server, l->arg, &l->destroy_done); } - channel_broadcaster_shutdown(&exec_ctx, &broadcaster, true /* send_goaway */, + channel_broadcaster_shutdown(&broadcaster, true /* send_goaway */, GRPC_ERROR_NONE); done: - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void grpc_server_cancel_all_calls(grpc_server *server) { channel_broadcaster broadcaster; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_cancel_all_calls(server=%p)", 1, (server)); @@ -1327,14 +1284,14 @@ void grpc_server_cancel_all_calls(grpc_server *server) { gpr_mu_unlock(&server->mu_global); channel_broadcaster_shutdown( - &exec_ctx, &broadcaster, false /* send_goaway */, + &broadcaster, false /* send_goaway */, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls")); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void grpc_server_destroy(grpc_server *server) { listener *l; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_destroy(server=%p)", 1, (server)); @@ -1350,16 +1307,16 @@ void grpc_server_destroy(grpc_server *server) { gpr_mu_unlock(&server->mu_global); - server_unref(&exec_ctx, server); - grpc_exec_ctx_finish(&exec_ctx); + server_unref(server); + grpc_exec_ctx_finish(); } -void grpc_server_add_listener( - grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - void (*start)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - grpc_pollset **pollsets, size_t pollset_count), - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - grpc_closure *on_done)) { +void grpc_server_add_listener(grpc_server *server, void *arg, + void (*start)(grpc_server *server, void *arg, + grpc_pollset **pollsets, + size_t pollset_count), + void (*destroy)(grpc_server *server, void *arg, + grpc_closure *on_done)) { listener *l = (listener *)gpr_malloc(sizeof(listener)); l->arg = arg; l->start = start; @@ -1368,21 +1325,20 @@ void grpc_server_add_listener( server->listeners = l; } -static grpc_call_error queue_call_request(grpc_exec_ctx *exec_ctx, - grpc_server *server, size_t cq_idx, +static grpc_call_error queue_call_request(grpc_server *server, size_t cq_idx, requested_call *rc) { call_data *calld = NULL; request_matcher *rm = NULL; int request_id; if (gpr_atm_acq_load(&server->shutdown_flag)) { - fail_call(exec_ctx, server, cq_idx, rc, + fail_call(server, cq_idx, rc, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown")); return GRPC_CALL_OK; } request_id = gpr_stack_lockfree_pop(server->request_freelist_per_cq[cq_idx]); if (request_id == -1) { /* out of request ids: just fail this one */ - fail_call(exec_ctx, server, cq_idx, rc, + fail_call(server, cq_idx, rc, grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("Out of request ids"), GRPC_ERROR_INT_LIMIT, server->max_requested_calls_per_cq)); @@ -1414,13 +1370,12 @@ static grpc_call_error queue_call_request(grpc_exec_ctx *exec_ctx, &calld->kill_zombie_closure, kill_zombie, grpc_call_stack_element(grpc_call_get_call_stack(calld->call), 0), grpc_schedule_on_exec_ctx); - GRPC_CLOSURE_SCHED(exec_ctx, &calld->kill_zombie_closure, - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&calld->kill_zombie_closure, GRPC_ERROR_NONE); } else { GPR_ASSERT(calld->state == PENDING); calld->state = ACTIVATED; gpr_mu_unlock(&calld->mu_state); - publish_call(exec_ctx, server, calld, cq_idx, + publish_call(server, calld, cq_idx, &server->requested_calls_per_cq[cq_idx][request_id]); } gpr_mu_lock(&server->mu_call); @@ -1436,9 +1391,9 @@ grpc_call_error grpc_server_request_call( grpc_completion_queue *cq_bound_to_call, grpc_completion_queue *cq_for_notification, void *tag) { grpc_call_error error; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; requested_call *rc = (requested_call *)gpr_malloc(sizeof(*rc)); - GRPC_STATS_INC_SERVER_REQUESTED_CALLS(&exec_ctx); + GRPC_STATS_INC_SERVER_REQUESTED_CALLS(); GRPC_API_TRACE( "grpc_server_request_call(" "server=%p, call=%p, details=%p, initial_metadata=%p, " @@ -1470,9 +1425,9 @@ grpc_call_error grpc_server_request_call( rc->call = call; rc->data.batch.details = details; rc->initial_metadata = initial_metadata; - error = queue_call_request(&exec_ctx, server, cq_idx, rc); + error = queue_call_request(server, cq_idx, rc); done: - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return error; } @@ -1482,10 +1437,10 @@ grpc_call_error grpc_server_request_registered_call( grpc_completion_queue *cq_bound_to_call, grpc_completion_queue *cq_for_notification, void *tag) { grpc_call_error error; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; requested_call *rc = (requested_call *)gpr_malloc(sizeof(*rc)); registered_method *rm = (registered_method *)rmp; - GRPC_STATS_INC_SERVER_REQUESTED_CALLS(&exec_ctx); + GRPC_STATS_INC_SERVER_REQUESTED_CALLS(); GRPC_API_TRACE( "grpc_server_request_registered_call(" "server=%p, rmp=%p, call=%p, deadline=%p, initial_metadata=%p, " @@ -1526,21 +1481,21 @@ grpc_call_error grpc_server_request_registered_call( rc->data.registered.deadline = deadline; rc->initial_metadata = initial_metadata; rc->data.registered.optional_payload = optional_payload; - error = queue_call_request(&exec_ctx, server, cq_idx, rc); + error = queue_call_request(server, cq_idx, rc); done: - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return error; } -static void fail_call(grpc_exec_ctx *exec_ctx, grpc_server *server, - size_t cq_idx, requested_call *rc, grpc_error *error) { +static void fail_call(grpc_server *server, size_t cq_idx, requested_call *rc, + grpc_error *error) { *rc->call = NULL; rc->initial_metadata->count = 0; GPR_ASSERT(error != GRPC_ERROR_NONE); server_ref(server); - grpc_cq_end_op(exec_ctx, server->cqs[cq_idx], rc->tag, error, - done_request_event, rc, &rc->completion); + grpc_cq_end_op(server->cqs[cq_idx], rc->tag, error, done_request_event, rc, + &rc->completion); } const grpc_channel_args *grpc_server_get_channel_args(grpc_server *server) { diff --git a/src/core/lib/surface/server.h b/src/core/lib/surface/server.h index 375eab4a048..604e038b806 100644 --- a/src/core/lib/surface/server.h +++ b/src/core/lib/surface/server.h @@ -35,17 +35,16 @@ extern grpc_tracer_flag grpc_server_channel_trace; /* Add a listener to the server: when the server starts, it will call start, and when it shuts down, it will call destroy */ -void grpc_server_add_listener( - grpc_exec_ctx *exec_ctx, grpc_server *server, void *listener, - void (*start)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - grpc_pollset **pollsets, size_t npollsets), - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg, - grpc_closure *on_done)); +void grpc_server_add_listener(grpc_server *server, void *listener, + void (*start)(grpc_server *server, void *arg, + grpc_pollset **pollsets, + size_t npollsets), + void (*destroy)(grpc_server *server, void *arg, + grpc_closure *on_done)); /* Setup a transport - creates a channel stack, binds the transport to the server */ -void grpc_server_setup_transport(grpc_exec_ctx *exec_ctx, grpc_server *server, - grpc_transport *transport, +void grpc_server_setup_transport(grpc_server *server, grpc_transport *transport, grpc_pollset *accepting_pollset, const grpc_channel_args *args); diff --git a/src/core/lib/transport/bdp_estimator.cc b/src/core/lib/transport/bdp_estimator.cc index f1597014b17..6fd6597cfe2 100644 --- a/src/core/lib/transport/bdp_estimator.cc +++ b/src/core/lib/transport/bdp_estimator.cc @@ -38,7 +38,7 @@ BdpEstimator::BdpEstimator(const char *name) bw_est_(0), name_(name) {} -grpc_millis BdpEstimator::CompletePing(grpc_exec_ctx *exec_ctx) { +grpc_millis BdpEstimator::CompletePing() { gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); gpr_timespec dt_ts = gpr_time_sub(now, ping_start_time_); double dt = (double)dt_ts.tv_sec + 1e-9 * (double)dt_ts.tv_nsec; @@ -78,7 +78,7 @@ grpc_millis BdpEstimator::CompletePing(grpc_exec_ctx *exec_ctx) { } ping_state_ = PingState::UNSCHEDULED; accumulator_ = 0; - return grpc_exec_ctx_now(exec_ctx) + inter_ping_delay_; + return grpc_exec_ctx_now() + inter_ping_delay_; } } // namespace grpc_core diff --git a/src/core/lib/transport/bdp_estimator.h b/src/core/lib/transport/bdp_estimator.h index 470c127f7f3..81c5b0f98bb 100644 --- a/src/core/lib/transport/bdp_estimator.h +++ b/src/core/lib/transport/bdp_estimator.h @@ -80,7 +80,7 @@ class BdpEstimator { } // Completes a previously started ping, returns when to schedule the next one - grpc_millis CompletePing(grpc_exec_ctx *exec_ctx); + grpc_millis CompletePing(); private: enum class PingState { UNSCHEDULED, SCHEDULED, STARTED }; diff --git a/src/core/lib/transport/byte_stream.cc b/src/core/lib/transport/byte_stream.cc index 08f61629a92..4f32aeeaaac 100644 --- a/src/core/lib/transport/byte_stream.cc +++ b/src/core/lib/transport/byte_stream.cc @@ -25,34 +25,28 @@ #include "src/core/lib/slice/slice_internal.h" -bool grpc_byte_stream_next(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, size_t max_size_hint, +bool grpc_byte_stream_next(grpc_byte_stream *byte_stream, size_t max_size_hint, grpc_closure *on_complete) { - return byte_stream->vtable->next(exec_ctx, byte_stream, max_size_hint, - on_complete); + return byte_stream->vtable->next(byte_stream, max_size_hint, on_complete); } -grpc_error *grpc_byte_stream_pull(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +grpc_error *grpc_byte_stream_pull(grpc_byte_stream *byte_stream, grpc_slice *slice) { - return byte_stream->vtable->pull(exec_ctx, byte_stream, slice); + return byte_stream->vtable->pull(byte_stream, slice); } -void grpc_byte_stream_shutdown(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +void grpc_byte_stream_shutdown(grpc_byte_stream *byte_stream, grpc_error *error) { - byte_stream->vtable->shutdown(exec_ctx, byte_stream, error); + byte_stream->vtable->shutdown(byte_stream, error); } -void grpc_byte_stream_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream) { - byte_stream->vtable->destroy(exec_ctx, byte_stream); +void grpc_byte_stream_destroy(grpc_byte_stream *byte_stream) { + byte_stream->vtable->destroy(byte_stream); } // grpc_slice_buffer_stream -static bool slice_buffer_stream_next(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static bool slice_buffer_stream_next(grpc_byte_stream *byte_stream, size_t max_size_hint, grpc_closure *on_complete) { grpc_slice_buffer_stream *stream = (grpc_slice_buffer_stream *)byte_stream; @@ -60,8 +54,7 @@ static bool slice_buffer_stream_next(grpc_exec_ctx *exec_ctx, return true; } -static grpc_error *slice_buffer_stream_pull(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static grpc_error *slice_buffer_stream_pull(grpc_byte_stream *byte_stream, grpc_slice *slice) { grpc_slice_buffer_stream *stream = (grpc_slice_buffer_stream *)byte_stream; if (stream->shutdown_error != GRPC_ERROR_NONE) { @@ -74,18 +67,16 @@ static grpc_error *slice_buffer_stream_pull(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static void slice_buffer_stream_shutdown(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static void slice_buffer_stream_shutdown(grpc_byte_stream *byte_stream, grpc_error *error) { grpc_slice_buffer_stream *stream = (grpc_slice_buffer_stream *)byte_stream; GRPC_ERROR_UNREF(stream->shutdown_error); stream->shutdown_error = error; } -static void slice_buffer_stream_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream) { +static void slice_buffer_stream_destroy(grpc_byte_stream *byte_stream) { grpc_slice_buffer_stream *stream = (grpc_slice_buffer_stream *)byte_stream; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, stream->backing_buffer); + grpc_slice_buffer_reset_and_unref_internal(stream->backing_buffer); GRPC_ERROR_UNREF(stream->shutdown_error); } @@ -113,25 +104,22 @@ void grpc_byte_stream_cache_init(grpc_byte_stream_cache *cache, grpc_slice_buffer_init(&cache->cache_buffer); } -void grpc_byte_stream_cache_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream_cache *cache) { - grpc_byte_stream_destroy(exec_ctx, cache->underlying_stream); - grpc_slice_buffer_destroy_internal(exec_ctx, &cache->cache_buffer); +void grpc_byte_stream_cache_destroy(grpc_byte_stream_cache *cache) { + grpc_byte_stream_destroy(cache->underlying_stream); + grpc_slice_buffer_destroy_internal(&cache->cache_buffer); } -static bool caching_byte_stream_next(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static bool caching_byte_stream_next(grpc_byte_stream *byte_stream, size_t max_size_hint, grpc_closure *on_complete) { grpc_caching_byte_stream *stream = (grpc_caching_byte_stream *)byte_stream; if (stream->shutdown_error != GRPC_ERROR_NONE) return true; if (stream->cursor < stream->cache->cache_buffer.count) return true; - return grpc_byte_stream_next(exec_ctx, stream->cache->underlying_stream, - max_size_hint, on_complete); + return grpc_byte_stream_next(stream->cache->underlying_stream, max_size_hint, + on_complete); } -static grpc_error *caching_byte_stream_pull(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static grpc_error *caching_byte_stream_pull(grpc_byte_stream *byte_stream, grpc_slice *slice) { grpc_caching_byte_stream *stream = (grpc_caching_byte_stream *)byte_stream; if (stream->shutdown_error != GRPC_ERROR_NONE) { @@ -144,7 +132,7 @@ static grpc_error *caching_byte_stream_pull(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } grpc_error *error = - grpc_byte_stream_pull(exec_ctx, stream->cache->underlying_stream, slice); + grpc_byte_stream_pull(stream->cache->underlying_stream, slice); if (error == GRPC_ERROR_NONE) { ++stream->cursor; grpc_slice_buffer_add(&stream->cache->cache_buffer, @@ -153,17 +141,15 @@ static grpc_error *caching_byte_stream_pull(grpc_exec_ctx *exec_ctx, return error; } -static void caching_byte_stream_shutdown(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +static void caching_byte_stream_shutdown(grpc_byte_stream *byte_stream, grpc_error *error) { grpc_caching_byte_stream *stream = (grpc_caching_byte_stream *)byte_stream; GRPC_ERROR_UNREF(stream->shutdown_error); stream->shutdown_error = GRPC_ERROR_REF(error); - grpc_byte_stream_shutdown(exec_ctx, stream->cache->underlying_stream, error); + grpc_byte_stream_shutdown(stream->cache->underlying_stream, error); } -static void caching_byte_stream_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream) { +static void caching_byte_stream_destroy(grpc_byte_stream *byte_stream) { grpc_caching_byte_stream *stream = (grpc_caching_byte_stream *)byte_stream; GRPC_ERROR_UNREF(stream->shutdown_error); } diff --git a/src/core/lib/transport/byte_stream.h b/src/core/lib/transport/byte_stream.h index c1d8ee543f5..a2d57a680c4 100644 --- a/src/core/lib/transport/byte_stream.h +++ b/src/core/lib/transport/byte_stream.h @@ -35,13 +35,11 @@ extern "C" { typedef struct grpc_byte_stream grpc_byte_stream; typedef struct { - bool (*next)(grpc_exec_ctx *exec_ctx, grpc_byte_stream *byte_stream, - size_t max_size_hint, grpc_closure *on_complete); - grpc_error *(*pull)(grpc_exec_ctx *exec_ctx, grpc_byte_stream *byte_stream, - grpc_slice *slice); - void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_byte_stream *byte_stream, - grpc_error *error); - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_byte_stream *byte_stream); + bool (*next)(grpc_byte_stream *byte_stream, size_t max_size_hint, + grpc_closure *on_complete); + grpc_error *(*pull)(grpc_byte_stream *byte_stream, grpc_slice *slice); + void (*shutdown)(grpc_byte_stream *byte_stream, grpc_error *error); + void (*destroy)(grpc_byte_stream *byte_stream); } grpc_byte_stream_vtable; struct grpc_byte_stream { @@ -56,8 +54,7 @@ struct grpc_byte_stream { // // max_size_hint can be set as a hint as to the maximum number // of bytes that would be acceptable to read. -bool grpc_byte_stream_next(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, size_t max_size_hint, +bool grpc_byte_stream_next(grpc_byte_stream *byte_stream, size_t max_size_hint, grpc_closure *on_complete); // Returns the next slice in the byte stream when it is ready (indicated by @@ -65,8 +62,7 @@ bool grpc_byte_stream_next(grpc_exec_ctx *exec_ctx, // grpc_byte_stream_next is called). // // Once a slice is returned into *slice, it is owned by the caller. -grpc_error *grpc_byte_stream_pull(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +grpc_error *grpc_byte_stream_pull(grpc_byte_stream *byte_stream, grpc_slice *slice); // Shuts down the byte stream. @@ -76,12 +72,10 @@ grpc_error *grpc_byte_stream_pull(grpc_exec_ctx *exec_ctx, // // The next call to grpc_byte_stream_pull() (if any) will return the error // passed to grpc_byte_stream_shutdown(). -void grpc_byte_stream_shutdown(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream, +void grpc_byte_stream_shutdown(grpc_byte_stream *byte_stream, grpc_error *error); -void grpc_byte_stream_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream *byte_stream); +void grpc_byte_stream_destroy(grpc_byte_stream *byte_stream); // grpc_slice_buffer_stream // @@ -123,8 +117,7 @@ void grpc_byte_stream_cache_init(grpc_byte_stream_cache *cache, grpc_byte_stream *underlying_stream); // Must not be called while still in use by a grpc_caching_byte_stream. -void grpc_byte_stream_cache_destroy(grpc_exec_ctx *exec_ctx, - grpc_byte_stream_cache *cache); +void grpc_byte_stream_cache_destroy(grpc_byte_stream_cache *cache); typedef struct { grpc_byte_stream base; diff --git a/src/core/lib/transport/connectivity_state.cc b/src/core/lib/transport/connectivity_state.cc index f328a6cdbb7..8775eed7674 100644 --- a/src/core/lib/transport/connectivity_state.cc +++ b/src/core/lib/transport/connectivity_state.cc @@ -54,8 +54,7 @@ void grpc_connectivity_state_init(grpc_connectivity_state_tracker *tracker, tracker->name = gpr_strdup(name); } -void grpc_connectivity_state_destroy(grpc_exec_ctx *exec_ctx, - grpc_connectivity_state_tracker *tracker) { +void grpc_connectivity_state_destroy(grpc_connectivity_state_tracker *tracker) { grpc_error *error; grpc_connectivity_state_watcher *w; while ((w = tracker->watchers)) { @@ -68,7 +67,7 @@ void grpc_connectivity_state_destroy(grpc_exec_ctx *exec_ctx, error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Shutdown connectivity owner"); } - GRPC_CLOSURE_SCHED(exec_ctx, w->notify, error); + GRPC_CLOSURE_SCHED(w->notify, error); gpr_free(w); } GRPC_ERROR_UNREF(tracker->current_error); @@ -108,8 +107,8 @@ bool grpc_connectivity_state_has_watchers( } bool grpc_connectivity_state_notify_on_state_change( - grpc_exec_ctx *exec_ctx, grpc_connectivity_state_tracker *tracker, - grpc_connectivity_state *current, grpc_closure *notify) { + grpc_connectivity_state_tracker *tracker, grpc_connectivity_state *current, + grpc_closure *notify) { grpc_connectivity_state cur = (grpc_connectivity_state)gpr_atm_no_barrier_load( &tracker->current_state_atm); @@ -126,7 +125,7 @@ bool grpc_connectivity_state_notify_on_state_change( if (current == NULL) { grpc_connectivity_state_watcher *w = tracker->watchers; if (w != NULL && w->notify == notify) { - GRPC_CLOSURE_SCHED(exec_ctx, notify, GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(notify, GRPC_ERROR_CANCELLED); tracker->watchers = w->next; gpr_free(w); return false; @@ -134,7 +133,7 @@ bool grpc_connectivity_state_notify_on_state_change( while (w != NULL) { grpc_connectivity_state_watcher *rm_candidate = w->next; if (rm_candidate != NULL && rm_candidate->notify == notify) { - GRPC_CLOSURE_SCHED(exec_ctx, notify, GRPC_ERROR_CANCELLED); + GRPC_CLOSURE_SCHED(notify, GRPC_ERROR_CANCELLED); w->next = w->next->next; gpr_free(rm_candidate); return false; @@ -145,8 +144,7 @@ bool grpc_connectivity_state_notify_on_state_change( } else { if (cur != *current) { *current = cur; - GRPC_CLOSURE_SCHED(exec_ctx, notify, - GRPC_ERROR_REF(tracker->current_error)); + GRPC_CLOSURE_SCHED(notify, GRPC_ERROR_REF(tracker->current_error)); } else { grpc_connectivity_state_watcher *w = (grpc_connectivity_state_watcher *)gpr_malloc(sizeof(*w)); @@ -159,8 +157,7 @@ bool grpc_connectivity_state_notify_on_state_change( } } -void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx, - grpc_connectivity_state_tracker *tracker, +void grpc_connectivity_state_set(grpc_connectivity_state_tracker *tracker, grpc_connectivity_state state, grpc_error *error, const char *reason) { grpc_connectivity_state cur = @@ -199,8 +196,7 @@ void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx, gpr_log(GPR_DEBUG, "NOTIFY: %p %s: %p", tracker, tracker->name, w->notify); } - GRPC_CLOSURE_SCHED(exec_ctx, w->notify, - GRPC_ERROR_REF(tracker->current_error)); + GRPC_CLOSURE_SCHED(w->notify, GRPC_ERROR_REF(tracker->current_error)); gpr_free(w); } } diff --git a/src/core/lib/transport/connectivity_state.h b/src/core/lib/transport/connectivity_state.h index c0ba1881484..b2dece34787 100644 --- a/src/core/lib/transport/connectivity_state.h +++ b/src/core/lib/transport/connectivity_state.h @@ -55,13 +55,11 @@ const char *grpc_connectivity_state_name(grpc_connectivity_state state); void grpc_connectivity_state_init(grpc_connectivity_state_tracker *tracker, grpc_connectivity_state init_state, const char *name); -void grpc_connectivity_state_destroy(grpc_exec_ctx *exec_ctx, - grpc_connectivity_state_tracker *tracker); +void grpc_connectivity_state_destroy(grpc_connectivity_state_tracker *tracker); /** Set connectivity state; not thread safe; access must be serialized with an * external lock */ -void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx, - grpc_connectivity_state_tracker *tracker, +void grpc_connectivity_state_set(grpc_connectivity_state_tracker *tracker, grpc_connectivity_state state, grpc_error *associated_error, const char *reason); @@ -85,8 +83,8 @@ grpc_connectivity_state grpc_connectivity_state_get( case). Access must be serialized with an external lock. */ bool grpc_connectivity_state_notify_on_state_change( - grpc_exec_ctx *exec_ctx, grpc_connectivity_state_tracker *tracker, - grpc_connectivity_state *current, grpc_closure *notify); + grpc_connectivity_state_tracker *tracker, grpc_connectivity_state *current, + grpc_closure *notify); #ifdef __cplusplus } diff --git a/src/core/lib/transport/error_utils.cc b/src/core/lib/transport/error_utils.cc index 2e3b61b7abc..276fdf1cdcc 100644 --- a/src/core/lib/transport/error_utils.cc +++ b/src/core/lib/transport/error_utils.cc @@ -39,9 +39,8 @@ static grpc_error *recursively_find_error_with_field(grpc_error *error, return NULL; } -void grpc_error_get_status(grpc_exec_ctx *exec_ctx, grpc_error *error, - grpc_millis deadline, grpc_status_code *code, - grpc_slice *slice, +void grpc_error_get_status(grpc_error *error, grpc_millis deadline, + grpc_status_code *code, grpc_slice *slice, grpc_http2_error_code *http_error) { // Start with the parent error and recurse through the tree of children // until we find the first one that has a status code. @@ -64,8 +63,8 @@ void grpc_error_get_status(grpc_exec_ctx *exec_ctx, grpc_error *error, status = (grpc_status_code)integer; } else if (grpc_error_get_int(found_error, GRPC_ERROR_INT_HTTP2_ERROR, &integer)) { - status = grpc_http2_error_to_grpc_status( - exec_ctx, (grpc_http2_error_code)integer, deadline); + status = grpc_http2_error_to_grpc_status((grpc_http2_error_code)integer, + deadline); } if (code != NULL) *code = status; diff --git a/src/core/lib/transport/error_utils.h b/src/core/lib/transport/error_utils.h index b4f9df4bf1a..94012450f73 100644 --- a/src/core/lib/transport/error_utils.h +++ b/src/core/lib/transport/error_utils.h @@ -33,9 +33,8 @@ extern "C" { /// All attributes are pulled from the same child error. If any of the /// attributes (code, msg, http_status) are unneeded, they can be passed as /// NULL. -void grpc_error_get_status(grpc_exec_ctx *exec_ctx, grpc_error *error, - grpc_millis deadline, grpc_status_code *code, - grpc_slice *slice, +void grpc_error_get_status(grpc_error *error, grpc_millis deadline, + grpc_status_code *code, grpc_slice *slice, grpc_http2_error_code *http_status); /// A utility function to check whether there is a clear status code that diff --git a/src/core/lib/transport/metadata.cc b/src/core/lib/transport/metadata.cc index 5455b2481bd..9f88917daad 100644 --- a/src/core/lib/transport/metadata.cc +++ b/src/core/lib/transport/metadata.cc @@ -108,7 +108,7 @@ typedef struct mdtab_shard { static mdtab_shard g_shards[SHARD_COUNT]; -static void gc_mdtab(grpc_exec_ctx *exec_ctx, mdtab_shard *shard); +static void gc_mdtab(mdtab_shard *shard); void grpc_mdctx_global_init(void) { /* initialize shards */ @@ -123,11 +123,11 @@ void grpc_mdctx_global_init(void) { } } -void grpc_mdctx_global_shutdown(grpc_exec_ctx *exec_ctx) { +void grpc_mdctx_global_shutdown() { for (size_t i = 0; i < SHARD_COUNT; i++) { mdtab_shard *shard = &g_shards[i]; gpr_mu_destroy(&shard->mu); - gc_mdtab(exec_ctx, shard); + gc_mdtab(shard); /* TODO(ctiller): GPR_ASSERT(shard->count == 0); */ if (shard->count != 0) { gpr_log(GPR_DEBUG, "WARNING: %" PRIuPTR " metadata elements were leaked", @@ -165,7 +165,7 @@ static void ref_md_locked(mdtab_shard *shard, } } -static void gc_mdtab(grpc_exec_ctx *exec_ctx, mdtab_shard *shard) { +static void gc_mdtab(mdtab_shard *shard) { size_t i; interned_metadata **prev_next; interned_metadata *md, *next; @@ -178,8 +178,8 @@ static void gc_mdtab(grpc_exec_ctx *exec_ctx, mdtab_shard *shard) { void *user_data = (void *)gpr_atm_no_barrier_load(&md->user_data); next = md->bucket_next; if (gpr_atm_acq_load(&md->refcnt) == 0) { - grpc_slice_unref_internal(exec_ctx, md->key); - grpc_slice_unref_internal(exec_ctx, md->value); + grpc_slice_unref_internal(md->key); + grpc_slice_unref_internal(md->value); if (md->user_data) { ((destroy_user_data_func)gpr_atm_no_barrier_load( &md->destroy_user_data))(user_data); @@ -228,17 +228,17 @@ static void grow_mdtab(mdtab_shard *shard) { GPR_TIMER_END("grow_mdtab", 0); } -static void rehash_mdtab(grpc_exec_ctx *exec_ctx, mdtab_shard *shard) { +static void rehash_mdtab(mdtab_shard *shard) { if (gpr_atm_no_barrier_load(&shard->free_estimate) > (gpr_atm)(shard->capacity / 4)) { - gc_mdtab(exec_ctx, shard); + gc_mdtab(shard); } else { grow_mdtab(shard); } } grpc_mdelem grpc_mdelem_create( - grpc_exec_ctx *exec_ctx, grpc_slice key, grpc_slice value, + grpc_slice key, grpc_slice value, grpc_mdelem_data *compatible_external_backing_store) { if (!grpc_slice_is_interned(key) || !grpc_slice_is_interned(value)) { if (compatible_external_backing_store != NULL) { @@ -318,7 +318,7 @@ grpc_mdelem grpc_mdelem_create( shard->count++; if (shard->count > shard->capacity * 2) { - rehash_mdtab(exec_ctx, shard); + rehash_mdtab(shard); } gpr_mu_unlock(&shard->mu); @@ -328,22 +328,20 @@ grpc_mdelem grpc_mdelem_create( return GRPC_MAKE_MDELEM(md, GRPC_MDELEM_STORAGE_INTERNED); } -grpc_mdelem grpc_mdelem_from_slices(grpc_exec_ctx *exec_ctx, grpc_slice key, - grpc_slice value) { - grpc_mdelem out = grpc_mdelem_create(exec_ctx, key, value, NULL); - grpc_slice_unref_internal(exec_ctx, key); - grpc_slice_unref_internal(exec_ctx, value); +grpc_mdelem grpc_mdelem_from_slices(grpc_slice key, grpc_slice value) { + grpc_mdelem out = grpc_mdelem_create(key, value, NULL); + grpc_slice_unref_internal(key); + grpc_slice_unref_internal(value); return out; } -grpc_mdelem grpc_mdelem_from_grpc_metadata(grpc_exec_ctx *exec_ctx, - grpc_metadata *metadata) { +grpc_mdelem grpc_mdelem_from_grpc_metadata(grpc_metadata *metadata) { bool changed = false; grpc_slice key_slice = grpc_slice_maybe_static_intern(metadata->key, &changed); grpc_slice value_slice = grpc_slice_maybe_static_intern(metadata->value, &changed); - return grpc_mdelem_create(exec_ctx, key_slice, value_slice, + return grpc_mdelem_create(key_slice, value_slice, changed ? NULL : (grpc_mdelem_data *)metadata); } @@ -414,7 +412,7 @@ grpc_mdelem grpc_mdelem_ref(grpc_mdelem gmd DEBUG_ARGS) { return gmd; } -void grpc_mdelem_unref(grpc_exec_ctx *exec_ctx, grpc_mdelem gmd DEBUG_ARGS) { +void grpc_mdelem_unref(grpc_mdelem gmd DEBUG_ARGS) { switch (GRPC_MDELEM_STORAGE(gmd)) { case GRPC_MDELEM_STORAGE_EXTERNAL: case GRPC_MDELEM_STORAGE_STATIC: @@ -462,8 +460,8 @@ void grpc_mdelem_unref(grpc_exec_ctx *exec_ctx, grpc_mdelem gmd DEBUG_ARGS) { const gpr_atm prev_refcount = gpr_atm_full_fetch_add(&md->refcnt, -1); GPR_ASSERT(prev_refcount >= 1); if (1 == prev_refcount) { - grpc_slice_unref_internal(exec_ctx, md->key); - grpc_slice_unref_internal(exec_ctx, md->value); + grpc_slice_unref_internal(md->key); + grpc_slice_unref_internal(md->value); gpr_free(md); } break; diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h index 9f82225dc39..d0465d7215a 100644 --- a/src/core/lib/transport/metadata.h +++ b/src/core/lib/transport/metadata.h @@ -114,20 +114,18 @@ struct grpc_mdelem { (uintptr_t)GRPC_MDELEM_STORAGE_INTERNED_BIT)) /* Unrefs the slices. */ -grpc_mdelem grpc_mdelem_from_slices(grpc_exec_ctx *exec_ctx, grpc_slice key, - grpc_slice value); +grpc_mdelem grpc_mdelem_from_slices(grpc_slice key, grpc_slice value); /* Cheaply convert a grpc_metadata to a grpc_mdelem; may use the grpc_metadata object as backing storage (so lifetimes should align) */ -grpc_mdelem grpc_mdelem_from_grpc_metadata(grpc_exec_ctx *exec_ctx, - grpc_metadata *metadata); +grpc_mdelem grpc_mdelem_from_grpc_metadata(grpc_metadata *metadata); /* Does not unref the slices; if a new non-interned mdelem is needed, allocates one if compatible_external_backing_store is NULL, or uses compatible_external_backing_store if it is non-NULL (in which case it's the users responsibility to ensure that it outlives usage) */ grpc_mdelem grpc_mdelem_create( - grpc_exec_ctx *exec_ctx, grpc_slice key, grpc_slice value, + grpc_slice key, grpc_slice value, grpc_mdelem_data *compatible_external_backing_store); bool grpc_mdelem_eq(grpc_mdelem a, grpc_mdelem b); @@ -143,16 +141,14 @@ void *grpc_mdelem_set_user_data(grpc_mdelem md, void (*destroy_func)(void *), #ifndef NDEBUG #define GRPC_MDELEM_REF(s) grpc_mdelem_ref((s), __FILE__, __LINE__) -#define GRPC_MDELEM_UNREF(exec_ctx, s) \ - grpc_mdelem_unref((exec_ctx), (s), __FILE__, __LINE__) +#define GRPC_MDELEM_UNREF(s) grpc_mdelem_unref((s), __FILE__, __LINE__) grpc_mdelem grpc_mdelem_ref(grpc_mdelem md, const char *file, int line); -void grpc_mdelem_unref(grpc_exec_ctx *exec_ctx, grpc_mdelem md, - const char *file, int line); +void grpc_mdelem_unref(grpc_mdelem md, const char *file, int line); #else #define GRPC_MDELEM_REF(s) grpc_mdelem_ref((s)) -#define GRPC_MDELEM_UNREF(exec_ctx, s) grpc_mdelem_unref((exec_ctx), (s)) +#define GRPC_MDELEM_UNREF(s) grpc_mdelem_unref((s)) grpc_mdelem grpc_mdelem_ref(grpc_mdelem md); -void grpc_mdelem_unref(grpc_exec_ctx *exec_ctx, grpc_mdelem md); +void grpc_mdelem_unref(grpc_mdelem md); #endif #define GRPC_MDKEY(md) (GRPC_MDELEM_DATA(md)->key) @@ -169,7 +165,7 @@ void grpc_mdelem_unref(grpc_exec_ctx *exec_ctx, grpc_mdelem md); #define GRPC_MDSTR_KV_HASH(k_hash, v_hash) (GPR_ROTL((k_hash), 2) ^ (v_hash)) void grpc_mdctx_global_init(void); -void grpc_mdctx_global_shutdown(grpc_exec_ctx *exec_ctx); +void grpc_mdctx_global_shutdown(); #ifdef __cplusplus } diff --git a/src/core/lib/transport/metadata_batch.cc b/src/core/lib/transport/metadata_batch.cc index 2df9c9189cf..075a03c0f96 100644 --- a/src/core/lib/transport/metadata_batch.cc +++ b/src/core/lib/transport/metadata_batch.cc @@ -51,8 +51,7 @@ static void assert_valid_list(grpc_mdelem_list *list) { #endif /* NDEBUG */ } -static void assert_valid_callouts(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch) { +static void assert_valid_callouts(grpc_metadata_batch *batch) { #ifndef NDEBUG for (grpc_linked_mdelem *l = batch->list.head; l != NULL; l = l->next) { grpc_slice key_interned = grpc_slice_intern(GRPC_MDKEY(l->md)); @@ -61,7 +60,7 @@ static void assert_valid_callouts(grpc_exec_ctx *exec_ctx, if (callout_idx != GRPC_BATCH_CALLOUTS_COUNT) { GPR_ASSERT(batch->idx.array[callout_idx] == l); } - grpc_slice_unref_internal(exec_ctx, key_interned); + grpc_slice_unref_internal(key_interned); } #endif } @@ -77,11 +76,10 @@ void grpc_metadata_batch_init(grpc_metadata_batch *batch) { batch->deadline = GRPC_MILLIS_INF_FUTURE; } -void grpc_metadata_batch_destroy(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch) { +void grpc_metadata_batch_destroy(grpc_metadata_batch *batch) { grpc_linked_mdelem *l; for (l = batch->list.head; l; l = l->next) { - GRPC_MDELEM_UNREF(exec_ctx, l->md); + GRPC_MDELEM_UNREF(l->md); } } @@ -126,13 +124,12 @@ static void maybe_unlink_callout(grpc_metadata_batch *batch, batch->idx.array[idx] = NULL; } -grpc_error *grpc_metadata_batch_add_head(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_add_head(grpc_metadata_batch *batch, grpc_linked_mdelem *storage, grpc_mdelem elem_to_add) { GPR_ASSERT(!GRPC_MDISNULL(elem_to_add)); storage->md = elem_to_add; - return grpc_metadata_batch_link_head(exec_ctx, batch, storage); + return grpc_metadata_batch_link_head(batch, storage); } static void link_head(grpc_mdelem_list *list, grpc_linked_mdelem *storage) { @@ -150,27 +147,25 @@ static void link_head(grpc_mdelem_list *list, grpc_linked_mdelem *storage) { assert_valid_list(list); } -grpc_error *grpc_metadata_batch_link_head(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_link_head(grpc_metadata_batch *batch, grpc_linked_mdelem *storage) { - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); grpc_error *err = maybe_link_callout(batch, storage); if (err != GRPC_ERROR_NONE) { - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); return err; } link_head(&batch->list, storage); - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); return GRPC_ERROR_NONE; } -grpc_error *grpc_metadata_batch_add_tail(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_add_tail(grpc_metadata_batch *batch, grpc_linked_mdelem *storage, grpc_mdelem elem_to_add) { GPR_ASSERT(!GRPC_MDISNULL(elem_to_add)); storage->md = elem_to_add; - return grpc_metadata_batch_link_tail(exec_ctx, batch, storage); + return grpc_metadata_batch_link_tail(batch, storage); } static void link_tail(grpc_mdelem_list *list, grpc_linked_mdelem *storage) { @@ -189,17 +184,16 @@ static void link_tail(grpc_mdelem_list *list, grpc_linked_mdelem *storage) { assert_valid_list(list); } -grpc_error *grpc_metadata_batch_link_tail(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_link_tail(grpc_metadata_batch *batch, grpc_linked_mdelem *storage) { - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); grpc_error *err = maybe_link_callout(batch, storage); if (err != GRPC_ERROR_NONE) { - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); return err; } link_tail(&batch->list, storage); - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); return GRPC_ERROR_NONE; } @@ -220,31 +214,28 @@ static void unlink_storage(grpc_mdelem_list *list, assert_valid_list(list); } -void grpc_metadata_batch_remove(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +void grpc_metadata_batch_remove(grpc_metadata_batch *batch, grpc_linked_mdelem *storage) { - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); maybe_unlink_callout(batch, storage); unlink_storage(&batch->list, storage); - GRPC_MDELEM_UNREF(exec_ctx, storage->md); - assert_valid_callouts(exec_ctx, batch); + GRPC_MDELEM_UNREF(storage->md); + assert_valid_callouts(batch); } -void grpc_metadata_batch_set_value(grpc_exec_ctx *exec_ctx, - grpc_linked_mdelem *storage, +void grpc_metadata_batch_set_value(grpc_linked_mdelem *storage, grpc_slice value) { grpc_mdelem old_mdelem = storage->md; grpc_mdelem new_mdelem = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_ref_internal(GRPC_MDKEY(old_mdelem)), value); + grpc_slice_ref_internal(GRPC_MDKEY(old_mdelem)), value); storage->md = new_mdelem; - GRPC_MDELEM_UNREF(exec_ctx, old_mdelem); + GRPC_MDELEM_UNREF(old_mdelem); } -grpc_error *grpc_metadata_batch_substitute(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_substitute(grpc_metadata_batch *batch, grpc_linked_mdelem *storage, grpc_mdelem new_mdelem) { - assert_valid_callouts(exec_ctx, batch); + assert_valid_callouts(batch); grpc_error *error = GRPC_ERROR_NONE; grpc_mdelem old_mdelem = storage->md; if (!grpc_slice_eq(GRPC_MDKEY(new_mdelem), GRPC_MDKEY(old_mdelem))) { @@ -253,19 +244,18 @@ grpc_error *grpc_metadata_batch_substitute(grpc_exec_ctx *exec_ctx, error = maybe_link_callout(batch, storage); if (error != GRPC_ERROR_NONE) { unlink_storage(&batch->list, storage); - GRPC_MDELEM_UNREF(exec_ctx, storage->md); + GRPC_MDELEM_UNREF(storage->md); } } else { storage->md = new_mdelem; } - GRPC_MDELEM_UNREF(exec_ctx, old_mdelem); - assert_valid_callouts(exec_ctx, batch); + GRPC_MDELEM_UNREF(old_mdelem); + assert_valid_callouts(batch); return error; } -void grpc_metadata_batch_clear(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch) { - grpc_metadata_batch_destroy(exec_ctx, batch); +void grpc_metadata_batch_clear(grpc_metadata_batch *batch) { + grpc_metadata_batch_destroy(batch); grpc_metadata_batch_init(batch); } @@ -291,8 +281,7 @@ static void add_error(grpc_error **composite, grpc_error *error, *composite = grpc_error_add_child(*composite, error); } -grpc_error *grpc_metadata_batch_filter(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_filter(grpc_metadata_batch *batch, grpc_metadata_batch_filter_func func, void *user_data, const char *composite_error_string) { @@ -300,12 +289,12 @@ grpc_error *grpc_metadata_batch_filter(grpc_exec_ctx *exec_ctx, grpc_error *error = GRPC_ERROR_NONE; while (l) { grpc_linked_mdelem *next = l->next; - grpc_filtered_mdelem new_mdelem = func(exec_ctx, user_data, l->md); + grpc_filtered_mdelem new_mdelem = func(user_data, l->md); add_error(&error, new_mdelem.error, composite_error_string); if (GRPC_MDISNULL(new_mdelem.md)) { - grpc_metadata_batch_remove(exec_ctx, batch, l); + grpc_metadata_batch_remove(batch, l); } else if (new_mdelem.md.payload != l->md.payload) { - grpc_metadata_batch_substitute(exec_ctx, batch, l, new_mdelem.md); + grpc_metadata_batch_substitute(batch, l, new_mdelem.md); } l = next; } diff --git a/src/core/lib/transport/metadata_batch.h b/src/core/lib/transport/metadata_batch.h index a2b4b92385b..0e6ef210914 100644 --- a/src/core/lib/transport/metadata_batch.h +++ b/src/core/lib/transport/metadata_batch.h @@ -57,28 +57,23 @@ typedef struct grpc_metadata_batch { } grpc_metadata_batch; void grpc_metadata_batch_init(grpc_metadata_batch *batch); -void grpc_metadata_batch_destroy(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch); -void grpc_metadata_batch_clear(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch); +void grpc_metadata_batch_destroy(grpc_metadata_batch *batch); +void grpc_metadata_batch_clear(grpc_metadata_batch *batch); bool grpc_metadata_batch_is_empty(grpc_metadata_batch *batch); /* Returns the transport size of the batch. */ size_t grpc_metadata_batch_size(grpc_metadata_batch *batch); /** Remove \a storage from the batch, unreffing the mdelem contained */ -void grpc_metadata_batch_remove(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +void grpc_metadata_batch_remove(grpc_metadata_batch *batch, grpc_linked_mdelem *storage); /** Substitute a new mdelem for an old value */ -grpc_error *grpc_metadata_batch_substitute(grpc_exec_ctx *exec_ctx, - grpc_metadata_batch *batch, +grpc_error *grpc_metadata_batch_substitute(grpc_metadata_batch *batch, grpc_linked_mdelem *storage, grpc_mdelem new_value); -void grpc_metadata_batch_set_value(grpc_exec_ctx *exec_ctx, - grpc_linked_mdelem *storage, +void grpc_metadata_batch_set_value(grpc_linked_mdelem *storage, grpc_slice value); /** Add \a storage to the beginning of \a batch. storage->md is @@ -86,17 +81,17 @@ void grpc_metadata_batch_set_value(grpc_exec_ctx *exec_ctx, \a storage is owned by the caller and must survive for the lifetime of batch. This usually means it should be around for the lifetime of the call. */ -grpc_error *grpc_metadata_batch_link_head( - grpc_exec_ctx *exec_ctx, grpc_metadata_batch *batch, - grpc_linked_mdelem *storage) GRPC_MUST_USE_RESULT; +grpc_error *grpc_metadata_batch_link_head(grpc_metadata_batch *batch, + grpc_linked_mdelem *storage) + GRPC_MUST_USE_RESULT; /** Add \a storage to the end of \a batch. storage->md is assumed to be valid. \a storage is owned by the caller and must survive for the lifetime of batch. This usually means it should be around for the lifetime of the call. */ -grpc_error *grpc_metadata_batch_link_tail( - grpc_exec_ctx *exec_ctx, grpc_metadata_batch *batch, - grpc_linked_mdelem *storage) GRPC_MUST_USE_RESULT; +grpc_error *grpc_metadata_batch_link_tail(grpc_metadata_batch *batch, + grpc_linked_mdelem *storage) + GRPC_MUST_USE_RESULT; /** Add \a elem_to_add as the first element in \a batch, using \a storage as backing storage for the linked list element. @@ -105,8 +100,8 @@ grpc_error *grpc_metadata_batch_link_tail( for the lifetime of the call. Takes ownership of \a elem_to_add */ grpc_error *grpc_metadata_batch_add_head( - grpc_exec_ctx *exec_ctx, grpc_metadata_batch *batch, - grpc_linked_mdelem *storage, grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT; + grpc_metadata_batch *batch, grpc_linked_mdelem *storage, + grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT; /** Add \a elem_to_add as the last element in \a batch, using \a storage as backing storage for the linked list element. \a storage is owned by the caller and must survive for the @@ -114,8 +109,8 @@ grpc_error *grpc_metadata_batch_add_head( for the lifetime of the call. Takes ownership of \a elem_to_add */ grpc_error *grpc_metadata_batch_add_tail( - grpc_exec_ctx *exec_ctx, grpc_metadata_batch *batch, - grpc_linked_mdelem *storage, grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT; + grpc_metadata_batch *batch, grpc_linked_mdelem *storage, + grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT; grpc_error *grpc_attach_md_to_error(grpc_error *src, grpc_mdelem md); @@ -132,11 +127,10 @@ typedef struct { { GRPC_ERROR_NONE, GRPC_MDNULL } typedef grpc_filtered_mdelem (*grpc_metadata_batch_filter_func)( - grpc_exec_ctx *exec_ctx, void *user_data, grpc_mdelem elem); + void *user_data, grpc_mdelem elem); grpc_error *grpc_metadata_batch_filter( - grpc_exec_ctx *exec_ctx, grpc_metadata_batch *batch, - grpc_metadata_batch_filter_func func, void *user_data, - const char *composite_error_string) GRPC_MUST_USE_RESULT; + grpc_metadata_batch *batch, grpc_metadata_batch_filter_func func, + void *user_data, const char *composite_error_string) GRPC_MUST_USE_RESULT; #ifndef NDEBUG void grpc_metadata_batch_assert_ok(grpc_metadata_batch *comd); diff --git a/src/core/lib/transport/service_config.cc b/src/core/lib/transport/service_config.cc index 070a13a2b46..7aa4873d371 100644 --- a/src/core/lib/transport/service_config.cc +++ b/src/core/lib/transport/service_config.cc @@ -146,8 +146,7 @@ static char* parse_json_method_name(grpc_json* json) { // each name found, incrementing \a idx for each entry added. // Returns false on error. static bool parse_json_method_config( - grpc_exec_ctx* exec_ctx, grpc_json* json, - void* (*create_value)(const grpc_json* method_config_json), + grpc_json* json, void* (*create_value)(const grpc_json* method_config_json), grpc_slice_hash_table_entry* entries, size_t* idx) { // Construct value. void* method_config = create_value(json); @@ -180,9 +179,9 @@ done: } grpc_slice_hash_table* grpc_service_config_create_method_config_table( - grpc_exec_ctx* exec_ctx, const grpc_service_config* service_config, + const grpc_service_config* service_config, void* (*create_value)(const grpc_json* method_config_json), - void (*destroy_value)(grpc_exec_ctx* exec_ctx, void* value)) { + void (*destroy_value)(void* value)) { const grpc_json* json = service_config->json_tree; // Traverse parsed JSON tree. if (json->type != GRPC_JSON_OBJECT || json->key != NULL) return NULL; @@ -204,8 +203,7 @@ grpc_slice_hash_table* grpc_service_config_create_method_config_table( size_t idx = 0; for (grpc_json* method = field->child; method != NULL; method = method->next) { - if (!parse_json_method_config(exec_ctx, method, create_value, entries, - &idx)) { + if (!parse_json_method_config(method, create_value, entries, &idx)) { return NULL; } } @@ -222,8 +220,7 @@ grpc_slice_hash_table* grpc_service_config_create_method_config_table( return method_config_table; } -void* grpc_method_config_table_get(grpc_exec_ctx* exec_ctx, - const grpc_slice_hash_table* table, +void* grpc_method_config_table_get(const grpc_slice_hash_table* table, grpc_slice path) { void* value = grpc_slice_hash_table_get(table, path); // If we didn't find a match for the path, try looking for a wildcard @@ -239,7 +236,7 @@ void* grpc_method_config_table_get(grpc_exec_ctx* exec_ctx, grpc_slice wildcard_path = grpc_slice_from_copied_string(buf); gpr_free(buf); value = grpc_slice_hash_table_get(table, wildcard_path); - grpc_slice_unref_internal(exec_ctx, wildcard_path); + grpc_slice_unref_internal(wildcard_path); gpr_free(path_str); } return value; diff --git a/src/core/lib/transport/service_config.h b/src/core/lib/transport/service_config.h index 9c430936274..6395a368f27 100644 --- a/src/core/lib/transport/service_config.h +++ b/src/core/lib/transport/service_config.h @@ -49,9 +49,9 @@ const char* grpc_service_config_get_lb_policy_name( /// \a destroy_value is used to clean up values. /// Returns NULL on error. grpc_slice_hash_table* grpc_service_config_create_method_config_table( - grpc_exec_ctx* exec_ctx, const grpc_service_config* service_config, + const grpc_service_config* service_config, void* (*create_value)(const grpc_json* method_config_json), - void (*destroy_value)(grpc_exec_ctx* exec_ctx, void* value)); + void (*destroy_value)(void* value)); /// A helper function for looking up values in the table returned by /// \a grpc_service_config_create_method_config_table(). @@ -59,8 +59,7 @@ grpc_slice_hash_table* grpc_service_config_create_method_config_table( /// the form "/service/method". /// Returns NULL if the method has no config. /// Caller does NOT own a reference to the result. -void* grpc_method_config_table_get(grpc_exec_ctx* exec_ctx, - const grpc_slice_hash_table* table, +void* grpc_method_config_table_get(const grpc_slice_hash_table* table, grpc_slice path); #ifdef __cplusplus diff --git a/src/core/lib/transport/static_metadata.cc b/src/core/lib/transport/static_metadata.cc index 472cf888eab..e6c8d290f23 100644 --- a/src/core/lib/transport/static_metadata.cc +++ b/src/core/lib/transport/static_metadata.cc @@ -104,7 +104,7 @@ static uint8_t g_bytes[] = { 101, 44, 103, 122, 105, 112}; static void static_ref(void *unused) {} -static void static_unref(grpc_exec_ctx *exec_ctx, void *unused) {} +static void static_unref(void *unused) {} static const grpc_slice_refcount_vtable static_sub_vtable = { static_ref, static_unref, grpc_slice_default_eq_impl, grpc_slice_default_hash_impl}; diff --git a/src/core/lib/transport/status_conversion.cc b/src/core/lib/transport/status_conversion.cc index 891c4427d7c..fd7764f2dba 100644 --- a/src/core/lib/transport/status_conversion.cc +++ b/src/core/lib/transport/status_conversion.cc @@ -37,8 +37,7 @@ grpc_http2_error_code grpc_status_to_http2_error(grpc_status_code status) { } } -grpc_status_code grpc_http2_error_to_grpc_status(grpc_exec_ctx *exec_ctx, - grpc_http2_error_code error, +grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error, grpc_millis deadline) { switch (error) { case GRPC_HTTP2_NO_ERROR: @@ -47,9 +46,8 @@ grpc_status_code grpc_http2_error_to_grpc_status(grpc_exec_ctx *exec_ctx, case GRPC_HTTP2_CANCEL: /* http2 cancel translates to STATUS_CANCELLED iff deadline hasn't been * exceeded */ - return grpc_exec_ctx_now(exec_ctx) > deadline - ? GRPC_STATUS_DEADLINE_EXCEEDED - : GRPC_STATUS_CANCELLED; + return grpc_exec_ctx_now() > deadline ? GRPC_STATUS_DEADLINE_EXCEEDED + : GRPC_STATUS_CANCELLED; case GRPC_HTTP2_ENHANCE_YOUR_CALM: return GRPC_STATUS_RESOURCE_EXHAUSTED; case GRPC_HTTP2_INADEQUATE_SECURITY: diff --git a/src/core/lib/transport/status_conversion.h b/src/core/lib/transport/status_conversion.h index 8ef91aecfea..c89a3e992ff 100644 --- a/src/core/lib/transport/status_conversion.h +++ b/src/core/lib/transport/status_conversion.h @@ -29,8 +29,7 @@ extern "C" { /* Conversion of grpc status codes to http2 error codes (for RST_STREAM) */ grpc_http2_error_code grpc_status_to_http2_error(grpc_status_code status); -grpc_status_code grpc_http2_error_to_grpc_status(grpc_exec_ctx *exec_ctx, - grpc_http2_error_code error, +grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error, grpc_millis deadline); /* Conversion of HTTP status codes (:status) to grpc status codes */ diff --git a/src/core/lib/transport/transport.cc b/src/core/lib/transport/transport.cc index ab4f938e7b4..2afc7ba7b53 100644 --- a/src/core/lib/transport/transport.cc +++ b/src/core/lib/transport/transport.cc @@ -51,8 +51,7 @@ void grpc_stream_ref(grpc_stream_refcount *refcount) { } #ifndef NDEBUG -void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount, - const char *reason) { +void grpc_stream_unref(grpc_stream_refcount *refcount, const char *reason) { if (GRPC_TRACER_ON(grpc_trace_stream_refcount)) { gpr_atm val = gpr_atm_no_barrier_load(&refcount->refs.count); gpr_log(GPR_DEBUG, "%s %p:%p UNREF %" PRIdPTR "->%" PRIdPTR " %s", @@ -60,8 +59,7 @@ void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount, val - 1, reason); } #else -void grpc_stream_unref(grpc_exec_ctx *exec_ctx, - grpc_stream_refcount *refcount) { +void grpc_stream_unref(grpc_stream_refcount *refcount) { #endif if (gpr_unref(&refcount->refs)) { if (exec_ctx->flags & GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP) { @@ -75,7 +73,7 @@ void grpc_stream_unref(grpc_exec_ctx *exec_ctx, refcount->destroy.scheduler = grpc_executor_scheduler(GRPC_EXECUTOR_SHORT); } - GRPC_CLOSURE_SCHED(exec_ctx, &refcount->destroy, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&refcount->destroy, GRPC_ERROR_NONE); } } @@ -91,11 +89,11 @@ static void slice_stream_ref(void *p) { #endif } -static void slice_stream_unref(grpc_exec_ctx *exec_ctx, void *p) { +static void slice_stream_unref(void *p) { #ifndef NDEBUG - grpc_stream_unref(exec_ctx, STREAM_REF_FROM_SLICE_REF(p), "slice"); + grpc_stream_unref(STREAM_REF_FROM_SLICE_REF(p), "slice"); #else - grpc_stream_unref(exec_ctx, STREAM_REF_FROM_SLICE_REF(p)); + grpc_stream_unref(STREAM_REF_FROM_SLICE_REF(p)); #endif } @@ -153,58 +151,49 @@ size_t grpc_transport_stream_size(grpc_transport *transport) { return transport->vtable->sizeof_stream; } -void grpc_transport_destroy(grpc_exec_ctx *exec_ctx, - grpc_transport *transport) { - transport->vtable->destroy(exec_ctx, transport); +void grpc_transport_destroy(grpc_transport *transport) { + transport->vtable->destroy(transport); } -int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, grpc_stream *stream, +int grpc_transport_init_stream(grpc_transport *transport, grpc_stream *stream, grpc_stream_refcount *refcount, const void *server_data, gpr_arena *arena) { - return transport->vtable->init_stream(exec_ctx, transport, stream, refcount, + return transport->vtable->init_stream(transport, stream, refcount, server_data, arena); } -void grpc_transport_perform_stream_op(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_transport_perform_stream_op(grpc_transport *transport, grpc_stream *stream, grpc_transport_stream_op_batch *op) { - transport->vtable->perform_stream_op(exec_ctx, transport, stream, op); + transport->vtable->perform_stream_op(transport, stream, op); } -void grpc_transport_perform_op(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_transport_perform_op(grpc_transport *transport, grpc_transport_op *op) { - transport->vtable->perform_op(exec_ctx, transport, op); + transport->vtable->perform_op(transport, op); } -void grpc_transport_set_pops(grpc_exec_ctx *exec_ctx, grpc_transport *transport, - grpc_stream *stream, +void grpc_transport_set_pops(grpc_transport *transport, grpc_stream *stream, grpc_polling_entity *pollent) { grpc_pollset *pollset; grpc_pollset_set *pollset_set; if ((pollset = grpc_polling_entity_pollset(pollent)) != NULL) { - transport->vtable->set_pollset(exec_ctx, transport, stream, pollset); + transport->vtable->set_pollset(transport, stream, pollset); } else if ((pollset_set = grpc_polling_entity_pollset_set(pollent)) != NULL) { - transport->vtable->set_pollset_set(exec_ctx, transport, stream, - pollset_set); + transport->vtable->set_pollset_set(transport, stream, pollset_set); } else { abort(); } } -void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_transport_destroy_stream(grpc_transport *transport, grpc_stream *stream, grpc_closure *then_schedule_closure) { - transport->vtable->destroy_stream(exec_ctx, transport, stream, - then_schedule_closure); + transport->vtable->destroy_stream(transport, stream, then_schedule_closure); } -grpc_endpoint *grpc_transport_get_endpoint(grpc_exec_ctx *exec_ctx, - grpc_transport *transport) { - return transport->vtable->get_endpoint(exec_ctx, transport); +grpc_endpoint *grpc_transport_get_endpoint(grpc_transport *transport) { + return transport->vtable->get_endpoint(transport); } // This comment should be sung to the tune of @@ -215,25 +204,23 @@ grpc_endpoint *grpc_transport_get_endpoint(grpc_exec_ctx *exec_ctx, // though it lives in lib, it handles transport stream ops sure // it's grpc_transport_stream_op_batch_finish_with_failure void grpc_transport_stream_op_batch_finish_with_failure( - grpc_exec_ctx *exec_ctx, grpc_transport_stream_op_batch *batch, - grpc_error *error, grpc_call_combiner *call_combiner) { + grpc_transport_stream_op_batch *batch, grpc_error *error, + grpc_call_combiner *call_combiner) { if (batch->send_message) { - grpc_byte_stream_destroy(exec_ctx, - batch->payload->send_message.send_message); + grpc_byte_stream_destroy(batch->payload->send_message.send_message); } if (batch->recv_message) { - GRPC_CALL_COMBINER_START(exec_ctx, call_combiner, - batch->payload->recv_message.recv_message_ready, - GRPC_ERROR_REF(error), - "failing recv_message_ready"); + GRPC_CALL_COMBINER_START( + call_combiner, batch->payload->recv_message.recv_message_ready, + GRPC_ERROR_REF(error), "failing recv_message_ready"); } if (batch->recv_initial_metadata) { GRPC_CALL_COMBINER_START( - exec_ctx, call_combiner, + call_combiner, batch->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_REF(error), "failing recv_initial_metadata_ready"); } - GRPC_CLOSURE_SCHED(exec_ctx, batch->on_complete, error); + GRPC_CLOSURE_SCHED(batch->on_complete, error); if (batch->cancel_stream) { GRPC_ERROR_UNREF(batch->payload->cancel_stream.cancel_error); } @@ -245,10 +232,9 @@ typedef struct { grpc_transport_op op; } made_transport_op; -static void destroy_made_transport_op(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void destroy_made_transport_op(void *arg, grpc_error *error) { made_transport_op *op = (made_transport_op *)arg; - GRPC_CLOSURE_SCHED(exec_ctx, op->inner_on_complete, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(op->inner_on_complete, GRPC_ERROR_REF(error)); gpr_free(op); } @@ -269,12 +255,11 @@ typedef struct { grpc_transport_stream_op_batch_payload payload; } made_transport_stream_op; -static void destroy_made_transport_stream_op(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void destroy_made_transport_stream_op(void *arg, grpc_error *error) { made_transport_stream_op *op = (made_transport_stream_op *)arg; grpc_closure *c = op->inner_on_complete; gpr_free(op); - GRPC_CLOSURE_RUN(exec_ctx, c, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_RUN(c, GRPC_ERROR_REF(error)); } grpc_transport_stream_op_batch *grpc_make_transport_stream_op( diff --git a/src/core/lib/transport/transport.h b/src/core/lib/transport/transport.h index fbf5dcb8b59..db61f710f74 100644 --- a/src/core/lib/transport/transport.h +++ b/src/core/lib/transport/transport.h @@ -61,15 +61,14 @@ void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs, grpc_iomgr_cb_func cb, void *cb_arg, const char *object_type); void grpc_stream_ref(grpc_stream_refcount *refcount, const char *reason); -void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount, - const char *reason); +void grpc_stream_unref(grpc_stream_refcount *refcount, const char *reason); #define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype) \ grpc_stream_ref_init(rc, ir, cb, cb_arg, objtype) #else void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs, grpc_iomgr_cb_func cb, void *cb_arg); void grpc_stream_ref(grpc_stream_refcount *refcount); -void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount); +void grpc_stream_unref(grpc_stream_refcount *refcount); #define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype) \ grpc_stream_ref_init(rc, ir, cb, cb_arg) #endif @@ -243,8 +242,7 @@ typedef struct grpc_transport_op { If true, the callback is set to set_accept_stream_fn, with its user_data argument set to set_accept_stream_user_data */ bool set_accept_stream; - void (*set_accept_stream_fn)(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_transport *transport, + void (*set_accept_stream_fn)(void *user_data, grpc_transport *transport, const void *server_data); void *set_accept_stream_user_data; /** add this transport to a pollset */ @@ -275,13 +273,12 @@ size_t grpc_transport_stream_size(grpc_transport *transport); stream - a pointer to uninitialized memory to initialize server_data - either NULL for a client initiated stream, or a pointer supplied from the accept_stream callback function */ -int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, grpc_stream *stream, +int grpc_transport_init_stream(grpc_transport *transport, grpc_stream *stream, grpc_stream_refcount *refcount, const void *server_data, gpr_arena *arena); -void grpc_transport_set_pops(grpc_exec_ctx *exec_ctx, grpc_transport *transport, - grpc_stream *stream, grpc_polling_entity *pollent); +void grpc_transport_set_pops(grpc_transport *transport, grpc_stream *stream, + grpc_polling_entity *pollent); /* Destroy transport data for a stream. @@ -293,14 +290,13 @@ void grpc_transport_set_pops(grpc_exec_ctx *exec_ctx, grpc_transport *transport, transport - the transport on which to create this stream stream - the grpc_stream to destroy (memory is still owned by the caller, but any child memory must be cleaned up) */ -void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_transport_destroy_stream(grpc_transport *transport, grpc_stream *stream, grpc_closure *then_schedule_closure); void grpc_transport_stream_op_batch_finish_with_failure( - grpc_exec_ctx *exec_ctx, grpc_transport_stream_op_batch *op, - grpc_error *error, grpc_call_combiner *call_combiner); + grpc_transport_stream_op_batch *op, grpc_error *error, + grpc_call_combiner *call_combiner); char *grpc_transport_stream_op_batch_string(grpc_transport_stream_op_batch *op); char *grpc_transport_op_string(grpc_transport_op *op); @@ -315,13 +311,11 @@ char *grpc_transport_op_string(grpc_transport_op *op); non-NULL and previously initialized by the same transport. op - a grpc_transport_stream_op_batch specifying the op to perform */ -void grpc_transport_perform_stream_op(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_transport_perform_stream_op(grpc_transport *transport, grpc_stream *stream, grpc_transport_stream_op_batch *op); -void grpc_transport_perform_op(grpc_exec_ctx *exec_ctx, - grpc_transport *transport, +void grpc_transport_perform_op(grpc_transport *transport, grpc_transport_op *op); /* Send a ping on a transport @@ -337,11 +331,10 @@ void grpc_transport_goaway(grpc_transport *transport, grpc_status_code status, void grpc_transport_close(grpc_transport *transport); /* Destroy the transport */ -void grpc_transport_destroy(grpc_exec_ctx *exec_ctx, grpc_transport *transport); +void grpc_transport_destroy(grpc_transport *transport); /* Get the endpoint used by \a transport */ -grpc_endpoint *grpc_transport_get_endpoint(grpc_exec_ctx *exec_ctx, - grpc_transport *transport); +grpc_endpoint *grpc_transport_get_endpoint(grpc_transport *transport); /* Allocate a grpc_transport_op, and preconfigure the on_consumed closure to \a on_consumed and then delete the returned transport op */ diff --git a/src/core/lib/transport/transport_impl.h b/src/core/lib/transport/transport_impl.h index 445fb41ab16..c7b78afa615 100644 --- a/src/core/lib/transport/transport_impl.h +++ b/src/core/lib/transport/transport_impl.h @@ -34,37 +34,34 @@ typedef struct grpc_transport_vtable { const char *name; /* implementation of grpc_transport_init_stream */ - int (*init_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_stream_refcount *refcount, - const void *server_data, gpr_arena *arena); + int (*init_stream)(grpc_transport *self, grpc_stream *stream, + grpc_stream_refcount *refcount, const void *server_data, + gpr_arena *arena); /* implementation of grpc_transport_set_pollset */ - void (*set_pollset)(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_pollset *pollset); + void (*set_pollset)(grpc_transport *self, grpc_stream *stream, + grpc_pollset *pollset); /* implementation of grpc_transport_set_pollset */ - void (*set_pollset_set)(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_pollset_set *pollset_set); + void (*set_pollset_set)(grpc_transport *self, grpc_stream *stream, + grpc_pollset_set *pollset_set); /* implementation of grpc_transport_perform_stream_op */ - void (*perform_stream_op)(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, + void (*perform_stream_op)(grpc_transport *self, grpc_stream *stream, grpc_transport_stream_op_batch *op); /* implementation of grpc_transport_perform_op */ - void (*perform_op)(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_transport_op *op); + void (*perform_op)(grpc_transport *self, grpc_transport_op *op); /* implementation of grpc_transport_destroy_stream */ - void (*destroy_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, + void (*destroy_stream)(grpc_transport *self, grpc_stream *stream, grpc_closure *then_schedule_closure); /* implementation of grpc_transport_destroy */ - void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_transport *self); + void (*destroy)(grpc_transport *self); /* implementation of grpc_transport_get_endpoint */ - grpc_endpoint *(*get_endpoint)(grpc_exec_ctx *exec_ctx, grpc_transport *self); + grpc_endpoint *(*get_endpoint)(grpc_transport *self); } grpc_transport_vtable; /* an instance of a grpc transport */ diff --git a/src/core/tsi/fake_transport_security.cc b/src/core/tsi/fake_transport_security.cc index 349dcf5cb8f..6ab7f8cc000 100644 --- a/src/core/tsi/fake_transport_security.cc +++ b/src/core/tsi/fake_transport_security.cc @@ -397,8 +397,7 @@ static const tsi_frame_protector_vtable frame_protector_vtable = { /* --- tsi_zero_copy_grpc_protector methods implementation. ---*/ static tsi_result fake_zero_copy_grpc_protector_protect( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self, - grpc_slice_buffer *unprotected_slices, + tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *unprotected_slices, grpc_slice_buffer *protected_slices) { if (self == NULL || unprotected_slices == NULL || protected_slices == NULL) { return TSI_INVALID_ARGUMENT; @@ -421,8 +420,7 @@ static tsi_result fake_zero_copy_grpc_protector_protect( } static tsi_result fake_zero_copy_grpc_protector_unprotect( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self, - grpc_slice_buffer *protected_slices, + tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *protected_slices, grpc_slice_buffer *unprotected_slices) { if (self == NULL || unprotected_slices == NULL || protected_slices == NULL) { return TSI_INVALID_ARGUMENT; @@ -450,18 +448,18 @@ static tsi_result fake_zero_copy_grpc_protector_unprotect( impl->parsed_frame_size - TSI_FAKE_FRAME_HEADER_SIZE, unprotected_slices); impl->parsed_frame_size = 0; - grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &impl->header_sb); + grpc_slice_buffer_reset_and_unref_internal(&impl->header_sb); } return TSI_OK; } static void fake_zero_copy_grpc_protector_destroy( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self) { + tsi_zero_copy_grpc_protector *self) { if (self == NULL) return; tsi_fake_zero_copy_grpc_protector *impl = (tsi_fake_zero_copy_grpc_protector *)self; - grpc_slice_buffer_destroy_internal(exec_ctx, &impl->header_sb); - grpc_slice_buffer_destroy_internal(exec_ctx, &impl->protected_sb); + grpc_slice_buffer_destroy_internal(&impl->header_sb); + grpc_slice_buffer_destroy_internal(&impl->protected_sb); gpr_free(impl); } @@ -493,8 +491,7 @@ static tsi_result fake_handshaker_result_extract_peer( } static tsi_result fake_handshaker_result_create_zero_copy_grpc_protector( - void *exec_ctx, const tsi_handshaker_result *self, - size_t *max_output_protected_frame_size, + const tsi_handshaker_result *self, size_t *max_output_protected_frame_size, tsi_zero_copy_grpc_protector **protector) { *protector = tsi_create_fake_zero_copy_grpc_protector(max_output_protected_frame_size); diff --git a/src/core/tsi/transport_security.h b/src/core/tsi/transport_security.h index 3bba38149c8..27f22c5203d 100644 --- a/src/core/tsi/transport_security.h +++ b/src/core/tsi/transport_security.h @@ -94,7 +94,7 @@ struct tsi_handshaker { typedef struct { tsi_result (*extract_peer)(const tsi_handshaker_result *self, tsi_peer *peer); tsi_result (*create_zero_copy_grpc_protector)( - void *exec_ctx, const tsi_handshaker_result *self, + const tsi_handshaker_result *self, size_t *max_output_protected_frame_size, tsi_zero_copy_grpc_protector **protector); tsi_result (*create_frame_protector)(const tsi_handshaker_result *self, diff --git a/src/core/tsi/transport_security_grpc.cc b/src/core/tsi/transport_security_grpc.cc index affd995230e..ee8df0c2f1b 100644 --- a/src/core/tsi/transport_security_grpc.cc +++ b/src/core/tsi/transport_security_grpc.cc @@ -17,11 +17,11 @@ */ #include "src/core/tsi/transport_security_grpc.h" +#include "src/core/lib/iomgr/exec_ctx.h" /* This method creates a tsi_zero_copy_grpc_protector object. */ tsi_result tsi_handshaker_result_create_zero_copy_grpc_protector( - grpc_exec_ctx *exec_ctx, const tsi_handshaker_result *self, - size_t *max_output_protected_frame_size, + const tsi_handshaker_result *self, size_t *max_output_protected_frame_size, tsi_zero_copy_grpc_protector **protector) { if (exec_ctx == NULL || self == NULL || self->vtable == NULL || protector == NULL) { @@ -31,7 +31,7 @@ tsi_result tsi_handshaker_result_create_zero_copy_grpc_protector( return TSI_UNIMPLEMENTED; } return self->vtable->create_zero_copy_grpc_protector( - exec_ctx, self, max_output_protected_frame_size, protector); + self, max_output_protected_frame_size, protector); } /* --- tsi_zero_copy_grpc_protector common implementation. --- @@ -39,33 +39,28 @@ tsi_result tsi_handshaker_result_create_zero_copy_grpc_protector( Calls specific implementation after state/input validation. */ tsi_result tsi_zero_copy_grpc_protector_protect( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self, - grpc_slice_buffer *unprotected_slices, + tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *unprotected_slices, grpc_slice_buffer *protected_slices) { - if (exec_ctx == NULL || self == NULL || self->vtable == NULL || + if (/*&exec_ctx == NULL || */ self == NULL || self->vtable == NULL || unprotected_slices == NULL || protected_slices == NULL) { return TSI_INVALID_ARGUMENT; } if (self->vtable->protect == NULL) return TSI_UNIMPLEMENTED; - return self->vtable->protect(exec_ctx, self, unprotected_slices, - protected_slices); + return self->vtable->protect(self, unprotected_slices, protected_slices); } tsi_result tsi_zero_copy_grpc_protector_unprotect( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self, - grpc_slice_buffer *protected_slices, + tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *protected_slices, grpc_slice_buffer *unprotected_slices) { - if (exec_ctx == NULL || self == NULL || self->vtable == NULL || + if (/*&exec_ctx == NULL || self == NULL || */ self->vtable == NULL || protected_slices == NULL || unprotected_slices == NULL) { return TSI_INVALID_ARGUMENT; } if (self->vtable->unprotect == NULL) return TSI_UNIMPLEMENTED; - return self->vtable->unprotect(exec_ctx, self, protected_slices, - unprotected_slices); + return self->vtable->unprotect(self, protected_slices, unprotected_slices); } -void tsi_zero_copy_grpc_protector_destroy(grpc_exec_ctx *exec_ctx, - tsi_zero_copy_grpc_protector *self) { +void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector *self) { if (self == NULL) return; - self->vtable->destroy(exec_ctx, self); + self->vtable->destroy(self); } diff --git a/src/core/tsi/transport_security_grpc.h b/src/core/tsi/transport_security_grpc.h index ca6755c12fa..5ab5297cc48 100644 --- a/src/core/tsi/transport_security_grpc.h +++ b/src/core/tsi/transport_security_grpc.h @@ -30,8 +30,7 @@ extern "C" { assuming there is no fatal error. The caller is responsible for destroying the protector. */ tsi_result tsi_handshaker_result_create_zero_copy_grpc_protector( - grpc_exec_ctx *exec_ctx, const tsi_handshaker_result *self, - size_t *max_output_protected_frame_size, + const tsi_handshaker_result *self, size_t *max_output_protected_frame_size, tsi_zero_copy_grpc_protector **protector); /* -- tsi_zero_copy_grpc_protector object -- */ @@ -43,8 +42,8 @@ tsi_result tsi_handshaker_result_create_zero_copy_grpc_protector( - This method returns TSI_OK in case of success or a specific error code in case of failure. */ tsi_result tsi_zero_copy_grpc_protector_protect( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self, - grpc_slice_buffer *unprotected_slices, grpc_slice_buffer *protected_slices); + tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *unprotected_slices, + grpc_slice_buffer *protected_slices); /* Outputs unprotected bytes. - protected_slices is the bytes of protected frames. @@ -53,24 +52,21 @@ tsi_result tsi_zero_copy_grpc_protector_protect( there is not enough data to output in which case unprotected_slices has 0 bytes. */ tsi_result tsi_zero_copy_grpc_protector_unprotect( - grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self, - grpc_slice_buffer *protected_slices, grpc_slice_buffer *unprotected_slices); + tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *protected_slices, + grpc_slice_buffer *unprotected_slices); /* Destroys the tsi_zero_copy_grpc_protector object. */ -void tsi_zero_copy_grpc_protector_destroy(grpc_exec_ctx *exec_ctx, - tsi_zero_copy_grpc_protector *self); +void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector *self); /* Base for tsi_zero_copy_grpc_protector implementations. */ typedef struct { - tsi_result (*protect)(grpc_exec_ctx *exec_ctx, - tsi_zero_copy_grpc_protector *self, + tsi_result (*protect)(tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *unprotected_slices, grpc_slice_buffer *protected_slices); - tsi_result (*unprotect)(grpc_exec_ctx *exec_ctx, - tsi_zero_copy_grpc_protector *self, + tsi_result (*unprotect)(tsi_zero_copy_grpc_protector *self, grpc_slice_buffer *protected_slices, grpc_slice_buffer *unprotected_slices); - void (*destroy)(grpc_exec_ctx *exec_ctx, tsi_zero_copy_grpc_protector *self); + void (*destroy)(tsi_zero_copy_grpc_protector *self); } tsi_zero_copy_grpc_protector_vtable; struct tsi_zero_copy_grpc_protector { diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc index f89f5f1f03d..79e4aee4e29 100644 --- a/src/cpp/common/channel_arguments.cc +++ b/src/cpp/common/channel_arguments.cc @@ -67,13 +67,13 @@ ChannelArguments::ChannelArguments(const ChannelArguments& other) } ChannelArguments::~ChannelArguments() { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; for (auto it = args_.begin(); it != args_.end(); ++it) { if (it->type == GRPC_ARG_POINTER) { - it->value.pointer.vtable->destroy(&exec_ctx, it->value.pointer.p); + it->value.pointer.vtable->destroy(it->value.pointer.p); } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void ChannelArguments::Swap(ChannelArguments& other) { @@ -96,17 +96,17 @@ void ChannelArguments::SetSocketMutator(grpc_socket_mutator* mutator) { } grpc_arg mutator_arg = grpc_socket_mutator_to_arg(mutator); bool replaced = false; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; for (auto it = args_.begin(); it != args_.end(); ++it) { if (it->type == mutator_arg.type && grpc::string(it->key) == grpc::string(mutator_arg.key)) { GPR_ASSERT(!replaced); - it->value.pointer.vtable->destroy(&exec_ctx, it->value.pointer.p); + it->value.pointer.vtable->destroy(it->value.pointer.p); it->value.pointer = mutator_arg.value.pointer; replaced = true; } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); if (!replaced) { args_.push_back(mutator_arg); } diff --git a/src/cpp/common/channel_filter.cc b/src/cpp/common/channel_filter.cc index ea44cff832c..cc84361bbc5 100644 --- a/src/cpp/common/channel_filter.cc +++ b/src/cpp/common/channel_filter.cc @@ -29,43 +29,39 @@ namespace grpc { // MetadataBatch -grpc_linked_mdelem *MetadataBatch::AddMetadata(grpc_exec_ctx *exec_ctx, - const string &key, +grpc_linked_mdelem *MetadataBatch::AddMetadata(const string &key, const string &value) { grpc_linked_mdelem *storage = new grpc_linked_mdelem; memset(storage, 0, sizeof(grpc_linked_mdelem)); - storage->md = grpc_mdelem_from_slices(exec_ctx, SliceFromCopiedString(key), + storage->md = grpc_mdelem_from_slices(SliceFromCopiedString(key), SliceFromCopiedString(value)); GRPC_LOG_IF_ERROR("MetadataBatch::AddMetadata", - grpc_metadata_batch_link_head(exec_ctx, batch_, storage)); + grpc_metadata_batch_link_head(batch_, storage)); return storage; } // ChannelData -void ChannelData::StartTransportOp(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +void ChannelData::StartTransportOp(grpc_channel_element *elem, TransportOp *op) { - grpc_channel_next_op(exec_ctx, elem, op->op()); + grpc_channel_next_op(elem, op->op()); } -void ChannelData::GetInfo(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, +void ChannelData::GetInfo(grpc_channel_element *elem, const grpc_channel_info *channel_info) { - grpc_channel_next_get_info(exec_ctx, elem, channel_info); + grpc_channel_next_get_info(elem, channel_info); } // CallData -void CallData::StartTransportStreamOpBatch(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +void CallData::StartTransportStreamOpBatch(grpc_call_element *elem, TransportStreamOpBatch *op) { - grpc_call_next_op(exec_ctx, elem, op->op()); + grpc_call_next_op(elem, op->op()); } -void CallData::SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +void CallData::SetPollsetOrPollsetSet(grpc_call_element *elem, grpc_polling_entity *pollent) { - grpc_call_stack_ignore_set_pollset_or_pollset_set(exec_ctx, elem, pollent); + grpc_call_stack_ignore_set_pollset_or_pollset_set(elem, pollent); } // internal code used by RegisterChannelFilter() @@ -77,8 +73,7 @@ std::vector<FilterRecord> *channel_filters; namespace { -bool MaybeAddFilter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, void *arg) { +bool MaybeAddFilter(grpc_channel_stack_builder *builder, void *arg) { const FilterRecord &filter = *(FilterRecord *)arg; if (filter.include_filter) { const grpc_channel_args *args = diff --git a/src/cpp/common/channel_filter.h b/src/cpp/common/channel_filter.h index c1aeb3f7245..3adaae9d4bb 100644 --- a/src/cpp/common/channel_filter.h +++ b/src/cpp/common/channel_filter.h @@ -56,8 +56,7 @@ class MetadataBatch { /// Adds metadata and returns the newly allocated storage. /// The caller takes ownership of the result, which must exist for the /// lifetime of the gRPC call. - grpc_linked_mdelem *AddMetadata(grpc_exec_ctx *exec_ctx, const string &key, - const string &value); + grpc_linked_mdelem *AddMetadata(const string &key, const string &value); class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const grpc_mdelem> { @@ -225,18 +224,17 @@ class ChannelData { // TODO(roth): Come up with a more C++-like API for the channel element. /// Initializes the channel data. - virtual grpc_error *Init(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, + virtual grpc_error *Init(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } // Called before destruction. - virtual void Destroy(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem) {} + virtual void Destroy(grpc_channel_element *elem) {} - virtual void StartTransportOp(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, TransportOp *op); + virtual void StartTransportOp(grpc_channel_element *elem, TransportOp *op); - virtual void GetInfo(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, + virtual void GetInfo(grpc_channel_element *elem, const grpc_channel_info *channel_info); }; @@ -249,24 +247,22 @@ class CallData { // TODO(roth): Come up with a more C++-like API for the call element. /// Initializes the call data. - virtual grpc_error *Init(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, + virtual grpc_error *Init(grpc_call_element *elem, const grpc_call_element_args *args) { return GRPC_ERROR_NONE; } // Called before destruction. - virtual void Destroy(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, + virtual void Destroy(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_call_closure) {} /// Starts a new stream operation. - virtual void StartTransportStreamOpBatch(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + virtual void StartTransportStreamOpBatch(grpc_call_element *elem, TransportStreamOpBatch *op); /// Sets a pollset or pollset set. - virtual void SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + virtual void SetPollsetOrPollsetSet(grpc_call_element *elem, grpc_polling_entity *pollent); }; @@ -280,71 +276,63 @@ class ChannelFilter final { public: static const size_t channel_data_size = sizeof(ChannelDataType); - static grpc_error *InitChannelElement(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, + static grpc_error *InitChannelElement(grpc_channel_element *elem, grpc_channel_element_args *args) { // Construct the object in the already-allocated memory. ChannelDataType *channel_data = new (elem->channel_data) ChannelDataType(); - return channel_data->Init(exec_ctx, elem, args); + return channel_data->Init(elem, args); } - static void DestroyChannelElement(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) { + static void DestroyChannelElement(grpc_channel_element *elem) { ChannelDataType *channel_data = reinterpret_cast<ChannelDataType *>(elem->channel_data); - channel_data->Destroy(exec_ctx, elem); + channel_data->Destroy(elem); channel_data->~ChannelDataType(); } - static void StartTransportOp(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, + static void StartTransportOp(grpc_channel_element *elem, grpc_transport_op *op) { ChannelDataType *channel_data = reinterpret_cast<ChannelDataType *>(elem->channel_data); TransportOp op_wrapper(op); - channel_data->StartTransportOp(exec_ctx, elem, &op_wrapper); + channel_data->StartTransportOp(elem, &op_wrapper); } - static void GetChannelInfo(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, + static void GetChannelInfo(grpc_channel_element *elem, const grpc_channel_info *channel_info) { ChannelDataType *channel_data = reinterpret_cast<ChannelDataType *>(elem->channel_data); - channel_data->GetInfo(exec_ctx, elem, channel_info); + channel_data->GetInfo(elem, channel_info); } static const size_t call_data_size = sizeof(CallDataType); - static grpc_error *InitCallElement(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + static grpc_error *InitCallElement(grpc_call_element *elem, const grpc_call_element_args *args) { // Construct the object in the already-allocated memory. CallDataType *call_data = new (elem->call_data) CallDataType(); - return call_data->Init(exec_ctx, elem, args); + return call_data->Init(elem, args); } - static void DestroyCallElement(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + static void DestroyCallElement(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_call_closure) { CallDataType *call_data = reinterpret_cast<CallDataType *>(elem->call_data); - call_data->Destroy(exec_ctx, elem, final_info, then_call_closure); + call_data->Destroy(elem, final_info, then_call_closure); call_data->~CallDataType(); } - static void StartTransportStreamOpBatch(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + static void StartTransportStreamOpBatch(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { CallDataType *call_data = reinterpret_cast<CallDataType *>(elem->call_data); TransportStreamOpBatch op_wrapper(op); - call_data->StartTransportStreamOpBatch(exec_ctx, elem, &op_wrapper); + call_data->StartTransportStreamOpBatch(elem, &op_wrapper); } - static void SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, + static void SetPollsetOrPollsetSet(grpc_call_element *elem, grpc_polling_entity *pollent) { CallDataType *call_data = reinterpret_cast<CallDataType *>(elem->call_data); - call_data->SetPollsetOrPollsetSet(exec_ctx, elem, pollent); + call_data->SetPollsetOrPollsetSet(elem, pollent); } }; diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h index 868772cfc85..6f7423c4e76 100644 --- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h +++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h @@ -623,7 +623,7 @@ extern grpc_slice_buffer_move_first_type grpc_slice_buffer_move_first_import; typedef void(*grpc_slice_buffer_move_first_no_ref_type)(grpc_slice_buffer *src, size_t n, grpc_slice_buffer *dst); extern grpc_slice_buffer_move_first_no_ref_type grpc_slice_buffer_move_first_no_ref_import; #define grpc_slice_buffer_move_first_no_ref grpc_slice_buffer_move_first_no_ref_import -typedef void(*grpc_slice_buffer_move_first_into_buffer_type)(grpc_exec_ctx *exec_ctx, grpc_slice_buffer *src, size_t n, void *dst); +typedef void(*grpc_slice_buffer_move_first_into_buffer_type)(grpc_slice_buffer *src, size_t n, void *dst); extern grpc_slice_buffer_move_first_into_buffer_type grpc_slice_buffer_move_first_into_buffer_import; #define grpc_slice_buffer_move_first_into_buffer grpc_slice_buffer_move_first_into_buffer_import typedef grpc_slice(*grpc_slice_buffer_take_first_type)(grpc_slice_buffer *src); diff --git a/test/core/backoff/backoff_test.c b/test/core/backoff/backoff_test.c index a29cce6cc7b..93952f3d100 100644 --- a/test/core/backoff/backoff_test.c +++ b/test/core/backoff/backoff_test.c @@ -28,15 +28,15 @@ static void test_constant_backoff(void) { 0.0 /* jitter */, 100 /* min timeout */, 1000 /* max timeout */); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_millis next = grpc_backoff_begin(&exec_ctx, &backoff); - GPR_ASSERT(next - grpc_exec_ctx_now(&exec_ctx) == 200); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 200); for (int i = 0; i < 10000; i++) { - next = grpc_backoff_step(&exec_ctx, &backoff); - GPR_ASSERT(next - grpc_exec_ctx_now(&exec_ctx) == 200); + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 200); exec_ctx.now = next; } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_min_connect(void) { @@ -45,10 +45,10 @@ static void test_min_connect(void) { 0.0 /* jitter */, 200 /* min timeout */, 1000 /* max timeout */); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_millis next = grpc_backoff_begin(&exec_ctx, &backoff); - GPR_ASSERT(next - grpc_exec_ctx_now(&exec_ctx) == 200); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 200); + grpc_exec_ctx_finish(); } static void test_no_jitter_backoff(void) { @@ -58,47 +58,47 @@ static void test_no_jitter_backoff(void) { 513 /* max timeout */); // x_1 = 2 // x_n = 2**i + x_{i-1} ( = 2**(n+1) - 2 ) - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; exec_ctx.now = 0; exec_ctx.now_is_valid = true; - grpc_millis next = grpc_backoff_begin(&exec_ctx, &backoff); + grpc_millis next = grpc_backoff_begin(&backoff); GPR_ASSERT(next == 2); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 6); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 14); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 30); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 62); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 126); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 254); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 510); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 1022); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); // Hit the maximum timeout. From this point onwards, retries will increase // only by max timeout. GPR_ASSERT(next == 1535); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 2048); exec_ctx.now = next; - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); GPR_ASSERT(next == 2561); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_jitter_backoff(void) { @@ -111,9 +111,9 @@ static void test_jitter_backoff(void) { backoff.rng_state = 0; // force consistent PRNG - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_millis next = grpc_backoff_begin(&exec_ctx, &backoff); - GPR_ASSERT(next - grpc_exec_ctx_now(&exec_ctx) == 500); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 500); int64_t expected_next_lower_bound = (int64_t)((double)initial_timeout * (1 - jitter)); @@ -121,10 +121,10 @@ static void test_jitter_backoff(void) { (int64_t)((double)initial_timeout * (1 + jitter)); for (int i = 0; i < 10000; i++) { - next = grpc_backoff_step(&exec_ctx, &backoff); + next = grpc_backoff_step(&backoff); // next-now must be within (jitter*100)% of the previous timeout. - const int64_t timeout_millis = next - grpc_exec_ctx_now(&exec_ctx); + const int64_t timeout_millis = next - grpc_exec_ctx_now(); GPR_ASSERT(timeout_millis >= expected_next_lower_bound); GPR_ASSERT(timeout_millis <= expected_next_upper_bound); @@ -134,7 +134,7 @@ static void test_jitter_backoff(void) { (int64_t)((double)timeout_millis * (1 + jitter)); exec_ctx.now = next; } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/backoff/backoff_test.cc b/test/core/backoff/backoff_test.cc new file mode 100644 index 00000000000..ea27f7547fe --- /dev/null +++ b/test/core/backoff/backoff_test.cc @@ -0,0 +1,147 @@ +/* + * + * Copyright 2016 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "src/core/lib/backoff/backoff.h" + +#include <grpc/support/log.h> + +#include "test/core/util/test_config.h" + +static void test_constant_backoff(void) { + grpc_backoff backoff; + grpc_backoff_init(&backoff, 200 /* initial timeout */, 1.0 /* multiplier */, + 0.0 /* jitter */, 100 /* min timeout */, + 1000 /* max timeout */); + + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 200); + for (int i = 0; i < 10000; i++) { + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 200); + exec_ctx.now = next; + } + grpc_exec_ctx_finish(); +} + +static void test_min_connect(void) { + grpc_backoff backoff; + grpc_backoff_init(&backoff, 100 /* initial timeout */, 1.0 /* multiplier */, + 0.0 /* jitter */, 200 /* min timeout */, + 1000 /* max timeout */); + + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 200); + grpc_exec_ctx_finish(); +} + +static void test_no_jitter_backoff(void) { + grpc_backoff backoff; + grpc_backoff_init(&backoff, 2 /* initial timeout */, 2.0 /* multiplier */, + 0.0 /* jitter */, 1 /* min timeout */, + 513 /* max timeout */); + // x_1 = 2 + // x_n = 2**i + x_{i-1} ( = 2**(n+1) - 2 ) + + exec_ctx.now = 0; + exec_ctx.now_is_valid = true; + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next == 2); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 6); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 14); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 30); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 62); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 126); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 254); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 510); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 1022); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + // Hit the maximum timeout. From this point onwards, retries will increase + // only by max timeout. + GPR_ASSERT(next == 1535); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 2048); + exec_ctx.now = next; + next = grpc_backoff_step(&backoff); + GPR_ASSERT(next == 2561); + grpc_exec_ctx_finish(); +} + +static void test_jitter_backoff(void) { + const int64_t initial_timeout = 500; + const double jitter = 0.1; + grpc_backoff backoff; + grpc_backoff_init(&backoff, (grpc_millis)initial_timeout, + 1.0 /* multiplier */, jitter, 100 /* min timeout */, + 1000 /* max timeout */); + + backoff.rng_state = 0; // force consistent PRNG + + grpc_millis next = grpc_backoff_begin(&backoff); + GPR_ASSERT(next - grpc_exec_ctx_now() == 500); + + int64_t expected_next_lower_bound = + (int64_t)((double)initial_timeout * (1 - jitter)); + int64_t expected_next_upper_bound = + (int64_t)((double)initial_timeout * (1 + jitter)); + + for (int i = 0; i < 10000; i++) { + next = grpc_backoff_step(&backoff); + + // next-now must be within (jitter*100)% of the previous timeout. + const int64_t timeout_millis = next - grpc_exec_ctx_now(); + GPR_ASSERT(timeout_millis >= expected_next_lower_bound); + GPR_ASSERT(timeout_millis <= expected_next_upper_bound); + + expected_next_lower_bound = + (int64_t)((double)timeout_millis * (1 - jitter)); + expected_next_upper_bound = + (int64_t)((double)timeout_millis * (1 + jitter)); + exec_ctx.now = next; + } + grpc_exec_ctx_finish(); +} + +int main(int argc, char **argv) { + grpc_test_init(argc, argv); + gpr_time_init(); + + test_constant_backoff(); + test_min_connect(); + test_no_jitter_backoff(); + test_jitter_backoff(); + + return 0; +} diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.cc similarity index 80% rename from test/core/bad_client/bad_client.c rename to test/core/bad_client/bad_client.cc index b7b28a9ac4e..99006c28660 100644 --- a/test/core/bad_client/bad_client.c +++ b/test/core/bad_client/bad_client.cc @@ -50,20 +50,20 @@ static void thd_func(void *arg) { gpr_event_set(&a->done_thd, (void *)1); } -static void done_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void done_write(void *arg, grpc_error *error) { thd_args *a = (thd_args *)arg; gpr_event_set(&a->done_write, (void *)1); } static void server_setup_transport(void *ts, grpc_transport *transport) { thd_args *a = (thd_args *)ts; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_server_setup_transport(&exec_ctx, a->server, transport, NULL, + ExecCtx _local_exec_ctx; + grpc_server_setup_transport(a->server, transport, NULL, grpc_server_get_channel_args(a->server)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static void read_done(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void read_done(void *arg, grpc_error *error) { gpr_event *read_done = (gpr_event *)arg; gpr_event_set(read_done, (void *)1); } @@ -81,7 +81,7 @@ void grpc_run_bad_client_test( grpc_slice_from_copied_buffer(client_payload, client_payload_length); grpc_slice_buffer outgoing; grpc_closure done_write_closure; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_completion_queue *shutdown_cq; if (client_payload_length < 4 * 1024) { @@ -115,14 +115,14 @@ void grpc_run_bad_client_test( GRPC_BAD_CLIENT_REGISTERED_HOST, GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER, 0); grpc_server_start(a.server); - transport = grpc_create_chttp2_transport(&exec_ctx, NULL, sfd.server, 0); + transport = grpc_create_chttp2_transport(NULL, sfd.server, 0); server_setup_transport(&a, transport); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); /* Bind everything into the same pollset */ - grpc_endpoint_add_to_pollset(&exec_ctx, sfd.client, grpc_cq_pollset(a.cq)); - grpc_endpoint_add_to_pollset(&exec_ctx, sfd.server, grpc_cq_pollset(a.cq)); + grpc_endpoint_add_to_pollset(sfd.client, grpc_cq_pollset(a.cq)); + grpc_endpoint_add_to_pollset(sfd.server, grpc_cq_pollset(a.cq)); /* Check a ground truth */ GPR_ASSERT(grpc_server_has_open_connections(a.server)); @@ -136,8 +136,8 @@ void grpc_run_bad_client_test( grpc_schedule_on_exec_ctx); /* Write data */ - grpc_endpoint_write(&exec_ctx, sfd.client, &outgoing, &done_write_closure); - grpc_exec_ctx_finish(&exec_ctx); + grpc_endpoint_write(sfd.client, &outgoing, &done_write_closure); + grpc_exec_ctx_finish(); /* Await completion, unless the request is large and write may not finish * before the peer shuts down. */ @@ -148,10 +148,9 @@ void grpc_run_bad_client_test( if (flags & GRPC_BAD_CLIENT_DISCONNECT) { grpc_endpoint_shutdown( - &exec_ctx, sfd.client, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Disconnect")); - grpc_endpoint_destroy(&exec_ctx, sfd.client); - grpc_exec_ctx_finish(&exec_ctx); + sfd.client, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Disconnect")); + grpc_endpoint_destroy(sfd.client); + grpc_exec_ctx_finish(); sfd.client = NULL; } @@ -170,9 +169,8 @@ void grpc_run_bad_client_test( grpc_closure read_done_closure; GRPC_CLOSURE_INIT(&read_done_closure, read_done, &read_done_event, grpc_schedule_on_exec_ctx); - grpc_endpoint_read(&exec_ctx, sfd.client, &incoming, - &read_done_closure); - grpc_exec_ctx_finish(&exec_ctx); + grpc_endpoint_read(sfd.client, &incoming, &read_done_closure); + grpc_exec_ctx_finish(); do { GPR_ASSERT(gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) > 0); GPR_ASSERT(grpc_completion_queue_next( @@ -184,14 +182,13 @@ void grpc_run_bad_client_test( "client validator failed; trying additional read " "in case we didn't get all the data"); } - grpc_slice_buffer_destroy_internal(&exec_ctx, &incoming); + grpc_slice_buffer_destroy_internal(&incoming); } // Shutdown. grpc_endpoint_shutdown( - &exec_ctx, sfd.client, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); - grpc_endpoint_destroy(&exec_ctx, sfd.client); - grpc_exec_ctx_finish(&exec_ctx); + sfd.client, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); + grpc_endpoint_destroy(sfd.client); + grpc_exec_ctx_finish(); } GPR_ASSERT( @@ -204,8 +201,8 @@ void grpc_run_bad_client_test( grpc_completion_queue_destroy(shutdown_cq); grpc_server_destroy(a.server); grpc_completion_queue_destroy(a.cq); - grpc_slice_buffer_destroy_internal(&exec_ctx, &outgoing); + grpc_slice_buffer_destroy_internal(&outgoing); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); } diff --git a/test/core/bad_client/bad_client.h b/test/core/bad_client/bad_client.h index a5b01f7f2c1..0b77a3f8692 100644 --- a/test/core/bad_client/bad_client.h +++ b/test/core/bad_client/bad_client.h @@ -28,6 +28,10 @@ #define GRPC_BAD_CLIENT_REGISTERED_METHOD "/registered/bar" #define GRPC_BAD_CLIENT_REGISTERED_HOST "localhost" +#ifdef __cplusplus +extern "C" { +#endif + typedef void (*grpc_bad_client_server_side_validator)(grpc_server *server, grpc_completion_queue *cq, void *registered_method); @@ -54,4 +58,8 @@ void grpc_run_bad_client_test( grpc_run_bad_client_test(server_validator, client_validator, payload, \ sizeof(payload) - 1, flags) +#ifdef __cplusplus +} +#endif + #endif /* GRPC_TEST_CORE_BAD_CLIENT_BAD_CLIENT_H */ diff --git a/test/core/bad_client/gen_build_yaml.py b/test/core/bad_client/gen_build_yaml.py index dbd52777e1f..22e8aae4881 100755 --- a/test/core/bad_client/gen_build_yaml.py +++ b/test/core/bad_client/gen_build_yaml.py @@ -46,7 +46,7 @@ def main(): 'build': 'private', 'language': 'c', 'src': [ - 'test/core/bad_client/bad_client.c' + 'test/core/bad_client/bad_client.cc' ], 'headers': [ 'test/core/bad_client/bad_client.h' diff --git a/test/core/bad_client/generate_tests.bzl b/test/core/bad_client/generate_tests.bzl index 1aeb81c00d8..0ac3e7fdfd8 100755 --- a/test/core/bad_client/generate_tests.bzl +++ b/test/core/bad_client/generate_tests.bzl @@ -38,7 +38,7 @@ BAD_CLIENT_TESTS = { def grpc_bad_client_tests(): native.cc_library( name = 'bad_client_test', - srcs = ['bad_client.c'], + srcs = ['bad_client.cc'], hdrs = ['bad_client.h'], copts = ['-std=c99'], deps = ['//test/core/util:grpc_test_util', '//:grpc', '//:gpr', '//test/core/end2end:cq_verifier'] diff --git a/test/core/channel/channel_args_test.c b/test/core/channel/channel_args_test.c index deaf2933ec1..541c53ddf1b 100644 --- a/test/core/channel/channel_args_test.c +++ b/test/core/channel/channel_args_test.c @@ -26,7 +26,7 @@ #include "test/core/util/test_config.h" static void test_create(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_arg arg_int; grpc_arg arg_string; @@ -55,12 +55,12 @@ static void test_create(void) { GPR_ASSERT(strcmp(ch_args->args[1].value.string, arg_string.value.string) == 0); - grpc_channel_args_destroy(&exec_ctx, ch_args); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(ch_args); + grpc_exec_ctx_finish(); } static void test_set_compression_algorithm(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_args *ch_args; ch_args = @@ -70,12 +70,12 @@ static void test_set_compression_algorithm(void) { GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM) == 0); GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_INTEGER); - grpc_channel_args_destroy(&exec_ctx, ch_args); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(ch_args); + grpc_exec_ctx_finish(); } static void test_compression_algorithm_states(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_args *ch_args, *ch_args_wo_gzip, *ch_args_wo_gzip_deflate; unsigned states_bitset; size_t i; @@ -91,10 +91,10 @@ static void test_compression_algorithm_states(void) { /* disable gzip and deflate */ ch_args_wo_gzip = grpc_channel_args_compression_algorithm_set_state( - &exec_ctx, &ch_args, GRPC_COMPRESS_GZIP, 0); + &ch_args, GRPC_COMPRESS_GZIP, 0); GPR_ASSERT(ch_args == ch_args_wo_gzip); ch_args_wo_gzip_deflate = grpc_channel_args_compression_algorithm_set_state( - &exec_ctx, &ch_args_wo_gzip, GRPC_COMPRESS_DEFLATE, 0); + &ch_args_wo_gzip, GRPC_COMPRESS_DEFLATE, 0); GPR_ASSERT(ch_args_wo_gzip == ch_args_wo_gzip_deflate); states_bitset = (unsigned)grpc_channel_args_compression_algorithm_get_states( @@ -109,7 +109,7 @@ static void test_compression_algorithm_states(void) { /* re-enabled gzip only */ ch_args_wo_gzip = grpc_channel_args_compression_algorithm_set_state( - &exec_ctx, &ch_args_wo_gzip_deflate, GRPC_COMPRESS_GZIP, 1); + &ch_args_wo_gzip_deflate, GRPC_COMPRESS_GZIP, 1); GPR_ASSERT(ch_args_wo_gzip == ch_args_wo_gzip_deflate); states_bitset = (unsigned)grpc_channel_args_compression_algorithm_get_states( @@ -122,8 +122,8 @@ static void test_compression_algorithm_states(void) { } } - grpc_channel_args_destroy(&exec_ctx, ch_args); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(ch_args); + grpc_exec_ctx_finish(); } static void test_set_socket_mutator(void) { @@ -137,9 +137,9 @@ static void test_set_socket_mutator(void) { GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_POINTER); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, ch_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(ch_args); + grpc_exec_ctx_finish(); } } diff --git a/test/core/channel/channel_stack_builder_test.c b/test/core/channel/channel_stack_builder_test.c index 682efd14385..b745def2323 100644 --- a/test/core/channel/channel_stack_builder_test.c +++ b/test/core/channel/channel_stack_builder_test.c @@ -29,34 +29,30 @@ #include "src/core/lib/surface/channel_init.h" #include "test/core/util/test_config.h" -static grpc_error *channel_init_func(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *channel_init_func(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -static grpc_error *call_init_func(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *call_init_func(grpc_call_element *elem, const grpc_call_element_args *args) { return GRPC_ERROR_NONE; } -static void channel_destroy_func(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void channel_destroy_func(grpc_channel_element *elem) {} -static void call_destroy_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void call_destroy_func(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) {} -static void call_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void call_func(grpc_call_element *elem, grpc_transport_stream_op_batch *op) {} -static void channel_func(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, - grpc_transport_op *op) { +static void channel_func(grpc_channel_element *elem, grpc_transport_op *op) { if (op->disconnect_with_error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(op->disconnect_with_error); } - GRPC_CLOSURE_SCHED(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE); } bool g_replacement_fn_called = false; @@ -106,8 +102,7 @@ const grpc_channel_filter original_filter = { grpc_channel_next_get_info, "filter_name"}; -static bool add_replacement_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool add_replacement_filter(grpc_channel_stack_builder *builder, void *arg) { const grpc_channel_filter *filter = arg; // Get rid of any other version of the filter, as determined by having the @@ -117,8 +112,7 @@ static bool add_replacement_filter(grpc_exec_ctx *exec_ctx, builder, filter, set_arg_once_fn, &g_replacement_fn_called); } -static bool add_original_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool add_original_filter(grpc_channel_stack_builder *builder, void *arg) { return grpc_channel_stack_builder_prepend_filter( builder, (const grpc_channel_filter *)arg, set_arg_once_fn, diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.c index a07ef89ba82..ef1a2ac3198 100644 --- a/test/core/channel/channel_stack_test.c +++ b/test/core/channel/channel_stack_test.c @@ -27,8 +27,7 @@ #include "src/core/lib/slice/slice_internal.h" #include "test/core/util/test_config.h" -static grpc_error *channel_init_func(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *channel_init_func(grpc_channel_element *elem, grpc_channel_element_args *args) { GPR_ASSERT(args->channel_args->num_args == 1); GPR_ASSERT(args->channel_args->args[0].type == GRPC_ARG_INTEGER); @@ -40,41 +39,37 @@ static grpc_error *channel_init_func(grpc_exec_ctx *exec_ctx, return GRPC_ERROR_NONE; } -static grpc_error *call_init_func(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *call_init_func(grpc_call_element *elem, const grpc_call_element_args *args) { ++*(int *)(elem->channel_data); *(int *)(elem->call_data) = 0; return GRPC_ERROR_NONE; } -static void channel_destroy_func(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void channel_destroy_func(grpc_channel_element *elem) {} -static void call_destroy_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void call_destroy_func(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { ++*(int *)(elem->channel_data); } -static void call_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void call_func(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { ++*(int *)(elem->call_data); } -static void channel_func(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, - grpc_transport_op *op) { +static void channel_func(grpc_channel_element *elem, grpc_transport_op *op) { ++*(int *)(elem->channel_data); } -static void free_channel(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { - grpc_channel_stack_destroy(exec_ctx, arg); +static void free_channel(void *arg, grpc_error *error) { + grpc_channel_stack_destroy(arg); gpr_free(arg); } -static void free_call(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { - grpc_call_stack_destroy(exec_ctx, arg, NULL, NULL); +static void free_call(void *arg, grpc_error *error) { + grpc_call_stack_destroy(arg, NULL, NULL); gpr_free(arg); } @@ -100,7 +95,7 @@ static void test_create_channel_stack(void) { grpc_channel_args chan_args; int *channel_data; int *call_data; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_slice path = grpc_slice_from_static_string("/service/method"); arg.type = GRPC_ARG_INTEGER; @@ -111,8 +106,8 @@ static void test_create_channel_stack(void) { chan_args.args = &arg; channel_stack = gpr_malloc(grpc_channel_stack_size(&filters, 1)); - grpc_channel_stack_init(&exec_ctx, 1, free_channel, channel_stack, &filters, - 1, &chan_args, NULL, "test", channel_stack); + grpc_channel_stack_init(1, free_channel, channel_stack, &filters, 1, + &chan_args, NULL, "test", channel_stack); GPR_ASSERT(channel_stack->count == 1); channel_elem = grpc_channel_stack_element(channel_stack, 0); channel_data = (int *)channel_elem->channel_data; @@ -127,8 +122,8 @@ static void test_create_channel_stack(void) { .start_time = gpr_now(GPR_CLOCK_MONOTONIC), .deadline = GRPC_MILLIS_INF_FUTURE, .arena = NULL}; - grpc_error *error = grpc_call_stack_init(&exec_ctx, channel_stack, 1, - free_call, call_stack, &args); + grpc_error *error = + grpc_call_stack_init(channel_stack, 1, free_call, call_stack, &args); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(call_stack->count == 1); call_elem = grpc_call_stack_element(call_stack, 0); @@ -138,14 +133,14 @@ static void test_create_channel_stack(void) { GPR_ASSERT(*call_data == 0); GPR_ASSERT(*channel_data == 1); - GRPC_CALL_STACK_UNREF(&exec_ctx, call_stack, "done"); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CALL_STACK_UNREF(call_stack, "done"); + grpc_exec_ctx_flush(); GPR_ASSERT(*channel_data == 2); - GRPC_CHANNEL_STACK_UNREF(&exec_ctx, channel_stack, "done"); + GRPC_CHANNEL_STACK_UNREF(channel_stack, "done"); - grpc_slice_unref_internal(&exec_ctx, path); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(path); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/channel/minimal_stack_is_minimal_test.c b/test/core/channel/minimal_stack_is_minimal_test.c index b4528346f75..2f6a991a11a 100644 --- a/test/core/channel/minimal_stack_is_minimal_test.c +++ b/test/core/channel/minimal_stack_is_minimal_test.c @@ -122,12 +122,11 @@ static int check_stack(const char *file, int line, const char *transport_name, grpc_channel_stack_builder_set_transport(builder, &fake_transport); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_stack_builder_set_channel_arguments(&exec_ctx, builder, - channel_args); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_stack_builder_set_channel_arguments(builder, channel_args); GPR_ASSERT(grpc_channel_init_create_stack( - &exec_ctx, builder, (grpc_channel_stack_type)channel_stack_type)); - grpc_exec_ctx_finish(&exec_ctx); + builder, (grpc_channel_stack_type)channel_stack_type)); + grpc_exec_ctx_finish(); } // build up our expectation list @@ -207,10 +206,10 @@ static int check_stack(const char *file, int line, const char *transport_name, gpr_free(expect); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_stack_builder_destroy(&exec_ctx, builder); - grpc_channel_args_destroy(&exec_ctx, channel_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_stack_builder_destroy(builder); + grpc_channel_args_destroy(channel_args); + grpc_exec_ctx_finish(); } return result; diff --git a/test/core/client_channel/lb_policies_test.c b/test/core/client_channel/lb_policies_test.c index ba37cd673f6..446e5ef9d6c 100644 --- a/test/core/client_channel/lb_policies_test.c +++ b/test/core/client_channel/lb_policies_test.c @@ -639,9 +639,9 @@ static void test_get_channel_info() { grpc_channel_args *args = grpc_channel_args_copy_and_add(NULL, &arg, 1); channel = grpc_insecure_channel_create("ipv4:127.0.0.1:1234", args, NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } // Ensures that resolver returns. grpc_channel_check_connectivity_state(channel, true /* try_to_connect */); @@ -937,7 +937,7 @@ static void verify_rebirth_round_robin(const servers_fixture *f, } int main(int argc, char **argv) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; test_spec *spec; size_t i; const size_t NUM_ITERS = 10; @@ -947,9 +947,9 @@ int main(int argc, char **argv) { grpc_test_init(argc, argv); grpc_tracer_set_enabled("round_robin", 1); - GPR_ASSERT(grpc_lb_policy_create(&exec_ctx, "this-lb-policy-does-not-exist", - NULL) == NULL); - GPR_ASSERT(grpc_lb_policy_create(&exec_ctx, NULL, NULL) == NULL); + GPR_ASSERT(grpc_lb_policy_create("this-lb-policy-does-not-exist", NULL) == + NULL); + GPR_ASSERT(grpc_lb_policy_create(NULL, NULL) == NULL); spec = test_spec_create(NUM_ITERS, NUM_SERVERS); /* everything is fine, all servers stay up the whole time and life's peachy @@ -1003,7 +1003,7 @@ int main(int argc, char **argv) { test_ping(); test_get_channel_info(); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/client_channel/parse_address_test.c b/test/core/client_channel/parse_address_test.c index d011176869c..6e1a69a581c 100644 --- a/test/core/client_channel/parse_address_test.c +++ b/test/core/client_channel/parse_address_test.c @@ -33,8 +33,8 @@ #ifdef GRPC_HAVE_UNIX_SOCKET static void test_grpc_parse_unix(const char *uri_text, const char *pathname) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; GPR_ASSERT(1 == grpc_parse_unix(uri, &addr)); @@ -43,7 +43,7 @@ static void test_grpc_parse_unix(const char *uri_text, const char *pathname) { GPR_ASSERT(0 == strcmp(addr_un->sun_path, pathname)); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } #else /* GRPC_HAVE_UNIX_SOCKET */ @@ -54,8 +54,8 @@ static void test_grpc_parse_unix(const char *uri_text, const char *pathname) {} static void test_grpc_parse_ipv4(const char *uri_text, const char *host, unsigned short port) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; char ntop_buf[INET_ADDRSTRLEN]; @@ -68,13 +68,13 @@ static void test_grpc_parse_ipv4(const char *uri_text, const char *host, GPR_ASSERT(ntohs(addr_in->sin_port) == port); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_grpc_parse_ipv6(const char *uri_text, const char *host, unsigned short port, uint32_t scope_id) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; char ntop_buf[INET6_ADDRSTRLEN]; @@ -88,7 +88,7 @@ static void test_grpc_parse_ipv6(const char *uri_text, const char *host, GPR_ASSERT(addr_in6->sin6_scope_id == scope_id); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c index 4597285063e..3715fbdc02e 100644 --- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c +++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c @@ -35,8 +35,7 @@ static gpr_mu g_mu; static bool g_fail_resolution = true; static grpc_combiner *g_combiner; -static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr, - const char *default_port, +static void my_resolve_address(const char *addr, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) { @@ -54,13 +53,13 @@ static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr, (*addrs)->addrs = gpr_malloc(sizeof(*(*addrs)->addrs)); (*addrs)->addrs[0].len = 123; } - GRPC_CLOSURE_SCHED(exec_ctx, on_done, error); + GRPC_CLOSURE_SCHED(on_done, error); } static grpc_ares_request *my_dns_lookup_ares( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb, + const char *dns_server, const char *addr, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **lb_addrs, bool check_grpclb, char **service_config_json) { gpr_mu_lock(&g_mu); GPR_ASSERT(0 == strcmp("test", addr)); @@ -74,27 +73,26 @@ static grpc_ares_request *my_dns_lookup_ares( *lb_addrs = grpc_lb_addresses_create(1, NULL); grpc_lb_addresses_set_address(*lb_addrs, 0, NULL, 0, false, NULL, NULL); } - GRPC_CLOSURE_SCHED(exec_ctx, on_done, error); + GRPC_CLOSURE_SCHED(on_done, error); return NULL; } -static grpc_resolver *create_resolver(grpc_exec_ctx *exec_ctx, - const char *name) { +static grpc_resolver *create_resolver(const char *name) { grpc_resolver_factory *factory = grpc_resolver_factory_lookup("dns"); - grpc_uri *uri = grpc_uri_parse(exec_ctx, name, 0); + grpc_uri *uri = grpc_uri_parse(name, 0); GPR_ASSERT(uri); grpc_resolver_args args; memset(&args, 0, sizeof(args)); args.uri = uri; args.combiner = g_combiner; grpc_resolver *resolver = - grpc_resolver_factory_create_resolver(exec_ctx, factory, &args); + grpc_resolver_factory_create_resolver(factory, &args); grpc_resolver_factory_unref(factory); grpc_uri_destroy(uri); return resolver; } -static void on_done(grpc_exec_ctx *exec_ctx, void *ev, grpc_error *error) { +static void on_done(void *ev, grpc_error *error) { gpr_event_set(ev, (void *)1); } @@ -105,9 +103,9 @@ static bool wait_loop(int deadline_seconds, gpr_event *ev) { if (gpr_event_wait(ev, grpc_timeout_seconds_to_deadline(1))) return true; deadline_seconds--; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_timer_check(&exec_ctx, NULL); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_timer_check(NULL); + grpc_exec_ctx_finish(); } return false; } @@ -118,26 +116,24 @@ typedef struct next_args { grpc_closure *on_complete; } next_args; -static void call_resolver_next_now_lock_taken(grpc_exec_ctx *exec_ctx, - void *arg, +static void call_resolver_next_now_lock_taken(void *arg, grpc_error *error_unused) { next_args *a = arg; - grpc_resolver_next_locked(exec_ctx, a->resolver, a->result, a->on_complete); + grpc_resolver_next_locked(a->resolver, a->result, a->on_complete); gpr_free(a); } -static void call_resolver_next_after_locking(grpc_exec_ctx *exec_ctx, - grpc_resolver *resolver, +static void call_resolver_next_after_locking(grpc_resolver *resolver, grpc_channel_args **result, grpc_closure *on_complete) { next_args *a = gpr_malloc(sizeof(*a)); a->resolver = resolver; a->result = result; a->on_complete = on_complete; - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE( - call_resolver_next_now_lock_taken, a, - grpc_combiner_scheduler(resolver->combiner)), - GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED( + GRPC_CLOSURE_CREATE(call_resolver_next_now_lock_taken, a, + grpc_combiner_scheduler(resolver->combiner)), + GRPC_ERROR_NONE); } int main(int argc, char **argv) { @@ -150,30 +146,30 @@ int main(int argc, char **argv) { grpc_dns_lookup_ares = my_dns_lookup_ares; grpc_channel_args *result = (grpc_channel_args *)1; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resolver *resolver = create_resolver(&exec_ctx, "dns:test"); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resolver *resolver = create_resolver("dns:test"); gpr_event ev1; gpr_event_init(&ev1); call_resolver_next_after_locking( - &exec_ctx, resolver, &result, + resolver, &result, GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); GPR_ASSERT(wait_loop(5, &ev1)); GPR_ASSERT(result == NULL); gpr_event ev2; gpr_event_init(&ev2); call_resolver_next_after_locking( - &exec_ctx, resolver, &result, + resolver, &result, GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); GPR_ASSERT(wait_loop(30, &ev2)); GPR_ASSERT(result != NULL); - grpc_channel_args_destroy(&exec_ctx, result); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, "test"); - GRPC_COMBINER_UNREF(&exec_ctx, g_combiner, "test"); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(result); + GRPC_RESOLVER_UNREF(resolver, "test"); + GRPC_COMBINER_UNREF(g_combiner, "test"); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_mu_destroy(&g_mu); diff --git a/test/core/client_channel/resolvers/dns_resolver_test.c b/test/core/client_channel/resolvers/dns_resolver_test.c index a14926f1730..3717d0efd7a 100644 --- a/test/core/client_channel/resolvers/dns_resolver_test.c +++ b/test/core/client_channel/resolvers/dns_resolver_test.c @@ -28,8 +28,8 @@ static grpc_combiner *g_combiner; static void test_succeeds(grpc_resolver_factory *factory, const char *string) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, string, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver *resolver; gpr_log(GPR_DEBUG, "test: '%s' should be valid for '%s'", string, @@ -38,16 +38,16 @@ static void test_succeeds(grpc_resolver_factory *factory, const char *string) { memset(&args, 0, sizeof(args)); args.uri = uri; args.combiner = g_combiner; - resolver = grpc_resolver_factory_create_resolver(&exec_ctx, factory, &args); + resolver = grpc_resolver_factory_create_resolver(factory, &args); GPR_ASSERT(resolver != NULL); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, "test_succeeds"); + GRPC_RESOLVER_UNREF(resolver, "test_succeeds"); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_fails(grpc_resolver_factory *factory, const char *string) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, string, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver *resolver; gpr_log(GPR_DEBUG, "test: '%s' should be invalid for '%s'", string, @@ -56,10 +56,10 @@ static void test_fails(grpc_resolver_factory *factory, const char *string) { memset(&args, 0, sizeof(args)); args.uri = uri; args.combiner = g_combiner; - resolver = grpc_resolver_factory_create_resolver(&exec_ctx, factory, &args); + resolver = grpc_resolver_factory_create_resolver(factory, &args); GPR_ASSERT(resolver == NULL); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { @@ -82,9 +82,9 @@ int main(int argc, char **argv) { grpc_resolver_factory_unref(dns); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_COMBINER_UNREF(&exec_ctx, g_combiner, "test"); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_COMBINER_UNREF(g_combiner, "test"); + grpc_exec_ctx_finish(); } grpc_shutdown(); diff --git a/test/core/client_channel/resolvers/fake_resolver_test.c b/test/core/client_channel/resolvers/fake_resolver_test.c index 9b0854d6d8d..8cc5fc6ce5b 100644 --- a/test/core/client_channel/resolvers/fake_resolver_test.c +++ b/test/core/client_channel/resolvers/fake_resolver_test.c @@ -33,7 +33,7 @@ #include "test/core/util/test_config.h" static grpc_resolver *build_fake_resolver( - grpc_exec_ctx *exec_ctx, grpc_combiner *combiner, + grpc_combiner *combiner, grpc_fake_resolver_response_generator *response_generator) { grpc_resolver_factory *factory = grpc_resolver_factory_lookup("fake"); grpc_arg generator_arg = @@ -44,7 +44,7 @@ static grpc_resolver *build_fake_resolver( args.args = &channel_args; args.combiner = combiner; grpc_resolver *resolver = - grpc_resolver_factory_create_resolver(exec_ctx, factory, &args); + grpc_resolver_factory_create_resolver(factory, &args); grpc_resolver_factory_unref(factory); return resolver; } @@ -55,7 +55,7 @@ typedef struct on_resolution_arg { gpr_event ev; } on_resolution_arg; -void on_resolution_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +void on_resolution_cb(void *arg, grpc_error *error) { on_resolution_arg *res = arg; // We only check the addresses channel arg because that's the only one // explicitly set by the test via @@ -66,24 +66,23 @@ void on_resolution_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { grpc_lb_addresses_find_channel_arg(res->expected_resolver_result); GPR_ASSERT( grpc_lb_addresses_cmp(actual_lb_addresses, expected_lb_addresses) == 0); - grpc_channel_args_destroy(exec_ctx, res->resolver_result); - grpc_channel_args_destroy(exec_ctx, res->expected_resolver_result); + grpc_channel_args_destroy(res->resolver_result); + grpc_channel_args_destroy(res->expected_resolver_result); gpr_event_set(&res->ev, (void *)1); } static void test_fake_resolver() { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_combiner *combiner = grpc_combiner_create(); // Create resolver. grpc_fake_resolver_response_generator *response_generator = grpc_fake_resolver_response_generator_create(); - grpc_resolver *resolver = - build_fake_resolver(&exec_ctx, combiner, response_generator); + grpc_resolver *resolver = build_fake_resolver(combiner, response_generator); GPR_ASSERT(resolver != NULL); // Setup expectations. - grpc_uri *uris[] = {grpc_uri_parse(&exec_ctx, "ipv4:10.2.1.1:1234", true), - grpc_uri_parse(&exec_ctx, "ipv4:127.0.0.1:4321", true)}; + grpc_uri *uris[] = {grpc_uri_parse("ipv4:10.2.1.1:1234", true), + grpc_uri_parse("ipv4:127.0.0.1:4321", true)}; char *balancer_names[] = {"name1", "name2"}; const bool is_balancer[] = {true, false}; grpc_lb_addresses *addresses = grpc_lb_addresses_create(3, NULL); @@ -96,7 +95,7 @@ static void test_fake_resolver() { grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args *results = grpc_channel_args_copy_and_add(NULL, &addresses_arg, 1); - grpc_lb_addresses_destroy(&exec_ctx, addresses); + grpc_lb_addresses_destroy(addresses); on_resolution_arg on_res_arg; memset(&on_res_arg, 0, sizeof(on_res_arg)); on_res_arg.expected_resolver_result = results; @@ -106,17 +105,16 @@ static void test_fake_resolver() { // Set resolver results and trigger first resolution. on_resolution_cb // performs the checks. - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator, results); - grpc_resolver_next_locked(&exec_ctx, resolver, &on_res_arg.resolver_result, + grpc_fake_resolver_response_generator_set_response(response_generator, + results); + grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg.ev, grpc_timeout_seconds_to_deadline(5)) != NULL); // Setup update. - grpc_uri *uris_update[] = { - grpc_uri_parse(&exec_ctx, "ipv4:192.168.1.0:31416", true)}; + grpc_uri *uris_update[] = {grpc_uri_parse("ipv4:192.168.1.0:31416", true)}; char *balancer_names_update[] = {"name3"}; const bool is_balancer_update[] = {false}; grpc_lb_addresses *addresses_update = grpc_lb_addresses_create(1, NULL); @@ -131,7 +129,7 @@ static void test_fake_resolver() { grpc_lb_addresses_create_channel_arg(addresses_update); grpc_channel_args *results_update = grpc_channel_args_copy_and_add(NULL, &addresses_update_arg, 1); - grpc_lb_addresses_destroy(&exec_ctx, addresses_update); + grpc_lb_addresses_destroy(addresses_update); // Setup expectations for the update. on_resolution_arg on_res_arg_update; @@ -142,27 +140,27 @@ static void test_fake_resolver() { grpc_combiner_scheduler(combiner)); // Set updated resolver results and trigger a second resolution. - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator, results_update); - grpc_resolver_next_locked(&exec_ctx, resolver, - &on_res_arg_update.resolver_result, on_resolution); - grpc_exec_ctx_flush(&exec_ctx); + grpc_fake_resolver_response_generator_set_response(response_generator, + results_update); + grpc_resolver_next_locked(resolver, &on_res_arg_update.resolver_result, + on_resolution); + grpc_exec_ctx_flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg_update.ev, grpc_timeout_seconds_to_deadline(5)) != NULL); // Requesting a new resolution without re-senting the response shouldn't // trigger the resolution callback. memset(&on_res_arg, 0, sizeof(on_res_arg)); - grpc_resolver_next_locked(&exec_ctx, resolver, &on_res_arg.resolver_result, + grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg.ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "test_fake_resolver"); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, "test_fake_resolver"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "test_fake_resolver"); + GRPC_RESOLVER_UNREF(resolver, "test_fake_resolver"); + grpc_exec_ctx_finish(); grpc_fake_resolver_response_generator_unref(response_generator); } diff --git a/test/core/client_channel/resolvers/sockaddr_resolver_test.c b/test/core/client_channel/resolvers/sockaddr_resolver_test.c index 8b88619164c..e69c68141bb 100644 --- a/test/core/client_channel/resolvers/sockaddr_resolver_test.c +++ b/test/core/client_channel/resolvers/sockaddr_resolver_test.c @@ -35,14 +35,14 @@ typedef struct on_resolution_arg { grpc_channel_args *resolver_result; } on_resolution_arg; -void on_resolution_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +void on_resolution_cb(void *arg, grpc_error *error) { on_resolution_arg *res = arg; - grpc_channel_args_destroy(exec_ctx, res->resolver_result); + grpc_channel_args_destroy(res->resolver_result); } static void test_succeeds(grpc_resolver_factory *factory, const char *string) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, string, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver *resolver; gpr_log(GPR_DEBUG, "test: '%s' should be valid for '%s'", string, @@ -51,7 +51,7 @@ static void test_succeeds(grpc_resolver_factory *factory, const char *string) { memset(&args, 0, sizeof(args)); args.uri = uri; args.combiner = g_combiner; - resolver = grpc_resolver_factory_create_resolver(&exec_ctx, factory, &args); + resolver = grpc_resolver_factory_create_resolver(factory, &args); GPR_ASSERT(resolver != NULL); on_resolution_arg on_res_arg; @@ -60,16 +60,16 @@ static void test_succeeds(grpc_resolver_factory *factory, const char *string) { grpc_closure *on_resolution = GRPC_CLOSURE_CREATE( on_resolution_cb, &on_res_arg, grpc_schedule_on_exec_ctx); - grpc_resolver_next_locked(&exec_ctx, resolver, &on_res_arg.resolver_result, + grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, "test_succeeds"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_RESOLVER_UNREF(resolver, "test_succeeds"); + grpc_exec_ctx_finish(); grpc_uri_destroy(uri); } static void test_fails(grpc_resolver_factory *factory, const char *string) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, string, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver *resolver; gpr_log(GPR_DEBUG, "test: '%s' should be invalid for '%s'", string, @@ -78,10 +78,10 @@ static void test_fails(grpc_resolver_factory *factory, const char *string) { memset(&args, 0, sizeof(args)); args.uri = uri; args.combiner = g_combiner; - resolver = grpc_resolver_factory_create_resolver(&exec_ctx, factory, &args); + resolver = grpc_resolver_factory_create_resolver(factory, &args); GPR_ASSERT(resolver == NULL); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { @@ -112,9 +112,9 @@ int main(int argc, char **argv) { grpc_resolver_factory_unref(ipv6); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_COMBINER_UNREF(&exec_ctx, g_combiner, "test"); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_COMBINER_UNREF(g_combiner, "test"); + grpc_exec_ctx_finish(); } grpc_shutdown(); diff --git a/test/core/client_channel/uri_fuzzer_test.c b/test/core/client_channel/uri_fuzzer_test.c index e51d0031ec1..2d91b92925b 100644 --- a/test/core/client_channel/uri_fuzzer_test.c +++ b/test/core/client_channel/uri_fuzzer_test.c @@ -33,12 +33,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { memcpy(s, data, size); s[size] = 0; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_uri *x; - if ((x = grpc_uri_parse(&exec_ctx, s, 1))) { + if ((x = grpc_uri_parse(s, 1))) { grpc_uri_destroy(x); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(s); return 0; } diff --git a/test/core/client_channel/uri_parser_test.c b/test/core/client_channel/uri_parser_test.c index f53cae196b0..643035d9ebc 100644 --- a/test/core/client_channel/uri_parser_test.c +++ b/test/core/client_channel/uri_parser_test.c @@ -28,29 +28,29 @@ static void test_succeeds(const char *uri_text, const char *scheme, const char *authority, const char *path, const char *query, const char *fragment) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_uri *uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); GPR_ASSERT(0 == strcmp(scheme, uri->scheme)); GPR_ASSERT(0 == strcmp(authority, uri->authority)); GPR_ASSERT(0 == strcmp(path, uri->path)); GPR_ASSERT(0 == strcmp(query, uri->query)); GPR_ASSERT(0 == strcmp(fragment, uri->fragment)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_uri_destroy(uri); } static void test_fails(const char *uri_text) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(NULL == grpc_uri_parse(&exec_ctx, uri_text, 0)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(NULL == grpc_uri_parse(uri_text, 0)); + grpc_exec_ctx_finish(); } static void test_query_parts() { { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; const char *uri_text = "http://foo/path?a&b=B&c=&#frag"; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + grpc_uri *uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); GPR_ASSERT(0 == strcmp("http", uri->scheme)); @@ -77,14 +77,14 @@ static void test_query_parts() { GPR_ASSERT(NULL == grpc_uri_get_query_arg(uri, "")); GPR_ASSERT(0 == strcmp("frag", uri->fragment)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_uri_destroy(uri); } { /* test the current behavior of multiple query part values */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; const char *uri_text = "http://auth/path?foo=bar=baz&foobar=="; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + grpc_uri *uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); GPR_ASSERT(0 == strcmp("http", uri->scheme)); @@ -96,14 +96,14 @@ static void test_query_parts() { GPR_ASSERT(0 == strcmp("bar", grpc_uri_get_query_arg(uri, "foo"))); GPR_ASSERT(0 == strcmp("", grpc_uri_get_query_arg(uri, "foobar"))); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_uri_destroy(uri); } { /* empty query */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; const char *uri_text = "http://foo/path"; - grpc_uri *uri = grpc_uri_parse(&exec_ctx, uri_text, 0); + grpc_uri *uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); GPR_ASSERT(0 == strcmp("http", uri->scheme)); @@ -114,7 +114,7 @@ static void test_query_parts() { GPR_ASSERT(NULL == uri->query_parts); GPR_ASSERT(NULL == uri->query_parts_values); GPR_ASSERT(0 == strcmp("", uri->fragment)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_uri_destroy(uri); } } diff --git a/test/core/compression/algorithm_test.c b/test/core/compression/algorithm_test.c index a11e6e90ace..9a771d9494f 100644 --- a/test/core/compression/algorithm_test.c +++ b/test/core/compression/algorithm_test.c @@ -39,7 +39,7 @@ static void test_algorithm_mesh(void) { grpc_compression_algorithm parsed; grpc_slice mdstr; grpc_mdelem mdelem; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; GPR_ASSERT( grpc_compression_algorithm_name((grpc_compression_algorithm)i, &name)); GPR_ASSERT(grpc_compression_algorithm_parse( @@ -51,9 +51,9 @@ static void test_algorithm_mesh(void) { mdelem = grpc_compression_encoding_mdelem(parsed); GPR_ASSERT(grpc_slice_eq(GRPC_MDVALUE(mdelem), mdstr)); GPR_ASSERT(grpc_slice_eq(GRPC_MDKEY(mdelem), GRPC_MDSTR_GRPC_ENCODING)); - grpc_slice_unref_internal(&exec_ctx, mdstr); - GRPC_MDELEM_UNREF(&exec_ctx, mdelem); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(mdstr); + GRPC_MDELEM_UNREF(mdelem); + grpc_exec_ctx_finish(); } /* test failure */ @@ -62,7 +62,7 @@ static void test_algorithm_mesh(void) { } static void test_algorithm_failure(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_slice mdstr; gpr_log(GPR_DEBUG, "test_algorithm_failure"); @@ -80,8 +80,8 @@ static void test_algorithm_failure(void) { GPR_ASSERT(grpc_slice_eq( grpc_compression_algorithm_slice(GRPC_COMPRESS_ALGORITHMS_COUNT + 1), grpc_empty_slice())); - grpc_slice_unref_internal(&exec_ctx, mdstr); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(mdstr); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/compression/message_compress_test.c b/test/core/compression/message_compress_test.c index f7f4893deef..641e8f89007 100644 --- a/test/core/compression/message_compress_test.c +++ b/test/core/compression/message_compress_test.c @@ -69,10 +69,9 @@ static void assert_passthrough(grpc_slice value, grpc_split_slices_to_buffer(uncompressed_split_mode, &value, 1, &input); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - was_compressed = - grpc_msg_compress(&exec_ctx, algorithm, &input, &compressed_raw); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + was_compressed = grpc_msg_compress(algorithm, &input, &compressed_raw); + grpc_exec_ctx_finish(); } GPR_ASSERT(input.count > 0); @@ -91,11 +90,10 @@ static void assert_passthrough(grpc_slice value, grpc_split_slice_buffer(compressed_split_mode, &compressed_raw, &compressed); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; GPR_ASSERT(grpc_msg_decompress( - &exec_ctx, was_compressed ? algorithm : GRPC_COMPRESS_NONE, &compressed, - &output)); - grpc_exec_ctx_finish(&exec_ctx); + was_compressed ? algorithm : GRPC_COMPRESS_NONE, &compressed, &output)); + grpc_exec_ctx_finish(); } final = grpc_slice_merge(output.slices, output.count); @@ -156,9 +154,9 @@ static void test_tiny_data_compress(void) { for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { if (i == GRPC_COMPRESS_NONE) continue; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(0 == grpc_msg_compress(&exec_ctx, i, &input, &output)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(0 == grpc_msg_compress(i, &input, &output)); + grpc_exec_ctx_finish(); GPR_ASSERT(1 == output.count); } @@ -178,9 +176,9 @@ static void test_bad_decompression_data_crc(void) { grpc_slice_buffer_init(&output); grpc_slice_buffer_add(&input, create_test_value(ONE_MB_A)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; /* compress it */ - grpc_msg_compress(&exec_ctx, GRPC_COMPRESS_GZIP, &input, &corrupted); + grpc_msg_compress(GRPC_COMPRESS_GZIP, &input, &corrupted); /* corrupt the output by smashing the CRC */ GPR_ASSERT(corrupted.count > 1); GPR_ASSERT(GRPC_SLICE_LENGTH(corrupted.slices[1]) > 8); @@ -188,9 +186,8 @@ static void test_bad_decompression_data_crc(void) { memcpy(GRPC_SLICE_START_PTR(corrupted.slices[1]) + idx, &bad, 4); /* try (and fail) to decompress the corrupted compresed buffer */ - GPR_ASSERT(0 == grpc_msg_decompress(&exec_ctx, GRPC_COMPRESS_GZIP, &corrupted, - &output)); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_GZIP, &corrupted, &output)); + grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&corrupted); @@ -209,10 +206,9 @@ static void test_bad_decompression_data_trailing_garbage(void) { "\x78\xda\x63\x60\x60\x60\x00\x00\x00\x04\x00\x01\x99", 13)); /* try (and fail) to decompress the invalid compresed buffer */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(0 == grpc_msg_decompress(&exec_ctx, GRPC_COMPRESS_DEFLATE, &input, - &output)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); + grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); @@ -228,10 +224,9 @@ static void test_bad_decompression_data_stream(void) { grpc_slice_from_copied_buffer("\x78\xda\xff\xff", 4)); /* try (and fail) to decompress the invalid compresed buffer */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(0 == grpc_msg_decompress(&exec_ctx, GRPC_COMPRESS_DEFLATE, &input, - &output)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); + grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); @@ -247,15 +242,15 @@ static void test_bad_compression_algorithm(void) { grpc_slice_buffer_add( &input, grpc_slice_from_copied_string("Never gonna give you up")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - was_compressed = grpc_msg_compress(&exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT, - &input, &output); + exec_ctx = GRPC_EXEC_CTX_INIT; + was_compressed = + grpc_msg_compress(GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); GPR_ASSERT(0 == was_compressed); - was_compressed = grpc_msg_compress( - &exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT + 123, &input, &output); + was_compressed = + grpc_msg_compress(GRPC_COMPRESS_ALGORITHMS_COUNT + 123, &input, &output); GPR_ASSERT(0 == was_compressed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); @@ -271,15 +266,15 @@ static void test_bad_decompression_algorithm(void) { grpc_slice_buffer_add(&input, grpc_slice_from_copied_string( "I'm not really compressed but it doesn't matter")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - was_decompressed = grpc_msg_decompress( - &exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); + exec_ctx = GRPC_EXEC_CTX_INIT; + was_decompressed = + grpc_msg_decompress(GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); GPR_ASSERT(0 == was_decompressed); - was_decompressed = grpc_msg_decompress( - &exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT + 123, &input, &output); + was_decompressed = grpc_msg_decompress(GRPC_COMPRESS_ALGORITHMS_COUNT + 123, + &input, &output); GPR_ASSERT(0 == was_decompressed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); diff --git a/test/core/debug/stats_test.cc b/test/core/debug/stats_test.cc index c85ab3598ab..ac7c3af8a43 100644 --- a/test/core/debug/stats_test.cc +++ b/test/core/debug/stats_test.cc @@ -47,9 +47,9 @@ TEST(StatsTest, IncCounters) { for (int i = 0; i < GRPC_STATS_COUNTER_COUNT; i++) { Snapshot snapshot; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_STATS_INC_COUNTER(&exec_ctx, (grpc_stats_counters)i); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + GRPC_STATS_INC_COUNTER((grpc_stats_counters)i); + grpc_exec_ctx_finish(); EXPECT_EQ(snapshot.delta().counters[i], 1); } @@ -58,9 +58,9 @@ TEST(StatsTest, IncCounters) { TEST(StatsTest, IncSpecificCounter) { Snapshot snapshot; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_STATS_INC_SYSCALL_POLL(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + GRPC_STATS_INC_SYSCALL_POLL(); + grpc_exec_ctx_finish(); EXPECT_EQ(snapshot.delta().counters[GRPC_STATS_COUNTER_SYSCALL_POLL], 1); } @@ -99,9 +99,9 @@ TEST(StatsTest, IncHistogram) { int expected_bucket = FindExpectedBucket(i, j); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_stats_inc_histogram[i](&exec_ctx, j); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); auto delta = snapshot.delta(); diff --git a/test/core/end2end/bad_server_response_test.c b/test/core/end2end/bad_server_response_test.cc similarity index 91% rename from test/core/end2end/bad_server_response_test.c rename to test/core/end2end/bad_server_response_test.cc index 2070fa5b02a..aa4f0e13d7a 100644 --- a/test/core/end2end/bad_server_response_test.c +++ b/test/core/end2end/bad_server_response_test.cc @@ -91,22 +91,22 @@ static grpc_closure on_write; static void *tag(intptr_t t) { return (void *)t; } -static void done_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void done_write(void *arg, grpc_error *error) { GPR_ASSERT(error == GRPC_ERROR_NONE); gpr_atm_rel_store(&state.done_atm, 1); } -static void handle_write(grpc_exec_ctx *exec_ctx) { +static void handle_write() { grpc_slice slice = grpc_slice_from_copied_buffer( state.response_payload, state.response_payload_length); grpc_slice_buffer_reset_and_unref(&state.outgoing_buffer); grpc_slice_buffer_add(&state.outgoing_buffer, slice); - grpc_endpoint_write(exec_ctx, state.tcp, &state.outgoing_buffer, &on_write); + grpc_endpoint_write(state.tcp, &state.outgoing_buffer, &on_write); } -static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void handle_read(void *arg, grpc_error *error) { GPR_ASSERT(error == GRPC_ERROR_NONE); state.incoming_data_length += state.temp_incoming_buffer.length; @@ -123,14 +123,13 @@ static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { SERVER_INCOMING_DATA_LENGTH_LOWER_THRESHOLD); if (state.incoming_data_length >= SERVER_INCOMING_DATA_LENGTH_LOWER_THRESHOLD) { - handle_write(exec_ctx); + handle_write(); } else { - grpc_endpoint_read(exec_ctx, state.tcp, &state.temp_incoming_buffer, - &on_read); + grpc_endpoint_read(state.tcp, &state.temp_incoming_buffer, &on_read); } } -static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, +static void on_connect(void *arg, grpc_endpoint *tcp, grpc_pollset *accepting_pollset, grpc_tcp_server_acceptor *acceptor) { gpr_free(acceptor); @@ -141,8 +140,8 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, grpc_slice_buffer_init(&state.outgoing_buffer); state.tcp = tcp; state.incoming_data_length = 0; - grpc_endpoint_add_to_pollset(exec_ctx, tcp, server->pollset); - grpc_endpoint_read(exec_ctx, tcp, &state.temp_incoming_buffer, &on_read); + grpc_endpoint_add_to_pollset(tcp, server->pollset); + grpc_endpoint_read(tcp, &state.temp_incoming_buffer, &on_read); } static gpr_timespec n_sec_deadline(int seconds) { @@ -217,10 +216,10 @@ static void start_rpc(int target_port, grpc_status_code expected_status, cq_verifier_destroy(cqv); } -static void cleanup_rpc(grpc_exec_ctx *exec_ctx) { +static void cleanup_rpc() { grpc_event ev; - grpc_slice_buffer_destroy_internal(exec_ctx, &state.temp_incoming_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &state.outgoing_buffer); + grpc_slice_buffer_destroy_internal(&state.temp_incoming_buffer); + grpc_slice_buffer_destroy_internal(&state.outgoing_buffer); grpc_call_unref(state.call); grpc_completion_queue_shutdown(state.cq); do { @@ -270,7 +269,7 @@ static void run_test(const char *response_payload, grpc_status_code expected_status, const char *expected_detail) { test_tcp_server test_server; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_event ev; grpc_init(); @@ -287,11 +286,11 @@ static void run_test(const char *response_payload, gpr_event_wait(&ev, gpr_inf_future(GPR_CLOCK_REALTIME)); /* clean up */ - grpc_endpoint_shutdown(&exec_ctx, state.tcp, + grpc_endpoint_shutdown(state.tcp, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); - grpc_endpoint_destroy(&exec_ctx, state.tcp); - cleanup_rpc(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_endpoint_destroy(state.tcp); + cleanup_rpc(); + grpc_exec_ctx_finish(); test_tcp_server_destroy(&test_server); grpc_shutdown(); diff --git a/test/core/end2end/connection_refused_test.c b/test/core/end2end/connection_refused_test.c index 40227dece41..c851271e445 100644 --- a/test/core/end2end/connection_refused_test.c +++ b/test/core/end2end/connection_refused_test.c @@ -131,9 +131,9 @@ static void run_test(bool wait_for_ready, bool use_service_config) { grpc_metadata_array_destroy(&trailing_metadata_recv); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - if (args != NULL) grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + if (args != NULL) grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } grpc_shutdown(); diff --git a/test/core/end2end/fixtures/h2_census.c b/test/core/end2end/fixtures/h2_census.c index 9870ccb34a2..325615c8351 100644 --- a/test/core/end2end/fixtures/h2_census.c +++ b/test/core/end2end/fixtures/h2_census.c @@ -72,9 +72,9 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture *f, f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL); GPR_ASSERT(f->client); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(client_args); + grpc_exec_ctx_finish(); } } @@ -88,9 +88,9 @@ void chttp2_init_server_fullstack(grpc_end2end_test_fixture *f, server_args = grpc_channel_args_copy_and_add(server_args, &arg, 1); f->server = grpc_server_create(server_args, NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } grpc_server_register_completion_queue(f->server, f->cq, NULL); GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); diff --git a/test/core/end2end/fixtures/h2_compress.c b/test/core/end2end/fixtures/h2_compress.c index 9866dea7eba..1476224af04 100644 --- a/test/core/end2end/fixtures/h2_compress.c +++ b/test/core/end2end/fixtures/h2_compress.c @@ -64,9 +64,9 @@ void chttp2_init_client_fullstack_compression(grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { fullstack_compression_fixture_data *ffd = f->fixture_data; if (ffd->client_args_compression != NULL) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, ffd->client_args_compression); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(ffd->client_args_compression); + grpc_exec_ctx_finish(); } ffd->client_args_compression = grpc_channel_args_set_compression_algorithm( client_args, GRPC_COMPRESS_GZIP); @@ -78,9 +78,9 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { fullstack_compression_fixture_data *ffd = f->fixture_data; if (ffd->server_args_compression != NULL) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, ffd->server_args_compression); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(ffd->server_args_compression); + grpc_exec_ctx_finish(); } ffd->server_args_compression = grpc_channel_args_set_compression_algorithm( server_args, GRPC_COMPRESS_GZIP); @@ -94,13 +94,13 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture *f, } void chttp2_tear_down_fullstack_compression(grpc_end2end_test_fixture *f) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; fullstack_compression_fixture_data *ffd = f->fixture_data; - grpc_channel_args_destroy(&exec_ctx, ffd->client_args_compression); - grpc_channel_args_destroy(&exec_ctx, ffd->server_args_compression); + grpc_channel_args_destroy(ffd->client_args_compression); + grpc_channel_args_destroy(ffd->server_args_compression); gpr_free(ffd->localaddr); gpr_free(ffd); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } /* All test configurations */ diff --git a/test/core/end2end/fixtures/h2_fd.c b/test/core/end2end/fixtures/h2_fd.c index e82c120221d..cc7ec7ac6ef 100644 --- a/test/core/end2end/fixtures/h2_fd.c +++ b/test/core/end2end/fixtures/h2_fd.c @@ -65,7 +65,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; sp_fixture_data *sfd = f->fixture_data; GPR_ASSERT(!f->client); @@ -73,12 +73,12 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture *f, "fixture_client", sfd->fd_pair[0], client_args); GPR_ASSERT(f->client); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; sp_fixture_data *sfd = f->fixture_data; GPR_ASSERT(!f->server); f->server = grpc_server_create(server_args, NULL); @@ -88,7 +88,7 @@ static void chttp2_init_server_socketpair(grpc_end2end_test_fixture *f, grpc_server_add_insecure_channel_from_fd(f->server, NULL, sfd->fd_pair[1]); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) { diff --git a/test/core/end2end/fixtures/h2_full+workarounds.c b/test/core/end2end/fixtures/h2_full+workarounds.c index a98e5ad57f7..f9d2f033cbb 100644 --- a/test/core/end2end/fixtures/h2_full+workarounds.c +++ b/test/core/end2end/fixtures/h2_full+workarounds.c @@ -69,7 +69,7 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture *f, void chttp2_init_server_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { int i; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; fullstack_fixture_data *ffd = f->fixture_data; grpc_arg args[GRPC_MAX_WORKAROUND_ID]; for (i = 0; i < GRPC_MAX_WORKAROUND_ID; i++) { @@ -86,8 +86,8 @@ void chttp2_init_server_fullstack(grpc_end2end_test_fixture *f, grpc_server_register_completion_queue(f->server, f->cq, NULL); GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); grpc_server_start(f->server); - grpc_channel_args_destroy(&exec_ctx, server_args_new); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(server_args_new); + grpc_exec_ctx_finish(); } void chttp2_tear_down_fullstack(grpc_end2end_test_fixture *f) { diff --git a/test/core/end2end/fixtures/h2_load_reporting.c b/test/core/end2end/fixtures/h2_load_reporting.c index 8a05bb722aa..5218b38e6ad 100644 --- a/test/core/end2end/fixtures/h2_load_reporting.c +++ b/test/core/end2end/fixtures/h2_load_reporting.c @@ -75,9 +75,9 @@ void chttp2_init_server_load_reporting(grpc_end2end_test_fixture *f, server_args = grpc_channel_args_copy_and_add(server_args, &arg, 1); f->server = grpc_server_create(server_args, NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } grpc_server_register_completion_queue(f->server, f->cq, NULL); GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); diff --git a/test/core/end2end/fixtures/h2_oauth2.c b/test/core/end2end/fixtures/h2_oauth2.c index ee1d0b14169..d3660b26b43 100644 --- a/test/core/end2end/fixtures/h2_oauth2.c +++ b/test/core/end2end/fixtures/h2_oauth2.c @@ -137,11 +137,11 @@ void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) { static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_credentials *ssl_creds = grpc_ssl_credentials_create(test_root_cert, NULL, NULL); grpc_call_credentials *oauth2_creds = grpc_md_only_test_credentials_create( - &exec_ctx, "authorization", oauth2_md, true /* is_async */); + "authorization", oauth2_md, true /* is_async */); grpc_channel_credentials *ssl_oauth2_creds = grpc_composite_channel_credentials_create(ssl_creds, oauth2_creds, NULL); grpc_arg ssl_name_override = {GRPC_ARG_STRING, @@ -150,10 +150,10 @@ static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_channel_args *new_client_args = grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_oauth2_creds); - grpc_channel_args_destroy(&exec_ctx, new_client_args); + grpc_channel_args_destroy(new_client_args); grpc_channel_credentials_release(ssl_creds); grpc_call_credentials_release(oauth2_creds); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static int fail_server_auth_check(grpc_channel_args *server_args) { diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.c b/test/core/end2end/fixtures/h2_sockpair+trace.c index 39ccb84b523..e34f45a5732 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.c +++ b/test/core/end2end/fixtures/h2_sockpair+trace.c @@ -50,12 +50,12 @@ static void server_setup_transport(void *ts, grpc_transport *transport) { grpc_end2end_test_fixture *f = ts; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; - grpc_endpoint_add_to_pollset(&exec_ctx, sfd->server, grpc_cq_pollset(f->cq)); - grpc_server_setup_transport(&exec_ctx, f->server, transport, NULL, + grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); + grpc_server_setup_transport(f->server, transport, NULL, grpc_server_get_channel_args(f->server)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } typedef struct { @@ -63,13 +63,11 @@ typedef struct { grpc_channel_args *client_args; } sp_client_setup; -static void client_setup_transport(grpc_exec_ctx *exec_ctx, void *ts, - grpc_transport *transport) { +static void client_setup_transport(void *ts, grpc_transport *transport) { sp_client_setup *cs = ts; - cs->f->client = - grpc_channel_create(exec_ctx, "socketpair-target", cs->client_args, - GRPC_CLIENT_DIRECT_CHANNEL, transport); + cs->f->client = grpc_channel_create("socketpair-target", cs->client_args, + GRPC_CLIENT_DIRECT_CHANNEL, transport); } static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( @@ -89,34 +87,32 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; grpc_transport *transport; sp_client_setup cs; cs.client_args = client_args; cs.f = f; - transport = - grpc_create_chttp2_transport(&exec_ctx, client_args, sfd->client, 1); - client_setup_transport(&exec_ctx, &cs, transport); + transport = grpc_create_chttp2_transport(client_args, sfd->client, 1); + client_setup_transport(&cs, transport); GPR_ASSERT(f->client); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; grpc_transport *transport; GPR_ASSERT(!f->server); f->server = grpc_server_create(server_args, NULL); grpc_server_register_completion_queue(f->server, f->cq, NULL); grpc_server_start(f->server); - transport = - grpc_create_chttp2_transport(&exec_ctx, server_args, sfd->server, 0); + transport = grpc_create_chttp2_transport(server_args, sfd->server, 0); server_setup_transport(f, transport); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) { @@ -132,7 +128,7 @@ static grpc_end2end_test_config configs[] = { int main(int argc, char **argv) { size_t i; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; /* force tracing on, with a value to force many code paths in trace.c to be taken */ @@ -146,7 +142,7 @@ int main(int argc, char **argv) { grpc_test_init(argc, argv); grpc_end2end_tests_pre_init(); grpc_init(); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); GPR_ASSERT(0 == grpc_tracer_set_enabled("also-doesnt-exist", 0)); GPR_ASSERT(1 == grpc_tracer_set_enabled("http", 1)); diff --git a/test/core/end2end/fixtures/h2_sockpair.c b/test/core/end2end/fixtures/h2_sockpair.c index 03566ead9bf..37bda654cfb 100644 --- a/test/core/end2end/fixtures/h2_sockpair.c +++ b/test/core/end2end/fixtures/h2_sockpair.c @@ -44,12 +44,12 @@ static void server_setup_transport(void *ts, grpc_transport *transport) { grpc_end2end_test_fixture *f = ts; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; - grpc_endpoint_add_to_pollset(&exec_ctx, sfd->server, grpc_cq_pollset(f->cq)); - grpc_server_setup_transport(&exec_ctx, f->server, transport, NULL, + grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); + grpc_server_setup_transport(f->server, transport, NULL, grpc_server_get_channel_args(f->server)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } typedef struct { @@ -57,13 +57,11 @@ typedef struct { grpc_channel_args *client_args; } sp_client_setup; -static void client_setup_transport(grpc_exec_ctx *exec_ctx, void *ts, - grpc_transport *transport) { +static void client_setup_transport(void *ts, grpc_transport *transport) { sp_client_setup *cs = ts; - cs->f->client = - grpc_channel_create(exec_ctx, "socketpair-target", cs->client_args, - GRPC_CLIENT_DIRECT_CHANNEL, transport); + cs->f->client = grpc_channel_create("socketpair-target", cs->client_args, + GRPC_CLIENT_DIRECT_CHANNEL, transport); } static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( @@ -83,34 +81,32 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; grpc_transport *transport; sp_client_setup cs; cs.client_args = client_args; cs.f = f; - transport = - grpc_create_chttp2_transport(&exec_ctx, client_args, sfd->client, 1); - client_setup_transport(&exec_ctx, &cs, transport); + transport = grpc_create_chttp2_transport(client_args, sfd->client, 1); + client_setup_transport(&cs, transport); GPR_ASSERT(f->client); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; grpc_transport *transport; GPR_ASSERT(!f->server); f->server = grpc_server_create(server_args, NULL); grpc_server_register_completion_queue(f->server, f->cq, NULL); grpc_server_start(f->server); - transport = - grpc_create_chttp2_transport(&exec_ctx, server_args, sfd->server, 0); + transport = grpc_create_chttp2_transport(server_args, sfd->server, 0); server_setup_transport(f, transport); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) { diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.c b/test/core/end2end/fixtures/h2_sockpair_1byte.c index c75a3876d5a..fc58dad59f1 100644 --- a/test/core/end2end/fixtures/h2_sockpair_1byte.c +++ b/test/core/end2end/fixtures/h2_sockpair_1byte.c @@ -44,12 +44,12 @@ static void server_setup_transport(void *ts, grpc_transport *transport) { grpc_end2end_test_fixture *f = ts; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; - grpc_endpoint_add_to_pollset(&exec_ctx, sfd->server, grpc_cq_pollset(f->cq)); - grpc_server_setup_transport(&exec_ctx, f->server, transport, NULL, + grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); + grpc_server_setup_transport(f->server, transport, NULL, grpc_server_get_channel_args(f->server)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } typedef struct { @@ -57,13 +57,11 @@ typedef struct { grpc_channel_args *client_args; } sp_client_setup; -static void client_setup_transport(grpc_exec_ctx *exec_ctx, void *ts, - grpc_transport *transport) { +static void client_setup_transport(void *ts, grpc_transport *transport) { sp_client_setup *cs = ts; - cs->f->client = - grpc_channel_create(exec_ctx, "socketpair-target", cs->client_args, - GRPC_CLIENT_DIRECT_CHANNEL, transport); + cs->f->client = grpc_channel_create("socketpair-target", cs->client_args, + GRPC_CLIENT_DIRECT_CHANNEL, transport); } static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( @@ -93,34 +91,32 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; grpc_transport *transport; sp_client_setup cs; cs.client_args = client_args; cs.f = f; - transport = - grpc_create_chttp2_transport(&exec_ctx, client_args, sfd->client, 1); - client_setup_transport(&exec_ctx, &cs, transport); + transport = grpc_create_chttp2_transport(client_args, sfd->client, 1); + client_setup_transport(&cs, transport); GPR_ASSERT(f->client); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture *f, grpc_channel_args *server_args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_pair *sfd = f->fixture_data; grpc_transport *transport; GPR_ASSERT(!f->server); f->server = grpc_server_create(server_args, NULL); grpc_server_register_completion_queue(f->server, f->cq, NULL); grpc_server_start(f->server); - transport = - grpc_create_chttp2_transport(&exec_ctx, server_args, sfd->server, 0); + transport = grpc_create_chttp2_transport(server_args, sfd->server, 0); server_setup_transport(f, transport); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_transport_start_reading(transport, NULL); + grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) { diff --git a/test/core/end2end/fixtures/h2_ssl.c b/test/core/end2end/fixtures/h2_ssl.c index 0bac464e695..3262a588c27 100644 --- a/test/core/end2end/fixtures/h2_ssl.c +++ b/test/core/end2end/fixtures/h2_ssl.c @@ -105,9 +105,9 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, new_client_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(new_client_args); + grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.c b/test/core/end2end/fixtures/h2_ssl_proxy.c index 8bc7183510e..21de427c5e0 100644 --- a/test/core/end2end/fixtures/h2_ssl_proxy.c +++ b/test/core/end2end/fixtures/h2_ssl_proxy.c @@ -65,9 +65,9 @@ static grpc_channel *create_proxy_client(const char *target, grpc_secure_channel_create(ssl_creds, target, new_client_args, NULL); grpc_channel_credentials_release(ssl_creds); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, new_client_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(new_client_args); + grpc_exec_ctx_finish(); } return channel; } @@ -142,9 +142,9 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, new_client_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(new_client_args); + grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/fixtures/http_proxy_fixture.c b/test/core/end2end/fixtures/http_proxy_fixture.cc similarity index 73% rename from test/core/end2end/fixtures/http_proxy_fixture.c rename to test/core/end2end/fixtures/http_proxy_fixture.cc index d29401fdc3a..b3ec44d77b0 100644 --- a/test/core/end2end/fixtures/http_proxy_fixture.c +++ b/test/core/end2end/fixtures/http_proxy_fixture.cc @@ -102,24 +102,21 @@ static void proxy_connection_ref(proxy_connection* conn, const char* reason) { } // Helper function to destroy the proxy connection. -static void proxy_connection_unref(grpc_exec_ctx* exec_ctx, - proxy_connection* conn, const char* reason) { +static void proxy_connection_unref(proxy_connection* conn, const char* reason) { if (gpr_unref(&conn->refcount)) { gpr_log(GPR_DEBUG, "endpoints: %p %p", conn->client_endpoint, conn->server_endpoint); - grpc_endpoint_destroy(exec_ctx, conn->client_endpoint); + grpc_endpoint_destroy(conn->client_endpoint); if (conn->server_endpoint != NULL) { - grpc_endpoint_destroy(exec_ctx, conn->server_endpoint); + grpc_endpoint_destroy(conn->server_endpoint); } - grpc_pollset_set_destroy(exec_ctx, conn->pollset_set); - grpc_slice_buffer_destroy_internal(exec_ctx, &conn->client_read_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, - &conn->client_deferred_write_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &conn->client_write_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &conn->server_read_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, - &conn->server_deferred_write_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &conn->server_write_buffer); + grpc_pollset_set_destroy(conn->pollset_set); + grpc_slice_buffer_destroy_internal(&conn->client_read_buffer); + grpc_slice_buffer_destroy_internal(&conn->client_deferred_write_buffer); + grpc_slice_buffer_destroy_internal(&conn->client_write_buffer); + grpc_slice_buffer_destroy_internal(&conn->server_read_buffer); + grpc_slice_buffer_destroy_internal(&conn->server_deferred_write_buffer); + grpc_slice_buffer_destroy_internal(&conn->server_write_buffer); grpc_http_parser_destroy(&conn->http_parser); grpc_http_request_destroy(&conn->http_request); gpr_unref(&conn->proxy->users); @@ -129,27 +126,23 @@ static void proxy_connection_unref(grpc_exec_ctx* exec_ctx, // Helper function to shut down the proxy connection. // Does NOT take ownership of a reference to error. -static void proxy_connection_failed(grpc_exec_ctx* exec_ctx, - proxy_connection* conn, bool is_client, +static void proxy_connection_failed(proxy_connection* conn, bool is_client, const char* prefix, grpc_error* error) { const char* msg = grpc_error_string(error); gpr_log(GPR_INFO, "%s: %s", prefix, msg); - grpc_endpoint_shutdown(exec_ctx, conn->client_endpoint, - GRPC_ERROR_REF(error)); + grpc_endpoint_shutdown(conn->client_endpoint, GRPC_ERROR_REF(error)); if (conn->server_endpoint != NULL) { - grpc_endpoint_shutdown(exec_ctx, conn->server_endpoint, - GRPC_ERROR_REF(error)); + grpc_endpoint_shutdown(conn->server_endpoint, GRPC_ERROR_REF(error)); } - proxy_connection_unref(exec_ctx, conn, "conn_failed"); + proxy_connection_unref(conn, "conn_failed"); } // Callback for writing proxy data to the client. -static void on_client_write_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_client_write_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy client write", error); return; } @@ -160,21 +153,19 @@ static void on_client_write_done(grpc_exec_ctx* exec_ctx, void* arg, if (conn->client_deferred_write_buffer.length > 0) { grpc_slice_buffer_move_into(&conn->client_deferred_write_buffer, &conn->client_write_buffer); - grpc_endpoint_write(exec_ctx, conn->client_endpoint, - &conn->client_write_buffer, + grpc_endpoint_write(conn->client_endpoint, &conn->client_write_buffer, &conn->on_client_write_done); } else { // No more writes. Unref the connection. - proxy_connection_unref(exec_ctx, conn, "write_done"); + proxy_connection_unref(conn, "write_done"); } } // Callback for writing proxy data to the backend server. -static void on_server_write_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_server_write_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, false /* is_client */, + proxy_connection_failed(conn, false /* is_client */, "HTTP proxy server write", error); return; } @@ -185,22 +176,20 @@ static void on_server_write_done(grpc_exec_ctx* exec_ctx, void* arg, if (conn->server_deferred_write_buffer.length > 0) { grpc_slice_buffer_move_into(&conn->server_deferred_write_buffer, &conn->server_write_buffer); - grpc_endpoint_write(exec_ctx, conn->server_endpoint, - &conn->server_write_buffer, + grpc_endpoint_write(conn->server_endpoint, &conn->server_write_buffer, &conn->on_server_write_done); } else { // No more writes. Unref the connection. - proxy_connection_unref(exec_ctx, conn, "server_write"); + proxy_connection_unref(conn, "server_write"); } } // Callback for reading data from the client, which will be proxied to // the backend server. -static void on_client_read_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_client_read_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy client read", error); return; } @@ -217,22 +206,20 @@ static void on_client_read_done(grpc_exec_ctx* exec_ctx, void* arg, grpc_slice_buffer_move_into(&conn->client_read_buffer, &conn->server_write_buffer); proxy_connection_ref(conn, "client_read"); - grpc_endpoint_write(exec_ctx, conn->server_endpoint, - &conn->server_write_buffer, + grpc_endpoint_write(conn->server_endpoint, &conn->server_write_buffer, &conn->on_server_write_done); } // Read more data. - grpc_endpoint_read(exec_ctx, conn->client_endpoint, &conn->client_read_buffer, + grpc_endpoint_read(conn->client_endpoint, &conn->client_read_buffer, &conn->on_client_read_done); } // Callback for reading data from the backend server, which will be // proxied to the client. -static void on_server_read_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_server_read_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, false /* is_client */, + proxy_connection_failed(conn, false /* is_client */, "HTTP proxy server read", error); return; } @@ -249,21 +236,19 @@ static void on_server_read_done(grpc_exec_ctx* exec_ctx, void* arg, grpc_slice_buffer_move_into(&conn->server_read_buffer, &conn->client_write_buffer); proxy_connection_ref(conn, "server_read"); - grpc_endpoint_write(exec_ctx, conn->client_endpoint, - &conn->client_write_buffer, + grpc_endpoint_write(conn->client_endpoint, &conn->client_write_buffer, &conn->on_client_write_done); } // Read more data. - grpc_endpoint_read(exec_ctx, conn->server_endpoint, &conn->server_read_buffer, + grpc_endpoint_read(conn->server_endpoint, &conn->server_read_buffer, &conn->on_server_read_done); } // Callback to write the HTTP response for the CONNECT request. -static void on_write_response_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_write_response_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy write response", error); return; } @@ -274,17 +259,16 @@ static void on_write_response_done(grpc_exec_ctx* exec_ctx, void* arg, // for the other one. proxy_connection_ref(conn, "client_read"); proxy_connection_ref(conn, "server_read"); - proxy_connection_unref(exec_ctx, conn, "write_response"); - grpc_endpoint_read(exec_ctx, conn->client_endpoint, &conn->client_read_buffer, + proxy_connection_unref(conn, "write_response"); + grpc_endpoint_read(conn->client_endpoint, &conn->client_read_buffer, &conn->on_client_read_done); - grpc_endpoint_read(exec_ctx, conn->server_endpoint, &conn->server_read_buffer, + grpc_endpoint_read(conn->server_endpoint, &conn->server_read_buffer, &conn->on_server_read_done); } // Callback to connect to the backend server specified by the HTTP // CONNECT request. -static void on_server_connect_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_server_connect_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; if (error != GRPC_ERROR_NONE) { // TODO(roth): Technically, in this case, we should handle the error @@ -292,7 +276,7 @@ static void on_server_connect_done(grpc_exec_ctx* exec_ctx, void* arg, // connection failed. However, for the purposes of this test code, // it's fine to pretend this is a client-side error, which will // cause the client connection to be dropped. - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy server connect", error); return; } @@ -302,8 +286,7 @@ static void on_server_connect_done(grpc_exec_ctx* exec_ctx, void* arg, grpc_slice slice = grpc_slice_from_copied_string("HTTP/1.0 200 connected\r\n\r\n"); grpc_slice_buffer_add(&conn->client_write_buffer, slice); - grpc_endpoint_write(exec_ctx, conn->client_endpoint, - &conn->client_write_buffer, + grpc_endpoint_write(conn->client_endpoint, &conn->client_write_buffer, &conn->on_write_response_done); } @@ -312,8 +295,7 @@ static void on_server_connect_done(grpc_exec_ctx* exec_ctx, void* arg, * Basic <base64_encoded_expected_cred> * Returns true if it matches, false otherwise */ -static bool proxy_auth_header_matches(grpc_exec_ctx* exec_ctx, - char* proxy_auth_header_val, +static bool proxy_auth_header_matches(char* proxy_auth_header_val, char* expected_cred) { GPR_ASSERT(proxy_auth_header_val != NULL); GPR_ASSERT(expected_cred != NULL); @@ -321,11 +303,10 @@ static bool proxy_auth_header_matches(grpc_exec_ctx* exec_ctx, return false; } proxy_auth_header_val += 6; - grpc_slice decoded_slice = - grpc_base64_decode(exec_ctx, proxy_auth_header_val, 0); + grpc_slice decoded_slice = grpc_base64_decode(proxy_auth_header_val, 0); const bool header_matches = grpc_slice_str_cmp(decoded_slice, expected_cred) == 0; - grpc_slice_unref_internal(exec_ctx, decoded_slice); + grpc_slice_unref_internal(decoded_slice); return header_matches; } @@ -335,13 +316,12 @@ static bool proxy_auth_header_matches(grpc_exec_ctx* exec_ctx, // the client indicating that the request failed. However, for the purposes // of this test code, it's fine to pretend this is a client-side error, // which will cause the client connection to be dropped. -static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void on_read_request_done(void* arg, grpc_error* error) { proxy_connection* conn = (proxy_connection*)arg; gpr_log(GPR_DEBUG, "on_read_request_done: %p %s", conn, grpc_error_string(error)); if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy read request", error); return; } @@ -351,7 +331,7 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg, error = grpc_http_parser_parse(&conn->http_parser, conn->client_read_buffer.slices[i], NULL); if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy request parse", error); GRPC_ERROR_UNREF(error); return; @@ -361,8 +341,8 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg, grpc_slice_buffer_reset_and_unref(&conn->client_read_buffer); // If we're not done reading the request, read more data. if (conn->http_parser.state != GRPC_HTTP_BODY) { - grpc_endpoint_read(exec_ctx, conn->client_endpoint, - &conn->client_read_buffer, &conn->on_read_request_done); + grpc_endpoint_read(conn->client_endpoint, &conn->client_read_buffer, + &conn->on_read_request_done); return; } // Make sure we got a CONNECT request. @@ -372,7 +352,7 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg, conn->http_request.method); error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg); gpr_free(msg); - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy read request", error); GRPC_ERROR_UNREF(error); return; @@ -385,15 +365,14 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg, for (size_t i = 0; i < conn->http_request.hdr_count; i++) { if (strcmp(conn->http_request.hdrs[i].key, "Proxy-Authorization") == 0) { client_authenticated = proxy_auth_header_matches( - exec_ctx, conn->http_request.hdrs[i].value, - proxy_auth_arg->value.string); + conn->http_request.hdrs[i].value, proxy_auth_arg->value.string); break; } } if (!client_authenticated) { const char* msg = "HTTP Connect could not verify authentication"; error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(msg); - proxy_connection_failed(exec_ctx, conn, true /* is_client */, + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy read request", error); GRPC_ERROR_UNREF(error); return; @@ -404,24 +383,23 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg, error = grpc_blocking_resolve_address(conn->http_request.path, "80", &resolved_addresses); if (error != GRPC_ERROR_NONE) { - proxy_connection_failed(exec_ctx, conn, true /* is_client */, - "HTTP proxy DNS lookup", error); + proxy_connection_failed(conn, true /* is_client */, "HTTP proxy DNS lookup", + error); GRPC_ERROR_UNREF(error); return; } GPR_ASSERT(resolved_addresses->naddrs >= 1); // Connect to requested address. // The connection callback inherits our reference to conn. - const grpc_millis deadline = - grpc_exec_ctx_now(exec_ctx) + 10 * GPR_MS_PER_SEC; - grpc_tcp_client_connect(exec_ctx, &conn->on_server_connect_done, - &conn->server_endpoint, conn->pollset_set, NULL, + const grpc_millis deadline = grpc_exec_ctx_now() + 10 * GPR_MS_PER_SEC; + grpc_tcp_client_connect(&conn->on_server_connect_done, &conn->server_endpoint, + conn->pollset_set, NULL, &resolved_addresses->addrs[0], deadline); grpc_resolved_addresses_destroy(resolved_addresses); } -static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, - grpc_endpoint* endpoint, grpc_pollset* accepting_pollset, +static void on_accept(void* arg, grpc_endpoint* endpoint, + grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor) { gpr_free(acceptor); grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)arg; @@ -432,8 +410,8 @@ static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, conn->proxy = proxy; gpr_ref_init(&conn->refcount, 1); conn->pollset_set = grpc_pollset_set_create(); - grpc_pollset_set_add_pollset(exec_ctx, conn->pollset_set, proxy->pollset); - grpc_endpoint_add_to_pollset_set(exec_ctx, endpoint, conn->pollset_set); + grpc_pollset_set_add_pollset(conn->pollset_set, proxy->pollset); + grpc_endpoint_add_to_pollset_set(endpoint, conn->pollset_set); GRPC_CLOSURE_INIT(&conn->on_read_request_done, on_read_request_done, conn, grpc_combiner_scheduler(conn->proxy->combiner)); GRPC_CLOSURE_INIT(&conn->on_server_connect_done, on_server_connect_done, conn, @@ -456,7 +434,7 @@ static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, grpc_slice_buffer_init(&conn->server_write_buffer); grpc_http_parser_init(&conn->http_parser, GRPC_HTTP_REQUEST, &conn->http_request); - grpc_endpoint_read(exec_ctx, conn->client_endpoint, &conn->client_read_buffer, + grpc_endpoint_read(conn->client_endpoint, &conn->client_read_buffer, &conn->on_read_request_done); } @@ -466,24 +444,23 @@ static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, static void thread_main(void* arg) { grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)arg; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; do { gpr_ref(&proxy->users); grpc_pollset_worker* worker = NULL; gpr_mu_lock(proxy->mu); - GRPC_LOG_IF_ERROR( - "grpc_pollset_work", - grpc_pollset_work(&exec_ctx, proxy->pollset, &worker, - grpc_exec_ctx_now(&exec_ctx) + GPR_MS_PER_SEC)); + GRPC_LOG_IF_ERROR("grpc_pollset_work", + grpc_pollset_work(proxy->pollset, &worker, + grpc_exec_ctx_now() + GPR_MS_PER_SEC)); gpr_mu_unlock(proxy->mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } while (!gpr_unref(&proxy->users)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( grpc_channel_args* args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)gpr_malloc(sizeof(*proxy)); memset(proxy, 0, sizeof(*proxy)); @@ -495,8 +472,8 @@ grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( gpr_log(GPR_INFO, "Proxy address: %s", proxy->proxy_name); // Create TCP server. proxy->channel_args = grpc_channel_args_copy(args); - grpc_error* error = grpc_tcp_server_create( - &exec_ctx, NULL, proxy->channel_args, &proxy->server); + grpc_error* error = + grpc_tcp_server_create(NULL, proxy->channel_args, &proxy->server); GPR_ASSERT(error == GRPC_ERROR_NONE); // Bind to port. grpc_resolved_address resolved_addr; @@ -511,9 +488,8 @@ grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( // Start server. proxy->pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(proxy->pollset, &proxy->mu); - grpc_tcp_server_start(&exec_ctx, proxy->server, &proxy->pollset, 1, on_accept, - proxy); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_start(proxy->server, &proxy->pollset, 1, on_accept, proxy); + grpc_exec_ctx_finish(); // Start proxy thread. gpr_thd_options opt = gpr_thd_options_default(); gpr_thd_options_set_joinable(&opt); @@ -521,27 +497,26 @@ grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( return proxy; } -static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { +static void destroy_pollset(void* arg, grpc_error* error) { grpc_pollset* pollset = (grpc_pollset*)arg; - grpc_pollset_destroy(exec_ctx, pollset); + grpc_pollset_destroy(pollset); gpr_free(pollset); } void grpc_end2end_http_proxy_destroy(grpc_end2end_http_proxy* proxy) { gpr_unref(&proxy->users); // Signal proxy thread to shutdown. - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_thd_join(proxy->thd); - grpc_tcp_server_shutdown_listeners(&exec_ctx, proxy->server); - grpc_tcp_server_unref(&exec_ctx, proxy->server); + grpc_tcp_server_shutdown_listeners(proxy->server); + grpc_tcp_server_unref(proxy->server); gpr_free(proxy->proxy_name); - grpc_channel_args_destroy(&exec_ctx, proxy->channel_args); - grpc_pollset_shutdown(&exec_ctx, proxy->pollset, + grpc_channel_args_destroy(proxy->channel_args); + grpc_pollset_shutdown(proxy->pollset, GRPC_CLOSURE_CREATE(destroy_pollset, proxy->pollset, grpc_schedule_on_exec_ctx)); - GRPC_COMBINER_UNREF(&exec_ctx, proxy->combiner, "test"); + GRPC_COMBINER_UNREF(proxy->combiner, "test"); gpr_free(proxy); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } const char* grpc_end2end_http_proxy_get_proxy_name( diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c index 0a787bbf300..5ca8bfccf84 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.c +++ b/test/core/end2end/fuzzers/api_fuzzer.c @@ -371,8 +371,7 @@ typedef struct addr_req { grpc_lb_addresses **lb_addrs; } addr_req; -static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void finish_resolve(void *arg, grpc_error *error) { addr_req *r = arg; if (error == GRPC_ERROR_NONE && 0 == strcmp(r->addr, "server")) { @@ -387,9 +386,9 @@ static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, grpc_lb_addresses_set_address(lb_addrs, 0, NULL, 0, NULL, NULL, NULL); *r->lb_addrs = lb_addrs; } - GRPC_CLOSURE_SCHED(exec_ctx, r->on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(r->on_done, GRPC_ERROR_NONE); } else { - GRPC_CLOSURE_SCHED(exec_ctx, r->on_done, + GRPC_CLOSURE_SCHED(r->on_done, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Resolution failed", &error, 1)); } @@ -398,8 +397,7 @@ static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, gpr_free(r); } -void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr, - const char *default_port, +void my_resolve_address(const char *addr, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addresses) { @@ -409,22 +407,24 @@ void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr, r->addrs = addresses; r->lb_addrs = NULL; grpc_timer_init( - exec_ctx, &r->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(exec_ctx), + &r->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(), GRPC_CLOSURE_CREATE(finish_resolve, r, grpc_schedule_on_exec_ctx)); } -grpc_ares_request *my_dns_lookup_ares( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb, - char **service_config_json) { +grpc_ares_request *my_dns_lookup_ares(const char *dns_server, const char *addr, + const char *default_port, + grpc_pollset_set *interested_parties, + grpc_closure *on_done, + grpc_lb_addresses **lb_addrs, + bool check_grpclb, + char **service_config_json) { addr_req *r = gpr_malloc(sizeof(*r)); r->addr = gpr_strdup(addr); r->on_done = on_done; r->addrs = NULL; r->lb_addrs = lb_addrs; grpc_timer_init( - exec_ctx, &r->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(exec_ctx), + &r->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(), GRPC_CLOSURE_CREATE(finish_resolve, r, grpc_schedule_on_exec_ctx)); return NULL; } @@ -434,12 +434,12 @@ grpc_ares_request *my_dns_lookup_ares( // defined in tcp_client_posix.c extern void (*grpc_tcp_client_connect_impl)( - grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, + grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, gpr_timespec deadline); -static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_endpoint **ep, gpr_timespec deadline); +static void sched_connect(grpc_closure *closure, grpc_endpoint **ep, + gpr_timespec deadline); typedef struct { grpc_timer timer; @@ -448,35 +448,34 @@ typedef struct { gpr_timespec deadline; } future_connect; -static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void do_connect(void *arg, grpc_error *error) { future_connect *fc = arg; if (error != GRPC_ERROR_NONE) { *fc->ep = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, fc->closure, GRPC_ERROR_REF(error)); + GRPC_CLOSURE_SCHED(fc->closure, GRPC_ERROR_REF(error)); } else if (g_server != NULL) { grpc_endpoint *client; grpc_endpoint *server; grpc_passthru_endpoint_create(&client, &server, g_resource_quota, NULL); *fc->ep = client; - grpc_transport *transport = - grpc_create_chttp2_transport(exec_ctx, NULL, server, 0); - grpc_server_setup_transport(exec_ctx, g_server, transport, NULL, NULL); - grpc_chttp2_transport_start_reading(exec_ctx, transport, NULL); + grpc_transport *transport = grpc_create_chttp2_transport(NULL, server, 0); + grpc_server_setup_transport(g_server, transport, NULL, NULL); + grpc_chttp2_transport_start_reading(transport, NULL); - GRPC_CLOSURE_SCHED(exec_ctx, fc->closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(fc->closure, GRPC_ERROR_NONE); } else { - sched_connect(exec_ctx, fc->closure, fc->ep, fc->deadline); + sched_connect(fc->closure, fc->ep, fc->deadline); } gpr_free(fc); } -static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, - grpc_endpoint **ep, gpr_timespec deadline) { +static void sched_connect(grpc_closure *closure, grpc_endpoint **ep, + gpr_timespec deadline) { if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) < 0) { *ep = NULL; - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING( - "Connect deadline exceeded")); + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Connect deadline exceeded")); return; } @@ -485,17 +484,16 @@ static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, fc->ep = ep; fc->deadline = deadline; grpc_timer_init( - exec_ctx, &fc->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(exec_ctx), + &fc->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(), GRPC_CLOSURE_CREATE(do_connect, fc, grpc_schedule_on_exec_ctx)); } -static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx, - grpc_closure *closure, grpc_endpoint **ep, +static void my_tcp_client_connect(grpc_closure *closure, grpc_endpoint **ep, grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args, const grpc_resolved_address *addr, gpr_timespec deadline) { - sched_connect(exec_ctx, closure, ep, deadline); + sched_connect(closure, ep, deadline); } //////////////////////////////////////////////////////////////////////////////// @@ -738,9 +736,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { grpc_init(); grpc_timer_manager_set_threading(false); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_executor_set_threading(&exec_ctx, false); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_executor_set_threading(false); + grpc_exec_ctx_finish(); } grpc_resolve_address = my_resolve_address; grpc_dns_lookup_ares = my_dns_lookup_ares; @@ -832,9 +830,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { g_channel = grpc_insecure_channel_create(target_uri, args, NULL); GPR_ASSERT(g_channel != NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } gpr_free(target_uri); gpr_free(target); @@ -860,9 +858,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { g_server = grpc_server_create(args, NULL); GPR_ASSERT(g_server != NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } grpc_server_register_completion_queue(g_server, cq, NULL); grpc_server_start(g_server); @@ -1186,9 +1184,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { g_channel = grpc_secure_channel_create(creds, target_uri, args, NULL); GPR_ASSERT(g_channel != NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } gpr_free(target_uri); gpr_free(target); diff --git a/test/core/end2end/fuzzers/client_fuzzer.c b/test/core/end2end/fuzzers/client_fuzzer.c index 88ba6bad83c..1aca2ee7584 100644 --- a/test/core/end2end/fuzzers/client_fuzzer.c +++ b/test/core/end2end/fuzzers/client_fuzzer.c @@ -43,22 +43,22 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_executor_set_threading(&exec_ctx, false); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_executor_set_threading(false); grpc_resource_quota *resource_quota = grpc_resource_quota_create("client_fuzzer"); grpc_endpoint *mock_endpoint = grpc_mock_endpoint_create(discard_write, resource_quota); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); grpc_completion_queue *cq = grpc_completion_queue_create_for_next(NULL); grpc_transport *transport = - grpc_create_chttp2_transport(&exec_ctx, NULL, mock_endpoint, 1); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + grpc_create_chttp2_transport(NULL, mock_endpoint, 1); + grpc_chttp2_transport_start_reading(transport, NULL); grpc_channel *channel = grpc_channel_create( - &exec_ctx, "test-target", NULL, GRPC_CLIENT_DIRECT_CHANNEL, transport); + "test-target", NULL, GRPC_CLIENT_DIRECT_CHANNEL, transport); grpc_slice host = grpc_slice_from_static_string("localhost"); grpc_call *call = grpc_channel_create_call( channel, NULL, 0, cq, grpc_slice_from_static_string("/foo"), &host, @@ -107,12 +107,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { GPR_ASSERT(GRPC_CALL_OK == error); grpc_mock_endpoint_put_read( - &exec_ctx, mock_endpoint, - grpc_slice_from_copied_buffer((const char *)data, size)); + mock_endpoint, grpc_slice_from_copied_buffer((const char *)data, size)); grpc_event ev; while (1) { - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); switch (ev.type) { case GRPC_QUEUE_TIMEOUT: diff --git a/test/core/end2end/fuzzers/server_fuzzer.c b/test/core/end2end/fuzzers/server_fuzzer.c index ef4c0a4bfda..bbeeba8550e 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.c +++ b/test/core/end2end/fuzzers/server_fuzzer.c @@ -41,17 +41,16 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_executor_set_threading(&exec_ctx, false); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_executor_set_threading(false); grpc_resource_quota *resource_quota = grpc_resource_quota_create("server_fuzzer"); grpc_endpoint *mock_endpoint = grpc_mock_endpoint_create(discard_write, resource_quota); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); grpc_mock_endpoint_put_read( - &exec_ctx, mock_endpoint, - grpc_slice_from_copied_buffer((const char *)data, size)); + mock_endpoint, grpc_slice_from_copied_buffer((const char *)data, size)); grpc_server *server = grpc_server_create(NULL, NULL); grpc_completion_queue *cq = grpc_completion_queue_create_for_next(NULL); @@ -61,9 +60,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // grpc_server_register_method(server, "/reg", NULL, 0); grpc_server_start(server); grpc_transport *transport = - grpc_create_chttp2_transport(&exec_ctx, NULL, mock_endpoint, 0); - grpc_server_setup_transport(&exec_ctx, server, transport, NULL, NULL); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + grpc_create_chttp2_transport(NULL, mock_endpoint, 0); + grpc_server_setup_transport(server, transport, NULL, NULL); + grpc_chttp2_transport_start_reading(transport, NULL); grpc_call *call1 = NULL; grpc_call_details call_details1; @@ -79,7 +78,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { grpc_event ev; while (1) { - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); switch (ev.type) { case GRPC_QUEUE_TIMEOUT: diff --git a/test/core/end2end/goaway_server_test.c b/test/core/end2end/goaway_server_test.c index c3aca132495..8deeda7c837 100644 --- a/test/core/end2end/goaway_server_test.c +++ b/test/core/end2end/goaway_server_test.c @@ -39,16 +39,15 @@ static void *tag(intptr_t i) { return (void *)i; } static gpr_mu g_mu; static int g_resolve_port = -1; -static void (*iomgr_resolve_address)(grpc_exec_ctx *exec_ctx, const char *addr, - const char *default_port, +static void (*iomgr_resolve_address)(const char *addr, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addresses); static grpc_ares_request *(*iomgr_dns_lookup_ares)( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **addresses, bool check_grpclb, + const char *dns_server, const char *addr, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **addresses, bool check_grpclb, char **service_config_json); static void set_resolve_port(int port) { @@ -57,14 +56,13 @@ static void set_resolve_port(int port) { gpr_mu_unlock(&g_mu); } -static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr, - const char *default_port, +static void my_resolve_address(const char *addr, const char *default_port, grpc_pollset_set *interested_parties, grpc_closure *on_done, grpc_resolved_addresses **addrs) { if (0 != strcmp(addr, "test")) { - iomgr_resolve_address(exec_ctx, addr, default_port, interested_parties, - on_done, addrs); + iomgr_resolve_address(addr, default_port, interested_parties, on_done, + addrs); return; } @@ -85,16 +83,16 @@ static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr, (*addrs)->addrs[0].len = sizeof(*sa); gpr_mu_unlock(&g_mu); } - GRPC_CLOSURE_SCHED(exec_ctx, on_done, error); + GRPC_CLOSURE_SCHED(on_done, error); } static grpc_ares_request *my_dns_lookup_ares( - grpc_exec_ctx *exec_ctx, const char *dns_server, const char *addr, - const char *default_port, grpc_pollset_set *interested_parties, - grpc_closure *on_done, grpc_lb_addresses **lb_addrs, bool check_grpclb, + const char *dns_server, const char *addr, const char *default_port, + grpc_pollset_set *interested_parties, grpc_closure *on_done, + grpc_lb_addresses **lb_addrs, bool check_grpclb, char **service_config_json) { if (0 != strcmp(addr, "test")) { - return iomgr_dns_lookup_ares(exec_ctx, dns_server, addr, default_port, + return iomgr_dns_lookup_ares(dns_server, addr, default_port, interested_parties, on_done, lb_addrs, check_grpclb, service_config_json); } @@ -115,7 +113,7 @@ static grpc_ares_request *my_dns_lookup_ares( gpr_free(sa); gpr_mu_unlock(&g_mu); } - GRPC_CLOSURE_SCHED(exec_ctx, on_done, error); + GRPC_CLOSURE_SCHED(on_done, error); return NULL; } diff --git a/test/core/end2end/h2_ssl_cert_test.cc b/test/core/end2end/h2_ssl_cert_test.cc index 6da5e8396ef..fa9f5cc40c0 100644 --- a/test/core/end2end/h2_ssl_cert_test.cc +++ b/test/core/end2end/h2_ssl_cert_test.cc @@ -185,9 +185,9 @@ typedef enum { NONE, SELF_SIGNED, SIGNED, BAD_CERT_PAIR } certtype; grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); \ chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); \ { \ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; \ - grpc_channel_args_destroy(&exec_ctx, new_client_args); \ - grpc_exec_ctx_finish(&exec_ctx); \ + ExecCtx _local_exec_ctx; \ + grpc_channel_args_destroy(new_client_args); \ + grpc_exec_ctx_finish(); \ } \ } diff --git a/test/core/end2end/tests/cancel_after_accept.c b/test/core/end2end/tests/cancel_after_accept.cc similarity index 97% rename from test/core/end2end/tests/cancel_after_accept.c rename to test/core/end2end/tests/cancel_after_accept.cc index c3ac0c32015..042353b95a9 100644 --- a/test/core/end2end/tests/cancel_after_accept.c +++ b/test/core/end2end/tests/cancel_after_accept.cc @@ -125,8 +125,8 @@ static void test_cancel_after_accept(grpc_end2end_test_config config, if (use_service_config) { grpc_arg arg; arg.type = GRPC_ARG_STRING; - arg.key = GRPC_ARG_SERVICE_CONFIG; - arg.value.string = + arg.key = (char *)GRPC_ARG_SERVICE_CONFIG; + arg.value.string = (char *) "{\n" " \"methodConfig\": [ {\n" " \"name\": [\n" @@ -244,9 +244,9 @@ static void test_cancel_after_accept(grpc_end2end_test_config config, grpc_call_unref(s); if (args != NULL) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } cq_verifier_destroy(cqv); diff --git a/test/core/end2end/tests/cancel_after_round_trip.c b/test/core/end2end/tests/cancel_after_round_trip.cc similarity index 98% rename from test/core/end2end/tests/cancel_after_round_trip.c rename to test/core/end2end/tests/cancel_after_round_trip.cc index bc41bd3a6d5..d45461b9f3e 100644 --- a/test/core/end2end/tests/cancel_after_round_trip.c +++ b/test/core/end2end/tests/cancel_after_round_trip.cc @@ -127,8 +127,8 @@ static void test_cancel_after_round_trip(grpc_end2end_test_config config, if (use_service_config) { grpc_arg arg; arg.type = GRPC_ARG_STRING; - arg.key = GRPC_ARG_SERVICE_CONFIG; - arg.value.string = + arg.key = (char *)GRPC_ARG_SERVICE_CONFIG; + arg.value.string = (char *) "{\n" " \"methodConfig\": [ {\n" " \"name\": [\n" @@ -277,9 +277,9 @@ static void test_cancel_after_round_trip(grpc_end2end_test_config config, grpc_call_unref(s); if (args != NULL) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(args); + grpc_exec_ctx_finish(); } cq_verifier_destroy(cqv); diff --git a/test/core/end2end/tests/compressed_payload.c b/test/core/end2end/tests/compressed_payload.cc similarity index 97% rename from test/core/end2end/tests/compressed_payload.c rename to test/core/end2end/tests/compressed_payload.cc index ba03773036b..a80ac779e31 100644 --- a/test/core/end2end/tests/compressed_payload.c +++ b/test/core/end2end/tests/compressed_payload.cc @@ -129,10 +129,10 @@ static void request_for_disabled_algorithm( server_args = grpc_channel_args_set_compression_algorithm(NULL, GRPC_COMPRESS_NONE); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; server_args = grpc_channel_args_compression_algorithm_set_state( - &exec_ctx, &server_args, algorithm_to_disable, false); - grpc_exec_ctx_finish(&exec_ctx); + &server_args, algorithm_to_disable, false); + grpc_exec_ctx_finish(); } f = begin_test(config, test_name, client_args, server_args); @@ -257,10 +257,10 @@ static void request_for_disabled_algorithm( grpc_byte_buffer_destroy(request_payload_recv); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } end_test(&f); @@ -536,10 +536,10 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } end_test(&f); diff --git a/test/core/end2end/tests/filter_call_init_fails.c b/test/core/end2end/tests/filter_call_init_fails.cc similarity index 95% rename from test/core/end2end/tests/filter_call_init_fails.c rename to test/core/end2end/tests/filter_call_init_fails.cc index 09e9dbcd7bb..7595ccb72ed 100644 --- a/test/core/end2end/tests/filter_call_init_fails.c +++ b/test/core/end2end/tests/filter_call_init_fails.cc @@ -399,26 +399,23 @@ static void test_client_subchannel_filter(grpc_end2end_test_config config) { * Test filter - always fails to initialize a call */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { return grpc_error_set_int( GRPC_ERROR_CREATE_FROM_STATIC_STRING("access denied"), GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_PERMISSION_DENIED); } -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) {} -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} static const grpc_channel_filter test_filter = { grpc_call_next_op, @@ -437,8 +434,7 @@ static const grpc_channel_filter test_filter = { * Registration */ -static bool maybe_add_server_channel_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool maybe_add_server_channel_filter(grpc_channel_stack_builder *builder, void *arg) { if (g_enable_server_channel_filter) { // Want to add the filter as close to the end as possible, to make @@ -457,8 +453,7 @@ static bool maybe_add_server_channel_filter(grpc_exec_ctx *exec_ctx, } } -static bool maybe_add_client_channel_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, +static bool maybe_add_client_channel_filter(grpc_channel_stack_builder *builder, void *arg) { if (g_enable_client_channel_filter) { // Want to add the filter as close to the end as possible, to make @@ -478,7 +473,7 @@ static bool maybe_add_client_channel_filter(grpc_exec_ctx *exec_ctx, } static bool maybe_add_client_subchannel_filter( - grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder, void *arg) { + grpc_channel_stack_builder *builder, void *arg) { if (g_enable_client_subchannel_filter) { // Want to add the filter as close to the end as possible, to make // sure that all of the filters work well together. However, we diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.cc similarity index 90% rename from test/core/end2end/tests/filter_causes_close.c rename to test/core/end2end/tests/filter_causes_close.cc index ee7aeb3f333..cf84cbb279c 100644 --- a/test/core/end2end/tests/filter_causes_close.c +++ b/test/core/end2end/tests/filter_causes_close.cc @@ -193,12 +193,11 @@ typedef struct { grpc_closure *recv_im_ready; } call_data; typedef struct { uint8_t unused; } channel_data; -static void recv_im_ready(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void recv_im_ready(void *arg, grpc_error *error) { grpc_call_element *elem = (grpc_call_element *)arg; call_data *calld = (call_data *)elem->call_data; GRPC_CLOSURE_RUN( - exec_ctx, calld->recv_im_ready, + calld->recv_im_ready, grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Failure that's not preventable.", &error, 1), GRPC_ERROR_INT_GRPC_STATUS, @@ -206,8 +205,7 @@ static void recv_im_ready(grpc_exec_ctx *exec_ctx, void *arg, } static void start_transport_stream_op_batch( - grpc_exec_ctx *exec_ctx, grpc_call_element *elem, - grpc_transport_stream_op_batch *op) { + grpc_call_element *elem, grpc_transport_stream_op_batch *op) { call_data *calld = (call_data *)elem->call_data; if (op->recv_initial_metadata) { calld->recv_im_ready = @@ -215,27 +213,24 @@ static void start_transport_stream_op_batch( op->payload->recv_initial_metadata.recv_initial_metadata_ready = GRPC_CLOSURE_CREATE(recv_im_ready, elem, grpc_schedule_on_exec_ctx); } - grpc_call_next_op(exec_ctx, elem, op); + grpc_call_next_op(elem, op); } -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { return GRPC_ERROR_NONE; } -static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) {} -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} static const grpc_channel_filter test_filter = { start_transport_stream_op_batch, @@ -254,8 +249,7 @@ static const grpc_channel_filter test_filter = { * Registration */ -static bool maybe_add_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, void *arg) { +static bool maybe_add_filter(grpc_channel_stack_builder *builder, void *arg) { if (g_enable_filter) { return grpc_channel_stack_builder_prepend_filter(builder, &test_filter, NULL, NULL); diff --git a/test/core/end2end/tests/filter_latency.c b/test/core/end2end/tests/filter_latency.cc similarity index 94% rename from test/core/end2end/tests/filter_latency.c rename to test/core/end2end/tests/filter_latency.cc index c24934f05d5..693c400e43c 100644 --- a/test/core/end2end/tests/filter_latency.c +++ b/test/core/end2end/tests/filter_latency.cc @@ -247,14 +247,12 @@ static void test_request(grpc_end2end_test_config config) { * Test latency filter */ -static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *init_call_elem(grpc_call_element *elem, const grpc_call_element_args *args) { return GRPC_ERROR_NONE; } -static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void client_destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { gpr_mu_lock(&g_mu); @@ -262,8 +260,7 @@ static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx, gpr_mu_unlock(&g_mu); } -static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void server_destroy_call_elem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *ignored) { gpr_mu_lock(&g_mu); @@ -271,14 +268,12 @@ static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx, gpr_mu_unlock(&g_mu); } -static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static grpc_error *init_channel_elem(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem) {} +static void destroy_channel_elem(grpc_channel_element *elem) {} static const grpc_channel_filter test_client_filter = { grpc_call_next_op, @@ -310,8 +305,7 @@ static const grpc_channel_filter test_server_filter = { * Registration */ -static bool maybe_add_filter(grpc_exec_ctx *exec_ctx, - grpc_channel_stack_builder *builder, void *arg) { +static bool maybe_add_filter(grpc_channel_stack_builder *builder, void *arg) { grpc_channel_filter *filter = (grpc_channel_filter *)arg; if (g_enable_filter) { // Want to add the filter as close to the end as possible, to make diff --git a/test/core/end2end/tests/keepalive_timeout.c b/test/core/end2end/tests/keepalive_timeout.c index 0053368eccf..b6e5776d121 100644 --- a/test/core/end2end/tests/keepalive_timeout.c +++ b/test/core/end2end/tests/keepalive_timeout.c @@ -28,7 +28,7 @@ #include <grpc/support/useful.h> #include "src/core/ext/transport/chttp2/transport/frame_ping.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/iomgr/exec_ctx.h" +//#include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/support/env.h" #include "test/core/end2end/cq_verifier.h" diff --git a/test/core/end2end/tests/load_reporting_hook.c b/test/core/end2end/tests/load_reporting_hook.cc similarity index 98% rename from test/core/end2end/tests/load_reporting_hook.c rename to test/core/end2end/tests/load_reporting_hook.cc index 7b503790db3..d9f7549fa30 100644 --- a/test/core/end2end/tests/load_reporting_hook.c +++ b/test/core/end2end/tests/load_reporting_hook.cc @@ -300,9 +300,9 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) { &trailing_lr_metadata); end_test(&f); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, lr_server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(lr_server_args); + grpc_exec_ctx_finish(); } config.tear_down_data(&f); } diff --git a/test/core/end2end/tests/max_message_length.c b/test/core/end2end/tests/max_message_length.cc similarity index 84% rename from test/core/end2end/tests/max_message_length.c rename to test/core/end2end/tests/max_message_length.cc index 01eb8d365e6..508ce8bdcda 100644 --- a/test/core/end2end/tests/max_message_length.c +++ b/test/core/end2end/tests/max_message_length.cc @@ -132,31 +132,32 @@ static void test_max_message_length_on_request(grpc_end2end_test_config config, GPR_ASSERT(send_limit); grpc_arg arg; arg.type = GRPC_ARG_STRING; - arg.key = GRPC_ARG_SERVICE_CONFIG; - arg.value.string = - use_string_json_value - ? "{\n" - " \"methodConfig\": [ {\n" - " \"name\": [\n" - " { \"service\": \"service\", \"method\": \"method\" }\n" - " ],\n" - " \"maxRequestMessageBytes\": \"5\"\n" - " } ]\n" - "}" - : "{\n" - " \"methodConfig\": [ {\n" - " \"name\": [\n" - " { \"service\": \"service\", \"method\": \"method\" }\n" - " ],\n" - " \"maxRequestMessageBytes\": 5\n" - " } ]\n" - "}"; + arg.key = (char *)GRPC_ARG_SERVICE_CONFIG; + arg.value.string = (char *)(use_string_json_value + ? "{\n" + " \"methodConfig\": [ {\n" + " \"name\": [\n" + " { \"service\": \"service\", " + "\"method\": \"method\" }\n" + " ],\n" + " \"maxRequestMessageBytes\": \"5\"\n" + " } ]\n" + "}" + : "{\n" + " \"methodConfig\": [ {\n" + " \"name\": [\n" + " { \"service\": \"service\", " + "\"method\": \"method\" }\n" + " ],\n" + " \"maxRequestMessageBytes\": 5\n" + " } ]\n" + "}"); client_args = grpc_channel_args_copy_and_add(NULL, &arg, 1); } else { // Set limit via channel args. grpc_arg arg; - arg.key = send_limit ? GRPC_ARG_MAX_SEND_MESSAGE_LENGTH - : GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH; + arg.key = (char *)(send_limit ? GRPC_ARG_MAX_SEND_MESSAGE_LENGTH + : GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH); arg.type = GRPC_ARG_INTEGER; arg.value.integer = 5; grpc_channel_args *args = grpc_channel_args_copy_and_add(NULL, &arg, 1); @@ -170,10 +171,10 @@ static void test_max_message_length_on_request(grpc_end2end_test_config config, f = begin_test(config, "test_max_request_message_length", client_args, server_args); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - if (client_args != NULL) grpc_channel_args_destroy(&exec_ctx, client_args); - if (server_args != NULL) grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + if (client_args != NULL) grpc_channel_args_destroy(client_args); + if (server_args != NULL) grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } cqv = cq_verifier_create(f.cq); @@ -322,31 +323,32 @@ static void test_max_message_length_on_response(grpc_end2end_test_config config, GPR_ASSERT(!send_limit); grpc_arg arg; arg.type = GRPC_ARG_STRING; - arg.key = GRPC_ARG_SERVICE_CONFIG; - arg.value.string = - use_string_json_value - ? "{\n" - " \"methodConfig\": [ {\n" - " \"name\": [\n" - " { \"service\": \"service\", \"method\": \"method\" }\n" - " ],\n" - " \"maxResponseMessageBytes\": \"5\"\n" - " } ]\n" - "}" - : "{\n" - " \"methodConfig\": [ {\n" - " \"name\": [\n" - " { \"service\": \"service\", \"method\": \"method\" }\n" - " ],\n" - " \"maxResponseMessageBytes\": 5\n" - " } ]\n" - "}"; + arg.key = (char *)GRPC_ARG_SERVICE_CONFIG; + arg.value.string = (char *)(use_string_json_value + ? "{\n" + " \"methodConfig\": [ {\n" + " \"name\": [\n" + " { \"service\": \"service\", " + "\"method\": \"method\" }\n" + " ],\n" + " \"maxResponseMessageBytes\": \"5\"\n" + " } ]\n" + "}" + : "{\n" + " \"methodConfig\": [ {\n" + " \"name\": [\n" + " { \"service\": \"service\", " + "\"method\": \"method\" }\n" + " ],\n" + " \"maxResponseMessageBytes\": 5\n" + " } ]\n" + "}"); client_args = grpc_channel_args_copy_and_add(NULL, &arg, 1); } else { // Set limit via channel args. grpc_arg arg; - arg.key = send_limit ? GRPC_ARG_MAX_SEND_MESSAGE_LENGTH - : GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH; + arg.key = (char *)(send_limit ? GRPC_ARG_MAX_SEND_MESSAGE_LENGTH + : GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH); arg.type = GRPC_ARG_INTEGER; arg.value.integer = 5; grpc_channel_args *args = grpc_channel_args_copy_and_add(NULL, &arg, 1); @@ -360,10 +362,10 @@ static void test_max_message_length_on_response(grpc_end2end_test_config config, f = begin_test(config, "test_max_response_message_length", client_args, server_args); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - if (client_args != NULL) grpc_channel_args_destroy(&exec_ctx, client_args); - if (server_args != NULL) grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + if (client_args != NULL) grpc_channel_args_destroy(client_args); + if (server_args != NULL) grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } cqv = cq_verifier_create(f.cq); diff --git a/test/core/end2end/tests/request_with_flags.c b/test/core/end2end/tests/request_with_flags.cc similarity index 100% rename from test/core/end2end/tests/request_with_flags.c rename to test/core/end2end/tests/request_with_flags.cc diff --git a/test/core/end2end/tests/stream_compression_compressed_payload.c b/test/core/end2end/tests/stream_compression_compressed_payload.cc similarity index 97% rename from test/core/end2end/tests/stream_compression_compressed_payload.c rename to test/core/end2end/tests/stream_compression_compressed_payload.cc index 8b47741cd40..e79bb95d955 100644 --- a/test/core/end2end/tests/stream_compression_compressed_payload.c +++ b/test/core/end2end/tests/stream_compression_compressed_payload.cc @@ -129,10 +129,10 @@ static void request_for_disabled_algorithm( server_args = grpc_channel_args_set_stream_compression_algorithm( NULL, GRPC_STREAM_COMPRESS_NONE); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; server_args = grpc_channel_args_stream_compression_algorithm_set_state( - &exec_ctx, &server_args, algorithm_to_disable, false); - grpc_exec_ctx_finish(&exec_ctx); + &server_args, algorithm_to_disable, false); + grpc_exec_ctx_finish(); } f = begin_test(config, test_name, client_args, server_args); @@ -258,10 +258,10 @@ static void request_for_disabled_algorithm( grpc_byte_buffer_destroy(request_payload_recv); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } end_test(&f); @@ -544,10 +544,10 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } end_test(&f); diff --git a/test/core/end2end/tests/stream_compression_payload.c b/test/core/end2end/tests/stream_compression_payload.cc similarity index 98% rename from test/core/end2end/tests/stream_compression_payload.c rename to test/core/end2end/tests/stream_compression_payload.cc index e47d2aa93c3..bcde2a04c99 100644 --- a/test/core/end2end/tests/stream_compression_payload.c +++ b/test/core/end2end/tests/stream_compression_payload.cc @@ -278,10 +278,10 @@ static void test_invoke_request_response_with_payload( end_test(&f); config.tear_down_data(&f); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/tests/stream_compression_ping_pong_streaming.c b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc similarity index 97% rename from test/core/end2end/tests/stream_compression_ping_pong_streaming.c rename to test/core/end2end/tests/stream_compression_ping_pong_streaming.cc index 4c1a34cc648..2c42b593e2b 100644 --- a/test/core/end2end/tests/stream_compression_ping_pong_streaming.c +++ b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc @@ -273,10 +273,10 @@ static void test_pingpong_streaming(grpc_end2end_test_config config, end_test(&f); config.tear_down_data(&f); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/tests/workaround_cronet_compression.c b/test/core/end2end/tests/workaround_cronet_compression.cc similarity index 95% rename from test/core/end2end/tests/workaround_cronet_compression.c rename to test/core/end2end/tests/workaround_cronet_compression.cc index 44e8e046432..246ccfb3f9c 100644 --- a/test/core/end2end/tests/workaround_cronet_compression.c +++ b/test/core/end2end/tests/workaround_cronet_compression.cc @@ -142,15 +142,15 @@ static void request_with_payload_template( NULL, default_server_channel_compression_algorithm); if (user_agent_override) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_channel_args *client_args_old = client_args; grpc_arg arg; - arg.key = GRPC_ARG_PRIMARY_USER_AGENT_STRING; + arg.key = (char *)GRPC_ARG_PRIMARY_USER_AGENT_STRING; arg.type = GRPC_ARG_STRING; arg.value.string = user_agent_override; client_args = grpc_channel_args_copy_and_add(client_args_old, &arg, 1); - grpc_channel_args_destroy(&exec_ctx, client_args_old); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_args_destroy(client_args_old); + grpc_exec_ctx_finish(); } f = begin_test(config, test_name, client_args, server_args); @@ -349,10 +349,10 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, client_args); - grpc_channel_args_destroy(&exec_ctx, server_args); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_channel_args_destroy(client_args); + grpc_channel_args_destroy(server_args); + grpc_exec_ctx_finish(); } end_test(&f); @@ -366,11 +366,11 @@ typedef struct workaround_cronet_compression_config { static workaround_cronet_compression_config workaround_configs[] = { {NULL, GRPC_COMPRESS_GZIP}, - {"grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; cronet_http; gentle)", + {(char *)"grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; cronet_http; gentle)", GRPC_COMPRESS_NONE}, - {"grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; chttp2; gentle)", + {(char *)"grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; chttp2; gentle)", GRPC_COMPRESS_GZIP}, - {"grpc-objc/1.4.0 grpc-c/3.0.0-dev (ios; cronet_http; gentle)", + {(char *)"grpc-objc/1.4.0 grpc-c/3.0.0-dev (ios; cronet_http; gentle)", GRPC_COMPRESS_GZIP}}; static const size_t workaround_configs_num = sizeof(workaround_configs) / sizeof(*workaround_configs); diff --git a/test/core/http/httpcli_test.c b/test/core/http/httpcli_test.c index cc1c16d695b..de339304d9c 100644 --- a/test/core/http/httpcli_test.c +++ b/test/core/http/httpcli_test.c @@ -40,7 +40,7 @@ static grpc_millis n_seconds_time(int seconds) { grpc_timeout_seconds_to_deadline(seconds)); } -static void on_finish(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_finish(void *arg, grpc_error *error) { const char *expect = "<html><head><title>Hello world!</title></head>" "<body><p>This is a test</p></body></html>"; @@ -53,14 +53,14 @@ static void on_finish(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { g_done = 1; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&g_pops), NULL))); + grpc_pollset_kick(grpc_polling_entity_pollset(&g_pops), NULL))); gpr_mu_unlock(g_mu); } static void test_get(int port) { grpc_httpcli_request req; char *host; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; g_done = 0; gpr_log(GPR_INFO, "test_get"); @@ -77,19 +77,18 @@ static void test_get(int port) { memset(&response, 0, sizeof(response)); grpc_resource_quota *resource_quota = grpc_resource_quota_create("test_get"); grpc_httpcli_get( - &exec_ctx, &g_context, &g_pops, resource_quota, &req, n_seconds_time(15), + &g_context, &g_pops, resource_quota, &req, n_seconds_time(15), GRPC_CLOSURE_CREATE(on_finish, &response, grpc_schedule_on_exec_ctx), &response); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); gpr_mu_lock(g_mu); while (!g_done) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops), - &worker, n_seconds_time(1)))); + "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), + &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -100,7 +99,7 @@ static void test_get(int port) { static void test_post(int port) { grpc_httpcli_request req; char *host; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; g_done = 0; gpr_log(GPR_INFO, "test_post"); @@ -117,20 +116,18 @@ static void test_post(int port) { memset(&response, 0, sizeof(response)); grpc_resource_quota *resource_quota = grpc_resource_quota_create("test_post"); grpc_httpcli_post( - &exec_ctx, &g_context, &g_pops, resource_quota, &req, "hello", 5, - n_seconds_time(15), + &g_context, &g_pops, resource_quota, &req, "hello", 5, n_seconds_time(15), GRPC_CLOSURE_CREATE(on_finish, &response, grpc_schedule_on_exec_ctx), &response); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); gpr_mu_lock(g_mu); while (!g_done) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops), - &worker, n_seconds_time(1)))); + "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), + &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -138,13 +135,13 @@ static void test_post(int port) { grpc_http_response_destroy(&response); } -static void destroy_pops(grpc_exec_ctx *exec_ctx, void *p, grpc_error *error) { - grpc_pollset_destroy(exec_ctx, grpc_polling_entity_pollset(p)); +static void destroy_pops(void *p, grpc_error *error) { + grpc_pollset_destroy(grpc_polling_entity_pollset(p)); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_subprocess *server; char *me = argv[0]; char *lslash = strrchr(me, '/'); @@ -193,12 +190,11 @@ int main(int argc, char **argv) { test_get(port); test_post(port); - grpc_httpcli_context_destroy(&exec_ctx, &g_context); + grpc_httpcli_context_destroy(&g_context); GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&g_pops), - &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(grpc_polling_entity_pollset(&g_pops)); diff --git a/test/core/http/httpscli_test.c b/test/core/http/httpscli_test.c index f8a3cfdd764..dde2fbfd669 100644 --- a/test/core/http/httpscli_test.c +++ b/test/core/http/httpscli_test.c @@ -40,7 +40,7 @@ static grpc_millis n_seconds_time(int seconds) { grpc_timeout_seconds_to_deadline(seconds)); } -static void on_finish(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void on_finish(void *arg, grpc_error *error) { const char *expect = "<html><head><title>Hello world!</title></head>" "<body><p>This is a test</p></body></html>"; @@ -53,14 +53,14 @@ static void on_finish(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { g_done = 1; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&g_pops), NULL))); + grpc_pollset_kick(grpc_polling_entity_pollset(&g_pops), NULL))); gpr_mu_unlock(g_mu); } static void test_get(int port) { grpc_httpcli_request req; char *host; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; g_done = 0; gpr_log(GPR_INFO, "test_get"); @@ -78,19 +78,18 @@ static void test_get(int port) { memset(&response, 0, sizeof(response)); grpc_resource_quota *resource_quota = grpc_resource_quota_create("test_get"); grpc_httpcli_get( - &exec_ctx, &g_context, &g_pops, resource_quota, &req, n_seconds_time(15), + &g_context, &g_pops, resource_quota, &req, n_seconds_time(15), GRPC_CLOSURE_CREATE(on_finish, &response, grpc_schedule_on_exec_ctx), &response); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); gpr_mu_lock(g_mu); while (!g_done) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops), - &worker, n_seconds_time(1)))); + "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), + &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -101,7 +100,7 @@ static void test_get(int port) { static void test_post(int port) { grpc_httpcli_request req; char *host; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; g_done = 0; gpr_log(GPR_INFO, "test_post"); @@ -119,20 +118,18 @@ static void test_post(int port) { memset(&response, 0, sizeof(response)); grpc_resource_quota *resource_quota = grpc_resource_quota_create("test_post"); grpc_httpcli_post( - &exec_ctx, &g_context, &g_pops, resource_quota, &req, "hello", 5, - n_seconds_time(15), + &g_context, &g_pops, resource_quota, &req, "hello", 5, n_seconds_time(15), GRPC_CLOSURE_CREATE(on_finish, &response, grpc_schedule_on_exec_ctx), &response); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); gpr_mu_lock(g_mu); while (!g_done) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops), - &worker, n_seconds_time(1)))); + "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), + &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -140,13 +137,13 @@ static void test_post(int port) { grpc_http_response_destroy(&response); } -static void destroy_pops(grpc_exec_ctx *exec_ctx, void *p, grpc_error *error) { - grpc_pollset_destroy(exec_ctx, grpc_polling_entity_pollset(p)); +static void destroy_pops(void *p, grpc_error *error) { + grpc_pollset_destroy(grpc_polling_entity_pollset(p)); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_subprocess *server; char *me = argv[0]; char *lslash = strrchr(me, '/'); @@ -196,12 +193,11 @@ int main(int argc, char **argv) { test_get(port); test_post(port); - grpc_httpcli_context_destroy(&exec_ctx, &g_context); + grpc_httpcli_context_destroy(&g_context); GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&g_pops), - &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(grpc_polling_entity_pollset(&g_pops)); diff --git a/test/core/iomgr/combiner_test.c b/test/core/iomgr/combiner_test.c index 38f512de0ed..121cbfe41aa 100644 --- a/test/core/iomgr/combiner_test.c +++ b/test/core/iomgr/combiner_test.c @@ -28,13 +28,12 @@ static void test_no_op(void) { gpr_log(GPR_DEBUG, "test_no_op"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_COMBINER_UNREF(&exec_ctx, grpc_combiner_create(), "test_no_op"); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_COMBINER_UNREF(grpc_combiner_create(), "test_no_op"); + grpc_exec_ctx_finish(); } -static void set_event_to_true(grpc_exec_ctx *exec_ctx, void *value, - grpc_error *error) { +static void set_event_to_true(void *value, grpc_error *error) { gpr_event_set(value, (void *)1); } @@ -44,16 +43,15 @@ static void test_execute_one(void) { grpc_combiner *lock = grpc_combiner_create(); gpr_event done; gpr_event_init(&done); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_CLOSURE_SCHED(&exec_ctx, - GRPC_CLOSURE_CREATE(set_event_to_true, &done, + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(set_event_to_true, &done, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); GPR_ASSERT(gpr_event_wait(&done, grpc_timeout_seconds_to_deadline(5)) != NULL); - GRPC_COMBINER_UNREF(&exec_ctx, lock, "test_execute_one"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(lock, "test_execute_one"); + grpc_exec_ctx_finish(); } typedef struct { @@ -67,7 +65,7 @@ typedef struct { size_t value; } ex_args; -static void check_one(grpc_exec_ctx *exec_ctx, void *a, grpc_error *error) { +static void check_one(void *a, grpc_error *error) { ex_args *args = a; GPR_ASSERT(*args->ctr == args->value - 1); *args->ctr = args->value; @@ -76,28 +74,26 @@ static void check_one(grpc_exec_ctx *exec_ctx, void *a, grpc_error *error) { static void execute_many_loop(void *a) { thd_args *args = a; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; size_t n = 1; for (size_t i = 0; i < 10; i++) { for (size_t j = 0; j < 10000; j++) { ex_args *c = gpr_malloc(sizeof(*c)); c->ctr = &args->ctr; c->value = n++; - GRPC_CLOSURE_SCHED(&exec_ctx, - GRPC_CLOSURE_CREATE( + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE( check_one, c, grpc_combiner_scheduler(args->lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } // sleep for a little bit, to test a combiner draining and another thread // picking it up gpr_sleep_until(grpc_timeout_milliseconds_to_deadline(100)); } - GRPC_CLOSURE_SCHED(&exec_ctx, - GRPC_CLOSURE_CREATE(set_event_to_true, &args->done, + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(set_event_to_true, &args->done, grpc_combiner_scheduler(args->lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_execute_many(void) { @@ -119,20 +115,19 @@ static void test_execute_many(void) { gpr_inf_future(GPR_CLOCK_REALTIME)) != NULL); gpr_thd_join(thds[i]); } - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_COMBINER_UNREF(&exec_ctx, lock, "test_execute_many"); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_COMBINER_UNREF(lock, "test_execute_many"); + grpc_exec_ctx_finish(); } static gpr_event got_in_finally; -static void in_finally(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void in_finally(void *arg, grpc_error *error) { gpr_event_set(&got_in_finally, (void *)1); } -static void add_finally(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { - GRPC_CLOSURE_SCHED(exec_ctx, - GRPC_CLOSURE_CREATE(in_finally, arg, +static void add_finally(void *arg, grpc_error *error) { + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(in_finally, arg, grpc_combiner_finally_scheduler(arg)), GRPC_ERROR_NONE); } @@ -141,17 +136,16 @@ static void test_execute_finally(void) { gpr_log(GPR_DEBUG, "test_execute_finally"); grpc_combiner *lock = grpc_combiner_create(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_event_init(&got_in_finally); GRPC_CLOSURE_SCHED( - &exec_ctx, GRPC_CLOSURE_CREATE(add_finally, lock, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); GPR_ASSERT(gpr_event_wait(&got_in_finally, grpc_timeout_seconds_to_deadline(5)) != NULL); - GRPC_COMBINER_UNREF(&exec_ctx, lock, "test_execute_finally"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(lock, "test_execute_finally"); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/iomgr/endpoint_pair_test.c b/test/core/iomgr/endpoint_pair_test.c index f2ce3d0d127..989cc80016c 100644 --- a/test/core/iomgr/endpoint_pair_test.c +++ b/test/core/iomgr/endpoint_pair_test.c @@ -32,7 +32,7 @@ static void clean_up(void) {} static grpc_endpoint_test_fixture create_fixture_endpoint_pair( size_t slice_size) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_endpoint_test_fixture f; grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE, .type = GRPC_ARG_INTEGER, @@ -42,9 +42,9 @@ static grpc_endpoint_test_fixture create_fixture_endpoint_pair( f.client_ep = p.client; f.server_ep = p.server; - grpc_endpoint_add_to_pollset(&exec_ctx, f.client_ep, g_pollset); - grpc_endpoint_add_to_pollset(&exec_ctx, f.server_ep, g_pollset); - grpc_exec_ctx_finish(&exec_ctx); + grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); + grpc_endpoint_add_to_pollset(f.server_ep, g_pollset); + grpc_exec_ctx_finish(); return f; } @@ -53,14 +53,13 @@ static grpc_endpoint_test_config configs[] = { {"tcp/tcp_socketpair", create_fixture_endpoint_pair, clean_up}, }; -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset = gpr_zalloc(grpc_pollset_size()); @@ -68,8 +67,8 @@ int main(int argc, char **argv) { grpc_endpoint_tests(configs[0], g_pollset, g_mu); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/endpoint_tests.c b/test/core/iomgr/endpoint_tests.cc similarity index 75% rename from test/core/iomgr/endpoint_tests.c rename to test/core/iomgr/endpoint_tests.cc index 61e901f6455..a6ac24a2615 100644 --- a/test/core/iomgr/endpoint_tests.c +++ b/test/core/iomgr/endpoint_tests.cc @@ -115,8 +115,7 @@ struct read_and_write_test_state { grpc_closure done_write; }; -static void read_and_write_test_read_handler(grpc_exec_ctx *exec_ctx, - void *data, grpc_error *error) { +static void read_and_write_test_read_handler(void *data, grpc_error *error) { struct read_and_write_test_state *state = (struct read_and_write_test_state *)data; @@ -126,17 +125,14 @@ static void read_and_write_test_read_handler(grpc_exec_ctx *exec_ctx, gpr_log(GPR_INFO, "Read handler done"); gpr_mu_lock(g_mu); state->read_done = 1 + (error == GRPC_ERROR_NONE); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL)); gpr_mu_unlock(g_mu); } else if (error == GRPC_ERROR_NONE) { - grpc_endpoint_read(exec_ctx, state->read_ep, &state->incoming, - &state->done_read); + grpc_endpoint_read(state->read_ep, &state->incoming, &state->done_read); } } -static void read_and_write_test_write_handler(grpc_exec_ctx *exec_ctx, - void *data, grpc_error *error) { +static void read_and_write_test_write_handler(void *data, grpc_error *error) { struct read_and_write_test_state *state = (struct read_and_write_test_state *)data; grpc_slice *slices = NULL; @@ -153,7 +149,7 @@ static void read_and_write_test_write_handler(grpc_exec_ctx *exec_ctx, &state->current_write_data); grpc_slice_buffer_reset_and_unref(&state->outgoing); grpc_slice_buffer_addn(&state->outgoing, slices, nslices); - grpc_endpoint_write(exec_ctx, state->write_ep, &state->outgoing, + grpc_endpoint_write(state->write_ep, &state->outgoing, &state->done_write); gpr_free(slices); return; @@ -163,8 +159,7 @@ static void read_and_write_test_write_handler(grpc_exec_ctx *exec_ctx, gpr_log(GPR_INFO, "Write handler done"); gpr_mu_lock(g_mu); state->write_done = 1 + (error == GRPC_ERROR_NONE); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL)); gpr_mu_unlock(g_mu); } @@ -178,7 +173,7 @@ static void read_and_write_test(grpc_endpoint_test_config config, struct read_and_write_test_state state; grpc_endpoint_test_fixture f = begin_test(config, "read_and_write_test", slice_size); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); gpr_log(GPR_DEBUG, "num_bytes=%" PRIuPTR " write_size=%" PRIuPTR @@ -215,66 +210,57 @@ static void read_and_write_test(grpc_endpoint_test_config config, for the first iteration as for later iterations. It does the right thing even when bytes_written is unsigned. */ state.bytes_written -= state.current_write_size; - read_and_write_test_write_handler(&exec_ctx, &state, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + read_and_write_test_write_handler(&state, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); - grpc_endpoint_read(&exec_ctx, state.read_ep, &state.incoming, - &state.done_read); + grpc_endpoint_read(state.read_ep, &state.incoming, &state.done_read); if (shutdown) { gpr_log(GPR_DEBUG, "shutdown read"); grpc_endpoint_shutdown( - &exec_ctx, state.read_ep, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); + state.read_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); gpr_log(GPR_DEBUG, "shutdown write"); grpc_endpoint_shutdown( - &exec_ctx, state.write_ep, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); + state.write_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); } - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); while (!state.read_done || !state.write_done) { grpc_pollset_worker *worker = NULL; - GPR_ASSERT(grpc_exec_ctx_now(&exec_ctx) < deadline); + GPR_ASSERT(grpc_exec_ctx_now() < deadline); GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); end_test(config); - grpc_slice_buffer_destroy_internal(&exec_ctx, &state.outgoing); - grpc_slice_buffer_destroy_internal(&exec_ctx, &state.incoming); - grpc_endpoint_destroy(&exec_ctx, state.read_ep); - grpc_endpoint_destroy(&exec_ctx, state.write_ep); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_buffer_destroy_internal(&state.outgoing); + grpc_slice_buffer_destroy_internal(&state.incoming); + grpc_endpoint_destroy(state.read_ep); + grpc_endpoint_destroy(state.write_ep); + grpc_exec_ctx_finish(); } -static void inc_on_failure(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void inc_on_failure(void *arg, grpc_error *error) { gpr_mu_lock(g_mu); *(int *)arg += (error != GRPC_ERROR_NONE); - GPR_ASSERT( - GRPC_LOG_IF_ERROR("kick", grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT(GRPC_LOG_IF_ERROR("kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } -static void wait_for_fail_count(grpc_exec_ctx *exec_ctx, int *fail_count, - int want_fail_count) { - grpc_exec_ctx_flush(exec_ctx); +static void wait_for_fail_count(int *fail_count, int want_fail_count) { + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(10)); - while (grpc_exec_ctx_now(exec_ctx) < deadline && - *fail_count < want_fail_count) { + while (grpc_exec_ctx_now() < deadline && *fail_count < want_fail_count) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(*fail_count == want_fail_count); @@ -289,33 +275,33 @@ static void multiple_shutdown_test(grpc_endpoint_test_config config) { grpc_slice_buffer slice_buffer; grpc_slice_buffer_init(&slice_buffer); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_endpoint_add_to_pollset(&exec_ctx, f.client_ep, g_pollset); - grpc_endpoint_read(&exec_ctx, f.client_ep, &slice_buffer, + ExecCtx _local_exec_ctx; + grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); + grpc_endpoint_read(f.client_ep, &slice_buffer, GRPC_CLOSURE_CREATE(inc_on_failure, &fail_count, grpc_schedule_on_exec_ctx)); - wait_for_fail_count(&exec_ctx, &fail_count, 0); - grpc_endpoint_shutdown(&exec_ctx, f.client_ep, + wait_for_fail_count(&fail_count, 0); + grpc_endpoint_shutdown(f.client_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); - wait_for_fail_count(&exec_ctx, &fail_count, 1); - grpc_endpoint_read(&exec_ctx, f.client_ep, &slice_buffer, + wait_for_fail_count(&fail_count, 1); + grpc_endpoint_read(f.client_ep, &slice_buffer, GRPC_CLOSURE_CREATE(inc_on_failure, &fail_count, grpc_schedule_on_exec_ctx)); - wait_for_fail_count(&exec_ctx, &fail_count, 2); + wait_for_fail_count(&fail_count, 2); grpc_slice_buffer_add(&slice_buffer, grpc_slice_from_copied_string("a")); - grpc_endpoint_write(&exec_ctx, f.client_ep, &slice_buffer, + grpc_endpoint_write(f.client_ep, &slice_buffer, GRPC_CLOSURE_CREATE(inc_on_failure, &fail_count, grpc_schedule_on_exec_ctx)); - wait_for_fail_count(&exec_ctx, &fail_count, 3); - grpc_endpoint_shutdown(&exec_ctx, f.client_ep, + wait_for_fail_count(&fail_count, 3); + grpc_endpoint_shutdown(f.client_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); - wait_for_fail_count(&exec_ctx, &fail_count, 3); + wait_for_fail_count(&fail_count, 3); - grpc_slice_buffer_destroy_internal(&exec_ctx, &slice_buffer); + grpc_slice_buffer_destroy_internal(&slice_buffer); - grpc_endpoint_destroy(&exec_ctx, f.client_ep); - grpc_endpoint_destroy(&exec_ctx, f.server_ep); - grpc_exec_ctx_finish(&exec_ctx); + grpc_endpoint_destroy(f.client_ep); + grpc_endpoint_destroy(f.server_ep); + grpc_exec_ctx_finish(); } void grpc_endpoint_tests(grpc_endpoint_test_config config, diff --git a/test/core/iomgr/ev_epollsig_linux_test.c b/test/core/iomgr/ev_epollsig_linux_test.c index 37aadacd497..e6f9f59bd31 100644 --- a/test/core/iomgr/ev_epollsig_linux_test.c +++ b/test/core/iomgr/ev_epollsig_linux_test.c @@ -70,19 +70,18 @@ static void test_fd_init(test_fd *tfds, int *fds, int num_fds) { } } -static void test_fd_cleanup(grpc_exec_ctx *exec_ctx, test_fd *tfds, - int num_fds) { +static void test_fd_cleanup(test_fd *tfds, int num_fds) { int release_fd; int i; for (i = 0; i < num_fds; i++) { - grpc_fd_shutdown(exec_ctx, tfds[i].fd, + grpc_fd_shutdown(tfds[i].fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_fd_cleanup")); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); - grpc_fd_orphan(exec_ctx, tfds[i].fd, NULL, &release_fd, - false /* already_closed */, "test_fd_cleanup"); - grpc_exec_ctx_flush(exec_ctx); + grpc_fd_orphan(tfds[i].fd, NULL, &release_fd, false /* already_closed */, + "test_fd_cleanup"); + grpc_exec_ctx_flush(); GPR_ASSERT(release_fd == tfds[i].inner_fd); close(tfds[i].inner_fd); @@ -97,22 +96,20 @@ static void test_pollset_init(test_pollset *pollsets, int num_pollsets) { } } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } -static void test_pollset_cleanup(grpc_exec_ctx *exec_ctx, - test_pollset *pollsets, int num_pollsets) { +static void test_pollset_cleanup(test_pollset *pollsets, int num_pollsets) { grpc_closure destroyed; int i; for (i = 0; i < num_pollsets; i++) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, pollsets[i].pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, pollsets[i].pollset, &destroyed); + grpc_pollset_shutdown(pollsets[i].pollset, &destroyed); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_free(pollsets[i].pollset); } } @@ -132,7 +129,7 @@ static void test_pollset_cleanup(grpc_exec_ctx *exec_ctx, #define NUM_POLLSETS 4 static void test_add_fd_to_pollset() { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; test_fd tfds[NUM_FDS]; int fds[NUM_FDS]; test_pollset pollsets[NUM_POLLSETS]; @@ -169,33 +166,33 @@ static void test_add_fd_to_pollset() { /* == Step 1 == */ for (i = 0; i <= 2; i++) { - grpc_pollset_add_fd(&exec_ctx, pollsets[0].pollset, tfds[i].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(pollsets[0].pollset, tfds[i].fd); + grpc_exec_ctx_flush(); } for (i = 3; i <= 4; i++) { - grpc_pollset_add_fd(&exec_ctx, pollsets[1].pollset, tfds[i].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(pollsets[1].pollset, tfds[i].fd); + grpc_exec_ctx_flush(); } for (i = 5; i <= 7; i++) { - grpc_pollset_add_fd(&exec_ctx, pollsets[2].pollset, tfds[i].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(pollsets[2].pollset, tfds[i].fd); + grpc_exec_ctx_flush(); } /* == Step 2 == */ for (i = 0; i <= 1; i++) { - grpc_pollset_add_fd(&exec_ctx, pollsets[3].pollset, tfds[i].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(pollsets[3].pollset, tfds[i].fd); + grpc_exec_ctx_flush(); } /* == Step 3 == */ - grpc_pollset_add_fd(&exec_ctx, pollsets[1].pollset, tfds[0].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(pollsets[1].pollset, tfds[0].fd); + grpc_exec_ctx_flush(); /* == Step 4 == */ - grpc_pollset_add_fd(&exec_ctx, pollsets[2].pollset, tfds[3].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(pollsets[2].pollset, tfds[3].fd); + grpc_exec_ctx_flush(); /* All polling islands are merged at this point */ @@ -212,9 +209,9 @@ static void test_add_fd_to_pollset() { expected_pi, grpc_pollset_get_polling_island(pollsets[i].pollset))); } - test_fd_cleanup(&exec_ctx, tfds, NUM_FDS); - test_pollset_cleanup(&exec_ctx, pollsets, NUM_POLLSETS); - grpc_exec_ctx_finish(&exec_ctx); + test_fd_cleanup(tfds, NUM_FDS); + test_pollset_cleanup(pollsets, NUM_POLLSETS); + grpc_exec_ctx_finish(); } #undef NUM_FDS @@ -234,26 +231,25 @@ static __thread int thread_wakeups = 0; static void test_threading_loop(void *arg) { threading_shared *shared = arg; while (thread_wakeups < 1000000) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_pollset_worker *worker; gpr_mu_lock(shared->mu); GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, shared->pollset, &worker, - GRPC_MILLIS_INF_FUTURE))); + "pollset_work", + grpc_pollset_work(shared->pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(shared->mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } } -static void test_threading_wakeup(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void test_threading_wakeup(void *arg, grpc_error *error) { threading_shared *shared = arg; ++shared->wakeups; ++thread_wakeups; if (error == GRPC_ERROR_NONE) { GPR_ASSERT(GRPC_LOG_IF_ERROR( "consume_wakeup", grpc_wakeup_fd_consume_wakeup(shared->wakeup_fd))); - grpc_fd_notify_on_read(exec_ctx, shared->wakeup_desc, &shared->on_wakeup); + grpc_fd_notify_on_read(shared->wakeup_desc, &shared->on_wakeup); GPR_ASSERT(GRPC_LOG_IF_ERROR("wakeup_next", grpc_wakeup_fd_wakeup(shared->wakeup_fd))); } @@ -276,13 +272,13 @@ static void test_threading(void) { shared.wakeup_desc = grpc_fd_create(fd.read_fd, "wakeup"); shared.wakeups = 0; { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_pollset_add_fd(&exec_ctx, shared.pollset, shared.wakeup_desc); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_pollset_add_fd(shared.pollset, shared.wakeup_desc); grpc_fd_notify_on_read( - &exec_ctx, shared.wakeup_desc, + shared.wakeup_desc, GRPC_CLOSURE_INIT(&shared.on_wakeup, test_threading_wakeup, &shared, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } GPR_ASSERT(GRPC_LOG_IF_ERROR("wakeup_first", grpc_wakeup_fd_wakeup(shared.wakeup_fd))); @@ -292,14 +288,14 @@ static void test_threading(void) { fd.read_fd = 0; grpc_wakeup_fd_destroy(&fd); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_fd_shutdown(&exec_ctx, shared.wakeup_desc, GRPC_ERROR_CANCELLED); - grpc_fd_orphan(&exec_ctx, shared.wakeup_desc, NULL, NULL, - false /* already_closed */, "done"); - grpc_pollset_shutdown(&exec_ctx, shared.pollset, + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_fd_shutdown(shared.wakeup_desc, GRPC_ERROR_CANCELLED); + grpc_fd_orphan(shared.wakeup_desc, NULL, NULL, false /* already_closed */, + "done"); + grpc_pollset_shutdown(shared.pollset, GRPC_CLOSURE_CREATE(destroy_pollset, shared.pollset, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } gpr_free(shared.pollset); } @@ -308,7 +304,7 @@ int main(int argc, char **argv) { const char *poll_strategy = NULL; grpc_test_init(argc, argv); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; poll_strategy = grpc_get_poll_strategy_name(); if (poll_strategy != NULL && strcmp(poll_strategy, "epollsig") == 0) { @@ -321,7 +317,7 @@ int main(int argc, char **argv) { poll_strategy); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/fd_conservation_posix_test.c b/test/core/iomgr/fd_conservation_posix_test.c index d29b1e8e41d..8fcb01efd81 100644 --- a/test/core/iomgr/fd_conservation_posix_test.c +++ b/test/core/iomgr/fd_conservation_posix_test.c @@ -31,7 +31,7 @@ int main(int argc, char **argv) { grpc_test_init(argc, argv); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; /* set max # of file descriptors to a low value, and verify we can create and destroy many more than this number @@ -43,14 +43,14 @@ int main(int argc, char **argv) { for (i = 0; i < 100; i++) { p = grpc_iomgr_create_endpoint_pair("test", NULL); - grpc_endpoint_destroy(&exec_ctx, p.client); - grpc_endpoint_destroy(&exec_ctx, p.server); - grpc_exec_ctx_flush(&exec_ctx); + grpc_endpoint_destroy(p.client); + grpc_endpoint_destroy(p.server); + grpc_exec_ctx_flush(); } grpc_resource_quota_unref(resource_quota); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/fd_posix_test.c b/test/core/iomgr/fd_posix_test.c index 1c62f34d3e6..d16b5567681 100644 --- a/test/core/iomgr/fd_posix_test.c +++ b/test/core/iomgr/fd_posix_test.c @@ -111,20 +111,19 @@ typedef struct { /* Called when an upload session can be safely shutdown. Close session FD and start to shutdown listen FD. */ -static void session_shutdown_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */ +static void session_shutdown_cb(void *arg, /*session */ bool success) { session *se = arg; server *sv = se->sv; - grpc_fd_orphan(exec_ctx, se->em_fd, NULL, NULL, false /* already_closed */, - "a"); + grpc_fd_orphan(se->em_fd, NULL, NULL, false /* already_closed */, "a"); gpr_free(se); /* Start to shutdown listen fd. */ - grpc_fd_shutdown(exec_ctx, sv->em_fd, + grpc_fd_shutdown(sv->em_fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("session_shutdown_cb")); } /* Called when data become readable in a session. */ -static void session_read_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */ +static void session_read_cb(void *arg, /*session */ grpc_error *error) { session *se = arg; int fd = grpc_fd_wrapped_fd(se->em_fd); @@ -133,7 +132,7 @@ static void session_read_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */ ssize_t read_total = 0; if (error != GRPC_ERROR_NONE) { - session_shutdown_cb(exec_ctx, arg, 1); + session_shutdown_cb(arg, 1); return; } @@ -148,7 +147,7 @@ static void session_read_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */ It is possible to read nothing due to spurious edge event or data has been drained, In such a case, read() returns -1 and set errno to EAGAIN. */ if (read_once == 0) { - session_shutdown_cb(exec_ctx, arg, 1); + session_shutdown_cb(arg, 1); } else if (read_once == -1) { if (errno == EAGAIN) { /* An edge triggered event is cached in the kernel until next poll. @@ -159,7 +158,7 @@ static void session_read_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */ TODO(chenw): in multi-threaded version, callback and polling can be run in different threads. polling may catch a persist read edge event before notify_on_read is called. */ - grpc_fd_notify_on_read(exec_ctx, se->em_fd, &se->session_read_closure); + grpc_fd_notify_on_read(se->em_fd, &se->session_read_closure); } else { gpr_log(GPR_ERROR, "Unhandled read error %s", strerror(errno)); abort(); @@ -169,22 +168,20 @@ static void session_read_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */ /* Called when the listen FD can be safely shutdown. Close listen FD and signal that server can be shutdown. */ -static void listen_shutdown_cb(grpc_exec_ctx *exec_ctx, void *arg /*server */, - int success) { +static void listen_shutdown_cb(void *arg /*server */, int success) { server *sv = arg; - grpc_fd_orphan(exec_ctx, sv->em_fd, NULL, NULL, false /* already_closed */, - "b"); + grpc_fd_orphan(sv->em_fd, NULL, NULL, false /* already_closed */, "b"); gpr_mu_lock(g_mu); sv->done = 1; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } /* Called when a new TCP connection request arrives in the listening port. */ -static void listen_cb(grpc_exec_ctx *exec_ctx, void *arg, /*=sv_arg*/ +static void listen_cb(void *arg, /*=sv_arg*/ grpc_error *error) { server *sv = arg; int fd; @@ -195,7 +192,7 @@ static void listen_cb(grpc_exec_ctx *exec_ctx, void *arg, /*=sv_arg*/ grpc_fd *listen_em_fd = sv->em_fd; if (error != GRPC_ERROR_NONE) { - listen_shutdown_cb(exec_ctx, arg, 1); + listen_shutdown_cb(arg, 1); return; } @@ -207,12 +204,12 @@ static void listen_cb(grpc_exec_ctx *exec_ctx, void *arg, /*=sv_arg*/ se = gpr_malloc(sizeof(*se)); se->sv = sv; se->em_fd = grpc_fd_create(fd, "listener"); - grpc_pollset_add_fd(exec_ctx, g_pollset, se->em_fd); + grpc_pollset_add_fd(g_pollset, se->em_fd); GRPC_CLOSURE_INIT(&se->session_read_closure, session_read_cb, se, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, se->em_fd, &se->session_read_closure); + grpc_fd_notify_on_read(se->em_fd, &se->session_read_closure); - grpc_fd_notify_on_read(exec_ctx, listen_em_fd, &sv->listen_closure); + grpc_fd_notify_on_read(listen_em_fd, &sv->listen_closure); } /* Max number of connections pending to be accepted by listen(). */ @@ -222,7 +219,7 @@ static void listen_cb(grpc_exec_ctx *exec_ctx, void *arg, /*=sv_arg*/ listen_cb() is registered to be interested in reading from listen_fd. When connection request arrives, listen_cb() is called to accept the connection request. */ -static int server_start(grpc_exec_ctx *exec_ctx, server *sv) { +static int server_start(server *sv) { int port = 0; int fd; struct sockaddr_in sin; @@ -236,11 +233,11 @@ static int server_start(grpc_exec_ctx *exec_ctx, server *sv) { GPR_ASSERT(listen(fd, MAX_NUM_FD) == 0); sv->em_fd = grpc_fd_create(fd, "server"); - grpc_pollset_add_fd(exec_ctx, g_pollset, sv->em_fd); + grpc_pollset_add_fd(g_pollset, sv->em_fd); /* Register to be interested in reading from listen_fd. */ GRPC_CLOSURE_INIT(&sv->listen_closure, listen_cb, sv, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, sv->em_fd, &sv->listen_closure); + grpc_fd_notify_on_read(sv->em_fd, &sv->listen_closure); return port; } @@ -249,13 +246,13 @@ static int server_start(grpc_exec_ctx *exec_ctx, server *sv) { static void server_wait_and_shutdown(server *sv) { gpr_mu_lock(g_mu); while (!sv->done) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, g_pollset, &worker, - GRPC_MILLIS_INF_FUTURE))); + "pollset_work", + grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -289,18 +286,16 @@ static void client_init(client *cl) { } /* Called when a client upload session is ready to shutdown. */ -static void client_session_shutdown_cb(grpc_exec_ctx *exec_ctx, - void *arg /*client */, int success) { +static void client_session_shutdown_cb(void *arg /*client */, int success) { client *cl = arg; - grpc_fd_orphan(exec_ctx, cl->em_fd, NULL, NULL, false /* already_closed */, - "c"); + grpc_fd_orphan(cl->em_fd, NULL, NULL, false /* already_closed */, "c"); cl->done = 1; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); } /* Write as much as possible, then register notify_on_write. */ -static void client_session_write(grpc_exec_ctx *exec_ctx, void *arg, /*client */ +static void client_session_write(void *arg, /*client */ grpc_error *error) { client *cl = arg; int fd = grpc_fd_wrapped_fd(cl->em_fd); @@ -308,7 +303,7 @@ static void client_session_write(grpc_exec_ctx *exec_ctx, void *arg, /*client */ if (error != GRPC_ERROR_NONE) { gpr_mu_lock(g_mu); - client_session_shutdown_cb(exec_ctx, arg, 1); + client_session_shutdown_cb(arg, 1); gpr_mu_unlock(g_mu); return; } @@ -323,10 +318,10 @@ static void client_session_write(grpc_exec_ctx *exec_ctx, void *arg, /*client */ if (cl->client_write_cnt < CLIENT_TOTAL_WRITE_CNT) { GRPC_CLOSURE_INIT(&cl->write_closure, client_session_write, cl, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_write(exec_ctx, cl->em_fd, &cl->write_closure); + grpc_fd_notify_on_write(cl->em_fd, &cl->write_closure); cl->client_write_cnt++; } else { - client_session_shutdown_cb(exec_ctx, arg, 1); + client_session_shutdown_cb(arg, 1); } gpr_mu_unlock(g_mu); } else { @@ -336,7 +331,7 @@ static void client_session_write(grpc_exec_ctx *exec_ctx, void *arg, /*client */ } /* Start a client to send a stream of bytes. */ -static void client_start(grpc_exec_ctx *exec_ctx, client *cl, int port) { +static void client_start(client *cl, int port) { int fd; struct sockaddr_in sin; create_test_socket(port, &fd, &sin); @@ -357,9 +352,9 @@ static void client_start(grpc_exec_ctx *exec_ctx, client *cl, int port) { } cl->em_fd = grpc_fd_create(fd, "client"); - grpc_pollset_add_fd(exec_ctx, g_pollset, cl->em_fd); + grpc_pollset_add_fd(g_pollset, cl->em_fd); - client_session_write(exec_ctx, cl, GRPC_ERROR_NONE); + client_session_write(cl, GRPC_ERROR_NONE); } /* Wait for the signal to shutdown a client. */ @@ -367,12 +362,12 @@ static void client_wait_and_shutdown(client *cl) { gpr_mu_lock(g_mu); while (!cl->done) { grpc_pollset_worker *worker = NULL; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, g_pollset, &worker, - GRPC_MILLIS_INF_FUTURE))); + "pollset_work", + grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -385,13 +380,13 @@ static void test_grpc_fd(void) { server sv; client cl; int port; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; server_init(&sv); - port = server_start(&exec_ctx, &sv); + port = server_start(&sv); client_init(&cl); - client_start(&exec_ctx, &cl, port); - grpc_exec_ctx_finish(&exec_ctx); + client_start(&cl, port); + grpc_exec_ctx_finish(); client_wait_and_shutdown(&cl); server_wait_and_shutdown(&sv); GPR_ASSERT(sv.read_bytes_total == cl.write_bytes_total); @@ -406,27 +401,25 @@ void init_change_data(fd_change_data *fdc) { fdc->cb_that_ran = NULL; } void destroy_change_data(fd_change_data *fdc) {} -static void first_read_callback(grpc_exec_ctx *exec_ctx, - void *arg /* fd_change_data */, +static void first_read_callback(void *arg /* fd_change_data */, grpc_error *error) { fd_change_data *fdc = arg; gpr_mu_lock(g_mu); fdc->cb_that_ran = first_read_callback; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } -static void second_read_callback(grpc_exec_ctx *exec_ctx, - void *arg /* fd_change_data */, +static void second_read_callback(void *arg /* fd_change_data */, grpc_error *error) { fd_change_data *fdc = arg; gpr_mu_lock(g_mu); fdc->cb_that_ran = second_read_callback; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } @@ -443,7 +436,7 @@ static void test_grpc_fd_change(void) { ssize_t result; grpc_closure first_closure; grpc_closure second_closure; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; GRPC_CLOSURE_INIT(&first_closure, first_read_callback, &a, grpc_schedule_on_exec_ctx); @@ -460,10 +453,10 @@ static void test_grpc_fd_change(void) { GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0); em_fd = grpc_fd_create(sv[0], "test_grpc_fd_change"); - grpc_pollset_add_fd(&exec_ctx, g_pollset, em_fd); + grpc_pollset_add_fd(g_pollset, em_fd); /* Register the first callback, then make its FD readable */ - grpc_fd_notify_on_read(&exec_ctx, em_fd, &first_closure); + grpc_fd_notify_on_read(em_fd, &first_closure); data = 0; result = write(sv[1], &data, 1); GPR_ASSERT(result == 1); @@ -473,10 +466,10 @@ static void test_grpc_fd_change(void) { while (a.cb_that_ran == NULL) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, g_pollset, &worker, - GRPC_MILLIS_INF_FUTURE))); + "pollset_work", + grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } GPR_ASSERT(a.cb_that_ran == first_read_callback); @@ -488,7 +481,7 @@ static void test_grpc_fd_change(void) { /* Now register a second callback with distinct change data, and do the same thing again. */ - grpc_fd_notify_on_read(&exec_ctx, em_fd, &second_closure); + grpc_fd_notify_on_read(em_fd, &second_closure); data = 0; result = write(sv[1], &data, 1); GPR_ASSERT(result == 1); @@ -497,31 +490,30 @@ static void test_grpc_fd_change(void) { while (b.cb_that_ran == NULL) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, g_pollset, &worker, - GRPC_MILLIS_INF_FUTURE))); + "pollset_work", + grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } /* Except now we verify that second_read_callback ran instead */ GPR_ASSERT(b.cb_that_ran == second_read_callback); gpr_mu_unlock(g_mu); - grpc_fd_orphan(&exec_ctx, em_fd, NULL, NULL, false /* already_closed */, "d"); - grpc_exec_ctx_finish(&exec_ctx); + grpc_fd_orphan(em_fd, NULL, NULL, false /* already_closed */, "d"); + grpc_exec_ctx_finish(); destroy_change_data(&a); destroy_change_data(&b); close(sv[1]); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset = gpr_zalloc(grpc_pollset_size()); @@ -530,10 +522,10 @@ int main(int argc, char **argv) { test_grpc_fd_change(); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_flush(); gpr_free(g_pollset); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/pollset_set_test.c b/test/core/iomgr/pollset_set_test.c index 3dd4bc887c7..7ab31e0006e 100644 --- a/test/core/iomgr/pollset_set_test.c +++ b/test/core/iomgr/pollset_set_test.c @@ -44,11 +44,10 @@ void init_test_pollset_sets(test_pollset_set *pollset_sets, const int num_pss) { } } -void cleanup_test_pollset_sets(grpc_exec_ctx *exec_ctx, - test_pollset_set *pollset_sets, +void cleanup_test_pollset_sets(test_pollset_set *pollset_sets, const int num_pss) { for (int i = 0; i < num_pss; i++) { - grpc_pollset_set_destroy(exec_ctx, pollset_sets[i].pss); + grpc_pollset_set_destroy(pollset_sets[i].pss); pollset_sets[i].pss = NULL; } } @@ -69,21 +68,19 @@ static void init_test_pollsets(test_pollset *pollsets, const int num_pollsets) { } } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } -static void cleanup_test_pollsets(grpc_exec_ctx *exec_ctx, - test_pollset *pollsets, +static void cleanup_test_pollsets(test_pollset *pollsets, const int num_pollsets) { grpc_closure destroyed; for (int i = 0; i < num_pollsets; i++) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, pollsets[i].ps, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, pollsets[i].ps, &destroyed); + grpc_pollset_shutdown(pollsets[i].ps, &destroyed); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_free(pollsets[i].ps); pollsets[i].ps = NULL; } @@ -101,45 +98,43 @@ typedef struct test_fd { grpc_closure on_readable; /* Closure to call when this fd is readable */ } test_fd; -void on_readable(grpc_exec_ctx *exec_ctx, void *tfd, grpc_error *error) { +void on_readable(void *tfd, grpc_error *error) { ((test_fd *)tfd)->is_on_readable_called = true; } -static void reset_test_fd(grpc_exec_ctx *exec_ctx, test_fd *tfd) { +static void reset_test_fd(test_fd *tfd) { tfd->is_on_readable_called = false; GRPC_CLOSURE_INIT(&tfd->on_readable, on_readable, tfd, grpc_schedule_on_exec_ctx); - grpc_fd_notify_on_read(exec_ctx, tfd->fd, &tfd->on_readable); + grpc_fd_notify_on_read(tfd->fd, &tfd->on_readable); } -static void init_test_fds(grpc_exec_ctx *exec_ctx, test_fd *tfds, - const int num_fds) { +static void init_test_fds(test_fd *tfds, const int num_fds) { for (int i = 0; i < num_fds; i++) { GPR_ASSERT(GRPC_ERROR_NONE == grpc_wakeup_fd_init(&tfds[i].wakeup_fd)); tfds[i].fd = grpc_fd_create(GRPC_WAKEUP_FD_GET_READ_FD(&tfds[i].wakeup_fd), "test_fd"); - reset_test_fd(exec_ctx, &tfds[i]); + reset_test_fd(&tfds[i]); } } -static void cleanup_test_fds(grpc_exec_ctx *exec_ctx, test_fd *tfds, - const int num_fds) { +static void cleanup_test_fds(test_fd *tfds, const int num_fds) { int release_fd; for (int i = 0; i < num_fds; i++) { - grpc_fd_shutdown(exec_ctx, tfds[i].fd, + grpc_fd_shutdown(tfds[i].fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("fd cleanup")); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); /* grpc_fd_orphan frees the memory allocated for grpc_fd. Normally it also * calls close() on the underlying fd. In our case, we are using * grpc_wakeup_fd and we would like to destroy it ourselves (by calling * grpc_wakeup_fd_destroy). To prevent grpc_fd from calling close() on the * underlying fd, call it with a non-NULL 'release_fd' parameter */ - grpc_fd_orphan(exec_ctx, tfds[i].fd, NULL, &release_fd, - false /* already_closed */, "test_fd_cleanup"); - grpc_exec_ctx_flush(exec_ctx); + grpc_fd_orphan(tfds[i].fd, NULL, &release_fd, false /* already_closed */, + "test_fd_cleanup"); + grpc_exec_ctx_flush(); grpc_wakeup_fd_destroy(&tfds[i].wakeup_fd); } @@ -151,8 +146,7 @@ static void make_test_fds_readable(test_fd *tfds, const int num_fds) { } } -static void verify_readable_and_reset(grpc_exec_ctx *exec_ctx, test_fd *tfds, - const int num_fds) { +static void verify_readable_and_reset(test_fd *tfds, const int num_fds) { for (int i = 0; i < num_fds; i++) { /* Verify that the on_readable callback was called */ GPR_ASSERT(tfds[i].is_on_readable_called); @@ -160,7 +154,7 @@ static void verify_readable_and_reset(grpc_exec_ctx *exec_ctx, test_fd *tfds, /* Reset the tfd[i] structure */ GPR_ASSERT(GRPC_ERROR_NONE == grpc_wakeup_fd_consume_wakeup(&tfds[i].wakeup_fd)); - reset_test_fd(exec_ctx, &tfds[i]); + reset_test_fd(&tfds[i]); } } @@ -201,7 +195,7 @@ static void pollset_set_test_basic() { * | * +---> FD9 (Added after PS2 is added to PSS0) */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_pollset_worker *worker; grpc_millis deadline; @@ -212,34 +206,33 @@ static void pollset_set_test_basic() { const int num_ps = GPR_ARRAY_SIZE(pollsets); const int num_pss = GPR_ARRAY_SIZE(pollset_sets); - init_test_fds(&exec_ctx, tfds, num_fds); + init_test_fds(tfds, num_fds); init_test_pollsets(pollsets, num_ps); init_test_pollset_sets(pollset_sets, num_pss); /* Construct the pollset_set/pollset/fd tree (see diagram above) */ - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[0].pss, tfds[0].fd); - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[1].pss, tfds[1].fd); + grpc_pollset_set_add_fd(pollset_sets[0].pss, tfds[0].fd); + grpc_pollset_set_add_fd(pollset_sets[1].pss, tfds[1].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[0].ps, tfds[2].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[1].ps, tfds[3].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[2].ps, tfds[4].fd); + grpc_pollset_add_fd(pollsets[0].ps, tfds[2].fd); + grpc_pollset_add_fd(pollsets[1].ps, tfds[3].fd); + grpc_pollset_add_fd(pollsets[2].ps, tfds[4].fd); - grpc_pollset_set_add_pollset_set(&exec_ctx, pollset_sets[0].pss, - pollset_sets[1].pss); + grpc_pollset_set_add_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); - grpc_pollset_set_add_pollset(&exec_ctx, pollset_sets[1].pss, pollsets[0].ps); - grpc_pollset_set_add_pollset(&exec_ctx, pollset_sets[0].pss, pollsets[1].ps); - grpc_pollset_set_add_pollset(&exec_ctx, pollset_sets[0].pss, pollsets[2].ps); + grpc_pollset_set_add_pollset(pollset_sets[1].pss, pollsets[0].ps); + grpc_pollset_set_add_pollset(pollset_sets[0].pss, pollsets[1].ps); + grpc_pollset_set_add_pollset(pollset_sets[0].pss, pollsets[2].ps); - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[0].pss, tfds[5].fd); - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[1].pss, tfds[6].fd); + grpc_pollset_set_add_fd(pollset_sets[0].pss, tfds[5].fd); + grpc_pollset_set_add_fd(pollset_sets[1].pss, tfds[6].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[0].ps, tfds[7].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[1].ps, tfds[8].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[2].ps, tfds[9].fd); + grpc_pollset_add_fd(pollsets[0].ps, tfds[7].fd); + grpc_pollset_add_fd(pollsets[1].ps, tfds[8].fd); + grpc_pollset_add_fd(pollsets[2].ps, tfds[9].fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); /* Test that if any FD in the above structure is readable, it is observable by * doing grpc_pollset_work on any pollset @@ -259,34 +252,33 @@ static void pollset_set_test_basic() { deadline = grpc_timespec_to_millis_round_up( grpc_timeout_milliseconds_to_deadline(2)); GPR_ASSERT(GRPC_ERROR_NONE == - grpc_pollset_work(&exec_ctx, pollsets[i].ps, &worker, deadline)); + grpc_pollset_work(pollsets[i].ps, &worker, deadline)); gpr_mu_unlock(pollsets[i].mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); - verify_readable_and_reset(&exec_ctx, tfds, num_fds); - grpc_exec_ctx_flush(&exec_ctx); + verify_readable_and_reset(tfds, num_fds); + grpc_exec_ctx_flush(); } /* Test tear down */ - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[0].pss, tfds[0].fd); - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[0].pss, tfds[5].fd); - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[1].pss, tfds[1].fd); - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[1].pss, tfds[6].fd); - grpc_exec_ctx_flush(&exec_ctx); - - grpc_pollset_set_del_pollset(&exec_ctx, pollset_sets[1].pss, pollsets[0].ps); - grpc_pollset_set_del_pollset(&exec_ctx, pollset_sets[0].pss, pollsets[1].ps); - grpc_pollset_set_del_pollset(&exec_ctx, pollset_sets[0].pss, pollsets[2].ps); - - grpc_pollset_set_del_pollset_set(&exec_ctx, pollset_sets[0].pss, - pollset_sets[1].pss); - grpc_exec_ctx_flush(&exec_ctx); - - cleanup_test_fds(&exec_ctx, tfds, num_fds); - cleanup_test_pollsets(&exec_ctx, pollsets, num_ps); - cleanup_test_pollset_sets(&exec_ctx, pollset_sets, num_pss); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[0].fd); + grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[5].fd); + grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[1].fd); + grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[6].fd); + grpc_exec_ctx_flush(); + + grpc_pollset_set_del_pollset(pollset_sets[1].pss, pollsets[0].ps); + grpc_pollset_set_del_pollset(pollset_sets[0].pss, pollsets[1].ps); + grpc_pollset_set_del_pollset(pollset_sets[0].pss, pollsets[2].ps); + + grpc_pollset_set_del_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); + grpc_exec_ctx_flush(); + + cleanup_test_fds(tfds, num_fds); + cleanup_test_pollsets(pollsets, num_ps); + cleanup_test_pollset_sets(pollset_sets, num_pss); + grpc_exec_ctx_finish(); } /* Same FD added multiple times to the pollset_set tree */ @@ -306,7 +298,7 @@ void pollset_set_test_dup_fds() { * | +--> FD2 * +---> FD1 */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_pollset_worker *worker; grpc_millis deadline; @@ -317,21 +309,20 @@ void pollset_set_test_dup_fds() { const int num_ps = 1; const int num_pss = GPR_ARRAY_SIZE(pollset_sets); - init_test_fds(&exec_ctx, tfds, num_fds); + init_test_fds(tfds, num_fds); init_test_pollsets(&pollset, num_ps); init_test_pollset_sets(pollset_sets, num_pss); /* Construct the structure */ - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[0].pss, tfds[0].fd); - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[1].pss, tfds[0].fd); - grpc_pollset_set_add_fd(&exec_ctx, pollset_sets[1].pss, tfds[1].fd); + grpc_pollset_set_add_fd(pollset_sets[0].pss, tfds[0].fd); + grpc_pollset_set_add_fd(pollset_sets[1].pss, tfds[0].fd); + grpc_pollset_set_add_fd(pollset_sets[1].pss, tfds[1].fd); - grpc_pollset_add_fd(&exec_ctx, pollset.ps, tfds[1].fd); - grpc_pollset_add_fd(&exec_ctx, pollset.ps, tfds[2].fd); + grpc_pollset_add_fd(pollset.ps, tfds[1].fd); + grpc_pollset_add_fd(pollset.ps, tfds[2].fd); - grpc_pollset_set_add_pollset(&exec_ctx, pollset_sets[1].pss, pollset.ps); - grpc_pollset_set_add_pollset_set(&exec_ctx, pollset_sets[0].pss, - pollset_sets[1].pss); + grpc_pollset_set_add_pollset(pollset_sets[1].pss, pollset.ps); + grpc_pollset_set_add_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); /* Test. Make all FDs readable and make sure that can be observed by doing a * grpc_pollset_work on the pollset 'PS' */ @@ -341,27 +332,26 @@ void pollset_set_test_dup_fds() { deadline = grpc_timespec_to_millis_round_up( grpc_timeout_milliseconds_to_deadline(2)); GPR_ASSERT(GRPC_ERROR_NONE == - grpc_pollset_work(&exec_ctx, pollset.ps, &worker, deadline)); + grpc_pollset_work(pollset.ps, &worker, deadline)); gpr_mu_unlock(pollset.mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); - verify_readable_and_reset(&exec_ctx, tfds, num_fds); - grpc_exec_ctx_flush(&exec_ctx); + verify_readable_and_reset(tfds, num_fds); + grpc_exec_ctx_flush(); /* Tear down */ - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[0].pss, tfds[0].fd); - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[1].pss, tfds[0].fd); - grpc_pollset_set_del_fd(&exec_ctx, pollset_sets[1].pss, tfds[1].fd); - - grpc_pollset_set_del_pollset(&exec_ctx, pollset_sets[1].pss, pollset.ps); - grpc_pollset_set_del_pollset_set(&exec_ctx, pollset_sets[0].pss, - pollset_sets[1].pss); - grpc_exec_ctx_flush(&exec_ctx); - - cleanup_test_fds(&exec_ctx, tfds, num_fds); - cleanup_test_pollsets(&exec_ctx, &pollset, num_ps); - cleanup_test_pollset_sets(&exec_ctx, pollset_sets, num_pss); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[0].fd); + grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[0].fd); + grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[1].fd); + + grpc_pollset_set_del_pollset(pollset_sets[1].pss, pollset.ps); + grpc_pollset_set_del_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); + grpc_exec_ctx_flush(); + + cleanup_test_fds(tfds, num_fds); + cleanup_test_pollsets(&pollset, num_ps); + cleanup_test_pollset_sets(pollset_sets, num_pss); + grpc_exec_ctx_finish(); } /* Pollset_set with an empty pollset */ @@ -379,7 +369,7 @@ void pollset_set_test_empty_pollset() { * | * +---> FD2 */ - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_pollset_worker *worker; grpc_millis deadline; @@ -390,17 +380,17 @@ void pollset_set_test_empty_pollset() { const int num_ps = GPR_ARRAY_SIZE(pollsets); const int num_pss = 1; - init_test_fds(&exec_ctx, tfds, num_fds); + init_test_fds(tfds, num_fds); init_test_pollsets(pollsets, num_ps); init_test_pollset_sets(&pollset_set, num_pss); /* Construct the structure */ - grpc_pollset_set_add_fd(&exec_ctx, pollset_set.pss, tfds[0].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[1].ps, tfds[1].fd); - grpc_pollset_add_fd(&exec_ctx, pollsets[1].ps, tfds[2].fd); + grpc_pollset_set_add_fd(pollset_set.pss, tfds[0].fd); + grpc_pollset_add_fd(pollsets[1].ps, tfds[1].fd); + grpc_pollset_add_fd(pollsets[1].ps, tfds[2].fd); - grpc_pollset_set_add_pollset(&exec_ctx, pollset_set.pss, pollsets[0].ps); - grpc_pollset_set_add_pollset(&exec_ctx, pollset_set.pss, pollsets[1].ps); + grpc_pollset_set_add_pollset(pollset_set.pss, pollsets[0].ps); + grpc_pollset_set_add_pollset(pollset_set.pss, pollsets[1].ps); /* Test. Make all FDs readable and make sure that can be observed by doing * grpc_pollset_work on the empty pollset 'PS0' */ @@ -410,31 +400,31 @@ void pollset_set_test_empty_pollset() { deadline = grpc_timespec_to_millis_round_up( grpc_timeout_milliseconds_to_deadline(2)); GPR_ASSERT(GRPC_ERROR_NONE == - grpc_pollset_work(&exec_ctx, pollsets[0].ps, &worker, deadline)); + grpc_pollset_work(pollsets[0].ps, &worker, deadline)); gpr_mu_unlock(pollsets[0].mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); - verify_readable_and_reset(&exec_ctx, tfds, num_fds); - grpc_exec_ctx_flush(&exec_ctx); + verify_readable_and_reset(tfds, num_fds); + grpc_exec_ctx_flush(); /* Tear down */ - grpc_pollset_set_del_fd(&exec_ctx, pollset_set.pss, tfds[0].fd); - grpc_pollset_set_del_pollset(&exec_ctx, pollset_set.pss, pollsets[0].ps); - grpc_pollset_set_del_pollset(&exec_ctx, pollset_set.pss, pollsets[1].ps); - grpc_exec_ctx_flush(&exec_ctx); - - cleanup_test_fds(&exec_ctx, tfds, num_fds); - cleanup_test_pollsets(&exec_ctx, pollsets, num_ps); - cleanup_test_pollset_sets(&exec_ctx, &pollset_set, num_pss); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_set_del_fd(pollset_set.pss, tfds[0].fd); + grpc_pollset_set_del_pollset(pollset_set.pss, pollsets[0].ps); + grpc_pollset_set_del_pollset(pollset_set.pss, pollsets[1].ps); + grpc_exec_ctx_flush(); + + cleanup_test_fds(tfds, num_fds); + cleanup_test_pollsets(pollsets, num_ps); + cleanup_test_pollset_sets(&pollset_set, num_pss); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { const char *poll_strategy = grpc_get_poll_strategy_name(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); - grpc_iomgr_init(&exec_ctx); - grpc_iomgr_start(&exec_ctx); + grpc_iomgr_init(); + grpc_iomgr_start(); if (poll_strategy != NULL && (strcmp(poll_strategy, "epoll") == 0 || @@ -449,8 +439,8 @@ int main(int argc, char **argv) { poll_strategy); } - grpc_iomgr_shutdown(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_iomgr_shutdown(); + grpc_exec_ctx_finish(); return 0; } #else /* defined(GRPC_LINUX_EPOLL) */ diff --git a/test/core/iomgr/resolve_address_posix_test.c b/test/core/iomgr/resolve_address_posix_test.cc similarity index 70% rename from test/core/iomgr/resolve_address_posix_test.c rename to test/core/iomgr/resolve_address_posix_test.cc index cb9d6080fbb..05c17fbf608 100644 --- a/test/core/iomgr/resolve_address_posix_test.c +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -46,29 +46,29 @@ typedef struct args_struct { grpc_pollset_set *pollset_set; } args_struct; -static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +static void do_nothing(void *arg, grpc_error *error) {} -void args_init(grpc_exec_ctx *exec_ctx, args_struct *args) { +void args_init(args_struct *args) { gpr_event_init(&args->ev); args->pollset = gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(args->pollset, &args->mu); args->pollset_set = grpc_pollset_set_create(); - grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset); + grpc_pollset_set_add_pollset(args->pollset_set, args->pollset); args->addrs = NULL; } -void args_finish(grpc_exec_ctx *exec_ctx, args_struct *args) { +void args_finish(args_struct *args) { GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline())); grpc_resolved_addresses_destroy(args->addrs); - grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); - grpc_pollset_set_destroy(exec_ctx, args->pollset_set); + grpc_pollset_set_del_pollset(args->pollset_set, args->pollset); + grpc_pollset_set_destroy(args->pollset_set); grpc_closure do_nothing_cb; GRPC_CLOSURE_INIT(&do_nothing_cb, do_nothing, NULL, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, args->pollset, &do_nothing_cb); + grpc_pollset_shutdown(args->pollset, &do_nothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_exec_ctx_flush(exec_ctx); - grpc_pollset_destroy(exec_ctx, args->pollset); + grpc_exec_ctx_flush(); + grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); } @@ -79,26 +79,25 @@ static grpc_millis n_sec_deadline(int seconds) { static void actually_poll(void *argsp) { args_struct *args = argsp; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_millis deadline = n_sec_deadline(10); while (true) { bool done = gpr_atm_acq_load(&args->done_atm) != 0; if (done) { break; } - grpc_millis time_left = deadline - grpc_exec_ctx_now(&exec_ctx); + grpc_millis time_left = deadline - grpc_exec_ctx_now(); gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRIdPTR, done, time_left); GPR_ASSERT(time_left >= 0); grpc_pollset_worker *worker = NULL; gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_work", - grpc_pollset_work(&exec_ctx, args->pollset, &worker, - n_sec_deadline(1))); + GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, + n_sec_deadline(1))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } gpr_event_set(&args->ev, (void *)1); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void poll_pollset_until_request_done(args_struct *args) { @@ -107,8 +106,7 @@ static void poll_pollset_until_request_done(args_struct *args) { gpr_thd_new(&id, actually_poll, args, NULL); } -static void must_succeed(grpc_exec_ctx *exec_ctx, void *argsp, - grpc_error *err) { +static void must_succeed(void *argsp, grpc_error *err) { args_struct *args = argsp; GPR_ASSERT(err == GRPC_ERROR_NONE); GPR_ASSERT(args->addrs != NULL); @@ -116,29 +114,29 @@ static void must_succeed(grpc_exec_ctx *exec_ctx, void *argsp, gpr_atm_rel_store(&args->done_atm, 1); } -static void must_fail(grpc_exec_ctx *exec_ctx, void *argsp, grpc_error *err) { +static void must_fail(void *argsp, grpc_error *err) { args_struct *args = argsp; GPR_ASSERT(err != GRPC_ERROR_NONE); gpr_atm_rel_store(&args->done_atm, 1); } static void test_unix_socket(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); poll_pollset_until_request_done(&args); grpc_resolve_address( - &exec_ctx, "unix:/path/name", NULL, args.pollset_set, + "unix:/path/name", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } static void test_unix_socket_path_name_too_long(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); const char prefix[] = "unix:/path/name"; size_t path_name_length = GPR_ARRAY_SIZE(((struct sockaddr_un *)0)->sun_path) + 6; @@ -149,22 +147,22 @@ static void test_unix_socket_path_name_too_long(void) { poll_pollset_until_request_done(&args); grpc_resolve_address( - &exec_ctx, path_name, NULL, args.pollset_set, + path_name, NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); gpr_free(path_name); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { grpc_test_init(argc, argv); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; test_unix_socket(); test_unix_socket_path_name_too_long(); - grpc_executor_shutdown(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_executor_shutdown(); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resolve_address_test.c b/test/core/iomgr/resolve_address_test.c index 178bbbb95fd..7a59ee3dcc4 100644 --- a/test/core/iomgr/resolve_address_test.c +++ b/test/core/iomgr/resolve_address_test.c @@ -39,32 +39,32 @@ typedef struct args_struct { grpc_pollset_set *pollset_set; } args_struct; -static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +static void do_nothing(void *arg, grpc_error *error) {} -void args_init(grpc_exec_ctx *exec_ctx, args_struct *args) { +void args_init(args_struct *args) { gpr_event_init(&args->ev); args->pollset = gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(args->pollset, &args->mu); args->pollset_set = grpc_pollset_set_create(); - grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset); + grpc_pollset_set_add_pollset(args->pollset_set, args->pollset); args->addrs = NULL; gpr_atm_rel_store(&args->done_atm, 0); } -void args_finish(grpc_exec_ctx *exec_ctx, args_struct *args) { +void args_finish(args_struct *args) { GPR_ASSERT(gpr_event_wait(&args->ev, test_deadline())); grpc_resolved_addresses_destroy(args->addrs); - grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); - grpc_pollset_set_destroy(exec_ctx, args->pollset_set); + grpc_pollset_set_del_pollset(args->pollset_set, args->pollset); + grpc_pollset_set_destroy(args->pollset_set); grpc_closure do_nothing_cb; GRPC_CLOSURE_INIT(&do_nothing_cb, do_nothing, NULL, grpc_schedule_on_exec_ctx); gpr_mu_lock(args->mu); - grpc_pollset_shutdown(exec_ctx, args->pollset, &do_nothing_cb); + grpc_pollset_shutdown(args->pollset, &do_nothing_cb); gpr_mu_unlock(args->mu); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_exec_ctx_flush(exec_ctx); - grpc_pollset_destroy(exec_ctx, args->pollset); + grpc_exec_ctx_flush(); + grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); } @@ -74,119 +74,115 @@ static grpc_millis n_sec_deadline(int seconds) { } static void poll_pollset_until_request_done(args_struct *args) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_millis deadline = n_sec_deadline(10); while (true) { bool done = gpr_atm_acq_load(&args->done_atm) != 0; if (done) { break; } - grpc_millis time_left = deadline - grpc_exec_ctx_now(&exec_ctx); + grpc_millis time_left = deadline - grpc_exec_ctx_now(); gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRIdPTR, done, time_left); GPR_ASSERT(time_left >= 0); grpc_pollset_worker *worker = NULL; gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_work", - grpc_pollset_work(&exec_ctx, args->pollset, &worker, - n_sec_deadline(1))); + GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, + n_sec_deadline(1))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } gpr_event_set(&args->ev, (void *)1); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static void must_succeed(grpc_exec_ctx *exec_ctx, void *argsp, - grpc_error *err) { +static void must_succeed(void *argsp, grpc_error *err) { args_struct *args = argsp; GPR_ASSERT(err == GRPC_ERROR_NONE); GPR_ASSERT(args->addrs != NULL); GPR_ASSERT(args->addrs->naddrs > 0); gpr_atm_rel_store(&args->done_atm, 1); gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, args->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL)); gpr_mu_unlock(args->mu); } -static void must_fail(grpc_exec_ctx *exec_ctx, void *argsp, grpc_error *err) { +static void must_fail(void *argsp, grpc_error *err) { args_struct *args = argsp; GPR_ASSERT(err != GRPC_ERROR_NONE); gpr_atm_rel_store(&args->done_atm, 1); gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, args->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL)); gpr_mu_unlock(args->mu); } static void test_localhost(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, "localhost:1", NULL, args.pollset_set, + "localhost:1", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } static void test_default_port(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, "localhost", "1", args.pollset_set, + "localhost", "1", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } static void test_non_numeric_default_port(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, "localhost", "https", args.pollset_set, + "localhost", "https", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } static void test_missing_default_port(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, "localhost", NULL, args.pollset_set, + "localhost", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } static void test_ipv6_with_port(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, "[2001:db8::1]:1", NULL, args.pollset_set, + "[2001:db8::1]:1", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } static void test_ipv6_without_port(void) { @@ -195,17 +191,17 @@ static void test_ipv6_without_port(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, kCases[i], "80", args.pollset_set, + kCases[i], "80", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } } @@ -215,17 +211,17 @@ static void test_invalid_ip_addresses(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, kCases[i], NULL, args.pollset_set, + kCases[i], NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } } @@ -235,24 +231,24 @@ static void test_unparseable_hostports(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; args_struct args; - args_init(&exec_ctx, &args); + args_init(&args); grpc_resolve_address( - &exec_ctx, kCases[i], "1", args.pollset_set, + kCases[i], "1", args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); poll_pollset_until_request_done(&args); - args_finish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + args_finish(&args); + grpc_exec_ctx_finish(); } } int main(int argc, char **argv) { grpc_test_init(argc, argv); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; test_localhost(); test_default_port(); test_non_numeric_default_port(); @@ -261,8 +257,8 @@ int main(int argc, char **argv) { test_ipv6_without_port(); test_invalid_ip_addresses(); test_unparseable_hostports(); - grpc_executor_shutdown(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_executor_shutdown(); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resource_quota_test.c b/test/core/iomgr/resource_quota_test.c index b588f3d1209..648e5f27d25 100644 --- a/test/core/iomgr/resource_quota_test.c +++ b/test/core/iomgr/resource_quota_test.c @@ -27,7 +27,7 @@ gpr_mu g_mu; gpr_cv g_cv; -static void inc_int_cb(grpc_exec_ctx *exec_ctx, void *a, grpc_error *error) { +static void inc_int_cb(void *a, grpc_error *error) { gpr_mu_lock(&g_mu); ++*(int *)a; gpr_cv_signal(&g_cv); @@ -43,7 +43,7 @@ static void assert_counter_becomes(int *ctr, int value) { gpr_mu_unlock(&g_mu); } -static void set_event_cb(grpc_exec_ctx *exec_ctx, void *a, grpc_error *error) { +static void set_event_cb(void *a, grpc_error *error) { gpr_event_set((gpr_event *)a, (void *)1); } grpc_closure *set_event(gpr_event *ev) { @@ -55,13 +55,12 @@ typedef struct { grpc_resource_user *resource_user; grpc_closure *then; } reclaimer_args; -static void reclaimer_cb(grpc_exec_ctx *exec_ctx, void *args, - grpc_error *error) { +static void reclaimer_cb(void *args, grpc_error *error) { GPR_ASSERT(error == GRPC_ERROR_NONE); reclaimer_args *a = args; - grpc_resource_user_free(exec_ctx, a->resource_user, a->size); - grpc_resource_user_finish_reclamation(exec_ctx, a->resource_user); - GRPC_CLOSURE_RUN(exec_ctx, a->then, GRPC_ERROR_NONE); + grpc_resource_user_free(a->resource_user, a->size); + grpc_resource_user_finish_reclamation(a->resource_user); + GRPC_CLOSURE_RUN(a->then, GRPC_ERROR_NONE); gpr_free(a); } grpc_closure *make_reclaimer(grpc_resource_user *resource_user, size_t size, @@ -73,10 +72,9 @@ grpc_closure *make_reclaimer(grpc_resource_user *resource_user, size_t size, return GRPC_CLOSURE_CREATE(reclaimer_cb, a, grpc_schedule_on_exec_ctx); } -static void unused_reclaimer_cb(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void unused_reclaimer_cb(void *arg, grpc_error *error) { GPR_ASSERT(error == GRPC_ERROR_CANCELLED); - GRPC_CLOSURE_RUN(exec_ctx, arg, GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN(arg, GRPC_ERROR_NONE); } grpc_closure *make_unused_reclaimer(grpc_closure *then) { return GRPC_CLOSURE_CREATE(unused_reclaimer_cb, then, @@ -84,9 +82,9 @@ grpc_closure *make_unused_reclaimer(grpc_closure *then) { } static void destroy_user(grpc_resource_user *usr) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_unref(&exec_ctx, usr); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_unref(usr); + grpc_exec_ctx_finish(); } static void test_no_op(void) { @@ -118,14 +116,14 @@ static void test_instant_alloc_then_free(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user *usr = grpc_resource_user_create(q, "usr"); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, NULL); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, NULL); + grpc_exec_ctx_finish(); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -138,10 +136,10 @@ static void test_instant_alloc_free_pair(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user *usr = grpc_resource_user_create(q, "usr"); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, NULL); - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, NULL); + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -156,16 +154,16 @@ static void test_simple_async_alloc(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -180,9 +178,9 @@ static void test_async_alloc_blocked_by_size(void) { gpr_event ev; gpr_event_init(&ev); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); } @@ -190,9 +188,9 @@ static void test_async_alloc_blocked_by_size(void) { GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -207,32 +205,32 @@ static void test_scavenge(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr1, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr1, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr1, 1024); + grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr2, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr2, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr2, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr1); @@ -248,33 +246,33 @@ static void test_scavenge_blocked(void) { gpr_event ev; { gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr1, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; } { gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr2, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr1, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr1, 1024); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr2, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr2, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr1); @@ -290,9 +288,9 @@ static void test_blocked_until_scheduled_reclaim(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -300,18 +298,17 @@ static void test_blocked_until_scheduled_reclaim(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, false, - make_reclaimer(usr, 1024, set_event(&reclaim_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr, false, make_reclaimer(usr, 1024, set_event(&reclaim_done))); + grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -319,9 +316,9 @@ static void test_blocked_until_scheduled_reclaim(void) { ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -337,9 +334,9 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr1, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -347,18 +344,17 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr1, false, - make_reclaimer(usr1, 1024, set_event(&reclaim_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr1, false, make_reclaimer(usr1, 1024, set_event(&reclaim_done))); + grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr2, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -366,9 +362,9 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr2, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr2, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr1); @@ -384,9 +380,9 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -394,18 +390,17 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, true, - make_reclaimer(usr, 1024, set_event(&reclaim_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr, true, make_reclaimer(usr, 1024, set_event(&reclaim_done))); + grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -413,9 +408,9 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -432,13 +427,12 @@ static void test_unused_reclaim_is_cancelled(void) { gpr_event destructive_done; gpr_event_init(&destructive_done); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, false, make_unused_reclaimer(set_event(&benign_done))); + usr, false, make_unused_reclaimer(set_event(&benign_done))); grpc_resource_user_post_reclaimer( - &exec_ctx, usr, true, - make_unused_reclaimer(set_event(&destructive_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr, true, make_unused_reclaimer(set_event(&destructive_done))); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -467,22 +461,20 @@ static void test_benign_reclaim_is_preferred(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, false, - make_reclaimer(usr, 1024, set_event(&benign_done))); + usr, false, make_reclaimer(usr, 1024, set_event(&benign_done))); grpc_resource_user_post_reclaimer( - &exec_ctx, usr, true, - make_unused_reclaimer(set_event(&destructive_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr, true, make_unused_reclaimer(set_event(&destructive_done))); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -493,9 +485,9 @@ static void test_benign_reclaim_is_preferred(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&destructive_done, @@ -505,9 +497,9 @@ static void test_benign_reclaim_is_preferred(void) { NULL); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -530,22 +522,20 @@ static void test_multiple_reclaims_can_be_triggered(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, false, - make_reclaimer(usr, 512, set_event(&benign_done))); + usr, false, make_reclaimer(usr, 512, set_event(&benign_done))); grpc_resource_user_post_reclaimer( - &exec_ctx, usr, true, - make_reclaimer(usr, 512, set_event(&destructive_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr, true, make_reclaimer(usr, 512, set_event(&destructive_done))); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -556,9 +546,9 @@ static void test_multiple_reclaims_can_be_triggered(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&ev)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&destructive_done, @@ -568,9 +558,9 @@ static void test_multiple_reclaims_can_be_triggered(void) { ; } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -588,20 +578,20 @@ static void test_resource_user_stays_allocated_until_memory_released(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user *usr = grpc_resource_user_create(q, "usr"); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, NULL); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, NULL); + grpc_exec_ctx_finish(); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_quota_unref(q); - grpc_resource_user_unref(&exec_ctx, usr); - grpc_exec_ctx_finish(&exec_ctx); + grpc_resource_user_unref(usr); + grpc_exec_ctx_finish(); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } } @@ -621,11 +611,10 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( gpr_event reclaimer_cancelled; gpr_event_init(&reclaimer_cancelled); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, false, - make_unused_reclaimer(set_event(&reclaimer_cancelled))); - grpc_exec_ctx_finish(&exec_ctx); + usr, false, make_unused_reclaimer(set_event(&reclaimer_cancelled))); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -633,9 +622,9 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { gpr_event allocated; gpr_event_init(&allocated); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&allocated)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -643,17 +632,17 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( NULL); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_unref(&exec_ctx, usr); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_unref(usr); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_milliseconds_to_deadline(100)) == NULL); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_seconds_to_deadline(5)) != NULL); } @@ -670,9 +659,9 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { gpr_event allocated; gpr_event_init(&allocated); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&allocated)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); } @@ -680,11 +669,10 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event reclaimer_done; gpr_event_init(&reclaimer_done); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_user_post_reclaimer( - &exec_ctx, usr, false, - make_reclaimer(usr, 1024, set_event(&reclaimer_done))); - grpc_exec_ctx_finish(&exec_ctx); + usr, false, make_reclaimer(usr, 1024, set_event(&reclaimer_done))); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&reclaimer_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -692,9 +680,9 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { gpr_event allocated; gpr_event_init(&allocated); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc(&exec_ctx, usr, 1024, set_event(&allocated)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); + grpc_exec_ctx_finish(); GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&reclaimer_done, @@ -702,9 +690,9 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { } } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_free(&exec_ctx, usr, 1024); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_free(usr, 1024); + grpc_exec_ctx_finish(); } destroy_user(usr); grpc_resource_quota_unref(q); @@ -727,16 +715,16 @@ static void test_one_slice(void) { { const int start_allocs = num_allocs; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc_slices(&exec_ctx, &alloc, 1024, 1, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); + grpc_exec_ctx_finish(); assert_counter_becomes(&num_allocs, start_allocs + 1); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } destroy_user(usr); grpc_resource_quota_unref(q); @@ -760,23 +748,23 @@ static void test_one_slice_deleted_late(void) { { const int start_allocs = num_allocs; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc_slices(&exec_ctx, &alloc, 1024, 1, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); + grpc_exec_ctx_finish(); assert_counter_becomes(&num_allocs, start_allocs + 1); } { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_unref(&exec_ctx, usr); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_unref(usr); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } } @@ -804,9 +792,9 @@ static void test_negative_rq_free_pool(void) { { const int start_allocs = num_allocs; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_alloc_slices(&exec_ctx, &alloc, 1024, 1, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); + grpc_exec_ctx_finish(); assert_counter_becomes(&num_allocs, start_allocs + 1); } @@ -817,16 +805,16 @@ static void test_negative_rq_free_pool(void) { GPR_ASSERT(grpc_resource_quota_get_memory_pressure(q) > 1 - eps); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_resource_user_unref(&exec_ctx, usr); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_resource_user_unref(usr); + grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } } diff --git a/test/core/iomgr/tcp_client_posix_test.c b/test/core/iomgr/tcp_client_posix_test.c index b8b76d1c426..1640cb4153b 100644 --- a/test/core/iomgr/tcp_client_posix_test.c +++ b/test/core/iomgr/tcp_client_posix_test.c @@ -53,26 +53,24 @@ static grpc_millis test_deadline(void) { static void finish_connection() { gpr_mu_lock(g_mu); g_connections_complete++; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(&exec_ctx, g_pollset, NULL))); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); + grpc_exec_ctx_finish(); gpr_mu_unlock(g_mu); } -static void must_succeed(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void must_succeed(void *arg, grpc_error *error) { GPR_ASSERT(g_connecting != NULL); GPR_ASSERT(error == GRPC_ERROR_NONE); - grpc_endpoint_shutdown( - exec_ctx, g_connecting, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("must_succeed called")); - grpc_endpoint_destroy(exec_ctx, g_connecting); + grpc_endpoint_shutdown(g_connecting, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "must_succeed called")); + grpc_endpoint_destroy(g_connecting); g_connecting = NULL; finish_connection(); } -static void must_fail(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void must_fail(void *arg, grpc_error *error) { GPR_ASSERT(g_connecting == NULL); GPR_ASSERT(error != GRPC_ERROR_NONE); finish_connection(); @@ -85,7 +83,7 @@ void test_succeeds(void) { int r; int connections_complete_before; grpc_closure done; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_succeeds"); @@ -108,7 +106,7 @@ void test_succeeds(void) { GPR_ASSERT(getsockname(svr_fd, (struct sockaddr *)addr, (socklen_t *)&resolved_addr.len) == 0); GRPC_CLOSURE_INIT(&done, must_succeed, NULL, grpc_schedule_on_exec_ctx); - grpc_tcp_client_connect(&exec_ctx, &done, &g_connecting, g_pollset_set, NULL, + grpc_tcp_client_connect(&done, &g_connecting, g_pollset_set, NULL, &resolved_addr, GRPC_MILLIS_INF_FUTURE); /* await the connection */ @@ -126,17 +124,17 @@ void test_succeeds(void) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, + grpc_pollset_work(g_pollset, &worker, grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(5))))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void test_fails(void) { @@ -144,7 +142,7 @@ void test_fails(void) { struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; int connections_complete_before; grpc_closure done; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_fails"); @@ -158,7 +156,7 @@ void test_fails(void) { /* connect to a broken address */ GRPC_CLOSURE_INIT(&done, must_fail, NULL, grpc_schedule_on_exec_ctx); - grpc_tcp_client_connect(&exec_ctx, &done, &g_connecting, g_pollset_set, NULL, + grpc_tcp_client_connect(&done, &g_connecting, g_pollset_set, NULL, &resolved_addr, GRPC_MILLIS_INF_FUTURE); gpr_mu_lock(g_mu); @@ -167,7 +165,7 @@ void test_fails(void) { while (g_connections_complete == connections_complete_before) { grpc_pollset_worker *worker = NULL; grpc_millis polling_deadline = test_deadline(); - switch (grpc_timer_check(&exec_ctx, &polling_deadline)) { + switch (grpc_timer_check(&polling_deadline)) { case GRPC_TIMERS_FIRED: break; case GRPC_TIMERS_NOT_CHECKED: @@ -175,42 +173,41 @@ void test_fails(void) { /* fall through */ case GRPC_TIMERS_CHECKED_AND_EMPTY: GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, g_pollset, &worker, - polling_deadline))); + "pollset_work", + grpc_pollset_work(g_pollset, &worker, polling_deadline))); break; } gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset_set = grpc_pollset_set_create(); g_pollset = gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(g_pollset, &g_mu); - grpc_pollset_set_add_pollset(&exec_ctx, g_pollset_set, g_pollset); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_set_add_pollset(g_pollset_set, g_pollset); + grpc_exec_ctx_finish(); test_succeeds(); gpr_log(GPR_ERROR, "End of first test"); test_fails(); - grpc_pollset_set_destroy(&exec_ctx, g_pollset_set); + grpc_pollset_set_destroy(g_pollset_set); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(g_pollset); return 0; diff --git a/test/core/iomgr/tcp_client_uv_test.c b/test/core/iomgr/tcp_client_uv_test.c index edfccbe8678..393c183fa90 100644 --- a/test/core/iomgr/tcp_client_uv_test.c +++ b/test/core/iomgr/tcp_client_uv_test.c @@ -46,30 +46,28 @@ static grpc_millis test_deadline(void) { return grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(10)); } -static void finish_connection(grpc_exec_ctx *exec_ctx) { +static void finish_connection() { gpr_mu_lock(g_mu); g_connections_complete++; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } -static void must_succeed(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void must_succeed(void *arg, grpc_error *error) { GPR_ASSERT(g_connecting != NULL); GPR_ASSERT(error == GRPC_ERROR_NONE); - grpc_endpoint_shutdown( - exec_ctx, g_connecting, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("must_succeed called")); - grpc_endpoint_destroy(exec_ctx, g_connecting); + grpc_endpoint_shutdown(g_connecting, GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "must_succeed called")); + grpc_endpoint_destroy(g_connecting); g_connecting = NULL; - finish_connection(exec_ctx); + finish_connection(); } -static void must_fail(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void must_fail(void *arg, grpc_error *error) { GPR_ASSERT(g_connecting == NULL); GPR_ASSERT(error != GRPC_ERROR_NONE); - finish_connection(exec_ctx); + finish_connection(); } static void close_cb(uv_handle_t *handle) { gpr_free(handle); } @@ -88,7 +86,7 @@ void test_succeeds(void) { uv_tcp_t *svr_handle = gpr_malloc(sizeof(uv_tcp_t)); int connections_complete_before; grpc_closure done; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_succeeds"); @@ -109,8 +107,8 @@ void test_succeeds(void) { GPR_ASSERT(uv_tcp_getsockname(svr_handle, (struct sockaddr *)addr, (int *)&resolved_addr.len) == 0); GRPC_CLOSURE_INIT(&done, must_succeed, NULL, grpc_schedule_on_exec_ctx); - grpc_tcp_client_connect(&exec_ctx, &done, &g_connecting, NULL, NULL, - &resolved_addr, GRPC_MILLIS_INF_FUTURE); + grpc_tcp_client_connect(&done, &g_connecting, NULL, NULL, &resolved_addr, + GRPC_MILLIS_INF_FUTURE); gpr_mu_lock(g_mu); @@ -118,11 +116,11 @@ void test_succeeds(void) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, + grpc_pollset_work(g_pollset, &worker, grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(5))))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } @@ -131,7 +129,7 @@ void test_succeeds(void) { gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void test_fails(void) { @@ -139,7 +137,7 @@ void test_fails(void) { struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; int connections_complete_before; grpc_closure done; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_fails"); @@ -153,8 +151,8 @@ void test_fails(void) { /* connect to a broken address */ GRPC_CLOSURE_INIT(&done, must_fail, NULL, grpc_schedule_on_exec_ctx); - grpc_tcp_client_connect(&exec_ctx, &done, &g_connecting, NULL, NULL, - &resolved_addr, GRPC_MILLIS_INF_FUTURE); + grpc_tcp_client_connect(&done, &g_connecting, NULL, NULL, &resolved_addr, + GRPC_MILLIS_INF_FUTURE); gpr_mu_lock(g_mu); @@ -163,7 +161,7 @@ void test_fails(void) { grpc_pollset_worker *worker = NULL; gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); grpc_millis polling_deadline = test_deadline(); - switch (grpc_timer_check(&exec_ctx, &polling_deadline)) { + switch (grpc_timer_check(&polling_deadline)) { case GRPC_TIMERS_FIRED: break; case GRPC_TIMERS_NOT_CHECKED: @@ -171,39 +169,38 @@ void test_fails(void) { /* fall through */ case GRPC_TIMERS_CHECKED_AND_EMPTY: GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", grpc_pollset_work(&exec_ctx, g_pollset, &worker, - polling_deadline))); + "pollset_work", + grpc_pollset_work(g_pollset, &worker, polling_deadline))); break; } gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset = gpr_malloc(grpc_pollset_size()); grpc_pollset_init(g_pollset, &g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); test_succeeds(); gpr_log(GPR_ERROR, "End of first test"); test_fails(); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(g_pollset); return 0; diff --git a/test/core/iomgr/tcp_posix_test.c b/test/core/iomgr/tcp_posix_test.c index 6501160c6f4..83f1ad424d2 100644 --- a/test/core/iomgr/tcp_posix_test.c +++ b/test/core/iomgr/tcp_posix_test.c @@ -131,8 +131,7 @@ static size_t count_slices(grpc_slice *slices, size_t nslices, return num_bytes; } -static void read_cb(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_error *error) { +static void read_cb(void *user_data, grpc_error *error) { struct read_socket_state *state = (struct read_socket_state *)user_data; size_t read_bytes; int current_data; @@ -147,11 +146,10 @@ static void read_cb(grpc_exec_ctx *exec_ctx, void *user_data, gpr_log(GPR_INFO, "Read %" PRIuPTR " bytes of %" PRIuPTR, read_bytes, state->target_read_bytes); if (state->read_bytes >= state->target_read_bytes) { - GPR_ASSERT(GRPC_LOG_IF_ERROR("kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT(GRPC_LOG_IF_ERROR("kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } else { - grpc_endpoint_read(exec_ctx, state->ep, &state->incoming, &state->read_cb); + grpc_endpoint_read(state->ep, &state->incoming, &state->read_cb); gpr_mu_unlock(g_mu); } } @@ -164,7 +162,7 @@ static void read_test(size_t num_bytes, size_t slice_size) { size_t written_bytes; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_INFO, "Read test of size %" PRIuPTR ", slice size %" PRIuPTR, num_bytes, slice_size); @@ -175,9 +173,8 @@ static void read_test(size_t num_bytes, size_t slice_size) { .type = GRPC_ARG_INTEGER, .value.integer = (int)slice_size}}; grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a}; - ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "read_test"), &args, - "test"); - grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset); + ep = grpc_tcp_create(grpc_fd_create(sv[1], "read_test"), &args, "test"); + grpc_endpoint_add_to_pollset(ep, g_pollset); written_bytes = fill_socket_partial(sv[0], num_bytes); gpr_log(GPR_INFO, "Wrote %" PRIuPTR " bytes", written_bytes); @@ -188,24 +185,23 @@ static void read_test(size_t num_bytes, size_t slice_size) { grpc_slice_buffer_init(&state.incoming); GRPC_CLOSURE_INIT(&state.read_cb, read_cb, &state, grpc_schedule_on_exec_ctx); - grpc_endpoint_read(&exec_ctx, ep, &state.incoming, &state.read_cb); + grpc_endpoint_read(ep, &state.incoming, &state.read_cb); gpr_mu_lock(g_mu); while (state.read_bytes < state.target_read_bytes) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); gpr_mu_unlock(g_mu); - grpc_slice_buffer_destroy_internal(&exec_ctx, &state.incoming); - grpc_endpoint_destroy(&exec_ctx, ep); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_buffer_destroy_internal(&state.incoming); + grpc_endpoint_destroy(ep); + grpc_exec_ctx_finish(); } /* Write to a socket until it fills up, then read from it using the grpc_tcp @@ -217,7 +213,7 @@ static void large_read_test(size_t slice_size) { ssize_t written_bytes; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_INFO, "Start large read test, slice size %" PRIuPTR, slice_size); @@ -227,9 +223,8 @@ static void large_read_test(size_t slice_size) { .type = GRPC_ARG_INTEGER, .value.integer = (int)slice_size}}; grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a}; - ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "large_read_test"), - &args, "test"); - grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset); + ep = grpc_tcp_create(grpc_fd_create(sv[1], "large_read_test"), &args, "test"); + grpc_endpoint_add_to_pollset(ep, g_pollset); written_bytes = fill_socket(sv[0]); gpr_log(GPR_INFO, "Wrote %" PRIuPTR " bytes", written_bytes); @@ -240,24 +235,23 @@ static void large_read_test(size_t slice_size) { grpc_slice_buffer_init(&state.incoming); GRPC_CLOSURE_INIT(&state.read_cb, read_cb, &state, grpc_schedule_on_exec_ctx); - grpc_endpoint_read(&exec_ctx, ep, &state.incoming, &state.read_cb); + grpc_endpoint_read(ep, &state.incoming, &state.read_cb); gpr_mu_lock(g_mu); while (state.read_bytes < state.target_read_bytes) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); gpr_mu_unlock(g_mu); - grpc_slice_buffer_destroy_internal(&exec_ctx, &state.incoming); - grpc_endpoint_destroy(&exec_ctx, ep); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_buffer_destroy_internal(&state.incoming); + grpc_endpoint_destroy(ep); + grpc_exec_ctx_finish(); } struct write_socket_state { @@ -288,16 +282,15 @@ static grpc_slice *allocate_blocks(size_t num_bytes, size_t slice_size, return slices; } -static void write_done(grpc_exec_ctx *exec_ctx, - void *user_data /* write_socket_state */, +static void write_done(void *user_data /* write_socket_state */, grpc_error *error) { struct write_socket_state *state = (struct write_socket_state *)user_data; gpr_log(GPR_INFO, "Write done callback called"); gpr_mu_lock(g_mu); gpr_log(GPR_INFO, "Signalling write done"); state->write_done = 1; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } @@ -308,7 +301,7 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { int flags; int current = 0; int i; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; flags = fcntl(fd, F_GETFL, 0); GPR_ASSERT(fcntl(fd, F_SETFL, flags & ~O_NONBLOCK) == 0); @@ -318,11 +311,11 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { gpr_mu_lock(g_mu); GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, + grpc_pollset_work(g_pollset, &worker, grpc_timespec_to_millis_round_up( grpc_timeout_milliseconds_to_deadline(10))))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); do { bytes_read = read(fd, buf, bytes_left > read_size ? read_size : bytes_left); @@ -355,7 +348,7 @@ static void write_test(size_t num_bytes, size_t slice_size) { grpc_closure write_done_closure; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_INFO, "Start write test with %" PRIuPTR " bytes, slice size %" PRIuPTR, @@ -367,9 +360,8 @@ static void write_test(size_t num_bytes, size_t slice_size) { .type = GRPC_ARG_INTEGER, .value.integer = (int)slice_size}}; grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a}; - ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "write_test"), &args, - "test"); - grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset); + ep = grpc_tcp_create(grpc_fd_create(sv[1], "write_test"), &args, "test"); + grpc_endpoint_add_to_pollset(ep, g_pollset); state.ep = ep; state.write_done = 0; @@ -381,7 +373,7 @@ static void write_test(size_t num_bytes, size_t slice_size) { GRPC_CLOSURE_INIT(&write_done_closure, write_done, &state, grpc_schedule_on_exec_ctx); - grpc_endpoint_write(&exec_ctx, ep, &outgoing, &write_done_closure); + grpc_endpoint_write(ep, &outgoing, &write_done_closure); drain_socket_blocking(sv[0], num_bytes, num_bytes); gpr_mu_lock(g_mu); for (;;) { @@ -390,25 +382,24 @@ static void write_test(size_t num_bytes, size_t slice_size) { break; } GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - grpc_slice_buffer_destroy_internal(&exec_ctx, &outgoing); - grpc_endpoint_destroy(&exec_ctx, ep); + grpc_slice_buffer_destroy_internal(&outgoing); + grpc_endpoint_destroy(ep); gpr_free(slices); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -void on_fd_released(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *errors) { +void on_fd_released(void *arg, grpc_error *errors) { int *done = (int *)arg; *done = 1; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); } /* Do a read_test, then release fd and try to read/write again. Verify that @@ -421,7 +412,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { int fd; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_closure fd_released_cb; int fd_released_done = 0; GRPC_CLOSURE_INIT(&fd_released_cb, &on_fd_released, &fd_released_done, @@ -437,10 +428,9 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { .type = GRPC_ARG_INTEGER, .value.integer = (int)slice_size}}; grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a}; - ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "read_test"), &args, - "test"); + ep = grpc_tcp_create(grpc_fd_create(sv[1], "read_test"), &args, "test"); GPR_ASSERT(grpc_tcp_fd(ep) == sv[1] && sv[1] >= 0); - grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset); + grpc_endpoint_add_to_pollset(ep, g_pollset); written_bytes = fill_socket_partial(sv[0], num_bytes); gpr_log(GPR_INFO, "Wrote %" PRIuPTR " bytes", written_bytes); @@ -451,38 +441,36 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { grpc_slice_buffer_init(&state.incoming); GRPC_CLOSURE_INIT(&state.read_cb, read_cb, &state, grpc_schedule_on_exec_ctx); - grpc_endpoint_read(&exec_ctx, ep, &state.incoming, &state.read_cb); + grpc_endpoint_read(ep, &state.incoming, &state.read_cb); gpr_mu_lock(g_mu); while (state.read_bytes < state.target_read_bytes) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_log(GPR_DEBUG, "wakeup: read=%" PRIdPTR " target=%" PRIdPTR, state.read_bytes, state.target_read_bytes); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); gpr_mu_unlock(g_mu); - grpc_slice_buffer_destroy_internal(&exec_ctx, &state.incoming); - grpc_tcp_destroy_and_release_fd(&exec_ctx, ep, &fd, &fd_released_cb); - grpc_exec_ctx_flush(&exec_ctx); + grpc_slice_buffer_destroy_internal(&state.incoming); + grpc_tcp_destroy_and_release_fd(ep, &fd, &fd_released_cb); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); while (!fd_released_done) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_log(GPR_DEBUG, "wakeup: fd_released_done=%d", fd_released_done); } gpr_mu_unlock(g_mu); GPR_ASSERT(fd_released_done == 1); GPR_ASSERT(fd == sv[1]); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); written_bytes = fill_socket_partial(sv[0], num_bytes); drain_socket_blocking(fd, written_bytes, written_bytes); @@ -520,7 +508,7 @@ static grpc_endpoint_test_fixture create_fixture_tcp_socketpair( size_t slice_size) { int sv[2]; grpc_endpoint_test_fixture f; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; create_sockets(sv); grpc_resource_quota *resource_quota = @@ -529,15 +517,15 @@ static grpc_endpoint_test_fixture create_fixture_tcp_socketpair( .type = GRPC_ARG_INTEGER, .value.integer = (int)slice_size}}; grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a}; - f.client_ep = grpc_tcp_create( - &exec_ctx, grpc_fd_create(sv[0], "fixture:client"), &args, "test"); - f.server_ep = grpc_tcp_create( - &exec_ctx, grpc_fd_create(sv[1], "fixture:server"), &args, "test"); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); - grpc_endpoint_add_to_pollset(&exec_ctx, f.client_ep, g_pollset); - grpc_endpoint_add_to_pollset(&exec_ctx, f.server_ep, g_pollset); + f.client_ep = + grpc_tcp_create(grpc_fd_create(sv[0], "fixture:client"), &args, "test"); + f.server_ep = + grpc_tcp_create(grpc_fd_create(sv[1], "fixture:server"), &args, "test"); + grpc_resource_quota_unref_internal(resource_quota); + grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); + grpc_endpoint_add_to_pollset(f.server_ep, g_pollset); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return f; } @@ -546,14 +534,13 @@ static grpc_endpoint_test_config configs[] = { {"tcp/tcp_socketpair", create_fixture_tcp_socketpair, clean_up}, }; -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, (grpc_pollset *)p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy((grpc_pollset *)p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset = (grpc_pollset *)gpr_zalloc(grpc_pollset_size()); @@ -562,8 +549,8 @@ int main(int argc, char **argv) { run_tests(); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_server_posix_test.c b/test/core/iomgr/tcp_server_posix_test.c index 782dfb413a9..a1684fe72ca 100644 --- a/test/core/iomgr/tcp_server_posix_test.c +++ b/test/core/iomgr/tcp_server_posix_test.c @@ -110,8 +110,7 @@ static void on_connect_result_set(on_connect_result *result, result->server, acceptor->port_index, acceptor->fd_index); } -static void server_weak_ref_shutdown(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void server_weak_ref_shutdown(void *arg, grpc_error *error) { server_weak_ref *weak_ref = arg; weak_ref->server = NULL; } @@ -145,12 +144,11 @@ static void test_addr_init_str(test_addr *addr) { } } -static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, - grpc_pollset *pollset, +static void on_connect(void *arg, grpc_endpoint *tcp, grpc_pollset *pollset, grpc_tcp_server_acceptor *acceptor) { - grpc_endpoint_shutdown(exec_ctx, tcp, + grpc_endpoint_shutdown(tcp, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected")); - grpc_endpoint_destroy(exec_ctx, tcp); + grpc_endpoint_destroy(tcp); on_connect_result temp_result; on_connect_result_set(&temp_result, acceptor); @@ -159,38 +157,35 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, gpr_mu_lock(g_mu); g_result = temp_result; g_nconnects++; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } static void test_no_op(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void test_no_op_with_start(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_start"); - grpc_tcp_server_start(&exec_ctx, s, NULL, 0, on_connect, NULL); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void test_no_op_with_port(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_port"); memset(&resolved_addr, 0, sizeof(resolved_addr)); @@ -201,17 +196,16 @@ static void test_no_op_with_port(void) { GRPC_ERROR_NONE && port > 0); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void test_no_op_with_port_and_start(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_port_and_start"); int port = -1; @@ -222,13 +216,13 @@ static void test_no_op_with_port_and_start(void) { GRPC_ERROR_NONE && port > 0); - grpc_tcp_server_start(&exec_ctx, s, NULL, 0, on_connect, NULL); + grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } -static grpc_error *tcp_connect(grpc_exec_ctx *exec_ctx, const test_addr *remote, +static grpc_error *tcp_connect(const test_addr *remote, on_connect_result *result) { grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(10)); @@ -253,18 +247,17 @@ static grpc_error *tcp_connect(grpc_exec_ctx *exec_ctx, const test_addr *remote, return GRPC_OS_ERROR(errno, "connect"); } gpr_log(GPR_DEBUG, "wait"); - while (g_nconnects == nconnects_before && - deadline > grpc_exec_ctx_now(exec_ctx)) { + while (g_nconnects == nconnects_before && deadline > grpc_exec_ctx_now()) { grpc_pollset_worker *worker = NULL; grpc_error *err; - if ((err = grpc_pollset_work(exec_ctx, g_pollset, &worker, deadline)) != + if ((err = grpc_pollset_work(g_pollset, &worker, deadline)) != GRPC_ERROR_NONE) { gpr_mu_unlock(g_mu); close(clifd); return err; } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_log(GPR_DEBUG, "wait done"); @@ -279,7 +272,7 @@ static grpc_error *tcp_connect(grpc_exec_ctx *exec_ctx, const test_addr *remote, gpr_mu_unlock(g_mu); gpr_log(GPR_INFO, "Result (%d, %d) fd %d", result->port_index, result->fd_index, result->server_fd); - grpc_tcp_server_unref(exec_ctx, result->server); + grpc_tcp_server_unref(result->server); return GRPC_ERROR_NONE; } @@ -292,7 +285,7 @@ static grpc_error *tcp_connect(grpc_exec_ctx *exec_ctx, const test_addr *remote, static void test_connect(size_t num_connects, const grpc_channel_args *channel_args, test_addrs *dst_addrs, bool test_dst_addrs) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; grpc_resolved_address resolved_addr1; struct sockaddr_storage *const addr = @@ -306,8 +299,7 @@ static void test_connect(size_t num_connects, int svr1_port; grpc_tcp_server *s; const unsigned num_ports = 2; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, channel_args, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, channel_args, &s)); unsigned port_num; server_weak_ref weak_ref; server_weak_ref_init(&weak_ref); @@ -352,7 +344,7 @@ static void test_connect(size_t num_connects, svr1_fd_count = grpc_tcp_server_port_fd_count(s, 1); GPR_ASSERT(svr1_fd_count >= 1); - grpc_tcp_server_start(&exec_ctx, s, &g_pollset, 1, on_connect, NULL); + grpc_tcp_server_start(s, &g_pollset, 1, on_connect, NULL); if (dst_addrs != NULL) { int ports[] = {svr_port, svr1_port}; @@ -372,7 +364,7 @@ static void test_connect(size_t num_connects, test_addr_init_str(&dst); ++num_tested; on_connect_result_init(&result); - if ((err = tcp_connect(&exec_ctx, &dst, &result)) == GRPC_ERROR_NONE && + if ((err = tcp_connect(&dst, &result)) == GRPC_ERROR_NONE && result.server_fd >= 0 && result.server == s) { continue; } @@ -403,8 +395,8 @@ static void test_connect(size_t num_connects, for (connect_num = 0; connect_num < num_connects; ++connect_num) { on_connect_result result; on_connect_result_init(&result); - GPR_ASSERT(GRPC_LOG_IF_ERROR("tcp_connect", - tcp_connect(&exec_ctx, &dst, &result))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("tcp_connect", tcp_connect(&dst, &result))); GPR_ASSERT(result.server_fd == fd); GPR_ASSERT(result.port_index == port_num); GPR_ASSERT(result.fd_index == fd_num); @@ -420,21 +412,20 @@ static void test_connect(size_t num_connects, GPR_ASSERT(weak_ref.server != NULL); GPR_ASSERT(grpc_tcp_server_port_fd(s, 0, 0) >= 0); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); /* Weak ref lost. */ GPR_ASSERT(weak_ref.server == NULL); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_arg chan_args[] = { {GRPC_ARG_INTEGER, GRPC_ARG_EXPAND_WILDCARD_ADDRS, {.integer = 1}}}; const grpc_channel_args channel_args = {1, chan_args}; @@ -494,8 +485,8 @@ int main(int argc, char **argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(dst_addrs); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_server_uv_test.c b/test/core/iomgr/tcp_server_uv_test.c index 9fafd3177a9..08873a8860b 100644 --- a/test/core/iomgr/tcp_server_uv_test.c +++ b/test/core/iomgr/tcp_server_uv_test.c @@ -74,8 +74,7 @@ static void on_connect_result_set(on_connect_result *result, result->fd_index = acceptor->fd_index; } -static void server_weak_ref_shutdown(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void server_weak_ref_shutdown(void *arg, grpc_error *error) { server_weak_ref *weak_ref = arg; weak_ref->server = NULL; } @@ -97,12 +96,11 @@ static void server_weak_ref_set(server_weak_ref *weak_ref, weak_ref->server = server; } -static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, - grpc_pollset *pollset, +static void on_connect(void *arg, grpc_endpoint *tcp, grpc_pollset *pollset, grpc_tcp_server_acceptor *acceptor) { - grpc_endpoint_shutdown(exec_ctx, tcp, + grpc_endpoint_shutdown(tcp, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected")); - grpc_endpoint_destroy(exec_ctx, tcp); + grpc_endpoint_destroy(tcp); on_connect_result temp_result; on_connect_result_set(&temp_result, acceptor); @@ -111,38 +109,35 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, gpr_mu_lock(g_mu); g_result = temp_result; g_nconnects++; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } static void test_no_op(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void test_no_op_with_start(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_start"); - grpc_tcp_server_start(&exec_ctx, s, NULL, 0, on_connect, NULL); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void test_no_op_with_port(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_port"); memset(&resolved_addr, 0, sizeof(resolved_addr)); @@ -153,17 +148,16 @@ static void test_no_op_with_port(void) { GRPC_ERROR_NONE && port > 0); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void test_no_op_with_port_and_start(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_port_and_start"); int port; @@ -174,10 +168,10 @@ static void test_no_op_with_port_and_start(void) { GRPC_ERROR_NONE && port > 0); - grpc_tcp_server_start(&exec_ctx, s, NULL, 0, on_connect, NULL); + grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); } static void connect_cb(uv_connect_t *req, int status) { @@ -187,8 +181,8 @@ static void connect_cb(uv_connect_t *req, int status) { static void close_cb(uv_handle_t *handle) { gpr_free(handle); } -static void tcp_connect(grpc_exec_ctx *exec_ctx, const struct sockaddr *remote, - socklen_t remote_len, on_connect_result *result) { +static void tcp_connect(const struct sockaddr *remote, socklen_t remote_len, + on_connect_result *result) { gpr_timespec deadline = grpc_timeout_seconds_to_deadline(10); uv_tcp_t *client_handle = gpr_malloc(sizeof(uv_tcp_t)); uv_connect_t *req = gpr_malloc(sizeof(uv_connect_t)); @@ -206,10 +200,10 @@ static void tcp_connect(grpc_exec_ctx *exec_ctx, const struct sockaddr *remote, grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(exec_ctx, g_pollset, &worker, + grpc_pollset_work(g_pollset, &worker, grpc_timespec_to_millis_round_up(deadline)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(g_mu); } gpr_log(GPR_DEBUG, "wait done"); @@ -222,7 +216,7 @@ static void tcp_connect(grpc_exec_ctx *exec_ctx, const struct sockaddr *remote, /* Tests a tcp server with multiple ports. */ static void test_connect(unsigned n) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; grpc_resolved_address resolved_addr1; struct sockaddr_storage *addr = (struct sockaddr_storage *)resolved_addr.addr; @@ -231,8 +225,7 @@ static void test_connect(unsigned n) { int svr_port; int svr1_port; grpc_tcp_server *s; - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); unsigned i; server_weak_ref weak_ref; server_weak_ref_init(&weak_ref); @@ -255,48 +248,46 @@ static void test_connect(unsigned n) { GRPC_ERROR_NONE && svr_port == svr1_port); - grpc_tcp_server_start(&exec_ctx, s, &g_pollset, 1, on_connect, NULL); + grpc_tcp_server_start(s, &g_pollset, 1, on_connect, NULL); GPR_ASSERT(uv_ip6_addr("::", svr_port, (struct sockaddr_in6 *)addr1) == 0); for (i = 0; i < n; i++) { on_connect_result result; on_connect_result_init(&result); - tcp_connect(&exec_ctx, (struct sockaddr *)addr, - (socklen_t)resolved_addr.len, &result); + tcp_connect((struct sockaddr *)addr, (socklen_t)resolved_addr.len, &result); GPR_ASSERT(result.port_index == 0); GPR_ASSERT(result.server == s); if (weak_ref.server == NULL) { server_weak_ref_set(&weak_ref, result.server); } - grpc_tcp_server_unref(&exec_ctx, result.server); + grpc_tcp_server_unref(result.server); on_connect_result_init(&result); - tcp_connect(&exec_ctx, (struct sockaddr *)addr1, - (socklen_t)resolved_addr1.len, &result); + tcp_connect((struct sockaddr *)addr1, (socklen_t)resolved_addr1.len, + &result); GPR_ASSERT(result.port_index == 1); GPR_ASSERT(result.server == s); - grpc_tcp_server_unref(&exec_ctx, result.server); + grpc_tcp_server_unref(result.server); } /* Weak ref to server valid until final unref. */ GPR_ASSERT(weak_ref.server != NULL); - grpc_tcp_server_unref(&exec_ctx, s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_tcp_server_unref(s); + grpc_exec_ctx_finish(); /* Weak ref lost. */ GPR_ASSERT(weak_ref.server == NULL); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset = gpr_malloc(grpc_pollset_size()); @@ -311,8 +302,8 @@ int main(int argc, char **argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(g_pollset); return 0; diff --git a/test/core/iomgr/timer_list_test.c b/test/core/iomgr/timer_list_test.c index c3d9f9d88d4..1ef4501a36f 100644 --- a/test/core/iomgr/timer_list_test.c +++ b/test/core/iomgr/timer_list_test.c @@ -36,51 +36,50 @@ extern grpc_tracer_flag grpc_timer_check_trace; static int cb_called[MAX_CB][2]; -static void cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void cb(void *arg, grpc_error *error) { cb_called[(intptr_t)arg][error == GRPC_ERROR_NONE]++; } static void add_test(void) { int i; grpc_timer timers[20]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_INFO, "add_test"); - grpc_timer_list_init(&exec_ctx); + grpc_timer_list_init(); grpc_timer_trace.value = 1; grpc_timer_check_trace.value = 1; memset(cb_called, 0, sizeof(cb_called)); - grpc_millis start = grpc_exec_ctx_now(&exec_ctx); + grpc_millis start = grpc_exec_ctx_now(); /* 10 ms timers. will expire in the current epoch */ for (i = 0; i < 10; i++) { - grpc_timer_init(&exec_ctx, &timers[i], start + 10, + grpc_timer_init(&timers[i], start + 10, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)i, grpc_schedule_on_exec_ctx)); } /* 1010 ms timers. will expire in the next epoch */ for (i = 10; i < 20; i++) { - grpc_timer_init(&exec_ctx, &timers[i], start + 1010, + grpc_timer_init(&timers[i], start + 1010, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)i, grpc_schedule_on_exec_ctx)); } /* collect timers. Only the first batch should be ready. */ exec_ctx.now = start + 500; - GPR_ASSERT(grpc_timer_check(&exec_ctx, NULL) == GRPC_TIMERS_FIRED); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); + grpc_exec_ctx_finish(); for (i = 0; i < 20; i++) { GPR_ASSERT(cb_called[i][1] == (i < 10)); GPR_ASSERT(cb_called[i][0] == 0); } exec_ctx.now = start + 600; - GPR_ASSERT(grpc_timer_check(&exec_ctx, NULL) == - GRPC_TIMERS_CHECKED_AND_EMPTY); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_CHECKED_AND_EMPTY); + grpc_exec_ctx_finish(); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 10)); GPR_ASSERT(cb_called[i][0] == 0); @@ -88,66 +87,65 @@ static void add_test(void) { /* collect the rest of the timers */ exec_ctx.now = start + 1500; - GPR_ASSERT(grpc_timer_check(&exec_ctx, NULL) == GRPC_TIMERS_FIRED); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); + grpc_exec_ctx_finish(); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 20)); GPR_ASSERT(cb_called[i][0] == 0); } exec_ctx.now = start + 1600; - GPR_ASSERT(grpc_timer_check(&exec_ctx, NULL) == - GRPC_TIMERS_CHECKED_AND_EMPTY); + GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_CHECKED_AND_EMPTY); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 20)); GPR_ASSERT(cb_called[i][0] == 0); } - grpc_timer_list_shutdown(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_timer_list_shutdown(); + grpc_exec_ctx_finish(); } /* Cleaning up a list with pending timers. */ void destruction_test(void) { grpc_timer timers[5]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_INFO, "destruction_test"); exec_ctx.now_is_valid = true; exec_ctx.now = 0; - grpc_timer_list_init(&exec_ctx); + grpc_timer_list_init(); grpc_timer_trace.value = 1; grpc_timer_check_trace.value = 1; memset(cb_called, 0, sizeof(cb_called)); grpc_timer_init( - &exec_ctx, &timers[0], 100, + &timers[0], 100, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)0, grpc_schedule_on_exec_ctx)); grpc_timer_init( - &exec_ctx, &timers[1], 3, + &timers[1], 3, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)1, grpc_schedule_on_exec_ctx)); grpc_timer_init( - &exec_ctx, &timers[2], 100, + &timers[2], 100, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)2, grpc_schedule_on_exec_ctx)); grpc_timer_init( - &exec_ctx, &timers[3], 3, + &timers[3], 3, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)3, grpc_schedule_on_exec_ctx)); grpc_timer_init( - &exec_ctx, &timers[4], 1, + &timers[4], 1, GRPC_CLOSURE_CREATE(cb, (void *)(intptr_t)4, grpc_schedule_on_exec_ctx)); exec_ctx.now = 2; - GPR_ASSERT(grpc_timer_check(&exec_ctx, NULL) == GRPC_TIMERS_FIRED); - grpc_exec_ctx_finish(&exec_ctx); + GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); + grpc_exec_ctx_finish(); GPR_ASSERT(1 == cb_called[4][1]); - grpc_timer_cancel(&exec_ctx, &timers[0]); - grpc_timer_cancel(&exec_ctx, &timers[3]); - grpc_exec_ctx_finish(&exec_ctx); + grpc_timer_cancel(&timers[0]); + grpc_timer_cancel(&timers[3]); + grpc_exec_ctx_finish(); GPR_ASSERT(1 == cb_called[0][0]); GPR_ASSERT(1 == cb_called[3][0]); - grpc_timer_list_shutdown(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_timer_list_shutdown(); + grpc_exec_ctx_finish(); GPR_ASSERT(1 == cb_called[1][0]); GPR_ASSERT(1 == cb_called[2][0]); } diff --git a/test/core/iomgr/udp_server_test.c b/test/core/iomgr/udp_server_test.c index 2e44d0abc8b..2e2643749c7 100644 --- a/test/core/iomgr/udp_server_test.c +++ b/test/core/iomgr/udp_server_test.c @@ -50,7 +50,7 @@ static int g_number_of_writes = 0; static int g_number_of_bytes_read = 0; static int g_number_of_orphan_calls = 0; -static void on_read(grpc_exec_ctx *exec_ctx, grpc_fd *emfd, void *user_data) { +static void on_read(grpc_fd *emfd, void *user_data) { char read_buffer[512]; ssize_t byte_count; @@ -61,22 +61,22 @@ static void on_read(grpc_exec_ctx *exec_ctx, grpc_fd *emfd, void *user_data) { g_number_of_reads++; g_number_of_bytes_read += (int)byte_count; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } -static void on_write(grpc_exec_ctx *exec_ctx, grpc_fd *emfd, void *user_data) { +static void on_write(grpc_fd *emfd, void *user_data) { gpr_mu_lock(g_mu); g_number_of_writes++; - GPR_ASSERT(GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, g_pollset, NULL))); + GPR_ASSERT( + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); gpr_mu_unlock(g_mu); } -static void on_fd_orphaned(grpc_exec_ctx *exec_ctx, grpc_fd *emfd, - grpc_closure *closure, void *user_data) { +static void on_fd_orphaned(grpc_fd *emfd, grpc_closure *closure, + void *user_data) { gpr_log(GPR_INFO, "gRPC FD about to be orphaned: %d", grpc_fd_wrapped_fd(emfd)); g_number_of_orphan_calls++; @@ -126,24 +126,24 @@ static test_socket_factory *test_socket_factory_create(void) { } static void test_no_op(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_udp_server *s = grpc_udp_server_create(NULL); - grpc_udp_server_destroy(&exec_ctx, s, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_udp_server_destroy(s, NULL); + grpc_exec_ctx_finish(); } static void test_no_op_with_start(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_udp_server *s = grpc_udp_server_create(NULL); LOG_TEST("test_no_op_with_start"); - grpc_udp_server_start(&exec_ctx, s, NULL, 0, NULL); - grpc_udp_server_destroy(&exec_ctx, s, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_udp_server_start(s, NULL, 0, NULL); + grpc_udp_server_destroy(s, NULL); + grpc_exec_ctx_finish(); } static void test_no_op_with_port(void) { g_number_of_orphan_calls = 0; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; grpc_udp_server *s = grpc_udp_server_create(NULL); @@ -155,8 +155,8 @@ static void test_no_op_with_port(void) { GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, on_read, on_write, on_fd_orphaned)); - grpc_udp_server_destroy(&exec_ctx, s, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_udp_server_destroy(s, NULL); + grpc_exec_ctx_finish(); /* The server had a single FD, which should have been orphaned. */ GPR_ASSERT(g_number_of_orphan_calls == 1); @@ -164,7 +164,7 @@ static void test_no_op_with_port(void) { static void test_no_op_with_port_and_socket_factory(void) { g_number_of_orphan_calls = 0; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; @@ -174,7 +174,7 @@ static void test_no_op_with_port_and_socket_factory(void) { grpc_channel_args *channel_args = grpc_channel_args_copy_and_add(NULL, &socket_factory_arg, 1); grpc_udp_server *s = grpc_udp_server_create(channel_args); - grpc_channel_args_destroy(&exec_ctx, channel_args); + grpc_channel_args_destroy(channel_args); LOG_TEST("test_no_op_with_port_and_socket_factory"); @@ -186,8 +186,8 @@ static void test_no_op_with_port_and_socket_factory(void) { GPR_ASSERT(socket_factory->number_of_socket_calls == 1); GPR_ASSERT(socket_factory->number_of_bind_calls == 1); - grpc_udp_server_destroy(&exec_ctx, s, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_udp_server_destroy(s, NULL); + grpc_exec_ctx_finish(); grpc_socket_factory_unref(&socket_factory->base); /* The server had a single FD, which should have been orphaned. */ @@ -196,7 +196,7 @@ static void test_no_op_with_port_and_socket_factory(void) { static void test_no_op_with_port_and_start(void) { g_number_of_orphan_calls = 0; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; grpc_udp_server *s = grpc_udp_server_create(NULL); @@ -208,10 +208,10 @@ static void test_no_op_with_port_and_start(void) { GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, on_read, on_write, on_fd_orphaned)); - grpc_udp_server_start(&exec_ctx, s, NULL, 0, NULL); + grpc_udp_server_start(s, NULL, 0, NULL); - grpc_udp_server_destroy(&exec_ctx, s, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_udp_server_destroy(s, NULL); + grpc_exec_ctx_finish(); /* The server had a single FD, which is orphaned exactly once in * * grpc_udp_server_destroy. */ @@ -219,7 +219,7 @@ static void test_no_op_with_port_and_start(void) { } static void test_receive(int number_of_clients) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_storage *addr = (struct sockaddr_storage *)resolved_addr.addr; int clifd, svrfd; @@ -247,7 +247,7 @@ static void test_receive(int number_of_clients) { GPR_ASSERT(resolved_addr.len <= sizeof(struct sockaddr_storage)); pollsets[0] = g_pollset; - grpc_udp_server_start(&exec_ctx, s, pollsets, 1, NULL); + grpc_udp_server_start(s, pollsets, 1, NULL); gpr_mu_lock(g_mu); @@ -263,13 +263,12 @@ static void test_receive(int number_of_clients) { (socklen_t)resolved_addr.len) == 0); GPR_ASSERT(5 == write(clifd, "hello", 5)); while (g_number_of_reads == number_of_reads_before && - deadline > grpc_exec_ctx_now(&exec_ctx)) { + deadline > grpc_exec_ctx_now()) { grpc_pollset_worker *worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, g_pollset, &worker, deadline))); + "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(g_number_of_reads == number_of_reads_before + 1); @@ -279,8 +278,8 @@ static void test_receive(int number_of_clients) { gpr_mu_unlock(g_mu); - grpc_udp_server_destroy(&exec_ctx, s, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_udp_server_destroy(s, NULL); + grpc_exec_ctx_finish(); /* The server had a single FD, which is orphaned exactly once in * * grpc_udp_server_destroy. */ @@ -290,14 +289,13 @@ static void test_receive(int number_of_clients) { GPR_ASSERT(g_number_of_writes > 0); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy(p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); g_pollset = gpr_zalloc(grpc_pollset_size()); @@ -313,8 +311,8 @@ int main(int argc, char **argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); gpr_free(g_pollset); grpc_shutdown(); return 0; diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c index 34f310142c8..7f15642d947 100644 --- a/test/core/security/credentials_test.c +++ b/test/core/security/credentials_test.c @@ -144,41 +144,39 @@ static grpc_httpcli_response http_response(int status, const char *body) { /* -- Tests. -- */ static void test_empty_md_array(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); GPR_ASSERT(md_array.md == NULL); GPR_ASSERT(md_array.size == 0); - grpc_credentials_mdelem_array_destroy(&exec_ctx, &md_array); - grpc_exec_ctx_finish(&exec_ctx); + grpc_credentials_mdelem_array_destroy(&md_array); + grpc_exec_ctx_finish(); } static void test_add_to_empty_md_array(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); const char *key = "hello"; const char *value = "there blah blah blah blah blah blah blah"; - grpc_mdelem md = - grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_copied_string(key), - grpc_slice_from_copied_string(value)); + grpc_mdelem md = grpc_mdelem_from_slices( + grpc_slice_from_copied_string(key), grpc_slice_from_copied_string(value)); grpc_credentials_mdelem_array_add(&md_array, md); GPR_ASSERT(md_array.size == 1); GPR_ASSERT(grpc_mdelem_eq(md, md_array.md[0])); - GRPC_MDELEM_UNREF(&exec_ctx, md); - grpc_credentials_mdelem_array_destroy(&exec_ctx, &md_array); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(md); + grpc_credentials_mdelem_array_destroy(&md_array); + grpc_exec_ctx_finish(); } static void test_add_abunch_to_md_array(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); const char *key = "hello"; const char *value = "there blah blah blah blah blah blah blah"; - grpc_mdelem md = - grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_copied_string(key), - grpc_slice_from_copied_string(value)); + grpc_mdelem md = grpc_mdelem_from_slices( + grpc_slice_from_copied_string(key), grpc_slice_from_copied_string(value)); size_t num_entries = 1000; for (size_t i = 0; i < num_entries; ++i) { grpc_credentials_mdelem_array_add(&md_array, md); @@ -186,57 +184,56 @@ static void test_add_abunch_to_md_array(void) { for (size_t i = 0; i < num_entries; ++i) { GPR_ASSERT(grpc_mdelem_eq(md_array.md[i], md)); } - GRPC_MDELEM_UNREF(&exec_ctx, md); - grpc_credentials_mdelem_array_destroy(&exec_ctx, &md_array); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(md); + grpc_credentials_mdelem_array_destroy(&md_array); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_ok(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, valid_oauth2_json_response); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == - GRPC_CREDENTIALS_OK); + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_OK); GPR_ASSERT(token_lifetime == 3599 * GPR_MS_PER_SEC); GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDKEY(token_md), "authorization") == 0); GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDVALUE(token_md), "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_") == 0); - GRPC_MDELEM_UNREF(&exec_ctx, token_md); + GRPC_MDELEM_UNREF(token_md); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(401, valid_oauth2_json_response); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, ""); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -245,14 +242,14 @@ static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { " \"expires_in\":3599, " " \"token_type\":\"Bearer\""); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, @@ -260,14 +257,14 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { " \"expires_in\":3599, " " \"token_type\":\"Bearer\"}"); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -276,15 +273,15 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { " \"expires_in\":3599, " "}"); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime( void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -292,10 +289,10 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime( "{\"access_token\":\"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_\"," " \"token_type\":\"Bearer\"}"); GPR_ASSERT(grpc_oauth2_token_fetcher_credentials_parse_server_response( - &exec_ctx, &response, &token_md, &token_lifetime) == + &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } typedef struct { @@ -332,8 +329,7 @@ static void check_metadata(const expected_md *expected, } } -static void check_request_metadata(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void check_request_metadata(void *arg, grpc_error *error) { request_metadata_state *state = (request_metadata_state *)arg; gpr_log(GPR_INFO, "expected_error: %s", grpc_error_string(state->expected_error)); @@ -354,9 +350,8 @@ static void check_request_metadata(grpc_exec_ctx *exec_ctx, void *arg, state->expected_size, state->md_array.size); GPR_ASSERT(state->md_array.size == state->expected_size); check_metadata(state->expected, &state->md_array); - grpc_credentials_mdelem_array_destroy(exec_ctx, &state->md_array); - grpc_pollset_set_destroy(exec_ctx, - grpc_polling_entity_pollset_set(&state->pollent)); + grpc_credentials_mdelem_array_destroy(&state->md_array); + grpc_pollset_set_destroy(grpc_polling_entity_pollset_set(&state->pollent)); gpr_free(state); } @@ -374,22 +369,21 @@ static request_metadata_state *make_request_metadata_state( return state; } -static void run_request_metadata_test(grpc_exec_ctx *exec_ctx, - grpc_call_credentials *creds, +static void run_request_metadata_test(grpc_call_credentials *creds, grpc_auth_metadata_context auth_md_ctx, request_metadata_state *state) { grpc_error *error = GRPC_ERROR_NONE; if (grpc_call_credentials_get_request_metadata( - exec_ctx, creds, &state->pollent, auth_md_ctx, &state->md_array, + creds, &state->pollent, auth_md_ctx, &state->md_array, &state->on_request_metadata, &error)) { // Synchronous result. Invoke the callback directly. - check_request_metadata(exec_ctx, state, error); + check_request_metadata(state, error); GRPC_ERROR_UNREF(error); } } static void test_google_iam_creds(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; expected_md emd[] = {{GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY, test_google_iam_authorization_token}, {GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY, @@ -401,13 +395,13 @@ static void test_google_iam_creds(void) { NULL); grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_call_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_call_credentials_unref(creds); + grpc_exec_ctx_finish(); } static void test_access_token_creds(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; expected_md emd[] = {{GRPC_AUTHORIZATION_METADATA_KEY, "Bearer blah"}}; request_metadata_state *state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); @@ -416,16 +410,15 @@ static void test_access_token_creds(void) { grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; GPR_ASSERT(strcmp(creds->type, GRPC_CALL_CREDENTIALS_TYPE_OAUTH2) == 0); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_call_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_call_credentials_unref(creds); + grpc_exec_ctx_finish(); } static grpc_security_status check_channel_oauth2_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c, - grpc_call_credentials *call_creds, const char *target, - const grpc_channel_args *args, grpc_channel_security_connector **sc, - grpc_channel_args **new_args) { + grpc_channel_credentials *c, grpc_call_credentials *call_creds, + const char *target, const grpc_channel_args *args, + grpc_channel_security_connector **sc, grpc_channel_args **new_args) { GPR_ASSERT(strcmp(c->type, "mock") == 0); GPR_ASSERT(call_creds != NULL); GPR_ASSERT(strcmp(call_creds->type, GRPC_CALL_CREDENTIALS_TYPE_OAUTH2) == 0); @@ -433,7 +426,7 @@ static grpc_security_status check_channel_oauth2_create_security_connector( } static void test_channel_oauth2_composite_creds(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_args *new_args; grpc_channel_credentials_vtable vtable = { NULL, check_channel_oauth2_create_security_connector, NULL}; @@ -447,14 +440,14 @@ static void test_channel_oauth2_composite_creds(void) { grpc_channel_credentials_release(channel_creds); grpc_call_credentials_release(oauth2_creds); GPR_ASSERT(grpc_channel_credentials_create_security_connector( - &exec_ctx, channel_oauth2_creds, NULL, NULL, NULL, - &new_args) == GRPC_SECURITY_OK); + channel_oauth2_creds, NULL, NULL, NULL, &new_args) == + GRPC_SECURITY_OK); grpc_channel_credentials_release(channel_oauth2_creds); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_oauth2_google_iam_composite_creds(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; expected_md emd[] = { {GRPC_AUTHORIZATION_METADATA_KEY, test_oauth2_bearer_token}, {GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY, @@ -466,15 +459,15 @@ static void test_oauth2_google_iam_composite_creds(void) { grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; grpc_call_credentials *oauth2_creds = grpc_md_only_test_credentials_create( - &exec_ctx, "authorization", test_oauth2_bearer_token, 0); + "authorization", test_oauth2_bearer_token, 0); grpc_call_credentials *google_iam_creds = grpc_google_iam_credentials_create( test_google_iam_authorization_token, test_google_iam_authority_selector, NULL); grpc_call_credentials *composite_creds = grpc_composite_call_credentials_create(oauth2_creds, google_iam_creds, NULL); - grpc_call_credentials_unref(&exec_ctx, oauth2_creds); - grpc_call_credentials_unref(&exec_ctx, google_iam_creds); + grpc_call_credentials_unref(oauth2_creds); + grpc_call_credentials_unref(google_iam_creds); GPR_ASSERT( strcmp(composite_creds->type, GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) == 0); const grpc_call_credentials_array *creds_array = @@ -484,17 +477,16 @@ static void test_oauth2_google_iam_composite_creds(void) { GRPC_CALL_CREDENTIALS_TYPE_OAUTH2) == 0); GPR_ASSERT(strcmp(creds_array->creds_array[1]->type, GRPC_CALL_CREDENTIALS_TYPE_IAM) == 0); - run_request_metadata_test(&exec_ctx, composite_creds, auth_md_ctx, state); - grpc_call_credentials_unref(&exec_ctx, composite_creds); - grpc_exec_ctx_finish(&exec_ctx); + run_request_metadata_test(composite_creds, auth_md_ctx, state); + grpc_call_credentials_unref(composite_creds); + grpc_exec_ctx_finish(); } static grpc_security_status check_channel_oauth2_google_iam_create_security_connector( - grpc_exec_ctx *exec_ctx, grpc_channel_credentials *c, - grpc_call_credentials *call_creds, const char *target, - const grpc_channel_args *args, grpc_channel_security_connector **sc, - grpc_channel_args **new_args) { + grpc_channel_credentials *c, grpc_call_credentials *call_creds, + const char *target, const grpc_channel_args *args, + grpc_channel_security_connector **sc, grpc_channel_args **new_args) { const grpc_call_credentials_array *creds_array; GPR_ASSERT(strcmp(c->type, "mock") == 0); GPR_ASSERT(call_creds != NULL); @@ -509,7 +501,7 @@ check_channel_oauth2_google_iam_create_security_connector( } static void test_channel_oauth2_google_iam_composite_creds(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_args *new_args; grpc_channel_credentials_vtable vtable = { NULL, check_channel_oauth2_google_iam_create_security_connector, NULL}; @@ -532,11 +524,11 @@ static void test_channel_oauth2_google_iam_composite_creds(void) { grpc_call_credentials_release(google_iam_creds); GPR_ASSERT(grpc_channel_credentials_create_security_connector( - &exec_ctx, channel_oauth2_iam_creds, NULL, NULL, NULL, - &new_args) == GRPC_SECURITY_OK); + channel_oauth2_iam_creds, NULL, NULL, NULL, &new_args) == + GRPC_SECURITY_OK); grpc_channel_credentials_release(channel_oauth2_iam_creds); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void validate_compute_engine_http_request( @@ -553,35 +545,32 @@ static void validate_compute_engine_http_request( } static int compute_engine_httpcli_get_success_override( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - grpc_millis deadline, grpc_closure *on_done, - grpc_httpcli_response *response) { + const grpc_httpcli_request *request, grpc_millis deadline, + grpc_closure *on_done, grpc_httpcli_response *response) { validate_compute_engine_http_request(request); *response = http_response(200, valid_oauth2_json_response); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static int compute_engine_httpcli_get_failure_override( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - grpc_millis deadline, grpc_closure *on_done, - grpc_httpcli_response *response) { + const grpc_httpcli_request *request, grpc_millis deadline, + grpc_closure *on_done, grpc_httpcli_response *response) { validate_compute_engine_http_request(request); *response = http_response(403, "Not Authorized."); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static int httpcli_post_should_not_be_called( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - const char *body_bytes, size_t body_size, grpc_millis deadline, - grpc_closure *on_done, grpc_httpcli_response *response) { + const grpc_httpcli_request *request, const char *body_bytes, + size_t body_size, grpc_millis deadline, grpc_closure *on_done, + grpc_httpcli_response *response) { GPR_ASSERT("HTTP POST should not be called" == NULL); return 1; } -static int httpcli_get_should_not_be_called(grpc_exec_ctx *exec_ctx, - const grpc_httpcli_request *request, +static int httpcli_get_should_not_be_called(const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { @@ -590,7 +579,7 @@ static int httpcli_get_should_not_be_called(grpc_exec_ctx *exec_ctx, } static void test_compute_engine_creds_success(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; grpc_call_credentials *creds = @@ -603,24 +592,24 @@ static void test_compute_engine_creds_success(void) { make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_httpcli_set_override(compute_engine_httpcli_get_success_override, httpcli_post_should_not_be_called); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); /* Second request: the cached token should be served directly. */ state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); - grpc_call_credentials_unref(&exec_ctx, creds); + grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_compute_engine_creds_failure(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; request_metadata_state *state = make_request_metadata_state( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Error occured when fetching oauth2 token."), @@ -631,10 +620,10 @@ static void test_compute_engine_creds_failure(void) { grpc_google_compute_engine_credentials_create(NULL); grpc_httpcli_set_override(compute_engine_httpcli_get_failure_override, httpcli_post_should_not_be_called); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_call_credentials_unref(&exec_ctx, creds); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void validate_refresh_token_http_request( @@ -661,27 +650,27 @@ static void validate_refresh_token_http_request( } static int refresh_token_httpcli_post_success( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - const char *body, size_t body_size, grpc_millis deadline, - grpc_closure *on_done, grpc_httpcli_response *response) { + const grpc_httpcli_request *request, const char *body, size_t body_size, + grpc_millis deadline, grpc_closure *on_done, + grpc_httpcli_response *response) { validate_refresh_token_http_request(request, body, body_size); *response = http_response(200, valid_oauth2_json_response); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static int refresh_token_httpcli_post_failure( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - const char *body, size_t body_size, grpc_millis deadline, - grpc_closure *on_done, grpc_httpcli_response *response) { + const grpc_httpcli_request *request, const char *body, size_t body_size, + grpc_millis deadline, grpc_closure *on_done, + grpc_httpcli_response *response) { validate_refresh_token_http_request(request, body, body_size); *response = http_response(403, "Not Authorized."); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static void test_refresh_token_creds_success(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, @@ -694,24 +683,24 @@ static void test_refresh_token_creds_success(void) { make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_httpcli_set_override(httpcli_get_should_not_be_called, refresh_token_httpcli_post_success); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); /* Second request: the cached token should be served directly. */ state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); - grpc_call_credentials_unref(&exec_ctx, creds); + grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_refresh_token_creds_failure(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; request_metadata_state *state = make_request_metadata_state( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Error occured when fetching oauth2 token."), @@ -722,10 +711,10 @@ static void test_refresh_token_creds_failure(void) { test_refresh_token_str, NULL); grpc_httpcli_set_override(httpcli_get_should_not_be_called, refresh_token_httpcli_post_failure); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_call_credentials_unref(&exec_ctx, creds); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void validate_jwt_encode_and_sign_params( @@ -815,7 +804,7 @@ static void test_jwt_creds_lifetime(void) { static void test_jwt_creds_success(void) { char *json_key_string = test_json_key_str(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; char *expected_md_value; @@ -829,16 +818,16 @@ static void test_jwt_creds_success(void) { request_metadata_state *state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_success); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); /* Second request: the cached token should be served directly. */ state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_jwt_encode_and_sign_set_override( encode_and_sign_jwt_should_not_be_called); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); /* Third request: Different service url so jwt_encode_and_sign should be called again (no caching). */ @@ -846,19 +835,19 @@ static void test_jwt_creds_success(void) { make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); auth_md_ctx.service_url = other_test_service_url; grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_success); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); - grpc_call_credentials_unref(&exec_ctx, creds); + grpc_call_credentials_unref(creds); gpr_free(json_key_string); gpr_free(expected_md_value); grpc_jwt_encode_and_sign_set_override(NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_jwt_creds_signing_failure(void) { char *json_key_string = test_json_key_str(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; request_metadata_state *state = make_request_metadata_state( @@ -868,12 +857,12 @@ static void test_jwt_creds_signing_failure(void) { json_key_string, grpc_max_auth_token_lifetime(), NULL); grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_failure); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, state); + run_request_metadata_test(creds, auth_md_ctx, state); gpr_free(json_key_string); - grpc_call_credentials_unref(&exec_ctx, creds); + grpc_call_credentials_unref(creds); grpc_jwt_encode_and_sign_set_override(NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void set_google_default_creds_env_var_with_file_contents( @@ -890,7 +879,7 @@ static void set_google_default_creds_env_var_with_file_contents( } static void test_google_default_creds_auth_key(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_service_account_jwt_access_credentials *jwt; grpc_composite_channel_credentials *creds; char *json_key = test_json_key_str(); @@ -906,13 +895,13 @@ static void test_google_default_creds_auth_key(void) { strcmp(jwt->key.client_id, "777-abaslkan11hlb6nmim3bpspl31ud.apps.googleusercontent.com") == 0); - grpc_channel_credentials_unref(&exec_ctx, &creds->base); + grpc_channel_credentials_unref(&creds->base); gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */ - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void test_google_default_creds_refresh_token(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_google_refresh_token_credentials *refresh; grpc_composite_channel_credentials *creds; grpc_flush_cached_google_default_credentials(); @@ -924,15 +913,14 @@ static void test_google_default_creds_refresh_token(void) { refresh = (grpc_google_refresh_token_credentials *)creds->call_creds; GPR_ASSERT(strcmp(refresh->refresh_token.client_id, "32555999999.apps.googleusercontent.com") == 0); - grpc_channel_credentials_unref(&exec_ctx, &creds->base); + grpc_channel_credentials_unref(&creds->base); gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */ - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static int default_creds_gce_detection_httpcli_get_success_override( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - grpc_millis deadline, grpc_closure *on_done, - grpc_httpcli_response *response) { + const grpc_httpcli_request *request, grpc_millis deadline, + grpc_closure *on_done, grpc_httpcli_response *response) { *response = http_response(200, ""); grpc_http_header *headers = gpr_malloc(sizeof(*headers) * 1); headers[0].key = gpr_strdup("Metadata-Flavor"); @@ -941,14 +929,14 @@ static int default_creds_gce_detection_httpcli_get_success_override( response->hdrs = headers; GPR_ASSERT(strcmp(request->http.path, "/") == 0); GPR_ASSERT(strcmp(request->host, "metadata.google.internal") == 0); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static char *null_well_known_creds_path_getter(void) { return NULL; } static void test_google_default_creds_gce(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; request_metadata_state *state = @@ -973,8 +961,8 @@ static void test_google_default_creds_gce(void) { GPR_ASSERT(creds->call_creds != NULL); grpc_httpcli_set_override(compute_engine_httpcli_get_success_override, httpcli_post_should_not_be_called); - run_request_metadata_test(&exec_ctx, creds->call_creds, auth_md_ctx, state); - grpc_exec_ctx_flush(&exec_ctx); + run_request_metadata_test(creds->call_creds, auth_md_ctx, state); + grpc_exec_ctx_flush(); /* Check that we get a cached creds if we call grpc_google_default_credentials_create again. @@ -986,22 +974,21 @@ static void test_google_default_creds_gce(void) { GPR_ASSERT(cached_creds == &creds->base); /* Cleanup. */ - grpc_channel_credentials_unref(&exec_ctx, cached_creds); - grpc_channel_credentials_unref(&exec_ctx, &creds->base); + grpc_channel_credentials_unref(cached_creds); + grpc_channel_credentials_unref(&creds->base); grpc_httpcli_set_override(NULL, NULL); grpc_override_well_known_credentials_path_getter(NULL); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static int default_creds_gce_detection_httpcli_get_failure_override( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - grpc_millis deadline, grpc_closure *on_done, - grpc_httpcli_response *response) { + const grpc_httpcli_request *request, grpc_millis deadline, + grpc_closure *on_done, grpc_httpcli_response *response) { /* No magic header. */ GPR_ASSERT(strcmp(request->http.path, "/") == 0); GPR_ASSERT(strcmp(request->host, "metadata.google.internal") == 0); *response = http_response(200, ""); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } @@ -1085,7 +1072,7 @@ static void plugin_destroy(void *state) { static void test_metadata_plugin_success(void) { plugin_state state = PLUGIN_INITIAL_STATE; grpc_metadata_credentials_plugin plugin; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; request_metadata_state *md_state = make_request_metadata_state( @@ -1098,17 +1085,17 @@ static void test_metadata_plugin_success(void) { grpc_call_credentials *creds = grpc_metadata_credentials_create_from_plugin(plugin, NULL); GPR_ASSERT(state == PLUGIN_INITIAL_STATE); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, md_state); + run_request_metadata_test(creds, auth_md_ctx, md_state); GPR_ASSERT(state == PLUGIN_GET_METADATA_CALLED_STATE); - grpc_call_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + grpc_call_credentials_unref(creds); + grpc_exec_ctx_finish(); GPR_ASSERT(state == PLUGIN_DESTROY_CALLED_STATE); } static void test_metadata_plugin_failure(void) { plugin_state state = PLUGIN_INITIAL_STATE; grpc_metadata_credentials_plugin plugin; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; char *expected_error; @@ -1126,10 +1113,10 @@ static void test_metadata_plugin_failure(void) { grpc_call_credentials *creds = grpc_metadata_credentials_create_from_plugin(plugin, NULL); GPR_ASSERT(state == PLUGIN_INITIAL_STATE); - run_request_metadata_test(&exec_ctx, creds, auth_md_ctx, md_state); + run_request_metadata_test(creds, auth_md_ctx, md_state); GPR_ASSERT(state == PLUGIN_GET_METADATA_CALLED_STATE); - grpc_call_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + grpc_call_credentials_unref(creds); + grpc_exec_ctx_finish(); GPR_ASSERT(state == PLUGIN_DESTROY_CALLED_STATE); } @@ -1150,7 +1137,7 @@ static void test_get_well_known_google_credentials_file_path(void) { } static void test_channel_creds_duplicate_without_call_creds(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_credentials *channel_creds = grpc_fake_transport_security_credentials_create(); @@ -1159,23 +1146,23 @@ static void test_channel_creds_duplicate_without_call_creds(void) { grpc_channel_credentials_duplicate_without_call_credentials( channel_creds); GPR_ASSERT(dup == channel_creds); - grpc_channel_credentials_unref(&exec_ctx, dup); + grpc_channel_credentials_unref(dup); grpc_call_credentials *call_creds = grpc_access_token_credentials_create("blah", NULL); grpc_channel_credentials *composite_creds = grpc_composite_channel_credentials_create(channel_creds, call_creds, NULL); - grpc_call_credentials_unref(&exec_ctx, call_creds); + grpc_call_credentials_unref(call_creds); dup = grpc_channel_credentials_duplicate_without_call_credentials( composite_creds); GPR_ASSERT(dup == channel_creds); - grpc_channel_credentials_unref(&exec_ctx, dup); + grpc_channel_credentials_unref(dup); - grpc_channel_credentials_unref(&exec_ctx, channel_creds); - grpc_channel_credentials_unref(&exec_ctx, composite_creds); + grpc_channel_credentials_unref(channel_creds); + grpc_channel_credentials_unref(composite_creds); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/security/json_token_test.c b/test/core/security/json_token_test.c index 6573f70e724..3e410f44b91 100644 --- a/test/core/security/json_token_test.c +++ b/test/core/security/json_token_test.c @@ -206,7 +206,7 @@ static void test_parse_json_key_failure_no_private_key(void) { static grpc_json *parse_json_part_from_jwt(const char *str, size_t len, char **scratchpad) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; char *b64; char *decoded; grpc_json *json; @@ -214,7 +214,7 @@ static grpc_json *parse_json_part_from_jwt(const char *str, size_t len, b64 = gpr_malloc(len + 1); strncpy(b64, str, len); b64[len] = '\0'; - slice = grpc_base64_decode(&exec_ctx, b64, 1); + slice = grpc_base64_decode(b64, 1); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(slice)); decoded = gpr_malloc(GRPC_SLICE_LENGTH(slice) + 1); strncpy(decoded, (const char *)GRPC_SLICE_START_PTR(slice), @@ -224,7 +224,7 @@ static grpc_json *parse_json_part_from_jwt(const char *str, size_t len, gpr_free(b64); *scratchpad = decoded; grpc_slice_unref(slice); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return json; } @@ -326,12 +326,12 @@ static void check_jwt_claim(grpc_json *claim, const char *expected_audience, static void check_jwt_signature(const char *b64_signature, RSA *rsa_key, const char *signed_data, size_t signed_data_size) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; EVP_MD_CTX *md_ctx = EVP_MD_CTX_create(); EVP_PKEY *key = EVP_PKEY_new(); - grpc_slice sig = grpc_base64_decode(&exec_ctx, b64_signature, 1); + grpc_slice sig = grpc_base64_decode(b64_signature, 1); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(sig)); GPR_ASSERT(GRPC_SLICE_LENGTH(sig) == 128); @@ -345,11 +345,11 @@ static void check_jwt_signature(const char *b64_signature, RSA *rsa_key, GPR_ASSERT(EVP_DigestVerifyFinal(md_ctx, GRPC_SLICE_START_PTR(sig), GRPC_SLICE_LENGTH(sig)) == 1); - grpc_slice_unref_internal(&exec_ctx, sig); + grpc_slice_unref_internal(sig); if (key != NULL) EVP_PKEY_free(key); if (md_ctx != NULL) EVP_MD_CTX_destroy(md_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static char *service_account_creds_jwt_encode_and_sign( diff --git a/test/core/security/jwt_verifier_test.c b/test/core/security/jwt_verifier_test.c index a4bfe0130ee..9fffa4d90c5 100644 --- a/test/core/security/jwt_verifier_test.c +++ b/test/core/security/jwt_verifier_test.c @@ -209,8 +209,8 @@ static void test_claims_success(void) { grpc_json *json = grpc_json_parse_string_with_len( (char *)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - claims = grpc_jwt_claims_from_json(&exec_ctx, json, s); + exec_ctx = GRPC_EXEC_CTX_INIT; + claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_json(claims) == json); GPR_ASSERT(strcmp(grpc_jwt_claims_audience(claims), "https://foo.com") == 0); @@ -219,8 +219,8 @@ static void test_claims_success(void) { GPR_ASSERT(strcmp(grpc_jwt_claims_id(claims), "jwtuniqueid") == 0); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == GRPC_JWT_VERIFIER_OK); - grpc_jwt_claims_destroy(&exec_ctx, claims); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_claims_destroy(claims); + grpc_exec_ctx_finish(); } static void test_expired_claims_failure(void) { @@ -232,8 +232,8 @@ static void test_expired_claims_failure(void) { gpr_timespec exp_exp = {120, 0, GPR_CLOCK_REALTIME}; gpr_timespec exp_nbf = {60, 0, GPR_CLOCK_REALTIME}; GPR_ASSERT(json != NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - claims = grpc_jwt_claims_from_json(&exec_ctx, json, s); + exec_ctx = GRPC_EXEC_CTX_INIT; + claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_json(claims) == json); GPR_ASSERT(strcmp(grpc_jwt_claims_audience(claims), "https://foo.com") == 0); @@ -246,17 +246,17 @@ static void test_expired_claims_failure(void) { GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == GRPC_JWT_VERIFIER_TIME_CONSTRAINT_FAILURE); - grpc_jwt_claims_destroy(&exec_ctx, claims); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_claims_destroy(claims); + grpc_exec_ctx_finish(); } static void test_invalid_claims_failure(void) { grpc_slice s = grpc_slice_from_copied_string(invalid_claims); grpc_json *json = grpc_json_parse_string_with_len( (char *)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(grpc_jwt_claims_from_json(&exec_ctx, json, s) == NULL); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(grpc_jwt_claims_from_json(json, s) == NULL); + grpc_exec_ctx_finish(); } static void test_bad_audience_claims_failure(void) { @@ -265,13 +265,13 @@ static void test_bad_audience_claims_failure(void) { grpc_json *json = grpc_json_parse_string_with_len( (char *)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - claims = grpc_jwt_claims_from_json(&exec_ctx, json, s); + exec_ctx = GRPC_EXEC_CTX_INIT; + claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://bar.com") == GRPC_JWT_VERIFIER_BAD_AUDIENCE); - grpc_jwt_claims_destroy(&exec_ctx, claims); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_claims_destroy(claims); + grpc_exec_ctx_finish(); } static void test_bad_subject_claims_failure(void) { @@ -280,13 +280,13 @@ static void test_bad_subject_claims_failure(void) { grpc_json *json = grpc_json_parse_string_with_len( (char *)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - claims = grpc_jwt_claims_from_json(&exec_ctx, json, s); + exec_ctx = GRPC_EXEC_CTX_INIT; + claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == GRPC_JWT_VERIFIER_BAD_SUBJECT); - grpc_jwt_claims_destroy(&exec_ctx, claims); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_claims_destroy(claims); + grpc_exec_ctx_finish(); } static char *json_key_str(const char *last_part) { @@ -323,17 +323,16 @@ static grpc_httpcli_response http_response(int status, char *body) { } static int httpcli_post_should_not_be_called( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - const char *body_bytes, size_t body_size, grpc_millis deadline, - grpc_closure *on_done, grpc_httpcli_response *response) { + const grpc_httpcli_request *request, const char *body_bytes, + size_t body_size, grpc_millis deadline, grpc_closure *on_done, + grpc_httpcli_response *response) { GPR_ASSERT("HTTP POST should not be called" == NULL); return 1; } static int httpcli_get_google_keys_for_email( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - grpc_millis deadline, grpc_closure *on_done, - grpc_httpcli_response *response) { + const grpc_httpcli_request *request, grpc_millis deadline, + grpc_closure *on_done, grpc_httpcli_response *response) { *response = http_response(200, good_google_email_keys()); GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl); GPR_ASSERT(strcmp(request->host, "www.googleapis.com") == 0); @@ -341,22 +340,22 @@ static int httpcli_get_google_keys_for_email( "/robot/v1/metadata/x509/" "777-abaslkan11hlb6nmim3bpspl31ud@developer." "gserviceaccount.com") == 0); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } -static void on_verification_success(grpc_exec_ctx *exec_ctx, void *user_data, +static void on_verification_success(void *user_data, grpc_jwt_verifier_status status, grpc_jwt_claims *claims) { GPR_ASSERT(status == GRPC_JWT_VERIFIER_OK); GPR_ASSERT(claims != NULL); GPR_ASSERT(user_data == (void *)expected_user_data); GPR_ASSERT(strcmp(grpc_jwt_claims_audience(claims), expected_audience) == 0); - grpc_jwt_claims_destroy(exec_ctx, claims); + grpc_jwt_claims_destroy(claims); } static void test_jwt_verifier_google_email_issuer_success(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(NULL, 0); char *jwt = NULL; char *key_str = json_key_str(json_key_str_part3_for_google_email_issuer); @@ -369,28 +368,27 @@ static void test_jwt_verifier_google_email_issuer_success(void) { NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, + grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_success, (void *)expected_user_data); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } static int httpcli_get_custom_keys_for_email( - grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request, - grpc_millis deadline, grpc_closure *on_done, - grpc_httpcli_response *response) { + const grpc_httpcli_request *request, grpc_millis deadline, + grpc_closure *on_done, grpc_httpcli_response *response) { *response = http_response(200, gpr_strdup(good_jwk_set)); GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl); GPR_ASSERT(strcmp(request->host, "keys.bar.com") == 0); GPR_ASSERT(strcmp(request->http.path, "/jwk/foo@bar.com") == 0); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static void test_jwt_verifier_custom_email_issuer_success(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(&custom_mapping, 1); char *jwt = NULL; char *key_str = json_key_str(json_key_str_part3_for_custom_email_issuer); @@ -403,28 +401,26 @@ static void test_jwt_verifier_custom_email_issuer_success(void) { NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, + grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_success, (void *)expected_user_data); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } -static int httpcli_get_jwk_set(grpc_exec_ctx *exec_ctx, - const grpc_httpcli_request *request, +static int httpcli_get_jwk_set(const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { *response = http_response(200, gpr_strdup(good_jwk_set)); GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl); GPR_ASSERT(strcmp(request->host, "www.googleapis.com") == 0); GPR_ASSERT(strcmp(request->http.path, "/oauth2/v3/certs") == 0); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } -static int httpcli_get_openid_config(grpc_exec_ctx *exec_ctx, - const grpc_httpcli_request *request, +static int httpcli_get_openid_config(const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { @@ -434,12 +430,12 @@ static int httpcli_get_openid_config(grpc_exec_ctx *exec_ctx, GPR_ASSERT(strcmp(request->http.path, GRPC_OPENID_CONFIG_URL_SUFFIX) == 0); grpc_httpcli_set_override(httpcli_get_jwk_set, httpcli_post_should_not_be_called); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static void test_jwt_verifier_url_issuer_success(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(NULL, 0); char *jwt = NULL; char *key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -452,16 +448,15 @@ static void test_jwt_verifier_url_issuer_success(void) { NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, + grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_success, (void *)expected_user_data); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } -static void on_verification_key_retrieval_error(grpc_exec_ctx *exec_ctx, - void *user_data, +static void on_verification_key_retrieval_error(void *user_data, grpc_jwt_verifier_status status, grpc_jwt_claims *claims) { GPR_ASSERT(status == GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR); @@ -469,18 +464,17 @@ static void on_verification_key_retrieval_error(grpc_exec_ctx *exec_ctx, GPR_ASSERT(user_data == (void *)expected_user_data); } -static int httpcli_get_bad_json(grpc_exec_ctx *exec_ctx, - const grpc_httpcli_request *request, +static int httpcli_get_bad_json(const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { *response = http_response(200, gpr_strdup("{\"bad\": \"stuff\"}")); GPR_ASSERT(request->handshaker == &grpc_httpcli_ssl); - GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(on_done, GRPC_ERROR_NONE); return 1; } static void test_jwt_verifier_url_issuer_bad_config(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(NULL, 0); char *jwt = NULL; char *key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -493,17 +487,17 @@ static void test_jwt_verifier_url_issuer_bad_config(void) { NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, + grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_key_retrieval_error, (void *)expected_user_data); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } static void test_jwt_verifier_bad_json_key(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(NULL, 0); char *jwt = NULL; char *key_str = json_key_str(json_key_str_part3_for_google_email_issuer); @@ -516,11 +510,11 @@ static void test_jwt_verifier_bad_json_key(void) { NULL); grpc_auth_json_key_destruct(&key); GPR_ASSERT(jwt != NULL); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, + grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_key_retrieval_error, (void *)expected_user_data); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } @@ -532,9 +526,9 @@ static void corrupt_jwt_sig(char *jwt) { char *last_dot = strrchr(jwt, '.'); GPR_ASSERT(last_dot != NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - sig = grpc_base64_decode(&exec_ctx, last_dot + 1, 1); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + sig = grpc_base64_decode(last_dot + 1, 1); + grpc_exec_ctx_finish(); } GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(sig)); sig_bytes = GRPC_SLICE_START_PTR(sig); @@ -546,8 +540,7 @@ static void corrupt_jwt_sig(char *jwt) { grpc_slice_unref(sig); } -static void on_verification_bad_signature(grpc_exec_ctx *exec_ctx, - void *user_data, +static void on_verification_bad_signature(void *user_data, grpc_jwt_verifier_status status, grpc_jwt_claims *claims) { GPR_ASSERT(status == GRPC_JWT_VERIFIER_BAD_SIGNATURE); @@ -556,7 +549,7 @@ static void on_verification_bad_signature(grpc_exec_ctx *exec_ctx, } static void test_jwt_verifier_bad_signature(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(NULL, 0); char *jwt = NULL; char *key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -570,17 +563,16 @@ static void test_jwt_verifier_bad_signature(void) { grpc_auth_json_key_destruct(&key); corrupt_jwt_sig(jwt); GPR_ASSERT(jwt != NULL); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, jwt, expected_audience, + grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_bad_signature, (void *)expected_user_data); gpr_free(jwt); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); grpc_httpcli_set_override(NULL, NULL); } -static int httpcli_get_should_not_be_called(grpc_exec_ctx *exec_ctx, - const grpc_httpcli_request *request, +static int httpcli_get_should_not_be_called(const grpc_httpcli_request *request, grpc_millis deadline, grpc_closure *on_done, grpc_httpcli_response *response) { @@ -588,7 +580,7 @@ static int httpcli_get_should_not_be_called(grpc_exec_ctx *exec_ctx, return 1; } -static void on_verification_bad_format(grpc_exec_ctx *exec_ctx, void *user_data, +static void on_verification_bad_format(void *user_data, grpc_jwt_verifier_status status, grpc_jwt_claims *claims) { GPR_ASSERT(status == GRPC_JWT_VERIFIER_BAD_FORMAT); @@ -597,15 +589,15 @@ static void on_verification_bad_format(grpc_exec_ctx *exec_ctx, void *user_data, } static void test_jwt_verifier_bad_format(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_jwt_verifier *verifier = grpc_jwt_verifier_create(NULL, 0); grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); - grpc_jwt_verifier_verify(&exec_ctx, verifier, NULL, "bad jwt", - expected_audience, on_verification_bad_format, + grpc_jwt_verifier_verify(verifier, NULL, "bad jwt", expected_audience, + on_verification_bad_format, (void *)expected_user_data); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); grpc_httpcli_set_override(NULL, NULL); } diff --git a/test/core/security/oauth2_utils.c b/test/core/security/oauth2_utils.cc similarity index 76% rename from test/core/security/oauth2_utils.c rename to test/core/security/oauth2_utils.cc index 73d6c5bc7dc..3282701cfa7 100644 --- a/test/core/security/oauth2_utils.c +++ b/test/core/security/oauth2_utils.cc @@ -39,8 +39,7 @@ typedef struct { grpc_closure closure; } oauth2_request; -static void on_oauth2_response(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_oauth2_response(void *arg, grpc_error *error) { oauth2_request *request = (oauth2_request *)arg; char *token = NULL; grpc_slice token_slice; @@ -54,25 +53,23 @@ static void on_oauth2_response(grpc_exec_ctx *exec_ctx, void *arg, GRPC_SLICE_LENGTH(token_slice)); token[GRPC_SLICE_LENGTH(token_slice)] = '\0'; } - grpc_credentials_mdelem_array_destroy(exec_ctx, &request->md_array); + grpc_credentials_mdelem_array_destroy(&request->md_array); gpr_mu_lock(request->mu); request->is_done = true; request->token = token; GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&request->pops), - NULL)); + grpc_pollset_kick(grpc_polling_entity_pollset(&request->pops), NULL)); gpr_mu_unlock(request->mu); } -static void do_nothing(grpc_exec_ctx *exec_ctx, void *unused, - grpc_error *error) {} +static void do_nothing(void *unused, grpc_error *error) {} char *grpc_test_fetch_oauth2_token_with_credentials( grpc_call_credentials *creds) { oauth2_request request; memset(&request, 0, sizeof(request)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_closure do_nothing_closure; grpc_auth_metadata_context null_ctx = {"", "", NULL, NULL}; @@ -88,31 +85,30 @@ char *grpc_test_fetch_oauth2_token_with_credentials( grpc_schedule_on_exec_ctx); grpc_error *error = GRPC_ERROR_NONE; - if (grpc_call_credentials_get_request_metadata( - &exec_ctx, creds, &request.pops, null_ctx, &request.md_array, - &request.closure, &error)) { + if (grpc_call_credentials_get_request_metadata(creds, &request.pops, null_ctx, + &request.md_array, + &request.closure, &error)) { // Synchronous result; invoke callback directly. - on_oauth2_response(&exec_ctx, &request, error); + on_oauth2_response(&request, error); GRPC_ERROR_UNREF(error); } - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(request.mu); while (!request.is_done) { grpc_pollset_worker *worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, - grpc_polling_entity_pollset(&request.pops), + grpc_pollset_work(grpc_polling_entity_pollset(&request.pops), &worker, GRPC_MILLIS_INF_FUTURE))) { request.is_done = true; } } gpr_mu_unlock(request.mu); - grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&request.pops), + grpc_pollset_shutdown(grpc_polling_entity_pollset(&request.pops), &do_nothing_closure); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(grpc_polling_entity_pollset(&request.pops)); return request.token; } diff --git a/test/core/security/print_google_default_creds_token.c b/test/core/security/print_google_default_creds_token.c index 29c38dfdf81..d93f2363078 100644 --- a/test/core/security/print_google_default_creds_token.c +++ b/test/core/security/print_google_default_creds_token.c @@ -41,8 +41,7 @@ typedef struct { grpc_closure on_request_metadata; } synchronizer; -static void on_metadata_response(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_metadata_response(void *arg, grpc_error *error) { synchronizer *sync = arg; if (error != GRPC_ERROR_NONE) { fprintf(stderr, "Fetching token failed: %s\n", grpc_error_string(error)); @@ -57,14 +56,13 @@ static void on_metadata_response(grpc_exec_ctx *exec_ctx, void *arg, sync->is_done = true; GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&sync->pops), - NULL)); + grpc_pollset_kick(grpc_polling_entity_pollset(&sync->pops), NULL)); gpr_mu_unlock(sync->mu); } int main(int argc, char **argv) { int result = 0; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; synchronizer sync; grpc_channel_credentials *creds = NULL; char *service_url = "https://test.foo.google.com/Foo"; @@ -95,11 +93,10 @@ int main(int argc, char **argv) { grpc_error *error = GRPC_ERROR_NONE; if (grpc_call_credentials_get_request_metadata( - &exec_ctx, ((grpc_composite_channel_credentials *)creds)->call_creds, - &sync.pops, context, &sync.md_array, &sync.on_request_metadata, - &error)) { + ((grpc_composite_channel_credentials *)creds)->call_creds, &sync.pops, + context, &sync.md_array, &sync.on_request_metadata, &error)) { // Synchronous response. Invoke callback directly. - on_metadata_response(&exec_ctx, &sync, error); + on_metadata_response(&sync, error); GRPC_ERROR_UNREF(error); } @@ -108,17 +105,16 @@ int main(int argc, char **argv) { grpc_pollset_worker *worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, - grpc_polling_entity_pollset(&sync.pops), &worker, + grpc_pollset_work(grpc_polling_entity_pollset(&sync.pops), &worker, GRPC_MILLIS_INF_FUTURE))) sync.is_done = true; gpr_mu_unlock(sync.mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(sync.mu); } gpr_mu_unlock(sync.mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_channel_credentials_release(creds); gpr_free(grpc_polling_entity_pollset(&sync.pops)); diff --git a/test/core/security/secure_endpoint_test.c b/test/core/security/secure_endpoint_test.c index 839a05fa9b5..929f64cd40f 100644 --- a/test/core/security/secure_endpoint_test.c +++ b/test/core/security/secure_endpoint_test.c @@ -38,7 +38,7 @@ static grpc_pollset *g_pollset; static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair( size_t slice_size, grpc_slice *leftover_slices, size_t leftover_nslices, bool use_zero_copy_protector) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; tsi_frame_protector *fake_read_protector = tsi_create_fake_frame_protector(NULL); tsi_frame_protector *fake_write_protector = @@ -57,8 +57,8 @@ static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair( .value.integer = (int)slice_size}}; grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a}; tcp = grpc_iomgr_create_endpoint_pair("fixture", &args); - grpc_endpoint_add_to_pollset(&exec_ctx, tcp.client, g_pollset); - grpc_endpoint_add_to_pollset(&exec_ctx, tcp.server, g_pollset); + grpc_endpoint_add_to_pollset(tcp.client, g_pollset); + grpc_endpoint_add_to_pollset(tcp.server, g_pollset); if (leftover_nslices == 0) { f.client_ep = grpc_secure_endpoint_create(fake_read_protector, @@ -114,7 +114,7 @@ static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair( f.server_ep = grpc_secure_endpoint_create(fake_write_protector, fake_write_zero_copy_protector, tcp.server, NULL, 0); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return f; } @@ -162,52 +162,46 @@ static grpc_endpoint_test_config configs[] = { clean_up}, }; -static void inc_call_ctr(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { - ++*(int *)arg; -} +static void inc_call_ctr(void *arg, grpc_error *error) { ++*(int *)arg; } static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { grpc_endpoint_test_fixture f = config.create_fixture(slice_size); grpc_slice_buffer incoming; grpc_slice s = grpc_slice_from_copied_string("hello world 12345678900987654321"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; int n = 0; grpc_closure done_closure; gpr_log(GPR_INFO, "Start test left over"); grpc_slice_buffer_init(&incoming); GRPC_CLOSURE_INIT(&done_closure, inc_call_ctr, &n, grpc_schedule_on_exec_ctx); - grpc_endpoint_read(&exec_ctx, f.client_ep, &incoming, &done_closure); - grpc_exec_ctx_finish(&exec_ctx); + grpc_endpoint_read(f.client_ep, &incoming, &done_closure); + grpc_exec_ctx_finish(); GPR_ASSERT(n == 1); GPR_ASSERT(incoming.count == 1); GPR_ASSERT(grpc_slice_eq(s, incoming.slices[0])); grpc_endpoint_shutdown( - &exec_ctx, f.client_ep, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end")); + f.client_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end")); grpc_endpoint_shutdown( - &exec_ctx, f.server_ep, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end")); - grpc_endpoint_destroy(&exec_ctx, f.client_ep); - grpc_endpoint_destroy(&exec_ctx, f.server_ep); - grpc_exec_ctx_finish(&exec_ctx); - grpc_slice_unref_internal(&exec_ctx, s); - grpc_slice_buffer_destroy_internal(&exec_ctx, &incoming); + f.server_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end")); + grpc_endpoint_destroy(f.client_ep); + grpc_endpoint_destroy(f.server_ep); + grpc_exec_ctx_finish(); + grpc_slice_unref_internal(s); + grpc_slice_buffer_destroy_internal(&incoming); clean_up(); } -static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, (grpc_pollset *)p); +static void destroy_pollset(void *p, grpc_error *error) { + grpc_pollset_destroy((grpc_pollset *)p); } int main(int argc, char **argv) { grpc_closure destroyed; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_test_init(argc, argv); grpc_init(); @@ -219,8 +213,8 @@ int main(int argc, char **argv) { test_leftover(configs[3], 1); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, g_pollset, &destroyed); - grpc_exec_ctx_finish(&exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/security/ssl_server_fuzzer.c b/test/core/security/ssl_server_fuzzer.c index f9b754b8f21..98e2b368f75 100644 --- a/test/core/security/ssl_server_fuzzer.c +++ b/test/core/security/ssl_server_fuzzer.c @@ -40,8 +40,7 @@ struct handshake_state { bool done_callback_called; }; -static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void on_handshake_done(void *arg, grpc_error *error) { grpc_handshaker_args *args = arg; struct handshake_state *state = args->user_data; GPR_ASSERT(state->done_callback_called == false); @@ -55,17 +54,16 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resource_quota *resource_quota = grpc_resource_quota_create("ssl_server_fuzzer"); grpc_endpoint *mock_endpoint = grpc_mock_endpoint_create(discard_write, resource_quota); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); grpc_mock_endpoint_put_read( - &exec_ctx, mock_endpoint, - grpc_slice_from_copied_buffer((const char *)data, size)); + mock_endpoint, grpc_slice_from_copied_buffer((const char *)data, size)); // Load key pair and establish server SSL credentials. grpc_ssl_pem_key_cert_pair pem_key_cert_pair; @@ -82,38 +80,37 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // Create security connector grpc_server_security_connector *sc = NULL; grpc_security_status status = - grpc_server_credentials_create_security_connector(&exec_ctx, creds, &sc); + grpc_server_credentials_create_security_connector(creds, &sc); GPR_ASSERT(status == GRPC_SECURITY_OK); - grpc_millis deadline = GPR_MS_PER_SEC + grpc_exec_ctx_now(&exec_ctx); + grpc_millis deadline = GPR_MS_PER_SEC + grpc_exec_ctx_now(); struct handshake_state state; state.done_callback_called = false; grpc_handshake_manager *handshake_mgr = grpc_handshake_manager_create(); - grpc_server_security_connector_add_handshakers(&exec_ctx, sc, handshake_mgr); + grpc_server_security_connector_add_handshakers(sc, handshake_mgr); grpc_handshake_manager_do_handshake( - &exec_ctx, handshake_mgr, mock_endpoint, NULL /* channel_args */, - deadline, NULL /* acceptor */, on_handshake_done, &state); - grpc_exec_ctx_flush(&exec_ctx); + handshake_mgr, mock_endpoint, NULL /* channel_args */, deadline, + NULL /* acceptor */, on_handshake_done, &state); + grpc_exec_ctx_flush(); // If the given string happens to be part of the correct client hello, the // server will wait for more data. Explicitly fail the server by shutting down // the endpoint. if (!state.done_callback_called) { grpc_endpoint_shutdown( - &exec_ctx, mock_endpoint, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close")); - grpc_exec_ctx_flush(&exec_ctx); + mock_endpoint, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close")); + grpc_exec_ctx_flush(); } GPR_ASSERT(state.done_callback_called); - grpc_handshake_manager_destroy(&exec_ctx, handshake_mgr); - GRPC_SECURITY_CONNECTOR_UNREF(&exec_ctx, &sc->base, "test"); + grpc_handshake_manager_destroy(handshake_mgr); + GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "test"); grpc_server_credentials_release(creds); grpc_slice_unref(cert_slice); grpc_slice_unref(key_slice); grpc_slice_unref(ca_slice); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); grpc_shutdown(); if (leak_check) { diff --git a/test/core/security/verify_jwt.c b/test/core/security/verify_jwt.cc similarity index 81% rename from test/core/security/verify_jwt.c rename to test/core/security/verify_jwt.cc index cec6fb94b4e..13f8acb242a 100644 --- a/test/core/security/verify_jwt.c +++ b/test/core/security/verify_jwt.cc @@ -44,7 +44,7 @@ static void print_usage_and_exit(gpr_cmdline *cl, const char *argv0) { exit(1); } -static void on_jwt_verification_done(grpc_exec_ctx *exec_ctx, void *user_data, +static void on_jwt_verification_done(void *user_data, grpc_jwt_verifier_status status, grpc_jwt_claims *claims) { synchronizer *sync = user_data; @@ -57,7 +57,7 @@ static void on_jwt_verification_done(grpc_exec_ctx *exec_ctx, void *user_data, grpc_json_dump_to_string((grpc_json *)grpc_jwt_claims_json(claims), 2); printf("Claims: \n\n%s\n", claims_str); gpr_free(claims_str); - grpc_jwt_claims_destroy(exec_ctx, claims); + grpc_jwt_claims_destroy(claims); } else { GPR_ASSERT(claims == NULL); fprintf(stderr, "Verification failed with error %s\n", @@ -66,8 +66,7 @@ static void on_jwt_verification_done(grpc_exec_ctx *exec_ctx, void *user_data, gpr_mu_lock(sync->mu); sync->is_done = 1; - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, sync->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(sync->pollset, NULL)); gpr_mu_unlock(sync->mu); } @@ -77,7 +76,7 @@ int main(int argc, char **argv) { gpr_cmdline *cl; char *jwt = NULL; char *aud = NULL; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_init(); cl = gpr_cmdline_create("JWT verifier tool"); @@ -96,26 +95,26 @@ int main(int argc, char **argv) { grpc_pollset_init(sync.pollset, &sync.mu); sync.is_done = 0; - grpc_jwt_verifier_verify(&exec_ctx, verifier, sync.pollset, jwt, aud, + grpc_jwt_verifier_verify(verifier, sync.pollset, jwt, aud, on_jwt_verification_done, &sync); gpr_mu_lock(sync.mu); while (!sync.is_done) { grpc_pollset_worker *worker = NULL; - if (!GRPC_LOG_IF_ERROR("pollset_work", - grpc_pollset_work(&exec_ctx, sync.pollset, &worker, - GRPC_MILLIS_INF_FUTURE))) + if (!GRPC_LOG_IF_ERROR( + "pollset_work", + grpc_pollset_work(sync.pollset, &worker, GRPC_MILLIS_INF_FUTURE))) sync.is_done = true; gpr_mu_unlock(sync.mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(sync.mu); } gpr_mu_unlock(sync.mu); gpr_free(sync.pollset); - grpc_jwt_verifier_destroy(&exec_ctx, verifier); - grpc_exec_ctx_finish(&exec_ctx); + grpc_jwt_verifier_destroy(verifier); + grpc_exec_ctx_finish(); gpr_cmdline_destroy(cl); grpc_shutdown(); return !sync.success; diff --git a/test/core/slice/b64_test.c b/test/core/slice/b64_test.c index bd375aa6a7e..07403151956 100644 --- a/test/core/slice/b64_test.c +++ b/test/core/slice/b64_test.c @@ -44,14 +44,14 @@ static void test_simple_encode_decode_b64(int url_safe, int multiline) { const char *hello = "hello"; char *hello_b64 = grpc_base64_encode(hello, strlen(hello), url_safe, multiline); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice hello_slice = grpc_base64_decode(&exec_ctx, hello_b64, url_safe); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice hello_slice = grpc_base64_decode(hello_b64, url_safe); GPR_ASSERT(GRPC_SLICE_LENGTH(hello_slice) == strlen(hello)); GPR_ASSERT(strncmp((const char *)GRPC_SLICE_START_PTR(hello_slice), hello, GRPC_SLICE_LENGTH(hello_slice)) == 0); - grpc_slice_unref_internal(&exec_ctx, hello_slice); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(hello_slice); + grpc_exec_ctx_finish(); gpr_free(hello_b64); } @@ -64,15 +64,15 @@ static void test_full_range_encode_decode_b64(int url_safe, int multiline) { /* Try all the different paddings. */ for (i = 0; i < 3; i++) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; b64 = grpc_base64_encode(orig, sizeof(orig) - i, url_safe, multiline); - orig_decoded = grpc_base64_decode(&exec_ctx, b64, url_safe); + orig_decoded = grpc_base64_decode(b64, url_safe); GPR_ASSERT(GRPC_SLICE_LENGTH(orig_decoded) == (sizeof(orig) - i)); GPR_ASSERT(buffers_are_equal(orig, GRPC_SLICE_START_PTR(orig_decoded), sizeof(orig) - i)); - grpc_slice_unref_internal(&exec_ctx, orig_decoded); + grpc_slice_unref_internal(orig_decoded); gpr_free(b64); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } } @@ -116,19 +116,19 @@ static void test_url_safe_unsafe_mismatch_failure(void) { int url_safe = 1; for (i = 0; i < sizeof(orig); i++) orig[i] = (uint8_t)i; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; b64 = grpc_base64_encode(orig, sizeof(orig), url_safe, 0); - orig_decoded = grpc_base64_decode(&exec_ctx, b64, !url_safe); + orig_decoded = grpc_base64_decode(b64, !url_safe); GPR_ASSERT(GRPC_SLICE_IS_EMPTY(orig_decoded)); gpr_free(b64); - grpc_slice_unref_internal(&exec_ctx, orig_decoded); + grpc_slice_unref_internal(orig_decoded); b64 = grpc_base64_encode(orig, sizeof(orig), !url_safe, 0); - orig_decoded = grpc_base64_decode(&exec_ctx, b64, url_safe); + orig_decoded = grpc_base64_decode(b64, url_safe); GPR_ASSERT(GRPC_SLICE_IS_EMPTY(orig_decoded)); gpr_free(b64); - grpc_slice_unref_internal(&exec_ctx, orig_decoded); - grpc_exec_ctx_finish(&exec_ctx); + grpc_slice_unref_internal(orig_decoded); + grpc_exec_ctx_finish(); } static void test_rfc4648_test_vectors(void) { @@ -166,40 +166,40 @@ static void test_rfc4648_test_vectors(void) { static void test_unpadded_decode(void) { grpc_slice decoded; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - decoded = grpc_base64_decode(&exec_ctx, "Zm9vYmFy", 0); + exec_ctx = GRPC_EXEC_CTX_INIT; + decoded = grpc_base64_decode("Zm9vYmFy", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "foobar") == 0); grpc_slice_unref(decoded); - decoded = grpc_base64_decode(&exec_ctx, "Zm9vYmE", 0); + decoded = grpc_base64_decode("Zm9vYmE", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "fooba") == 0); grpc_slice_unref(decoded); - decoded = grpc_base64_decode(&exec_ctx, "Zm9vYg", 0); + decoded = grpc_base64_decode("Zm9vYg", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "foob") == 0); grpc_slice_unref(decoded); - decoded = grpc_base64_decode(&exec_ctx, "Zm9v", 0); + decoded = grpc_base64_decode("Zm9v", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "foo") == 0); grpc_slice_unref(decoded); - decoded = grpc_base64_decode(&exec_ctx, "Zm8", 0); + decoded = grpc_base64_decode("Zm8", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "fo") == 0); grpc_slice_unref(decoded); - decoded = grpc_base64_decode(&exec_ctx, "Zg", 0); + decoded = grpc_base64_decode("Zg", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "f") == 0); grpc_slice_unref(decoded); - decoded = grpc_base64_decode(&exec_ctx, "", 0); + decoded = grpc_base64_decode("", 0); GPR_ASSERT(GRPC_SLICE_IS_EMPTY(decoded)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/slice/slice_hash_table_test.c b/test/core/slice/slice_hash_table_test.c index f3689aac64f..67748433b12 100644 --- a/test/core/slice/slice_hash_table_test.c +++ b/test/core/slice/slice_hash_table_test.c @@ -58,9 +58,7 @@ static void check_non_existent_value(const char* key_string, grpc_slice_unref(key); } -static void destroy_string(grpc_exec_ctx* exec_ctx, void* value) { - gpr_free(value); -} +static void destroy_string(void* value) { gpr_free(value); } static grpc_slice_hash_table* create_table_from_entries( const test_entry* test_entries, size_t num_test_entries, @@ -119,9 +117,9 @@ static void test_slice_hash_table() { check_values(test_entries, num_entries, table); check_non_existent_value("XX", table); // Clean up. - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_hash_table_unref(&exec_ctx, table); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice_hash_table_unref(table); + grpc_exec_ctx_finish(); } static int value_cmp_fn(void* a, void* b) { @@ -147,10 +145,10 @@ static void test_slice_hash_table_eq() { create_table_from_entries(test_entries_b, num_entries_b, value_cmp_fn); GPR_ASSERT(grpc_slice_hash_table_cmp(table_a, table_b) == 0); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_hash_table_unref(&exec_ctx, table_a); - grpc_slice_hash_table_unref(&exec_ctx, table_b); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice_hash_table_unref(table_a); + grpc_slice_hash_table_unref(table_b); + grpc_exec_ctx_finish(); } static void test_slice_hash_table_not_eq() { @@ -219,17 +217,17 @@ static void test_slice_hash_table_not_eq() { create_table_from_entries(test_entries_h, num_entries_h, pointer_cmp_fn); GPR_ASSERT(grpc_slice_hash_table_cmp(table_g, table_h) != 0); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_slice_hash_table_unref(&exec_ctx, table_a); - grpc_slice_hash_table_unref(&exec_ctx, table_b_larger); - grpc_slice_hash_table_unref(&exec_ctx, table_b_smaller); - grpc_slice_hash_table_unref(&exec_ctx, table_c); - grpc_slice_hash_table_unref(&exec_ctx, table_d); - grpc_slice_hash_table_unref(&exec_ctx, table_e); - grpc_slice_hash_table_unref(&exec_ctx, table_f); - grpc_slice_hash_table_unref(&exec_ctx, table_g); - grpc_slice_hash_table_unref(&exec_ctx, table_h); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_slice_hash_table_unref(table_a); + grpc_slice_hash_table_unref(table_b_larger); + grpc_slice_hash_table_unref(table_b_smaller); + grpc_slice_hash_table_unref(table_c); + grpc_slice_hash_table_unref(table_d); + grpc_slice_hash_table_unref(table_e); + grpc_slice_hash_table_unref(table_f); + grpc_slice_hash_table_unref(table_g); + grpc_slice_hash_table_unref(table_h); + grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/surface/byte_buffer_reader_test.c b/test/core/surface/byte_buffer_reader_test.c index a6b4c86abc1..820f56e15b7 100644 --- a/test/core/surface/byte_buffer_reader_test.c +++ b/test/core/surface/byte_buffer_reader_test.c @@ -132,10 +132,9 @@ static void read_compressed_slice(grpc_compression_algorithm algorithm, memset(GRPC_SLICE_START_PTR(input_slice), 'a', input_size); grpc_slice_buffer_add(&sliceb_in, input_slice); /* takes ownership */ { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT( - grpc_msg_compress(&exec_ctx, algorithm, &sliceb_in, &sliceb_out)); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(grpc_msg_compress(algorithm, &sliceb_in, &sliceb_out)); + grpc_exec_ctx_finish(); } buffer = grpc_raw_compressed_byte_buffer_create(sliceb_out.slices, diff --git a/test/core/surface/channel_create_test.c b/test/core/surface/channel_create_test.c index a6884750e73..61cf2f7f3cc 100644 --- a/test/core/surface/channel_create_test.c +++ b/test/core/surface/channel_create_test.c @@ -35,11 +35,11 @@ void test_unknown_scheme_target(void) { chan = grpc_insecure_channel_create("blah://blah", NULL, NULL); GPR_ASSERT(chan != NULL); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_channel_element *elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_channel_destroy(chan); } diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c index e6372a379ca..21e23fd5006 100644 --- a/test/core/surface/completion_queue_test.c +++ b/test/core/surface/completion_queue_test.c @@ -120,8 +120,7 @@ static void test_wait_empty(void) { } } -static void do_nothing_end_completion(grpc_exec_ctx *exec_ctx, void *arg, - grpc_cq_completion *c) {} +static void do_nothing_end_completion(void *arg, grpc_cq_completion *c) {} static void test_cq_end_op(void) { grpc_event ev; @@ -130,8 +129,6 @@ static void test_cq_end_op(void) { grpc_cq_polling_type polling_types[] = { GRPC_CQ_DEFAULT_POLLING, GRPC_CQ_NON_LISTENING, GRPC_CQ_NON_POLLING}; grpc_completion_queue_attributes attr; - grpc_exec_ctx init_exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx exec_ctx; void *tag = create_test_tag(); LOG_TEST("test_cq_end_op"); @@ -139,14 +136,13 @@ static void test_cq_end_op(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - exec_ctx = init_exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); GPR_ASSERT(grpc_cq_begin_op(cc, tag)); - grpc_cq_end_op(&exec_ctx, cc, tag, GRPC_ERROR_NONE, - do_nothing_end_completion, NULL, &completion); + grpc_cq_end_op(cc, tag, GRPC_ERROR_NONE, do_nothing_end_completion, NULL, + &completion); ev = grpc_completion_queue_next(cc, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); @@ -154,7 +150,7 @@ static void test_cq_end_op(void) { GPR_ASSERT(ev.success); shutdown_and_destroy(cc); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } } @@ -211,8 +207,6 @@ static void test_pluck(void) { grpc_cq_polling_type polling_types[] = { GRPC_CQ_DEFAULT_POLLING, GRPC_CQ_NON_LISTENING, GRPC_CQ_NON_POLLING}; grpc_completion_queue_attributes attr; - grpc_exec_ctx init_exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx exec_ctx; unsigned i, j; LOG_TEST("test_pluck"); @@ -227,15 +221,14 @@ static void test_pluck(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_PLUCK; for (size_t pidx = 0; pidx < GPR_ARRAY_SIZE(polling_types); pidx++) { - exec_ctx = init_exec_ctx; // reset exec_ctx attr.cq_polling_type = polling_types[pidx]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) { GPR_ASSERT(grpc_cq_begin_op(cc, tags[i])); - grpc_cq_end_op(&exec_ctx, cc, tags[i], GRPC_ERROR_NONE, - do_nothing_end_completion, NULL, &completions[i]); + grpc_cq_end_op(cc, tags[i], GRPC_ERROR_NONE, do_nothing_end_completion, + NULL, &completions[i]); } for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) { @@ -246,8 +239,8 @@ static void test_pluck(void) { for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) { GPR_ASSERT(grpc_cq_begin_op(cc, tags[i])); - grpc_cq_end_op(&exec_ctx, cc, tags[i], GRPC_ERROR_NONE, - do_nothing_end_completion, NULL, &completions[i]); + grpc_cq_end_op(cc, tags[i], GRPC_ERROR_NONE, do_nothing_end_completion, + NULL, &completions[i]); } for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) { @@ -257,7 +250,7 @@ static void test_pluck(void) { } shutdown_and_destroy(cc); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } } diff --git a/test/core/surface/completion_queue_threading_test.c b/test/core/surface/completion_queue_threading_test.cc similarity index 92% rename from test/core/surface/completion_queue_threading_test.c rename to test/core/surface/completion_queue_threading_test.cc index 9996b6b840a..8a8d87be1a4 100644 --- a/test/core/surface/completion_queue_threading_test.c +++ b/test/core/surface/completion_queue_threading_test.cc @@ -59,8 +59,7 @@ static void shutdown_and_destroy(grpc_completion_queue *cc) { grpc_completion_queue_destroy(cc); } -static void do_nothing_end_completion(grpc_exec_ctx *exec_ctx, void *arg, - grpc_cq_completion *c) {} +static void do_nothing_end_completion(void *arg, grpc_cq_completion *c) {} struct thread_state { grpc_completion_queue *cc; @@ -81,7 +80,7 @@ static void test_too_many_plucks(void) { gpr_thd_id thread_ids[GPR_ARRAY_SIZE(tags)]; struct thread_state thread_states[GPR_ARRAY_SIZE(tags)]; gpr_thd_options thread_options = gpr_thd_options_default(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; unsigned i, j; LOG_TEST("test_too_many_plucks"); @@ -108,8 +107,8 @@ static void test_too_many_plucks(void) { for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) { GPR_ASSERT(grpc_cq_begin_op(cc, tags[i])); - grpc_cq_end_op(&exec_ctx, cc, tags[i], GRPC_ERROR_NONE, - do_nothing_end_completion, NULL, &completions[i]); + grpc_cq_end_op(cc, tags[i], GRPC_ERROR_NONE, do_nothing_end_completion, + NULL, &completions[i]); } for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) { @@ -117,7 +116,7 @@ static void test_too_many_plucks(void) { } shutdown_and_destroy(cc); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } #define TEST_THREAD_EVENTS 10000 @@ -137,15 +136,14 @@ gpr_timespec ten_seconds_time(void) { return grpc_timeout_seconds_to_deadline(10); } -static void free_completion(grpc_exec_ctx *exec_ctx, void *arg, - grpc_cq_completion *completion) { +static void free_completion(void *arg, grpc_cq_completion *completion) { gpr_free(completion); } static void producer_thread(void *arg) { test_thread_options *opt = arg; int i; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "producer %d started", opt->id); gpr_event_set(&opt->on_started, (void *)(intptr_t)1); @@ -162,16 +160,16 @@ static void producer_thread(void *arg) { gpr_log(GPR_INFO, "producer %d phase 2", opt->id); for (i = 0; i < TEST_THREAD_EVENTS; i++) { - grpc_cq_end_op(&exec_ctx, opt->cc, (void *)(intptr_t)1, GRPC_ERROR_NONE, + grpc_cq_end_op(opt->cc, (void *)(intptr_t)1, GRPC_ERROR_NONE, free_completion, NULL, gpr_malloc(sizeof(grpc_cq_completion))); opt->events_triggered++; - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } gpr_log(GPR_INFO, "producer %d phase 2 done", opt->id); gpr_event_set(&opt->on_finished, (void *)(intptr_t)1); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void consumer_thread(void *arg) { diff --git a/test/core/surface/concurrent_connectivity_test.c b/test/core/surface/concurrent_connectivity_test.c index 3595885ff6d..28bdf5d1d36 100644 --- a/test/core/surface/concurrent_connectivity_test.c +++ b/test/core/surface/concurrent_connectivity_test.c @@ -99,29 +99,28 @@ void server_thread(void *vargs) { GPR_ASSERT(detag(ev.tag) == 0xd1e); } -static void on_connect(grpc_exec_ctx *exec_ctx, void *vargs, grpc_endpoint *tcp, +static void on_connect(void *vargs, grpc_endpoint *tcp, grpc_pollset *accepting_pollset, grpc_tcp_server_acceptor *acceptor) { gpr_free(acceptor); struct server_thread_args *args = (struct server_thread_args *)vargs; - grpc_endpoint_shutdown(exec_ctx, tcp, + grpc_endpoint_shutdown(tcp, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected")); - grpc_endpoint_destroy(exec_ctx, tcp); + grpc_endpoint_destroy(tcp); gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, args->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL)); gpr_mu_unlock(args->mu); } void bad_server_thread(void *vargs) { struct server_thread_args *args = (struct server_thread_args *)vargs; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_resolved_address resolved_addr; struct sockaddr_storage *addr = (struct sockaddr_storage *)resolved_addr.addr; int port; grpc_tcp_server *s; - grpc_error *error = grpc_tcp_server_create(&exec_ctx, NULL, NULL, &s); + grpc_error *error = grpc_tcp_server_create(NULL, NULL, &s); GPR_ASSERT(error == GRPC_ERROR_NONE); memset(&resolved_addr, 0, sizeof(resolved_addr)); addr->ss_family = AF_INET; @@ -130,35 +129,34 @@ void bad_server_thread(void *vargs) { GPR_ASSERT(port > 0); gpr_asprintf(&args->addr, "localhost:%d", port); - grpc_tcp_server_start(&exec_ctx, s, &args->pollset, 1, on_connect, args); + grpc_tcp_server_start(s, &args->pollset, 1, on_connect, args); gpr_event_set(&args->ready, (void *)1); gpr_mu_lock(args->mu); while (gpr_atm_acq_load(&args->stop) == 0) { - grpc_millis deadline = grpc_exec_ctx_now(&exec_ctx) + 100; + grpc_millis deadline = grpc_exec_ctx_now() + 100; grpc_pollset_worker *worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, args->pollset, &worker, deadline))) { + grpc_pollset_work(args->pollset, &worker, deadline))) { gpr_atm_rel_store(&args->stop, 1); } gpr_mu_unlock(args->mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_mu_lock(args->mu); } gpr_mu_unlock(args->mu); - grpc_tcp_server_unref(&exec_ctx, s); + grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(args->addr); } -static void done_pollset_shutdown(grpc_exec_ctx *exec_ctx, void *pollset, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, pollset); +static void done_pollset_shutdown(void *pollset, grpc_error *error) { + grpc_pollset_destroy(pollset); gpr_free(pollset); } @@ -226,11 +224,11 @@ int run_concurrent_connectivity_test() { gpr_atm_rel_store(&args.stop, 1); gpr_thd_join(server); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_pollset_shutdown(&exec_ctx, args.pollset, + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_pollset_shutdown(args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; diff --git a/test/core/surface/lame_client_test.c b/test/core/surface/lame_client_test.c index f623e1a7432..f3890743d08 100644 --- a/test/core/surface/lame_client_test.c +++ b/test/core/surface/lame_client_test.c @@ -32,20 +32,19 @@ grpc_closure transport_op_cb; static void *tag(intptr_t x) { return (void *)x; } -void verify_connectivity(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +void verify_connectivity(void *arg, grpc_error *error) { grpc_connectivity_state *state = arg; GPR_ASSERT(GRPC_CHANNEL_SHUTDOWN == *state); GPR_ASSERT(error == GRPC_ERROR_NONE); } -void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +void do_nothing(void *arg, grpc_error *error) {} void test_transport_op(grpc_channel *channel) { grpc_transport_op *op; grpc_channel_element *elem; grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; GRPC_CLOSURE_INIT(&transport_op_cb, verify_connectivity, &state, grpc_schedule_on_exec_ctx); @@ -54,14 +53,14 @@ void test_transport_op(grpc_channel *channel) { op->on_connectivity_state_change = &transport_op_cb; op->connectivity_state = &state; elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); - elem->filter->start_transport_op(&exec_ctx, elem, op); - grpc_exec_ctx_finish(&exec_ctx); + elem->filter->start_transport_op(elem, op); + grpc_exec_ctx_finish(); GRPC_CLOSURE_INIT(&transport_op_cb, do_nothing, NULL, grpc_schedule_on_exec_ctx); op = grpc_make_transport_op(&transport_op_cb); - elem->filter->start_transport_op(&exec_ctx, elem, op); - grpc_exec_ctx_finish(&exec_ctx); + elem->filter->start_transport_op(elem, op); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/surface/num_external_connectivity_watchers_test.c b/test/core/surface/num_external_connectivity_watchers_test.c index 16401bb7ac0..5c71d41bfce 100644 --- a/test/core/surface/num_external_connectivity_watchers_test.c +++ b/test/core/surface/num_external_connectivity_watchers_test.c @@ -176,9 +176,9 @@ static grpc_channel *secure_test_create_channel(const char *addr) { grpc_channel *channel = grpc_secure_channel_create(ssl_creds, addr, new_client_args, NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, new_client_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(new_client_args); + grpc_exec_ctx_finish(); } grpc_channel_credentials_release(ssl_creds); return channel; diff --git a/test/core/surface/secure_channel_create_test.c b/test/core/surface/secure_channel_create_test.c index 0c451355017..78062cb2d1f 100644 --- a/test/core/surface/secure_channel_create_test.c +++ b/test/core/surface/secure_channel_create_test.c @@ -37,10 +37,10 @@ void test_unknown_scheme_target(void) { grpc_channel_element *elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_CHANNEL_INTERNAL_UNREF(&exec_ctx, chan, "test"); - grpc_channel_credentials_unref(&exec_ctx, creds); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); + grpc_channel_credentials_unref(creds); + grpc_exec_ctx_finish(); } void test_security_connector_already_in_arg(void) { @@ -55,9 +55,9 @@ void test_security_connector_already_in_arg(void) { grpc_channel_element *elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_CHANNEL_INTERNAL_UNREF(&exec_ctx, chan, "test"); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); + grpc_exec_ctx_finish(); } void test_null_creds(void) { @@ -65,9 +65,9 @@ void test_null_creds(void) { grpc_channel_element *elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GRPC_CHANNEL_INTERNAL_UNREF(&exec_ctx, chan, "test"); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/surface/sequential_connectivity_test.c b/test/core/surface/sequential_connectivity_test.c index d5fd2db81b0..ae5288427f5 100644 --- a/test/core/surface/sequential_connectivity_test.c +++ b/test/core/surface/sequential_connectivity_test.c @@ -153,9 +153,9 @@ static grpc_channel *secure_test_create_channel(const char *addr) { grpc_channel *channel = grpc_secure_channel_create(ssl_creds, addr, new_client_args, NULL); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_channel_args_destroy(&exec_ctx, new_client_args); - grpc_exec_ctx_finish(&exec_ctx); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_channel_args_destroy(new_client_args); + grpc_exec_ctx_finish(); } grpc_channel_credentials_release(ssl_creds); return channel; diff --git a/test/core/transport/bdp_estimator_test.cc b/test/core/transport/bdp_estimator_test.cc index 7ac35016c0b..cf1b422043b 100644 --- a/test/core/transport/bdp_estimator_test.cc +++ b/test/core/transport/bdp_estimator_test.cc @@ -23,92 +23,97 @@ #include <grpc/support/log.h> #include <grpc/support/string_util.h> #include <grpc/support/useful.h> -#include <gtest/gtest.h> #include <limits.h> #include "src/core/lib/iomgr/timer_manager.h" #include "src/core/lib/support/string.h" #include "test/core/util/test_config.h" -extern "C" gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type); +extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type); -namespace grpc_core { -namespace testing { -namespace { -int g_clock = 0; +static int g_clock = 0; -gpr_timespec fake_gpr_now(gpr_clock_type clock_type) { - gpr_timespec ts; - ts.tv_sec = g_clock; - ts.tv_nsec = 0; - ts.clock_type = clock_type; - return ts; +static gpr_timespec fake_gpr_now(gpr_clock_type clock_type) { + return (gpr_timespec){ + .tv_sec = g_clock, .tv_nsec = 0, .clock_type = clock_type, + }; } -void inc_time(void) { g_clock += 30; } -} // namespace +static void inc_time(void) { g_clock += 30; } -TEST(BdpEstimatorTest, NoOp) { BdpEstimator est("test"); } +static void test_noop(void) { + gpr_log(GPR_INFO, "test_noop"); + grpc_bdp_estimator est; + grpc_bdp_estimator_init(&est, "test"); +} -TEST(BdpEstimatorTest, EstimateBdpNoSamples) { - BdpEstimator est("test"); +static void test_get_estimate_no_samples(void) { + gpr_log(GPR_INFO, "test_get_estimate_no_samples"); + grpc_bdp_estimator est; + grpc_bdp_estimator_init(&est, "test"); int64_t estimate; - est.EstimateBdp(&estimate); + grpc_bdp_estimator_get_estimate(&est, &estimate); } -namespace { -void AddSamples(BdpEstimator *estimator, int64_t *samples, size_t n) { - estimator->AddIncomingBytes(1234567); +static void add_samples(grpc_bdp_estimator *estimator, int64_t *samples, + size_t n) { + grpc_bdp_estimator_add_incoming_bytes(estimator, 1234567); inc_time(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - estimator->SchedulePing(); - estimator->StartPing(); + + GPR_ASSERT(grpc_bdp_estimator_need_ping(estimator) == true); + grpc_bdp_estimator_schedule_ping(estimator); + grpc_bdp_estimator_start_ping(estimator); + for (size_t i = 0; i < n; i++) { - estimator->AddIncomingBytes(samples[i]); + grpc_bdp_estimator_add_incoming_bytes(estimator, samples[i]); + GPR_ASSERT(grpc_bdp_estimator_need_ping(estimator) == false); } gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(1, GPR_TIMESPAN))); - grpc_exec_ctx_invalidate_now(&exec_ctx); - estimator->CompletePing(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + grpc_bdp_estimator_complete_ping(estimator); + grpc_exec_ctx_finish(); } -void AddSample(BdpEstimator *estimator, int64_t sample) { - AddSamples(estimator, &sample, 1); +static void add_sample(grpc_bdp_estimator *estimator, int64_t sample) { + add_samples(estimator, &sample, 1); } -} // namespace -TEST(BdpEstimatorTest, GetEstimate1Sample) { - BdpEstimator est("test"); - AddSample(&est, 100); +static void test_get_estimate_1_sample(void) { + gpr_log(GPR_INFO, "test_get_estimate_1_sample"); + grpc_bdp_estimator est; + grpc_bdp_estimator_init(&est, "test"); + add_sample(&est, 100); int64_t estimate; - est.EstimateBdp(&estimate); + grpc_bdp_estimator_get_estimate(&est, &estimate); } -TEST(BdpEstimatorTest, GetEstimate2Samples) { - BdpEstimator est("test"); - AddSample(&est, 100); - AddSample(&est, 100); +static void test_get_estimate_2_samples(void) { + gpr_log(GPR_INFO, "test_get_estimate_2_samples"); + grpc_bdp_estimator est; + grpc_bdp_estimator_init(&est, "test"); + add_sample(&est, 100); + add_sample(&est, 100); int64_t estimate; - est.EstimateBdp(&estimate); + grpc_bdp_estimator_get_estimate(&est, &estimate); } -TEST(BdpEstimatorTest, GetEstimate3Samples) { - BdpEstimator est("test"); - AddSample(&est, 100); - AddSample(&est, 100); - AddSample(&est, 100); - int64_t estimate; - est.EstimateBdp(&estimate); -} - -namespace { -static int64_t GetEstimate(const BdpEstimator &estimator) { +static int64_t get_estimate(grpc_bdp_estimator *estimator) { int64_t out; - EXPECT_TRUE(estimator.EstimateBdp(&out)); + GPR_ASSERT(grpc_bdp_estimator_get_estimate(estimator, &out)); return out; } -int64_t NextPow2(int64_t v) { +static void test_get_estimate_3_samples(void) { + gpr_log(GPR_INFO, "test_get_estimate_3_samples"); + grpc_bdp_estimator est; + grpc_bdp_estimator_init(&est, "test"); + add_sample(&est, 100); + add_sample(&est, 100); + add_sample(&est, 100); + int64_t estimate; + grpc_bdp_estimator_get_estimate(&est, &estimate); +} + +static int64_t next_pow_2(int64_t v) { v--; v |= v >> 1; v |= v >> 2; @@ -119,40 +124,40 @@ int64_t NextPow2(int64_t v) { v++; return v; } -} // namespace - -class BdpEstimatorRandomTest : public ::testing::TestWithParam<size_t> {}; -TEST_P(BdpEstimatorRandomTest, GetEstimateRandomValues) { - BdpEstimator est("test"); +static void test_get_estimate_random_values(size_t n) { + gpr_log(GPR_INFO, "test_get_estimate_random_values(%" PRIdPTR ")", n); + grpc_bdp_estimator est; + grpc_bdp_estimator_init(&est, "test"); const int kMaxSample = 65535; int min = kMaxSample; int max = 0; - for (size_t i = 0; i < GetParam(); i++) { + for (size_t i = 0; i < n; i++) { int sample = rand() % (kMaxSample + 1); if (sample < min) min = sample; if (sample > max) max = sample; - AddSample(&est, sample); + add_sample(&est, sample); if (i >= 3) { - EXPECT_LE(GetEstimate(est), GPR_MAX(65536, 2 * NextPow2(max))) - << " min:" << min << " max:" << max << " sample:" << sample; + gpr_log(GPR_DEBUG, "est:%" PRId64 " min:%d max:%d", get_estimate(&est), + min, max); + GPR_ASSERT(get_estimate(&est) <= GPR_MAX(65536, 2 * next_pow_2(max))); } } } -INSTANTIATE_TEST_CASE_P(TooManyNames, BdpEstimatorRandomTest, - ::testing::Values(3, 4, 6, 9, 13, 19, 28, 42, 63, 94, - 141, 211, 316, 474, 711)); -} // namespace testing -} // namespace grpc_core - int main(int argc, char **argv) { grpc_test_init(argc, argv); - gpr_now_impl = grpc_core::testing::fake_gpr_now; + gpr_now_impl = fake_gpr_now; grpc_init(); grpc_timer_manager_set_threading(false); - ::testing::InitGoogleTest(&argc, argv); - int ret = RUN_ALL_TESTS(); + test_noop(); + test_get_estimate_no_samples(); + test_get_estimate_1_sample(); + test_get_estimate_2_samples(); + test_get_estimate_3_samples(); + for (size_t i = 3; i < 1000; i = i * 3 / 2) { + test_get_estimate_random_values(i); + } grpc_shutdown(); - return ret; + return 0; } diff --git a/test/core/transport/byte_stream_test.c b/test/core/transport/byte_stream_test.c index a0c5f961cfd..3516c191e20 100644 --- a/test/core/transport/byte_stream_test.c +++ b/test/core/transport/byte_stream_test.c @@ -30,14 +30,13 @@ // grpc_slice_buffer_stream tests // -static void not_called_closure(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void not_called_closure(void *arg, grpc_error *error) { GPR_ASSERT(false); } static void test_slice_buffer_stream_basic(void) { gpr_log(GPR_DEBUG, "test_slice_buffer_stream_basic"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; // Create and populate slice buffer. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -57,23 +56,22 @@ static void test_slice_buffer_stream_basic(void) { grpc_schedule_on_exec_ctx); // Read each slice. Note that next() always returns synchronously. for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) { - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream.base, ~(size_t)0, &closure)); + GPR_ASSERT(grpc_byte_stream_next(&stream.base, ~(size_t)0, &closure)); grpc_slice output; - grpc_error *error = grpc_byte_stream_pull(&exec_ctx, &stream.base, &output); + grpc_error *error = grpc_byte_stream_pull(&stream.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[i], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); } // Clean up. - grpc_byte_stream_destroy(&exec_ctx, &stream.base); - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + grpc_byte_stream_destroy(&stream.base); + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } static void test_slice_buffer_stream_shutdown(void) { gpr_log(GPR_DEBUG, "test_slice_buffer_stream_shutdown"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; // Create and populate slice buffer. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -92,29 +90,26 @@ static void test_slice_buffer_stream_shutdown(void) { GRPC_CLOSURE_INIT(&closure, not_called_closure, NULL, grpc_schedule_on_exec_ctx); // Read the first slice. - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream.base, ~(size_t)0, &closure)); + GPR_ASSERT(grpc_byte_stream_next(&stream.base, ~(size_t)0, &closure)); grpc_slice output; - grpc_error *error = grpc_byte_stream_pull(&exec_ctx, &stream.base, &output); + grpc_error *error = grpc_byte_stream_pull(&stream.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[0], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); // Now shutdown. grpc_error *shutdown_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("shutdown error"); - grpc_byte_stream_shutdown(&exec_ctx, &stream.base, - GRPC_ERROR_REF(shutdown_error)); + grpc_byte_stream_shutdown(&stream.base, GRPC_ERROR_REF(shutdown_error)); // After shutdown, the next pull() should return the error. - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream.base, ~(size_t)0, &closure)); - error = grpc_byte_stream_pull(&exec_ctx, &stream.base, &output); + GPR_ASSERT(grpc_byte_stream_next(&stream.base, ~(size_t)0, &closure)); + error = grpc_byte_stream_pull(&stream.base, &output); GPR_ASSERT(error == shutdown_error); GRPC_ERROR_UNREF(error); GRPC_ERROR_UNREF(shutdown_error); // Clean up. - grpc_byte_stream_destroy(&exec_ctx, &stream.base); - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + grpc_byte_stream_destroy(&stream.base); + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } // @@ -123,7 +118,7 @@ static void test_slice_buffer_stream_shutdown(void) { static void test_caching_byte_stream_basic(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_basic"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -147,24 +142,23 @@ static void test_caching_byte_stream_basic(void) { // Read each slice. Note that next() always returns synchronously, // because the underlying byte stream always does. for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) { - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream.base, ~(size_t)0, &closure)); + GPR_ASSERT(grpc_byte_stream_next(&stream.base, ~(size_t)0, &closure)); grpc_slice output; - grpc_error *error = grpc_byte_stream_pull(&exec_ctx, &stream.base, &output); + grpc_error *error = grpc_byte_stream_pull(&stream.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[i], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); } // Clean up. - grpc_byte_stream_destroy(&exec_ctx, &stream.base); - grpc_byte_stream_cache_destroy(&exec_ctx, &cache); - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + grpc_byte_stream_destroy(&stream.base); + grpc_byte_stream_cache_destroy(&cache); + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } static void test_caching_byte_stream_reset(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_reset"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -186,34 +180,32 @@ static void test_caching_byte_stream_reset(void) { GRPC_CLOSURE_INIT(&closure, not_called_closure, NULL, grpc_schedule_on_exec_ctx); // Read one slice. - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream.base, ~(size_t)0, &closure)); + GPR_ASSERT(grpc_byte_stream_next(&stream.base, ~(size_t)0, &closure)); grpc_slice output; - grpc_error *error = grpc_byte_stream_pull(&exec_ctx, &stream.base, &output); + grpc_error *error = grpc_byte_stream_pull(&stream.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[0], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); // Reset the caching stream. The reads should start over from the // first slice. grpc_caching_byte_stream_reset(&stream); for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) { - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream.base, ~(size_t)0, &closure)); - error = grpc_byte_stream_pull(&exec_ctx, &stream.base, &output); + GPR_ASSERT(grpc_byte_stream_next(&stream.base, ~(size_t)0, &closure)); + error = grpc_byte_stream_pull(&stream.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[i], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); } // Clean up. - grpc_byte_stream_destroy(&exec_ctx, &stream.base); - grpc_byte_stream_cache_destroy(&exec_ctx, &cache); - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + grpc_byte_stream_destroy(&stream.base); + grpc_byte_stream_cache_destroy(&cache); + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } static void test_caching_byte_stream_shared_cache(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_shared_cache"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -237,35 +229,32 @@ static void test_caching_byte_stream_shared_cache(void) { GRPC_CLOSURE_INIT(&closure, not_called_closure, NULL, grpc_schedule_on_exec_ctx); // Read one slice from stream1. - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream1.base, ~(size_t)0, &closure)); + GPR_ASSERT(grpc_byte_stream_next(&stream1.base, ~(size_t)0, &closure)); grpc_slice output; - grpc_error *error = grpc_byte_stream_pull(&exec_ctx, &stream1.base, &output); + grpc_error *error = grpc_byte_stream_pull(&stream1.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[0], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); // Read all slices from stream2. for (size_t i = 0; i < GPR_ARRAY_SIZE(input); ++i) { - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream2.base, ~(size_t)0, &closure)); - error = grpc_byte_stream_pull(&exec_ctx, &stream2.base, &output); + GPR_ASSERT(grpc_byte_stream_next(&stream2.base, ~(size_t)0, &closure)); + error = grpc_byte_stream_pull(&stream2.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[i], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); } // Now read the second slice from stream1. - GPR_ASSERT( - grpc_byte_stream_next(&exec_ctx, &stream1.base, ~(size_t)0, &closure)); - error = grpc_byte_stream_pull(&exec_ctx, &stream1.base, &output); + GPR_ASSERT(grpc_byte_stream_next(&stream1.base, ~(size_t)0, &closure)); + error = grpc_byte_stream_pull(&stream1.base, &output); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(grpc_slice_eq(input[1], output)); - grpc_slice_unref_internal(&exec_ctx, output); + grpc_slice_unref_internal(output); // Clean up. - grpc_byte_stream_destroy(&exec_ctx, &stream1.base); - grpc_byte_stream_destroy(&exec_ctx, &stream2.base); - grpc_byte_stream_cache_destroy(&exec_ctx, &cache); - grpc_slice_buffer_destroy_internal(&exec_ctx, &buffer); - grpc_exec_ctx_finish(&exec_ctx); + grpc_byte_stream_destroy(&stream1.base); + grpc_byte_stream_destroy(&stream2.base); + grpc_byte_stream_cache_destroy(&cache); + grpc_slice_buffer_destroy_internal(&buffer); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/transport/chttp2/bin_decoder_test.c b/test/core/transport/chttp2/bin_decoder_test.c index 775161ec91e..824b7563983 100644 --- a/test/core/transport/chttp2/bin_decoder_test.c +++ b/test/core/transport/chttp2/bin_decoder_test.c @@ -29,8 +29,8 @@ static int all_ok = 1; -static void expect_slice_eq(grpc_exec_ctx *exec_ctx, grpc_slice expected, - grpc_slice slice, char *debug, int line) { +static void expect_slice_eq(grpc_slice expected, grpc_slice slice, char *debug, + int line) { if (!grpc_slice_eq(slice, expected)) { char *hs = grpc_dump_slice(slice, GPR_DUMP_HEX | GPR_DUMP_ASCII); char *he = grpc_dump_slice(expected, GPR_DUMP_HEX | GPR_DUMP_ASCII); @@ -40,104 +40,94 @@ static void expect_slice_eq(grpc_exec_ctx *exec_ctx, grpc_slice expected, gpr_free(he); all_ok = 0; } - grpc_slice_unref_internal(exec_ctx, expected); - grpc_slice_unref_internal(exec_ctx, slice); + grpc_slice_unref_internal(expected); + grpc_slice_unref_internal(slice); } -static grpc_slice base64_encode(grpc_exec_ctx *exec_ctx, const char *s) { +static grpc_slice base64_encode(const char *s) { grpc_slice ss = grpc_slice_from_copied_string(s); grpc_slice out = grpc_chttp2_base64_encode(ss); - grpc_slice_unref_internal(exec_ctx, ss); + grpc_slice_unref_internal(ss); return out; } -static grpc_slice base64_decode(grpc_exec_ctx *exec_ctx, const char *s) { +static grpc_slice base64_decode(const char *s) { grpc_slice ss = grpc_slice_from_copied_string(s); - grpc_slice out = grpc_chttp2_base64_decode(exec_ctx, ss); - grpc_slice_unref_internal(exec_ctx, ss); + grpc_slice out = grpc_chttp2_base64_decode(ss); + grpc_slice_unref_internal(ss); return out; } -static grpc_slice base64_decode_with_length(grpc_exec_ctx *exec_ctx, - const char *s, +static grpc_slice base64_decode_with_length(const char *s, size_t output_length) { grpc_slice ss = grpc_slice_from_copied_string(s); - grpc_slice out = - grpc_chttp2_base64_decode_with_length(exec_ctx, ss, output_length); - grpc_slice_unref_internal(exec_ctx, ss); + grpc_slice out = grpc_chttp2_base64_decode_with_length(ss, output_length); + grpc_slice_unref_internal(ss); return out; } -#define EXPECT_SLICE_EQ(exec_ctx, expected, slice) \ - expect_slice_eq( \ - exec_ctx, grpc_slice_from_copied_buffer(expected, sizeof(expected) - 1), \ - slice, #slice, __LINE__); +#define EXPECT_SLICE_EQ(expected, slice) \ + expect_slice_eq( \ + grpc_slice_from_copied_buffer(expected, sizeof(expected) - 1), slice, \ + #slice, __LINE__); -#define ENCODE_AND_DECODE(exec_ctx, s) \ - EXPECT_SLICE_EQ(exec_ctx, s, \ - grpc_chttp2_base64_decode_with_length( \ - exec_ctx, base64_encode(exec_ctx, s), strlen(s))); +#define ENCODE_AND_DECODE(s) \ + EXPECT_SLICE_EQ( \ + s, grpc_chttp2_base64_decode_with_length(base64_encode(s), strlen(s))); int main(int argc, char **argv) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which takes encoded base64 strings without pad chars, but output length is required. */ /* Base64 test vectors from RFC 4648 */ - ENCODE_AND_DECODE(&exec_ctx, ""); - ENCODE_AND_DECODE(&exec_ctx, "f"); - ENCODE_AND_DECODE(&exec_ctx, "foo"); - ENCODE_AND_DECODE(&exec_ctx, "fo"); - ENCODE_AND_DECODE(&exec_ctx, "foob"); - ENCODE_AND_DECODE(&exec_ctx, "fooba"); - ENCODE_AND_DECODE(&exec_ctx, "foobar"); + ENCODE_AND_DECODE(""); + ENCODE_AND_DECODE("f"); + ENCODE_AND_DECODE("foo"); + ENCODE_AND_DECODE("fo"); + ENCODE_AND_DECODE("foob"); + ENCODE_AND_DECODE("fooba"); + ENCODE_AND_DECODE("foobar"); - ENCODE_AND_DECODE(&exec_ctx, "\xc0\xc1\xc2\xc3\xc4\xc5"); + ENCODE_AND_DECODE("\xc0\xc1\xc2\xc3\xc4\xc5"); /* Base64 test vectors from RFC 4648, with pad chars */ /* BASE64("") = "" */ - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode(&exec_ctx, "")); + EXPECT_SLICE_EQ("", base64_decode("")); /* BASE64("f") = "Zg==" */ - EXPECT_SLICE_EQ(&exec_ctx, "f", base64_decode(&exec_ctx, "Zg==")); + EXPECT_SLICE_EQ("f", base64_decode("Zg==")); /* BASE64("fo") = "Zm8=" */ - EXPECT_SLICE_EQ(&exec_ctx, "fo", base64_decode(&exec_ctx, "Zm8=")); + EXPECT_SLICE_EQ("fo", base64_decode("Zm8=")); /* BASE64("foo") = "Zm9v" */ - EXPECT_SLICE_EQ(&exec_ctx, "foo", base64_decode(&exec_ctx, "Zm9v")); + EXPECT_SLICE_EQ("foo", base64_decode("Zm9v")); /* BASE64("foob") = "Zm9vYg==" */ - EXPECT_SLICE_EQ(&exec_ctx, "foob", base64_decode(&exec_ctx, "Zm9vYg==")); + EXPECT_SLICE_EQ("foob", base64_decode("Zm9vYg==")); /* BASE64("fooba") = "Zm9vYmE=" */ - EXPECT_SLICE_EQ(&exec_ctx, "fooba", base64_decode(&exec_ctx, "Zm9vYmE=")); + EXPECT_SLICE_EQ("fooba", base64_decode("Zm9vYmE=")); /* BASE64("foobar") = "Zm9vYmFy" */ - EXPECT_SLICE_EQ(&exec_ctx, "foobar", base64_decode(&exec_ctx, "Zm9vYmFy")); + EXPECT_SLICE_EQ("foobar", base64_decode("Zm9vYmFy")); - EXPECT_SLICE_EQ(&exec_ctx, "\xc0\xc1\xc2\xc3\xc4\xc5", - base64_decode(&exec_ctx, "wMHCw8TF")); + EXPECT_SLICE_EQ("\xc0\xc1\xc2\xc3\xc4\xc5", base64_decode("wMHCw8TF")); // Test illegal input length in grpc_chttp2_base64_decode - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode(&exec_ctx, "a")); - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode(&exec_ctx, "ab")); - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode(&exec_ctx, "abc")); + EXPECT_SLICE_EQ("", base64_decode("a")); + EXPECT_SLICE_EQ("", base64_decode("ab")); + EXPECT_SLICE_EQ("", base64_decode("abc")); // Test illegal charactors in grpc_chttp2_base64_decode - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode(&exec_ctx, "Zm:v")); - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode(&exec_ctx, "Zm=v")); + EXPECT_SLICE_EQ("", base64_decode("Zm:v")); + EXPECT_SLICE_EQ("", base64_decode("Zm=v")); // Test output_length longer than max possible output length in // grpc_chttp2_base64_decode_with_length - EXPECT_SLICE_EQ(&exec_ctx, "", base64_decode_with_length(&exec_ctx, "Zg", 2)); - EXPECT_SLICE_EQ(&exec_ctx, "", - base64_decode_with_length(&exec_ctx, "Zm8", 3)); - EXPECT_SLICE_EQ(&exec_ctx, "", - base64_decode_with_length(&exec_ctx, "Zm9v", 4)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zg", 2)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm8", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm9v", 4)); // Test illegal charactors in grpc_chttp2_base64_decode_with_length - EXPECT_SLICE_EQ(&exec_ctx, "", - base64_decode_with_length(&exec_ctx, "Zm:v", 3)); - EXPECT_SLICE_EQ(&exec_ctx, "", - base64_decode_with_length(&exec_ctx, "Zm=v", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); return all_ok ? 0 : 1; } diff --git a/test/core/transport/chttp2/bin_decoder_test.cc b/test/core/transport/chttp2/bin_decoder_test.cc new file mode 100644 index 00000000000..d426731dae7 --- /dev/null +++ b/test/core/transport/chttp2/bin_decoder_test.cc @@ -0,0 +1,135 @@ +/* + * + * Copyright 2016 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "src/core/ext/transport/chttp2/transport/bin_decoder.h" + +#include <string.h> + +#include <grpc/support/alloc.h> +#include <grpc/support/log.h> +#include "src/core/ext/transport/chttp2/transport/bin_encoder.h" +#include "src/core/lib/slice/slice_internal.h" +#include "src/core/lib/slice/slice_string_helpers.h" +#include "src/core/lib/support/string.h" + +static int all_ok = 1; + +static void expect_slice_eq(grpc_slice expected, grpc_slice slice, char *debug, + int line) { + if (!grpc_slice_eq(slice, expected)) { + char *hs = grpc_dump_slice(slice, GPR_DUMP_HEX | GPR_DUMP_ASCII); + char *he = grpc_dump_slice(expected, GPR_DUMP_HEX | GPR_DUMP_ASCII); + gpr_log(GPR_ERROR, "FAILED:%d: %s\ngot: %s\nwant: %s", line, debug, hs, + he); + gpr_free(hs); + gpr_free(he); + all_ok = 0; + } + grpc_slice_unref_internal(expected); + grpc_slice_unref_internal(slice); +} + +static grpc_slice base64_encode(const char *s) { + grpc_slice ss = grpc_slice_from_copied_string(s); + grpc_slice out = grpc_chttp2_base64_encode(ss); + grpc_slice_unref_internal(ss); + return out; +} + +static grpc_slice base64_decode(const char *s) { + grpc_slice ss = grpc_slice_from_copied_string(s); + grpc_slice out = grpc_chttp2_base64_decode(ss); + grpc_slice_unref_internal(ss); + return out; +} + +static grpc_slice base64_decode_with_length(const char *s, + size_t output_length) { + grpc_slice ss = grpc_slice_from_copied_string(s); + grpc_slice out = grpc_chttp2_base64_decode_with_length(ss, output_length); + grpc_slice_unref_internal(ss); + return out; +} + +#define EXPECT_SLICE_EQ(expected, slice) \ + expect_slice_eq( \ + exec_ctx, grpc_slice_from_copied_buffer(expected, sizeof(expected) - 1), \ + slice, #slice, __LINE__); + +#define ENCODE_AND_DECODE(s) \ + EXPECT_SLICE_EQ(s, grpc_chttp2_base64_decode_with_length( \ + exec_ctx, base64_encode(s), strlen(s))); + +int main(int argc, char **argv) { + ExecCtx _local_exec_ctx; + + /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which + takes encoded base64 strings without pad chars, but output length is + required. */ + /* Base64 test vectors from RFC 4648 */ + ENCODE_AND_DECODE(""); + ENCODE_AND_DECODE("f"); + ENCODE_AND_DECODE("foo"); + ENCODE_AND_DECODE("fo"); + ENCODE_AND_DECODE("foob"); + ENCODE_AND_DECODE("fooba"); + ENCODE_AND_DECODE("foobar"); + + ENCODE_AND_DECODE("\xc0\xc1\xc2\xc3\xc4\xc5"); + + /* Base64 test vectors from RFC 4648, with pad chars */ + /* BASE64("") = "" */ + EXPECT_SLICE_EQ("", base64_decode("")); + /* BASE64("f") = "Zg==" */ + EXPECT_SLICE_EQ("f", base64_decode("Zg==")); + /* BASE64("fo") = "Zm8=" */ + EXPECT_SLICE_EQ("fo", base64_decode("Zm8=")); + /* BASE64("foo") = "Zm9v" */ + EXPECT_SLICE_EQ("foo", base64_decode("Zm9v")); + /* BASE64("foob") = "Zm9vYg==" */ + EXPECT_SLICE_EQ("foob", base64_decode("Zm9vYg==")); + /* BASE64("fooba") = "Zm9vYmE=" */ + EXPECT_SLICE_EQ("fooba", base64_decode("Zm9vYmE=")); + /* BASE64("foobar") = "Zm9vYmFy" */ + EXPECT_SLICE_EQ("foobar", base64_decode("Zm9vYmFy")); + + EXPECT_SLICE_EQ("\xc0\xc1\xc2\xc3\xc4\xc5", base64_decode("wMHCw8TF")); + + // Test illegal input length in grpc_chttp2_base64_decode + EXPECT_SLICE_EQ("", base64_decode("a")); + EXPECT_SLICE_EQ("", base64_decode("ab")); + EXPECT_SLICE_EQ("", base64_decode("abc")); + + // Test illegal charactors in grpc_chttp2_base64_decode + EXPECT_SLICE_EQ("", base64_decode("Zm:v")); + EXPECT_SLICE_EQ("", base64_decode("Zm=v")); + + // Test output_length longer than max possible output length in + // grpc_chttp2_base64_decode_with_length + EXPECT_SLICE_EQ("", base64_decode_with_length("Zg", 2)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm8", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm9v", 4)); + + // Test illegal charactors in grpc_chttp2_base64_decode_with_length + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3)); + + grpc_exec_ctx_finish(); + + return all_ok ? 0 : 1; +} diff --git a/test/core/transport/chttp2/hpack_encoder_test.c b/test/core/transport/chttp2/hpack_encoder_test.c index ed51dd18592..f3690fc410c 100644 --- a/test/core/transport/chttp2/hpack_encoder_test.c +++ b/test/core/transport/chttp2/hpack_encoder_test.c @@ -45,7 +45,7 @@ size_t cap_to_delete = 0; /* verify that the output generated by encoding the stream matches the hexstring passed in */ -static void verify(grpc_exec_ctx *exec_ctx, size_t window_available, bool eof, +static void verify(size_t window_available, bool eof, bool use_true_binary_metadata, size_t expect_window_used, const char *expected, size_t nheaders, ...) { grpc_slice_buffer output; @@ -67,7 +67,7 @@ static void verify(grpc_exec_ctx *exec_ctx, size_t window_available, bool eof, e[i].prev = &e[i - 1]; } e[i].md = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(key)), + grpc_slice_intern(grpc_slice_from_static_string(key)), grpc_slice_intern(grpc_slice_from_static_string(value))); } e[0].prev = NULL; @@ -95,11 +95,10 @@ static void verify(grpc_exec_ctx *exec_ctx, size_t window_available, bool eof, .max_frame_size = 16384, .stats = &stats, }; - grpc_chttp2_encode_header(exec_ctx, &g_compressor, NULL, 0, &b, &hopt, - &output); + grpc_chttp2_encode_header(&g_compressor, NULL, 0, &b, &hopt, &output); merged = grpc_slice_merge(output.slices, output.count); - grpc_slice_buffer_destroy_internal(exec_ctx, &output); - grpc_metadata_batch_destroy(exec_ctx, &b); + grpc_slice_buffer_destroy_internal(&output); + grpc_metadata_batch_destroy(&b); if (!grpc_slice_eq(merged, expect)) { char *expect_str = grpc_dump_slice(expect, GPR_DUMP_HEX | GPR_DUMP_ASCII); @@ -112,35 +111,32 @@ static void verify(grpc_exec_ctx *exec_ctx, size_t window_available, bool eof, g_failure = 1; } - grpc_slice_unref_internal(exec_ctx, merged); - grpc_slice_unref_internal(exec_ctx, expect); + grpc_slice_unref_internal(merged); + grpc_slice_unref_internal(expect); } -static void test_basic_headers(grpc_exec_ctx *exec_ctx) { +static void test_basic_headers() { int i; - verify(exec_ctx, 0, false, false, 0, "000005 0104 deadbeef 40 0161 0161", 1, - "a", "a"); - verify(exec_ctx, 0, false, false, 0, "000001 0104 deadbeef be", 1, "a", "a"); - verify(exec_ctx, 0, false, false, 0, "000001 0104 deadbeef be", 1, "a", "a"); - verify(exec_ctx, 0, false, false, 0, "000006 0104 deadbeef be 40 0162 0163", - 2, "a", "a", "b", "c"); - verify(exec_ctx, 0, false, false, 0, "000002 0104 deadbeef bf be", 2, "a", + verify(0, false, false, 0, "000005 0104 deadbeef 40 0161 0161", 1, "a", "a"); + verify(0, false, false, 0, "000001 0104 deadbeef be", 1, "a", "a"); + verify(0, false, false, 0, "000001 0104 deadbeef be", 1, "a", "a"); + verify(0, false, false, 0, "000006 0104 deadbeef be 40 0162 0163", 2, "a", "a", "b", "c"); - verify(exec_ctx, 0, false, false, 0, "000004 0104 deadbeef 7f 00 0164", 1, - "a", "d"); + verify(0, false, false, 0, "000002 0104 deadbeef bf be", 2, "a", "a", "b", + "c"); + verify(0, false, false, 0, "000004 0104 deadbeef 7f 00 0164", 1, "a", "d"); /* flush out what's there to make a few values look very popular */ for (i = 0; i < 350; i++) { - verify(exec_ctx, 0, false, false, 0, "000003 0104 deadbeef c0 bf be", 3, - "a", "a", "b", "c", "a", "d"); + verify(0, false, false, 0, "000003 0104 deadbeef c0 bf be", 3, "a", "a", + "b", "c", "a", "d"); } - verify(exec_ctx, 0, false, false, 0, "000006 0104 deadbeef c0 00 016b 0176", - 2, "a", "a", "k", "v"); + verify(0, false, false, 0, "000006 0104 deadbeef c0 00 016b 0176", 2, "a", + "a", "k", "v"); /* this could be 000004 0104 deadbeef 0f 30 0176 also */ - verify(exec_ctx, 0, false, false, 0, "000004 0104 deadbeef 0f 2f 0176", 1, - "a", "v"); + verify(0, false, false, 0, "000004 0104 deadbeef 0f 2f 0176", 1, "a", "v"); } static void encode_int_to_str(int i, char *p) { @@ -151,7 +147,7 @@ static void encode_int_to_str(int i, char *p) { p[2] = 0; } -static void test_decode_table_overflow(grpc_exec_ctx *exec_ctx) { +static void test_decode_table_overflow() { int i; char key[3], value[3]; char *expect; @@ -174,25 +170,24 @@ static void test_decode_table_overflow(grpc_exec_ctx *exec_ctx) { } if (i > 0) { - verify(exec_ctx, 0, false, false, 0, expect, 2, "aa", "ba", key, value); + verify(0, false, false, 0, expect, 2, "aa", "ba", key, value); } else { - verify(exec_ctx, 0, false, false, 0, expect, 1, key, value); + verify(0, false, false, 0, expect, 1, key, value); } gpr_free(expect); } /* if the above passes, then we must have just knocked this pair out of the decoder stack, and so we'll be forced to re-encode it */ - verify(exec_ctx, 0, false, false, 0, "000007 0104 deadbeef 40 026161 026261", - 1, "aa", "ba"); + verify(0, false, false, 0, "000007 0104 deadbeef 40 026161 026261", 1, "aa", + "ba"); } -static void verify_table_size_change_match_elem_size(grpc_exec_ctx *exec_ctx, - const char *key, +static void verify_table_size_change_match_elem_size(const char *key, const char *value) { grpc_slice_buffer output; grpc_mdelem elem = grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(key)), + grpc_slice_intern(grpc_slice_from_static_string(key)), grpc_slice_intern(grpc_slice_from_static_string(value))); size_t elem_size = grpc_mdelem_get_size_in_hpack_table(elem); size_t initial_table_size = g_compressor.table_size; @@ -214,27 +209,26 @@ static void verify_table_size_change_match_elem_size(grpc_exec_ctx *exec_ctx, .use_true_binary_metadata = false, .max_frame_size = 16384, .stats = &stats}; - grpc_chttp2_encode_header(exec_ctx, &g_compressor, NULL, 0, &b, &hopt, - &output); - grpc_slice_buffer_destroy_internal(exec_ctx, &output); - grpc_metadata_batch_destroy(exec_ctx, &b); + grpc_chttp2_encode_header(&g_compressor, NULL, 0, &b, &hopt, &output); + grpc_slice_buffer_destroy_internal(&output); + grpc_metadata_batch_destroy(&b); GPR_ASSERT(g_compressor.table_size == elem_size + initial_table_size); gpr_free(e); } -static void test_encode_header_size(grpc_exec_ctx *exec_ctx) { - verify_table_size_change_match_elem_size(exec_ctx, "hello", "world"); - verify_table_size_change_match_elem_size(exec_ctx, "hello-bin", "world"); +static void test_encode_header_size() { + verify_table_size_change_match_elem_size("hello", "world"); + verify_table_size_change_match_elem_size("hello-bin", "world"); } -static void run_test(void (*test)(grpc_exec_ctx *exec_ctx), const char *name) { +static void run_test(void (*test)(), const char *name) { gpr_log(GPR_INFO, "RUN TEST: %s", name); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_chttp2_hpack_compressor_init(&g_compressor); - test(&exec_ctx); - grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &g_compressor); - grpc_exec_ctx_finish(&exec_ctx); + test(); + grpc_chttp2_hpack_compressor_destroy(&g_compressor); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c index 03834084cbd..944f81f7c61 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c @@ -29,9 +29,7 @@ bool squelch = true; bool leak_check = true; -static void onhdr(grpc_exec_ctx *exec_ctx, void *ud, grpc_mdelem md) { - GRPC_MDELEM_UNREF(exec_ctx, md); -} +static void onhdr(void *ud, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); } static void dont_log(gpr_log_func_args *args) {} int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { @@ -39,13 +37,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (squelch) gpr_set_log_function(dont_log); grpc_init(); grpc_chttp2_hpack_parser parser; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_chttp2_hpack_parser_init(&exec_ctx, &parser); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_chttp2_hpack_parser_init(&parser); parser.on_header = onhdr; GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse( - &exec_ctx, &parser, grpc_slice_from_static_buffer(data, size))); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &parser); - grpc_exec_ctx_finish(&exec_ctx); + &parser, grpc_slice_from_static_buffer(data, size))); + grpc_chttp2_hpack_parser_destroy(&parser); + grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/transport/chttp2/hpack_parser_test.c b/test/core/transport/chttp2/hpack_parser_test.c index 0946c052614..67b527934e3 100644 --- a/test/core/transport/chttp2/hpack_parser_test.c +++ b/test/core/transport/chttp2/hpack_parser_test.c @@ -30,7 +30,7 @@ typedef struct { va_list args; } test_checker; -static void onhdr(grpc_exec_ctx *exec_ctx, void *ud, grpc_mdelem md) { +static void onhdr(void *ud, grpc_mdelem md) { const char *ekey, *evalue; test_checker *chk = ud; ekey = va_arg(chk->args, char *); @@ -39,7 +39,7 @@ static void onhdr(grpc_exec_ctx *exec_ctx, void *ud, grpc_mdelem md) { GPR_ASSERT(evalue); GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDKEY(md), ekey) == 0); GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDVALUE(md), evalue) == 0); - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } static void test_vector(grpc_chttp2_hpack_parser *parser, @@ -60,10 +60,10 @@ static void test_vector(grpc_chttp2_hpack_parser *parser, grpc_slice_unref(input); for (i = 0; i < nslices; i++) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - GPR_ASSERT(grpc_chttp2_hpack_parser_parse(&exec_ctx, parser, slices[i]) == + exec_ctx = GRPC_EXEC_CTX_INIT; + GPR_ASSERT(grpc_chttp2_hpack_parser_parse(parser, slices[i]) == GRPC_ERROR_NONE); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } for (i = 0; i < nslices; i++) { @@ -78,9 +78,9 @@ static void test_vector(grpc_chttp2_hpack_parser *parser, static void test_vectors(grpc_slice_split_mode mode) { grpc_chttp2_hpack_parser parser; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_chttp2_hpack_parser_init(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_init(&parser); /* D.2.1 */ test_vector(&parser, mode, "400a 6375 7374 6f6d 2d6b 6579 0d63 7573" @@ -96,9 +96,9 @@ static void test_vectors(grpc_slice_split_mode mode) { "password", "secret", NULL); /* D.2.4 */ test_vector(&parser, mode, "82", ":method", "GET", NULL); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_destroy(&parser); - grpc_chttp2_hpack_parser_init(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_init(&parser); /* D.3.1 */ test_vector(&parser, mode, "8286 8441 0f77 7777 2e65 7861 6d70 6c65" @@ -116,9 +116,9 @@ static void test_vectors(grpc_slice_split_mode mode) { ":method", "GET", ":scheme", "https", ":path", "/index.html", ":authority", "www.example.com", "custom-key", "custom-value", NULL); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_destroy(&parser); - grpc_chttp2_hpack_parser_init(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_init(&parser); /* D.4.1 */ test_vector(&parser, mode, "8286 8441 8cf1 e3c2 e5f2 3a6b a0ab 90f4" @@ -136,11 +136,11 @@ static void test_vectors(grpc_slice_split_mode mode) { ":method", "GET", ":scheme", "https", ":path", "/index.html", ":authority", "www.example.com", "custom-key", "custom-value", NULL); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_destroy(&parser); - grpc_chttp2_hpack_parser_init(&exec_ctx, &parser); - grpc_chttp2_hptbl_set_max_bytes(&exec_ctx, &parser.table, 256); - grpc_chttp2_hptbl_set_current_table_size(&exec_ctx, &parser.table, 256); + grpc_chttp2_hpack_parser_init(&parser); + grpc_chttp2_hptbl_set_max_bytes(&parser.table, 256); + grpc_chttp2_hptbl_set_current_table_size(&parser.table, 256); /* D.5.1 */ test_vector(&parser, mode, "4803 3330 3258 0770 7269 7661 7465 611d" @@ -170,11 +170,11 @@ static void test_vectors(grpc_slice_split_mode mode) { "https://www.example.com", "content-encoding", "gzip", "set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", NULL); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_destroy(&parser); - grpc_chttp2_hpack_parser_init(&exec_ctx, &parser); - grpc_chttp2_hptbl_set_max_bytes(&exec_ctx, &parser.table, 256); - grpc_chttp2_hptbl_set_current_table_size(&exec_ctx, &parser.table, 256); + grpc_chttp2_hpack_parser_init(&parser); + grpc_chttp2_hptbl_set_max_bytes(&parser.table, 256); + grpc_chttp2_hptbl_set_current_table_size(&parser.table, 256); /* D.6.1 */ test_vector(&parser, mode, "4882 6402 5885 aec3 771a 4b61 96d0 7abe" @@ -201,9 +201,9 @@ static void test_vectors(grpc_slice_split_mode mode) { "https://www.example.com", "content-encoding", "gzip", "set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", NULL); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &parser); + grpc_chttp2_hpack_parser_destroy(&parser); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/transport/chttp2/hpack_table_test.c b/test/core/transport/chttp2/hpack_table_test.c index 430ece33c70..cbb6b1d7a3d 100644 --- a/test/core/transport/chttp2/hpack_table_test.c +++ b/test/core/transport/chttp2/hpack_table_test.c @@ -44,10 +44,10 @@ static void assert_index(const grpc_chttp2_hptbl *tbl, uint32_t idx, } static void test_static_lookup(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_chttp2_hptbl tbl; - grpc_chttp2_hptbl_init(&exec_ctx, &tbl); + grpc_chttp2_hptbl_init(&tbl); LOG_TEST("test_static_lookup"); assert_index(&tbl, 1, ":authority", ""); @@ -112,8 +112,8 @@ static void test_static_lookup(void) { assert_index(&tbl, 60, "via", ""); assert_index(&tbl, 61, "www-authenticate", ""); - grpc_chttp2_hptbl_destroy(&exec_ctx, &tbl); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_hptbl_destroy(&tbl); + grpc_exec_ctx_finish(); } static void test_many_additions(void) { @@ -124,18 +124,17 @@ static void test_many_additions(void) { LOG_TEST("test_many_additions"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_chttp2_hptbl_init(&exec_ctx, &tbl); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_chttp2_hptbl_init(&tbl); for (i = 0; i < 100000; i++) { grpc_mdelem elem; gpr_asprintf(&key, "K:%d", i); gpr_asprintf(&value, "VALUE:%d", i); - elem = - grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_copied_string(key), - grpc_slice_from_copied_string(value)); - GPR_ASSERT(grpc_chttp2_hptbl_add(&exec_ctx, &tbl, elem) == GRPC_ERROR_NONE); - GRPC_MDELEM_UNREF(&exec_ctx, elem); + elem = grpc_mdelem_from_slices(grpc_slice_from_copied_string(key), + grpc_slice_from_copied_string(value)); + GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem) == GRPC_ERROR_NONE); + GRPC_MDELEM_UNREF(elem); assert_index(&tbl, 1 + GRPC_CHTTP2_LAST_STATIC_ENTRY, key, value); gpr_free(key); gpr_free(value); @@ -148,25 +147,24 @@ static void test_many_additions(void) { } } - grpc_chttp2_hptbl_destroy(&exec_ctx, &tbl); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_hptbl_destroy(&tbl); + grpc_exec_ctx_finish(); } static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl *tbl, const char *key, const char *value) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_mdelem md = - grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_copied_string(key), - grpc_slice_from_copied_string(value)); + exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_mdelem md = grpc_mdelem_from_slices( + grpc_slice_from_copied_string(key), grpc_slice_from_copied_string(value)); grpc_chttp2_hptbl_find_result r = grpc_chttp2_hptbl_find(tbl, md); - GRPC_MDELEM_UNREF(&exec_ctx, md); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(md); + grpc_exec_ctx_finish(); return r; } static void test_find(void) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_chttp2_hptbl tbl; uint32_t i; char buffer[32]; @@ -175,21 +173,19 @@ static void test_find(void) { LOG_TEST("test_find"); - grpc_chttp2_hptbl_init(&exec_ctx, &tbl); - elem = - grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_static_string("abc"), - grpc_slice_from_static_string("xyz")); - GPR_ASSERT(grpc_chttp2_hptbl_add(&exec_ctx, &tbl, elem) == GRPC_ERROR_NONE); - GRPC_MDELEM_UNREF(&exec_ctx, elem); - elem = - grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_static_string("abc"), - grpc_slice_from_static_string("123")); - GPR_ASSERT(grpc_chttp2_hptbl_add(&exec_ctx, &tbl, elem) == GRPC_ERROR_NONE); - GRPC_MDELEM_UNREF(&exec_ctx, elem); - elem = grpc_mdelem_from_slices(&exec_ctx, grpc_slice_from_static_string("x"), + grpc_chttp2_hptbl_init(&tbl); + elem = grpc_mdelem_from_slices(grpc_slice_from_static_string("abc"), + grpc_slice_from_static_string("xyz")); + GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem) == GRPC_ERROR_NONE); + GRPC_MDELEM_UNREF(elem); + elem = grpc_mdelem_from_slices(grpc_slice_from_static_string("abc"), + grpc_slice_from_static_string("123")); + GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem) == GRPC_ERROR_NONE); + GRPC_MDELEM_UNREF(elem); + elem = grpc_mdelem_from_slices(grpc_slice_from_static_string("x"), grpc_slice_from_static_string("1")); - GPR_ASSERT(grpc_chttp2_hptbl_add(&exec_ctx, &tbl, elem) == GRPC_ERROR_NONE); - GRPC_MDELEM_UNREF(&exec_ctx, elem); + GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem) == GRPC_ERROR_NONE); + GRPC_MDELEM_UNREF(elem); r = find_simple(&tbl, "abc", "123"); GPR_ASSERT(r.index == 2 + GRPC_CHTTP2_LAST_STATIC_ENTRY); @@ -238,11 +234,10 @@ static void test_find(void) { /* overflow the string buffer, check find still works */ for (i = 0; i < 10000; i++) { int64_ttoa(i, buffer); - elem = grpc_mdelem_from_slices(&exec_ctx, - grpc_slice_from_static_string("test"), + elem = grpc_mdelem_from_slices(grpc_slice_from_static_string("test"), grpc_slice_from_copied_string(buffer)); - GPR_ASSERT(grpc_chttp2_hptbl_add(&exec_ctx, &tbl, elem) == GRPC_ERROR_NONE); - GRPC_MDELEM_UNREF(&exec_ctx, elem); + GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem) == GRPC_ERROR_NONE); + GRPC_MDELEM_UNREF(elem); } r = find_simple(&tbl, "abc", "123"); @@ -270,8 +265,8 @@ static void test_find(void) { GPR_ASSERT(r.index != 0); GPR_ASSERT(r.has_value == 0); - grpc_chttp2_hptbl_destroy(&exec_ctx, &tbl); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_hptbl_destroy(&tbl); + grpc_exec_ctx_finish(); } int main(int argc, char **argv) { diff --git a/test/core/transport/connectivity_state_test.c b/test/core/transport/connectivity_state_test.c index 4ef86831073..f0a907d4c78 100644 --- a/test/core/transport/connectivity_state_test.c +++ b/test/core/transport/connectivity_state_test.c @@ -28,14 +28,13 @@ int g_counter; -static void must_succeed(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void must_succeed(void *arg, grpc_error *error) { GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(arg == THE_ARG); g_counter++; } -static void must_fail(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { +static void must_fail(void *arg, grpc_error *error) { GPR_ASSERT(error != GRPC_ERROR_NONE); GPR_ASSERT(arg == THE_ARG); g_counter++; @@ -58,7 +57,7 @@ static void test_connectivity_state_name(void) { static void test_check(void) { grpc_connectivity_state_tracker tracker; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_error *error; gpr_log(GPR_DEBUG, "test_check"); grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); @@ -66,8 +65,8 @@ static void test_check(void) { GRPC_CHANNEL_IDLE); GPR_ASSERT(grpc_connectivity_state_check(&tracker) == GRPC_CHANNEL_IDLE); GPR_ASSERT(error == GRPC_ERROR_NONE); - grpc_connectivity_state_destroy(&exec_ctx, &tracker); - grpc_exec_ctx_finish(&exec_ctx); + grpc_connectivity_state_destroy(&tracker); + grpc_exec_ctx_finish(); } static void test_subscribe_then_unsubscribe(void) { @@ -75,23 +74,22 @@ static void test_subscribe_then_unsubscribe(void) { grpc_closure *closure = GRPC_CLOSURE_CREATE(must_fail, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_subscribe_then_unsubscribe"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); - GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&exec_ctx, &tracker, - &state, closure)); - grpc_exec_ctx_flush(&exec_ctx); + GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&tracker, &state, + closure)); + grpc_exec_ctx_flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 0); - grpc_connectivity_state_notify_on_state_change(&exec_ctx, &tracker, NULL, - closure); - grpc_exec_ctx_flush(&exec_ctx); + grpc_connectivity_state_notify_on_state_change(&tracker, NULL, closure); + grpc_exec_ctx_flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 1); - grpc_connectivity_state_destroy(&exec_ctx, &tracker); - grpc_exec_ctx_finish(&exec_ctx); + grpc_connectivity_state_destroy(&tracker); + grpc_exec_ctx_finish(); } static void test_subscribe_then_destroy(void) { @@ -99,17 +97,17 @@ static void test_subscribe_then_destroy(void) { grpc_closure *closure = GRPC_CLOSURE_CREATE(must_succeed, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_subscribe_then_destroy"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); - GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&exec_ctx, &tracker, - &state, closure)); - grpc_exec_ctx_flush(&exec_ctx); + GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&tracker, &state, + closure)); + grpc_exec_ctx_flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 0); - grpc_connectivity_state_destroy(&exec_ctx, &tracker); - grpc_exec_ctx_finish(&exec_ctx); + grpc_connectivity_state_destroy(&tracker); + grpc_exec_ctx_finish(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 1); } @@ -119,17 +117,17 @@ static void test_subscribe_with_failure_then_destroy(void) { grpc_closure *closure = GRPC_CLOSURE_CREATE(must_fail, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_SHUTDOWN; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; gpr_log(GPR_DEBUG, "test_subscribe_with_failure_then_destroy"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_SHUTDOWN, "xxx"); GPR_ASSERT(0 == grpc_connectivity_state_notify_on_state_change( - &exec_ctx, &tracker, &state, closure)); - grpc_exec_ctx_flush(&exec_ctx); + &tracker, &state, closure)); + grpc_exec_ctx_flush(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 0); - grpc_connectivity_state_destroy(&exec_ctx, &tracker); - grpc_exec_ctx_finish(&exec_ctx); + grpc_connectivity_state_destroy(&tracker); + grpc_exec_ctx_finish(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 1); } diff --git a/test/core/transport/metadata_test.c b/test/core/transport/metadata_test.c index cb06fce30bd..a7212477664 100644 --- a/test/core/transport/metadata_test.c +++ b/test/core/transport/metadata_test.c @@ -60,15 +60,15 @@ static void test_create_metadata(bool intern_keys, bool intern_values) { intern_keys, intern_values); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; m1 = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); m2 = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); m3 = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("c"), intern_values)); GPR_ASSERT(grpc_mdelem_eq(m1, m2)); GPR_ASSERT(!grpc_mdelem_eq(m3, m1)); @@ -77,10 +77,10 @@ static void test_create_metadata(bool intern_keys, bool intern_values) { GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDKEY(m1), "a") == 0); GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDVALUE(m1), "b") == 0); GPR_ASSERT(grpc_slice_str_cmp(GRPC_MDVALUE(m3), "c") == 0); - GRPC_MDELEM_UNREF(&exec_ctx, m1); - GRPC_MDELEM_UNREF(&exec_ctx, m2); - GRPC_MDELEM_UNREF(&exec_ctx, m3); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(m1); + GRPC_MDELEM_UNREF(m2); + GRPC_MDELEM_UNREF(m3); + grpc_exec_ctx_finish(); grpc_shutdown(); } @@ -95,19 +95,15 @@ static void test_create_many_ephemeral_metadata(bool intern_keys, intern_keys, intern_values); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; /* add, and immediately delete a bunch of different elements */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_from_slices( - &exec_ctx, - maybe_intern(grpc_slice_from_static_string("a"), intern_keys), - maybe_intern(grpc_slice_from_copied_string(buffer), - intern_values))); + GRPC_MDELEM_UNREF(grpc_mdelem_from_slices( + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_copied_string(buffer), intern_values))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); } @@ -120,28 +116,28 @@ static void test_create_many_persistant_metadata(void) { gpr_log(GPR_INFO, "test_create_many_persistant_metadata"); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; /* add phase */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); created[i] = grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("a")), + grpc_slice_intern(grpc_slice_from_static_string("a")), grpc_slice_intern(grpc_slice_from_static_string(buffer))); } /* verify phase */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); md = grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("a")), + grpc_slice_intern(grpc_slice_from_static_string("a")), grpc_slice_intern(grpc_slice_from_static_string(buffer))); GPR_ASSERT(grpc_mdelem_eq(md, created[i])); - GRPC_MDELEM_UNREF(&exec_ctx, md); + GRPC_MDELEM_UNREF(md); } /* cleanup phase */ for (i = 0; i < MANY; i++) { - GRPC_MDELEM_UNREF(&exec_ctx, created[i]); + GRPC_MDELEM_UNREF(created[i]); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(created); @@ -154,31 +150,25 @@ static void test_spin_creating_the_same_thing(bool intern_keys, intern_keys, intern_values); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem a, b, c; GRPC_MDELEM_UNREF( - &exec_ctx, a = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values))); GRPC_MDELEM_UNREF( - &exec_ctx, b = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values))); GRPC_MDELEM_UNREF( - &exec_ctx, c = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values))); if (intern_keys && intern_values) { GPR_ASSERT(a.payload == b.payload); GPR_ASSERT(a.payload == c.payload); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); } @@ -187,16 +177,16 @@ static void test_identity_laws(bool intern_keys, bool intern_values) { intern_keys, intern_values); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; grpc_mdelem a, b, c; a = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); b = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); c = grpc_mdelem_from_slices( - &exec_ctx, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), + maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); GPR_ASSERT(grpc_mdelem_eq(a, a)); GPR_ASSERT(grpc_mdelem_eq(b, b)); @@ -215,10 +205,10 @@ static void test_identity_laws(bool intern_keys, bool intern_values) { GPR_ASSERT(a.payload != c.payload); GPR_ASSERT(b.payload != c.payload); } - GRPC_MDELEM_UNREF(&exec_ctx, a); - GRPC_MDELEM_UNREF(&exec_ctx, b); - GRPC_MDELEM_UNREF(&exec_ctx, c); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(a); + GRPC_MDELEM_UNREF(b); + GRPC_MDELEM_UNREF(c); + grpc_exec_ctx_finish(); grpc_shutdown(); } @@ -233,7 +223,7 @@ static void test_things_stick_around(void) { gpr_log(GPR_INFO, "test_things_stick_around"); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; for (i = 0; i < nstrs; i++) { gpr_asprintf(&buffer, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%" PRIuPTR "x", i); @@ -244,7 +234,7 @@ static void test_things_stick_around(void) { for (i = 0; i < nstrs; i++) { grpc_slice_ref_internal(strs[i]); - grpc_slice_unref_internal(&exec_ctx, strs[i]); + grpc_slice_unref_internal(strs[i]); } for (i = 0; i < nstrs; i++) { @@ -256,18 +246,18 @@ static void test_things_stick_around(void) { } for (i = 0; i < nstrs; i++) { - grpc_slice_unref_internal(&exec_ctx, strs[shuf[i]]); + grpc_slice_unref_internal(strs[shuf[i]]); for (j = i + 1; j < nstrs; j++) { gpr_asprintf(&buffer, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%" PRIuPTR "x", shuf[j]); test = grpc_slice_intern(grpc_slice_from_static_string(buffer)); GPR_ASSERT(grpc_slice_is_equivalent(test, strs[shuf[j]])); - grpc_slice_unref_internal(&exec_ctx, test); + grpc_slice_unref_internal(test); gpr_free(buffer); } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(strs); gpr_free(shuf); @@ -280,39 +270,38 @@ static void test_user_data_works(void) { gpr_log(GPR_INFO, "test_user_data_works"); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; ud1 = gpr_malloc(sizeof(int)); *ud1 = 1; ud2 = gpr_malloc(sizeof(int)); *ud2 = 2; md = grpc_mdelem_from_slices( - &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")), + grpc_slice_intern(grpc_slice_from_static_string("abc")), grpc_slice_intern(grpc_slice_from_static_string("123"))); grpc_mdelem_set_user_data(md, gpr_free, ud1); grpc_mdelem_set_user_data(md, gpr_free, ud2); GPR_ASSERT(grpc_mdelem_get_user_data(md, gpr_free) == ud1); - GRPC_MDELEM_UNREF(&exec_ctx, md); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(md); + grpc_exec_ctx_finish(); grpc_shutdown(); } -static void verify_ascii_header_size(grpc_exec_ctx *exec_ctx, const char *key, - const char *value, bool intern_key, - bool intern_value) { +static void verify_ascii_header_size(const char *key, const char *value, + bool intern_key, bool intern_value) { grpc_mdelem elem = grpc_mdelem_from_slices( - exec_ctx, maybe_intern(grpc_slice_from_static_string(key), intern_key), + maybe_intern(grpc_slice_from_static_string(key), intern_key), maybe_intern(grpc_slice_from_static_string(value), intern_value)); size_t elem_size = grpc_mdelem_get_size_in_hpack_table(elem); size_t expected_size = 32 + strlen(key) + strlen(value); GPR_ASSERT(expected_size == elem_size); - GRPC_MDELEM_UNREF(exec_ctx, elem); + GRPC_MDELEM_UNREF(elem); } -static void verify_binary_header_size(grpc_exec_ctx *exec_ctx, const char *key, - const uint8_t *value, size_t value_len, - bool intern_key, bool intern_value) { +static void verify_binary_header_size(const char *key, const uint8_t *value, + size_t value_len, bool intern_key, + bool intern_value) { grpc_mdelem elem = grpc_mdelem_from_slices( - exec_ctx, maybe_intern(grpc_slice_from_static_string(key), intern_key), + maybe_intern(grpc_slice_from_static_string(key), intern_key), maybe_intern(grpc_slice_from_static_buffer(value, value_len), intern_value)); GPR_ASSERT(grpc_is_binary_header(GRPC_MDKEY(elem))); @@ -322,9 +311,9 @@ static void verify_binary_header_size(grpc_exec_ctx *exec_ctx, const char *key, grpc_slice base64_encoded = grpc_chttp2_base64_encode(value_slice); size_t expected_size = 32 + strlen(key) + GRPC_SLICE_LENGTH(base64_encoded); GPR_ASSERT(expected_size == elem_size); - grpc_slice_unref_internal(exec_ctx, value_slice); - grpc_slice_unref_internal(exec_ctx, base64_encoded); - GRPC_MDELEM_UNREF(exec_ctx, elem); + grpc_slice_unref_internal(value_slice); + grpc_slice_unref_internal(base64_encoded); + GRPC_MDELEM_UNREF(elem); } #define BUFFER_SIZE 64 @@ -332,27 +321,24 @@ static void test_mdelem_sizes_in_hpack(bool intern_key, bool intern_value) { gpr_log(GPR_INFO, "test_mdelem_size: intern_key=%d intern_value=%d", intern_key, intern_value); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; uint8_t binary_value[BUFFER_SIZE] = {0}; for (uint8_t i = 0; i < BUFFER_SIZE; i++) { binary_value[i] = i; } - verify_ascii_header_size(&exec_ctx, "hello", "world", intern_key, - intern_value); - verify_ascii_header_size(&exec_ctx, "hello", - "worldxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", intern_key, - intern_value); - verify_ascii_header_size(&exec_ctx, ":scheme", "http", intern_key, - intern_value); + verify_ascii_header_size("hello", "world", intern_key, intern_value); + verify_ascii_header_size("hello", "worldxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + intern_key, intern_value); + verify_ascii_header_size(":scheme", "http", intern_key, intern_value); for (uint8_t i = 0; i < BUFFER_SIZE; i++) { - verify_binary_header_size(&exec_ctx, "hello-bin", binary_value, i, - intern_key, intern_value); + verify_binary_header_size("hello-bin", binary_value, i, intern_key, + intern_value); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); } @@ -360,13 +346,13 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) { gpr_log(GPR_INFO, "test_static_metadata: dup_key=%d dup_value=%d", dup_key, dup_value); grpc_init(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + exec_ctx = GRPC_EXEC_CTX_INIT; for (size_t i = 0; i < GRPC_STATIC_MDELEM_COUNT; i++) { grpc_mdelem p = GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[i], GRPC_MDELEM_STORAGE_STATIC); grpc_mdelem q = - grpc_mdelem_from_slices(&exec_ctx, maybe_dup(GRPC_MDKEY(p), dup_key), + grpc_mdelem_from_slices(maybe_dup(GRPC_MDKEY(p), dup_key), maybe_dup(GRPC_MDVALUE(p), dup_value)); GPR_ASSERT(grpc_mdelem_eq(p, q)); if (dup_key || dup_value) { @@ -374,11 +360,11 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) { } else { GPR_ASSERT(p.payload == q.payload); } - GRPC_MDELEM_UNREF(&exec_ctx, p); - GRPC_MDELEM_UNREF(&exec_ctx, q); + GRPC_MDELEM_UNREF(p); + GRPC_MDELEM_UNREF(q); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); } diff --git a/test/core/transport/status_conversion_test.c b/test/core/transport/status_conversion_test.c index de8fa4458a6..d91f3765c6e 100644 --- a/test/core/transport/status_conversion_test.c +++ b/test/core/transport/status_conversion_test.c @@ -22,12 +22,9 @@ #define GRPC_STATUS_TO_HTTP2_ERROR(a, b) \ GPR_ASSERT(grpc_status_to_http2_error(a) == (b)) -#define HTTP2_ERROR_TO_GRPC_STATUS(a, deadline, b) \ - do { \ - grpc_exec_ctx my_exec_ctx = GRPC_EXEC_CTX_INIT; \ - GPR_ASSERT(grpc_http2_error_to_grpc_status(&my_exec_ctx, a, deadline) == \ - (b)); \ - grpc_exec_ctx_finish(&my_exec_ctx); \ +#define HTTP2_ERROR_TO_GRPC_STATUS(a, deadline, b) \ + do { \ + GPR_ASSERT(grpc_http2_error_to_grpc_status(a, deadline) == (b)); \ } while (0) #define GRPC_STATUS_TO_HTTP2_STATUS(a, b) \ GPR_ASSERT(grpc_status_to_http2_status(a) == (b)) diff --git a/test/core/transport/stream_owned_slice_test.c b/test/core/transport/stream_owned_slice_test.c index 774ad4e72e9..f380763a6c3 100644 --- a/test/core/transport/stream_owned_slice_test.c +++ b/test/core/transport/stream_owned_slice_test.c @@ -22,7 +22,7 @@ #include <grpc/support/log.h> -static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +static void do_nothing(void *arg, grpc_error *error) {} int main(int argc, char **argv) { grpc_test_init(argc, argv); diff --git a/test/core/util/mock_endpoint.c b/test/core/util/mock_endpoint.cc similarity index 76% rename from test/core/util/mock_endpoint.c rename to test/core/util/mock_endpoint.cc index bd386b21488..b7017057b07 100644 --- a/test/core/util/mock_endpoint.c +++ b/test/core/util/mock_endpoint.cc @@ -40,13 +40,13 @@ typedef struct grpc_mock_endpoint { grpc_resource_user *resource_user; } grpc_mock_endpoint; -static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void me_read(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { grpc_mock_endpoint *m = (grpc_mock_endpoint *)ep; gpr_mu_lock(&m->mu); if (m->read_buffer.count > 0) { grpc_slice_buffer_swap(&m->read_buffer, slices); - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); } else { m->on_read = cb; m->on_read_out = slices; @@ -54,40 +54,38 @@ static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, gpr_mu_unlock(&m->mu); } -static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void me_write(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { grpc_mock_endpoint *m = (grpc_mock_endpoint *)ep; for (size_t i = 0; i < slices->count; i++) { m->on_write(slices->slices[i]); } - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); } -static void me_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset) {} +static void me_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) {} -static void me_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, +static void me_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset) {} -static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { +static void me_shutdown(grpc_endpoint *ep, grpc_error *why) { grpc_mock_endpoint *m = (grpc_mock_endpoint *)ep; gpr_mu_lock(&m->mu); if (m->on_read) { - GRPC_CLOSURE_SCHED(exec_ctx, m->on_read, + GRPC_CLOSURE_SCHED(m->on_read, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING( "Endpoint Shutdown", &why, 1)); m->on_read = NULL; } gpr_mu_unlock(&m->mu); - grpc_resource_user_shutdown(exec_ctx, m->resource_user); + grpc_resource_user_shutdown(m->resource_user); GRPC_ERROR_UNREF(why); } -static void me_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { +static void me_destroy(grpc_endpoint *ep) { grpc_mock_endpoint *m = (grpc_mock_endpoint *)ep; grpc_slice_buffer_destroy(&m->read_buffer); - grpc_resource_user_unref(exec_ctx, m->resource_user); + grpc_resource_user_unref(m->resource_user); gpr_free(m); } @@ -123,13 +121,12 @@ grpc_endpoint *grpc_mock_endpoint_create(void (*on_write)(grpc_slice slice), return &m->base; } -void grpc_mock_endpoint_put_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice slice) { +void grpc_mock_endpoint_put_read(grpc_endpoint *ep, grpc_slice slice) { grpc_mock_endpoint *m = (grpc_mock_endpoint *)ep; gpr_mu_lock(&m->mu); if (m->on_read != NULL) { grpc_slice_buffer_add(m->on_read_out, slice); - GRPC_CLOSURE_SCHED(exec_ctx, m->on_read, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(m->on_read, GRPC_ERROR_NONE); m->on_read = NULL; } else { grpc_slice_buffer_add(&m->read_buffer, slice); diff --git a/test/core/util/mock_endpoint.h b/test/core/util/mock_endpoint.h index 73b08dca31c..b59d67733b2 100644 --- a/test/core/util/mock_endpoint.h +++ b/test/core/util/mock_endpoint.h @@ -23,8 +23,7 @@ grpc_endpoint *grpc_mock_endpoint_create(void (*on_write)(grpc_slice slice), grpc_resource_quota *resource_quota); -void grpc_mock_endpoint_put_read(grpc_exec_ctx *exec_ctx, - grpc_endpoint *mock_endpoint, +void grpc_mock_endpoint_put_read(grpc_endpoint *mock_endpoint, grpc_slice slice); #endif diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.cc similarity index 80% rename from test/core/util/passthru_endpoint.c rename to test/core/util/passthru_endpoint.cc index 38a47584d57..4fcae991eb8 100644 --- a/test/core/util/passthru_endpoint.c +++ b/test/core/util/passthru_endpoint.cc @@ -55,16 +55,16 @@ struct passthru_endpoint { half server; }; -static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void me_read(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { half *m = (half *)ep; gpr_mu_lock(&m->parent->mu); if (m->parent->shutdown) { GRPC_CLOSURE_SCHED( - exec_ctx, cb, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already shutdown")); + cb, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already shutdown")); } else if (m->read_buffer.count > 0) { grpc_slice_buffer_swap(&m->read_buffer, slices); - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); } else { m->on_read = cb; m->on_read_out = slices; @@ -77,8 +77,8 @@ static half *other_half(half *h) { return &h->parent->client; } -static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void me_write(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { half *m = other_half((half *)ep); gpr_mu_lock(&m->parent->mu); grpc_error *error = GRPC_ERROR_NONE; @@ -89,7 +89,7 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, for (size_t i = 0; i < slices->count; i++) { grpc_slice_buffer_add(m->on_read_out, grpc_slice_copy(slices->slices[i])); } - GRPC_CLOSURE_SCHED(exec_ctx, m->on_read, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(m->on_read, GRPC_ERROR_NONE); m->on_read = NULL; } else { for (size_t i = 0; i < slices->count; i++) { @@ -98,48 +98,46 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, } } gpr_mu_unlock(&m->parent->mu); - GRPC_CLOSURE_SCHED(exec_ctx, cb, error); + GRPC_CLOSURE_SCHED(cb, error); } -static void me_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset) {} +static void me_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) {} -static void me_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, +static void me_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset) {} -static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { +static void me_shutdown(grpc_endpoint *ep, grpc_error *why) { half *m = (half *)ep; gpr_mu_lock(&m->parent->mu); m->parent->shutdown = true; if (m->on_read) { GRPC_CLOSURE_SCHED( - exec_ctx, m->on_read, + m->on_read, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Shutdown", &why, 1)); m->on_read = NULL; } m = other_half(m); if (m->on_read) { GRPC_CLOSURE_SCHED( - exec_ctx, m->on_read, + m->on_read, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Shutdown", &why, 1)); m->on_read = NULL; } gpr_mu_unlock(&m->parent->mu); - grpc_resource_user_shutdown(exec_ctx, m->resource_user); + grpc_resource_user_shutdown(m->resource_user); GRPC_ERROR_UNREF(why); } -static void me_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { +static void me_destroy(grpc_endpoint *ep) { passthru_endpoint *p = ((half *)ep)->parent; gpr_mu_lock(&p->mu); if (0 == --p->halves) { gpr_mu_unlock(&p->mu); gpr_mu_destroy(&p->mu); - grpc_slice_buffer_destroy_internal(exec_ctx, &p->client.read_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &p->server.read_buffer); - grpc_resource_user_unref(exec_ctx, p->client.resource_user); - grpc_resource_user_unref(exec_ctx, p->server.resource_user); + grpc_slice_buffer_destroy_internal(&p->client.read_buffer); + grpc_slice_buffer_destroy_internal(&p->server.read_buffer); + grpc_resource_user_unref(p->client.resource_user); + grpc_resource_user_unref(p->server.resource_user); gpr_free(p); } else { gpr_mu_unlock(&p->mu); diff --git a/test/core/util/passthru_endpoint.h b/test/core/util/passthru_endpoint.h index da769024a54..6d28c2cbcda 100644 --- a/test/core/util/passthru_endpoint.h +++ b/test/core/util/passthru_endpoint.h @@ -21,6 +21,10 @@ #include "src/core/lib/iomgr/endpoint.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct { int num_writes; } grpc_passthru_endpoint_stats; void grpc_passthru_endpoint_create(grpc_endpoint **client, @@ -28,4 +32,8 @@ void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_resource_quota *resource_quota, grpc_passthru_endpoint_stats *stats); +#ifdef __cplusplus +} +#endif + #endif diff --git a/test/core/util/port.c b/test/core/util/port.cc similarity index 100% rename from test/core/util/port.c rename to test/core/util/port.cc diff --git a/test/core/util/port_server_client.c b/test/core/util/port_server_client.cc similarity index 70% rename from test/core/util/port_server_client.c rename to test/core/util/port_server_client.cc index 7b94ac4ada3..253a1df29ea 100644 --- a/test/core/util/port_server_client.c +++ b/test/core/util/port_server_client.cc @@ -40,22 +40,19 @@ typedef struct freereq { int done; } freereq; -static void destroy_pops_and_shutdown(grpc_exec_ctx *exec_ctx, void *p, - grpc_error *error) { +static void destroy_pops_and_shutdown(void *p, grpc_error *error) { grpc_pollset *pollset = grpc_polling_entity_pollset((grpc_polling_entity *)p); - grpc_pollset_destroy(exec_ctx, pollset); + grpc_pollset_destroy(pollset); gpr_free(pollset); } -static void freed_port_from_server(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void freed_port_from_server(void *arg, grpc_error *error) { freereq *pr = (freereq *)arg; gpr_mu_lock(pr->mu); pr->done = 1; GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&pr->pops), - NULL)); + grpc_pollset_kick(grpc_polling_entity_pollset(&pr->pops), NULL)); gpr_mu_unlock(pr->mu); } @@ -65,7 +62,7 @@ void grpc_free_port_using_server(int port) { grpc_httpcli_response rsp; freereq pr; char *path; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_closure *shutdown_closure; grpc_init(); @@ -80,37 +77,36 @@ void grpc_free_port_using_server(int port) { shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops, grpc_schedule_on_exec_ctx); - req.host = GRPC_PORT_SERVER_ADDRESS; + req.host = (char *)GRPC_PORT_SERVER_ADDRESS; gpr_asprintf(&path, "/drop/%d", port); req.http.path = path; grpc_httpcli_context_init(&context); grpc_resource_quota *resource_quota = grpc_resource_quota_create("port_server_client/free"); - grpc_httpcli_get(&exec_ctx, &context, &pr.pops, resource_quota, &req, - grpc_exec_ctx_now(&exec_ctx) + 30 * GPR_MS_PER_SEC, + grpc_httpcli_get(&context, &pr.pops, resource_quota, &req, + grpc_exec_ctx_now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(freed_port_from_server, &pr, grpc_schedule_on_exec_ctx), &rsp); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); - grpc_exec_ctx_flush(&exec_ctx); + grpc_resource_quota_unref_internal(resource_quota); + grpc_exec_ctx_flush(); gpr_mu_lock(pr.mu); while (!pr.done) { grpc_pollset_worker *worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), - &worker, - grpc_exec_ctx_now(&exec_ctx) + GPR_MS_PER_SEC))) { + grpc_pollset_work(grpc_polling_entity_pollset(&pr.pops), &worker, + grpc_exec_ctx_now() + GPR_MS_PER_SEC))) { pr.done = 1; } } gpr_mu_unlock(pr.mu); - grpc_httpcli_context_destroy(&exec_ctx, &context); - grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), + grpc_httpcli_context_destroy(&context); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), shutdown_closure); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(path); grpc_http_response_destroy(&rsp); @@ -127,8 +123,7 @@ typedef struct portreq { grpc_httpcli_response response; } portreq; -static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void got_port_from_server(void *arg, grpc_error *error) { size_t i; int port = 0; portreq *pr = (portreq *)arg; @@ -154,8 +149,7 @@ static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg, pr->port = 0; GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&pr->pops), - NULL)); + grpc_pollset_kick(grpc_polling_entity_pollset(&pr->pops), NULL)); gpr_mu_unlock(pr->mu); return; } @@ -167,17 +161,17 @@ static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg, GPR_TIMESPAN))); pr->retries++; req.host = pr->server; - req.http.path = "/get"; + req.http.path = (char *)"/get"; grpc_http_response_destroy(&pr->response); memset(&pr->response, 0, sizeof(pr->response)); grpc_resource_quota *resource_quota = grpc_resource_quota_create("port_server_client/pick_retry"); - grpc_httpcli_get(exec_ctx, pr->ctx, &pr->pops, resource_quota, &req, - grpc_exec_ctx_now(exec_ctx) + 30 * GPR_MS_PER_SEC, + grpc_httpcli_get(pr->ctx, &pr->pops, resource_quota, &req, + grpc_exec_ctx_now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(got_port_from_server, pr, grpc_schedule_on_exec_ctx), &pr->response); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); return; } GPR_ASSERT(response); @@ -191,8 +185,7 @@ static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg, pr->port = port; GRPC_LOG_IF_ERROR( "pollset_kick", - grpc_pollset_kick(exec_ctx, grpc_polling_entity_pollset(&pr->pops), - NULL)); + grpc_pollset_kick(grpc_polling_entity_pollset(&pr->pops), NULL)); gpr_mu_unlock(pr->mu); } @@ -200,7 +193,7 @@ int grpc_pick_port_using_server(void) { grpc_httpcli_context context; grpc_httpcli_request req; portreq pr; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_closure *shutdown_closure; grpc_init(); @@ -213,40 +206,39 @@ int grpc_pick_port_using_server(void) { shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops, grpc_schedule_on_exec_ctx); pr.port = -1; - pr.server = GRPC_PORT_SERVER_ADDRESS; + pr.server = (char *)GRPC_PORT_SERVER_ADDRESS; pr.ctx = &context; - req.host = GRPC_PORT_SERVER_ADDRESS; - req.http.path = "/get"; + req.host = (char *)GRPC_PORT_SERVER_ADDRESS; + req.http.path = (char *)"/get"; grpc_httpcli_context_init(&context); grpc_resource_quota *resource_quota = grpc_resource_quota_create("port_server_client/pick"); grpc_httpcli_get( - &exec_ctx, &context, &pr.pops, resource_quota, &req, - grpc_exec_ctx_now(&exec_ctx) + 30 * GPR_MS_PER_SEC, + &context, &pr.pops, resource_quota, &req, + grpc_exec_ctx_now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(got_port_from_server, &pr, grpc_schedule_on_exec_ctx), &pr.response); - grpc_resource_quota_unref_internal(&exec_ctx, resource_quota); - grpc_exec_ctx_flush(&exec_ctx); + grpc_resource_quota_unref_internal(resource_quota); + grpc_exec_ctx_flush(); gpr_mu_lock(pr.mu); while (pr.port == -1) { grpc_pollset_worker *worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), - &worker, - grpc_exec_ctx_now(&exec_ctx) + GPR_MS_PER_SEC))) { + grpc_pollset_work(grpc_polling_entity_pollset(&pr.pops), &worker, + grpc_exec_ctx_now() + GPR_MS_PER_SEC))) { pr.port = 0; } } gpr_mu_unlock(pr.mu); grpc_http_response_destroy(&pr.response); - grpc_httpcli_context_destroy(&exec_ctx, &context); - grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), + grpc_httpcli_context_destroy(&context); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), shutdown_closure); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_shutdown(); return pr.port; diff --git a/test/core/util/port_server_client.h b/test/core/util/port_server_client.h index 86dd7018ffd..a88026ebe82 100644 --- a/test/core/util/port_server_client.h +++ b/test/core/util/port_server_client.h @@ -24,7 +24,15 @@ // must be synchronized with tools/run_tests/python_utils/start_port_server.py #define GRPC_PORT_SERVER_ADDRESS "localhost:32766" +#ifdef __cplusplus +extern "C" { +#endif + int grpc_pick_port_using_server(void); void grpc_free_port_using_server(int port); +#ifdef __cplusplus +} +#endif + #endif // GRPC_TEST_CORE_UTIL_PORT_SERVER_CLIENT_H diff --git a/test/core/util/reconnect_server.c b/test/core/util/reconnect_server.c index 9c56e02e8ec..ef4b5e01cdf 100644 --- a/test/core/util/reconnect_server.c +++ b/test/core/util/reconnect_server.c @@ -55,7 +55,7 @@ static void pretty_print_backoffs(reconnect_server *server) { } } -static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, +static void on_connect(void *arg, grpc_endpoint *tcp, grpc_pollset *accepting_pollset, grpc_tcp_server_acceptor *acceptor) { gpr_free(acceptor); @@ -65,9 +65,9 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp, gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); timestamp_list *new_tail; peer = grpc_endpoint_get_peer(tcp); - grpc_endpoint_shutdown(exec_ctx, tcp, + grpc_endpoint_shutdown(tcp, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected")); - grpc_endpoint_destroy(exec_ctx, tcp); + grpc_endpoint_destroy(tcp); if (peer) { last_colon = strrchr(peer, ':'); if (server->peer == NULL) { diff --git a/test/core/util/test_tcp_server.c b/test/core/util/test_tcp_server.cc similarity index 74% rename from test/core/util/test_tcp_server.c rename to test/core/util/test_tcp_server.cc index 611ecb330c1..8b482b36e0a 100644 --- a/test/core/util/test_tcp_server.c +++ b/test/core/util/test_tcp_server.cc @@ -33,9 +33,8 @@ #include "test/core/util/port.h" #include "test/core/util/test_config.h" -static void on_server_destroyed(grpc_exec_ctx *exec_ctx, void *data, - grpc_error *error) { - test_tcp_server *server = data; +static void on_server_destroyed(void *data, grpc_error *error) { + test_tcp_server *server = (test_tcp_server *)data; server->shutdown = 1; } @@ -46,7 +45,7 @@ void test_tcp_server_init(test_tcp_server *server, GRPC_CLOSURE_INIT(&server->shutdown_complete, on_server_destroyed, server, grpc_schedule_on_exec_ctx); server->shutdown = 0; - server->pollset = gpr_zalloc(grpc_pollset_size()); + server->pollset = (grpc_pollset *)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(server->pollset, &server->mu); server->on_connect = on_connect; server->cb_data = user_data; @@ -56,51 +55,49 @@ void test_tcp_server_start(test_tcp_server *server, int port) { grpc_resolved_address resolved_addr; struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr; int port_added; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; addr->sin_family = AF_INET; addr->sin_port = htons((uint16_t)port); memset(&addr->sin_addr, 0, sizeof(addr->sin_addr)); - grpc_error *error = grpc_tcp_server_create( - &exec_ctx, &server->shutdown_complete, NULL, &server->tcp_server); + grpc_error *error = grpc_tcp_server_create(&server->shutdown_complete, NULL, + &server->tcp_server); GPR_ASSERT(error == GRPC_ERROR_NONE); error = grpc_tcp_server_add_port(server->tcp_server, &resolved_addr, &port_added); GPR_ASSERT(error == GRPC_ERROR_NONE); GPR_ASSERT(port_added == port); - grpc_tcp_server_start(&exec_ctx, server->tcp_server, &server->pollset, 1, + grpc_tcp_server_start(server->tcp_server, &server->pollset, 1, server->on_connect, server->cb_data); gpr_log(GPR_INFO, "test tcp server listening on 0.0.0.0:%d", port); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } void test_tcp_server_poll(test_tcp_server *server, int seconds) { grpc_pollset_worker *worker = NULL; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_millis deadline = grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(seconds)); gpr_mu_lock(server->mu); - GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work(&exec_ctx, server->pollset, &worker, deadline)); + GRPC_LOG_IF_ERROR("pollset_work", + grpc_pollset_work(server->pollset, &worker, deadline)); gpr_mu_unlock(server->mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } -static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} -static void finish_pollset(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { - grpc_pollset_destroy(exec_ctx, arg); +static void do_nothing(void *arg, grpc_error *error) {} +static void finish_pollset(void *arg, grpc_error *error) { + grpc_pollset_destroy((grpc_pollset *)arg); } void test_tcp_server_destroy(test_tcp_server *server) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_timespec shutdown_deadline; grpc_closure do_nothing_cb; - grpc_tcp_server_unref(&exec_ctx, server->tcp_server); + grpc_tcp_server_unref(server->tcp_server); GRPC_CLOSURE_INIT(&do_nothing_cb, do_nothing, NULL, grpc_schedule_on_exec_ctx); shutdown_deadline = gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), @@ -109,10 +106,10 @@ void test_tcp_server_destroy(test_tcp_server *server) { gpr_time_cmp(gpr_now(GPR_CLOCK_MONOTONIC), shutdown_deadline) < 0) { test_tcp_server_poll(server, 1); } - grpc_pollset_shutdown(&exec_ctx, server->pollset, + grpc_pollset_shutdown(server->pollset, GRPC_CLOSURE_CREATE(finish_pollset, server->pollset, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(server->pollset); grpc_shutdown(); } diff --git a/test/core/util/trickle_endpoint.c b/test/core/util/trickle_endpoint.cc similarity index 74% rename from test/core/util/trickle_endpoint.c rename to test/core/util/trickle_endpoint.cc index fc066f9d808..e36f64816e3 100644 --- a/test/core/util/trickle_endpoint.c +++ b/test/core/util/trickle_endpoint.cc @@ -45,23 +45,22 @@ typedef struct { grpc_closure *write_cb; } trickle_endpoint; -static void te_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void te_read(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { trickle_endpoint *te = (trickle_endpoint *)ep; - grpc_endpoint_read(exec_ctx, te->wrapped, slices, cb); + grpc_endpoint_read(te->wrapped, slices, cb); } -static void maybe_call_write_cb_locked(grpc_exec_ctx *exec_ctx, - trickle_endpoint *te) { +static void maybe_call_write_cb_locked(trickle_endpoint *te) { if (te->write_cb != NULL && (te->error != GRPC_ERROR_NONE || te->write_buffer.length <= WRITE_BUFFER_SIZE)) { - GRPC_CLOSURE_SCHED(exec_ctx, te->write_cb, GRPC_ERROR_REF(te->error)); + GRPC_CLOSURE_SCHED(te->write_cb, GRPC_ERROR_REF(te->error)); te->write_cb = NULL; } } -static void te_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { +static void te_write(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { trickle_endpoint *te = (trickle_endpoint *)ep; gpr_mu_lock(&te->mu); GPR_ASSERT(te->write_cb == NULL); @@ -73,40 +72,38 @@ static void te_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, grpc_slice_copy(slices->slices[i])); } te->write_cb = cb; - maybe_call_write_cb_locked(exec_ctx, te); + maybe_call_write_cb_locked(te); gpr_mu_unlock(&te->mu); } -static void te_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset) { +static void te_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) { trickle_endpoint *te = (trickle_endpoint *)ep; - grpc_endpoint_add_to_pollset(exec_ctx, te->wrapped, pollset); + grpc_endpoint_add_to_pollset(te->wrapped, pollset); } -static void te_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, +static void te_add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset_set) { trickle_endpoint *te = (trickle_endpoint *)ep; - grpc_endpoint_add_to_pollset_set(exec_ctx, te->wrapped, pollset_set); + grpc_endpoint_add_to_pollset_set(te->wrapped, pollset_set); } -static void te_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { +static void te_shutdown(grpc_endpoint *ep, grpc_error *why) { trickle_endpoint *te = (trickle_endpoint *)ep; gpr_mu_lock(&te->mu); if (te->error == GRPC_ERROR_NONE) { te->error = GRPC_ERROR_REF(why); } - maybe_call_write_cb_locked(exec_ctx, te); + maybe_call_write_cb_locked(te); gpr_mu_unlock(&te->mu); - grpc_endpoint_shutdown(exec_ctx, te->wrapped, why); + grpc_endpoint_shutdown(te->wrapped, why); } -static void te_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { +static void te_destroy(grpc_endpoint *ep) { trickle_endpoint *te = (trickle_endpoint *)ep; - grpc_endpoint_destroy(exec_ctx, te->wrapped); + grpc_endpoint_destroy(te->wrapped); gpr_mu_destroy(&te->mu); - grpc_slice_buffer_destroy_internal(exec_ctx, &te->write_buffer); - grpc_slice_buffer_destroy_internal(exec_ctx, &te->writing_buffer); + grpc_slice_buffer_destroy_internal(&te->write_buffer); + grpc_slice_buffer_destroy_internal(&te->writing_buffer); GRPC_ERROR_UNREF(te->error); gpr_free(te); } @@ -126,8 +123,7 @@ static int te_get_fd(grpc_endpoint *ep) { return grpc_endpoint_get_fd(te->wrapped); } -static void te_finish_write(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { +static void te_finish_write(void *arg, grpc_error *error) { trickle_endpoint *te = (trickle_endpoint *)arg; gpr_mu_lock(&te->mu); te->writing = false; @@ -159,8 +155,7 @@ static double ts2dbl(gpr_timespec s) { return (double)s.tv_sec + 1e-9 * (double)s.tv_nsec; } -size_t grpc_trickle_endpoint_trickle(grpc_exec_ctx *exec_ctx, - grpc_endpoint *ep) { +size_t grpc_trickle_endpoint_trickle(grpc_endpoint *ep) { trickle_endpoint *te = (trickle_endpoint *)ep; gpr_mu_lock(&te->mu); if (!te->writing && te->write_buffer.length > 0) { @@ -175,9 +170,9 @@ size_t grpc_trickle_endpoint_trickle(grpc_exec_ctx *exec_ctx, te->writing = true; te->last_write = now; grpc_endpoint_write( - exec_ctx, te->wrapped, &te->writing_buffer, + te->wrapped, &te->writing_buffer, GRPC_CLOSURE_CREATE(te_finish_write, te, grpc_schedule_on_exec_ctx)); - maybe_call_write_cb_locked(exec_ctx, te); + maybe_call_write_cb_locked(te); } } size_t backlog = te->write_buffer.length; diff --git a/test/core/util/trickle_endpoint.h b/test/core/util/trickle_endpoint.h index ca39638ba0d..be19dd20355 100644 --- a/test/core/util/trickle_endpoint.h +++ b/test/core/util/trickle_endpoint.h @@ -29,8 +29,7 @@ grpc_endpoint *grpc_trickle_endpoint_create(grpc_endpoint *wrap, double bytes_per_second); /* Allow up to \a bytes through the endpoint. Returns the new backlog. */ -size_t grpc_trickle_endpoint_trickle(grpc_exec_ctx *exec_ctx, - grpc_endpoint *endpoint); +size_t grpc_trickle_endpoint_trickle(grpc_endpoint *endpoint); size_t grpc_trickle_get_backlog(grpc_endpoint *endpoint); diff --git a/test/cpp/common/channel_filter_test.cc b/test/cpp/common/channel_filter_test.cc index 638518107bb..7bdd53f9e7a 100644 --- a/test/cpp/common/channel_filter_test.cc +++ b/test/cpp/common/channel_filter_test.cc @@ -28,7 +28,7 @@ class MyChannelData : public ChannelData { public: MyChannelData() {} - grpc_error* Init(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, + grpc_error* Init(grpc_channel_element* elem, grpc_channel_element_args* args) override { (void)args->channel_args; // Make sure field is available. return GRPC_ERROR_NONE; @@ -39,7 +39,7 @@ class MyCallData : public CallData { public: MyCallData() {} - grpc_error* Init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, + grpc_error* Init(grpc_call_element* elem, const grpc_call_element_args* args) override { (void)args->path; // Make sure field is available. return GRPC_ERROR_NONE; diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc index c236f76e89c..d129a961bad 100644 --- a/test/cpp/end2end/client_lb_end2end_test.cc +++ b/test/cpp/end2end/client_lb_end2end_test.cc @@ -109,12 +109,12 @@ class ClientLbEnd2endTest : public ::testing::Test { } void SetNextResolution(const std::vector<int>& ports) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(ports.size(), NULL); for (size_t i = 0; i < ports.size(); ++i) { char* lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:127.0.0.1:%d", ports[i]); - grpc_uri* lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != NULL); grpc_lb_addresses_set_address_from_uri(addresses, i, lb_uri, false /* is balancer */, @@ -126,11 +126,11 @@ class ClientLbEnd2endTest : public ::testing::Test { grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args* fake_result = grpc_channel_args_copy_and_add(NULL, &fake_addresses, 1); - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator_, fake_result); - grpc_channel_args_destroy(&exec_ctx, fake_result); - grpc_lb_addresses_destroy(&exec_ctx, addresses); - grpc_exec_ctx_finish(&exec_ctx); + grpc_fake_resolver_response_generator_set_response(response_generator_, + fake_result); + grpc_channel_args_destroy(fake_result); + grpc_lb_addresses_destroy(addresses); + grpc_exec_ctx_finish(); } void ResetStub(const grpc::string& lb_policy_name = "") { diff --git a/test/cpp/end2end/filter_end2end_test.cc b/test/cpp/end2end/filter_end2end_test.cc index f260ea0016d..c4430379dbf 100644 --- a/test/cpp/end2end/filter_end2end_test.cc +++ b/test/cpp/end2end/filter_end2end_test.cc @@ -100,7 +100,7 @@ int GetCallCounterValue() { class ChannelDataImpl : public ChannelData { public: - grpc_error* Init(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, + grpc_error* Init(grpc_channel_element* elem, grpc_channel_element_args* args) { IncrementConnectionCounter(); return GRPC_ERROR_NONE; @@ -109,13 +109,12 @@ class ChannelDataImpl : public ChannelData { class CallDataImpl : public CallData { public: - void StartTransportStreamOpBatch(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, + void StartTransportStreamOpBatch(grpc_call_element* elem, TransportStreamOpBatch* op) override { // Incrementing the counter could be done from Init(), but we want // to test that the individual methods are actually called correctly. if (op->recv_initial_metadata() != nullptr) IncrementCallCounter(); - grpc_call_next_op(exec_ctx, elem, op->op()); + grpc_call_next_op(elem, op->op()); } }; diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index f73a9c17917..1157c4510ee 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -449,13 +449,13 @@ class GrpclbEnd2endTest : public ::testing::Test { }; void SetNextResolution(const std::vector<AddressData>& address_data) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(address_data.size(), nullptr); for (size_t i = 0; i < address_data.size(); ++i) { char* lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:127.0.0.1:%d", address_data[i].port); - grpc_uri* lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != nullptr); grpc_lb_addresses_set_address_from_uri( addresses, i, lb_uri, address_data[i].is_balancer, @@ -465,10 +465,10 @@ class GrpclbEnd2endTest : public ::testing::Test { } grpc_arg fake_addresses = grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args fake_result = {1, &fake_addresses}; - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator_, &fake_result); - grpc_lb_addresses_destroy(&exec_ctx, addresses); - grpc_exec_ctx_finish(&exec_ctx); + grpc_fake_resolver_response_generator_set_response(response_generator_, + &fake_result); + grpc_lb_addresses_destroy(addresses); + grpc_exec_ctx_finish(); } const std::vector<int> GetBackendPorts(const size_t start_index = 0) const { diff --git a/test/cpp/grpclb/grpclb_test.cc b/test/cpp/grpclb/grpclb_test.cc index e740ea513a4..366ba10061d 100644 --- a/test/cpp/grpclb/grpclb_test.cc +++ b/test/cpp/grpclb/grpclb_test.cc @@ -557,7 +557,7 @@ static void perform_request(client_fixture *cf) { #define BALANCERS_NAME "lb.name" static void setup_client(const server_fixture *lb_server, const server_fixture *backends, client_fixture *cf) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; char *expected_target_names = NULL; const char *backends_name = lb_server->servers_hostport; @@ -569,7 +569,7 @@ static void setup_client(const server_fixture *lb_server, grpc_lb_addresses *addresses = grpc_lb_addresses_create(1, NULL); char *lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:%s", lb_server->servers_hostport); - grpc_uri *lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri *lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != NULL); grpc_lb_addresses_set_address_from_uri(addresses, 0, lb_uri, true, lb_server->balancer_name, NULL); @@ -581,7 +581,7 @@ static void setup_client(const server_fixture *lb_server, grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args *fake_result = grpc_channel_args_copy_and_add(NULL, &fake_addresses, 1); - grpc_lb_addresses_destroy(&exec_ctx, addresses); + grpc_lb_addresses_destroy(addresses); const grpc_arg new_args[] = { grpc_fake_transport_expected_targets_arg(expected_target_names), @@ -596,13 +596,13 @@ static void setup_client(const server_fixture *lb_server, grpc_fake_transport_security_credentials_create(); cf->client = grpc_secure_channel_create(fake_creds, cf->server_uri, args, NULL); - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator, fake_result); - grpc_channel_args_destroy(&exec_ctx, fake_result); - grpc_channel_credentials_unref(&exec_ctx, fake_creds); - grpc_channel_args_destroy(&exec_ctx, args); + grpc_fake_resolver_response_generator_set_response(response_generator, + fake_result); + grpc_channel_args_destroy(fake_result); + grpc_channel_credentials_unref(fake_creds); + grpc_channel_args_destroy(args); grpc_fake_resolver_response_generator_unref(response_generator); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void teardown_client(client_fixture *cf) { diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index cf9a42e8c60..992de9ef316 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -313,12 +313,9 @@ static void BM_LameChannelCallCreateCoreSeparateBatch(benchmark::State &state) { } BENCHMARK(BM_LameChannelCallCreateCoreSeparateBatch); -static void FilterDestroy(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { - gpr_free(arg); -} +static void FilterDestroy(void *arg, grpc_error *error) { gpr_free(arg); } -static void DoNothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +static void DoNothing(void *arg, grpc_error *error) {} class FakeClientChannelFactory : public grpc_client_channel_factory { public: @@ -326,15 +323,12 @@ class FakeClientChannelFactory : public grpc_client_channel_factory { private: static void NoRef(grpc_client_channel_factory *factory) {} - static void NoUnref(grpc_exec_ctx *exec_ctx, - grpc_client_channel_factory *factory) {} - static grpc_subchannel *CreateSubchannel(grpc_exec_ctx *exec_ctx, - grpc_client_channel_factory *factory, + static void NoUnref(grpc_client_channel_factory *factory) {} + static grpc_subchannel *CreateSubchannel(grpc_client_channel_factory *factory, const grpc_subchannel_args *args) { return nullptr; } - static grpc_channel *CreateClientChannel(grpc_exec_ctx *exec_ctx, - grpc_client_channel_factory *factory, + static grpc_channel *CreateClientChannel(grpc_client_channel_factory *factory, const char *target, grpc_client_channel_type type, const grpc_channel_args *args) { @@ -368,36 +362,32 @@ struct Fixture { namespace dummy_filter { -static void StartTransportStreamOp(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void StartTransportStreamOp(grpc_call_element *elem, grpc_transport_stream_op_batch *op) {} -static void StartTransportOp(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void StartTransportOp(grpc_channel_element *elem, grpc_transport_op *op) {} -static grpc_error *InitCallElem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *InitCallElem(grpc_call_element *elem, const grpc_call_element_args *args) { return GRPC_ERROR_NONE; } -static void SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void SetPollsetOrPollsetSet(grpc_call_element *elem, grpc_polling_entity *pollent) {} -static void DestroyCallElem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void DestroyCallElem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_sched_closure) {} -grpc_error *InitChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, +grpc_error *InitChannelElem(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -void DestroyChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem) {} +void DestroyChannelElem(grpc_channel_element *elem) {} -void GetChannelInfo(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, +void GetChannelInfo(grpc_channel_element *elem, const grpc_channel_info *channel_info) {} static const grpc_channel_filter dummy_filter = {StartTransportStreamOp, @@ -424,41 +414,38 @@ size_t sizeof_stream; /* = sizeof(transport stream) */ const char *name; /* implementation of grpc_transport_init_stream */ -int InitStream(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_stream_refcount *refcount, - const void *server_data, gpr_arena *arena) { +int InitStream(grpc_transport *self, grpc_stream *stream, + grpc_stream_refcount *refcount, const void *server_data, + gpr_arena *arena) { return 0; } /* implementation of grpc_transport_set_pollset */ -void SetPollset(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_pollset *pollset) {} +void SetPollset(grpc_transport *self, grpc_stream *stream, + grpc_pollset *pollset) {} /* implementation of grpc_transport_set_pollset */ -void SetPollsetSet(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_pollset_set *pollset_set) {} +void SetPollsetSet(grpc_transport *self, grpc_stream *stream, + grpc_pollset_set *pollset_set) {} /* implementation of grpc_transport_perform_stream_op */ -void PerformStreamOp(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_transport_stream_op_batch *op) { - GRPC_CLOSURE_SCHED(exec_ctx, op->on_complete, GRPC_ERROR_NONE); +void PerformStreamOp(grpc_transport *self, grpc_stream *stream, + grpc_transport_stream_op_batch *op) { + GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_NONE); } /* implementation of grpc_transport_perform_op */ -void PerformOp(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_transport_op *op) {} +void PerformOp(grpc_transport *self, grpc_transport_op *op) {} /* implementation of grpc_transport_destroy_stream */ -void DestroyStream(grpc_exec_ctx *exec_ctx, grpc_transport *self, - grpc_stream *stream, grpc_closure *then_sched_closure) {} +void DestroyStream(grpc_transport *self, grpc_stream *stream, + grpc_closure *then_sched_closure) {} /* implementation of grpc_transport_destroy */ -void Destroy(grpc_exec_ctx *exec_ctx, grpc_transport *self) {} +void Destroy(grpc_transport *self) {} /* implementation of grpc_transport_get_endpoint */ -grpc_endpoint *GetEndpoint(grpc_exec_ctx *exec_ctx, grpc_transport *self) { - return nullptr; -} +grpc_endpoint *GetEndpoint(grpc_transport *self) { return nullptr; } static const grpc_transport_vtable dummy_transport_vtable = { 0, "dummy_http2", InitStream, @@ -474,8 +461,8 @@ class NoOp { public: class Op { public: - Op(grpc_exec_ctx *exec_ctx, NoOp *p, grpc_call_stack *s) {} - void Finish(grpc_exec_ctx *exec_ctx) {} + Op(NoOp *p, grpc_call_stack *s) {} + void Finish() {} }; }; @@ -491,13 +478,11 @@ class SendEmptyMetadata { class Op { public: - Op(grpc_exec_ctx *exec_ctx, SendEmptyMetadata *p, grpc_call_stack *s) { + Op(SendEmptyMetadata *p, grpc_call_stack *s) { grpc_metadata_batch_init(&batch_); p->op_payload_.send_initial_metadata.send_initial_metadata = &batch_; } - void Finish(grpc_exec_ctx *exec_ctx) { - grpc_metadata_batch_destroy(exec_ctx, &batch_); - } + void Finish() { grpc_metadata_batch_destroy(&batch_); } private: grpc_metadata_batch batch_; @@ -538,20 +523,20 @@ static void BM_IsolatedFilter(benchmark::State &state) { label << " #has_dummy_filter"; } - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; size_t channel_size = grpc_channel_stack_size( filters.size() == 0 ? NULL : &filters[0], filters.size()); grpc_channel_stack *channel_stack = static_cast<grpc_channel_stack *>(gpr_zalloc(channel_size)); GPR_ASSERT(GRPC_LOG_IF_ERROR( "channel_stack_init", - grpc_channel_stack_init(&exec_ctx, 1, FilterDestroy, channel_stack, - &filters[0], filters.size(), &channel_args, + grpc_channel_stack_init(1, FilterDestroy, channel_stack, &filters[0], + filters.size(), &channel_args, fixture.flags & REQUIRES_TRANSPORT ? &dummy_transport::dummy_transport : nullptr, "CHANNEL", channel_stack))); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); grpc_call_stack *call_stack = static_cast<grpc_call_stack *>( gpr_zalloc(channel_stack->call_stack_size)); grpc_millis deadline = GRPC_MILLIS_INF_FUTURE; @@ -570,12 +555,12 @@ static void BM_IsolatedFilter(benchmark::State &state) { call_args.arena = gpr_arena_create(kArenaSize); while (state.KeepRunning()) { GPR_TIMER_SCOPE("BenchmarkCycle", 0); - GRPC_ERROR_UNREF(grpc_call_stack_init(&exec_ctx, channel_stack, 1, - DoNothing, NULL, &call_args)); - typename TestOp::Op op(&exec_ctx, &test_op_data, call_stack); - grpc_call_stack_destroy(&exec_ctx, call_stack, &final_info, NULL); - op.Finish(&exec_ctx); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_ERROR_UNREF( + grpc_call_stack_init(channel_stack, 1, DoNothing, NULL, &call_args)); + typename TestOp::Op op(&test_op_data, call_stack); + grpc_call_stack_destroy(call_stack, &final_info, NULL); + op.Finish(); + grpc_exec_ctx_flush(); // recreate arena every 64k iterations to avoid oom if (0 == (state.iterations() & 0xffff)) { gpr_arena_destroy(call_args.arena); @@ -583,8 +568,8 @@ static void BM_IsolatedFilter(benchmark::State &state) { } } gpr_arena_destroy(call_args.arena); - grpc_channel_stack_destroy(&exec_ctx, channel_stack); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_stack_destroy(channel_stack); + grpc_exec_ctx_finish(); gpr_free(channel_stack); gpr_free(call_stack); @@ -632,59 +617,55 @@ namespace isolated_call_filter { typedef struct { grpc_call_combiner *call_combiner; } call_data; -static void StartTransportStreamOp(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void StartTransportStreamOp(grpc_call_element *elem, grpc_transport_stream_op_batch *op) { call_data *calld = static_cast<call_data *>(elem->call_data); if (op->recv_initial_metadata) { GRPC_CALL_COMBINER_START( - exec_ctx, calld->call_combiner, + calld->call_combiner, op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_NONE, "recv_initial_metadata"); } if (op->recv_message) { - GRPC_CALL_COMBINER_START(exec_ctx, calld->call_combiner, + GRPC_CALL_COMBINER_START(calld->call_combiner, op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE, "recv_message"); } - GRPC_CLOSURE_SCHED(exec_ctx, op->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_NONE); } -static void StartTransportOp(grpc_exec_ctx *exec_ctx, - grpc_channel_element *elem, +static void StartTransportOp(grpc_channel_element *elem, grpc_transport_op *op) { if (op->disconnect_with_error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(op->disconnect_with_error); } - GRPC_CLOSURE_SCHED(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE); } -static grpc_error *InitCallElem(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static grpc_error *InitCallElem(grpc_call_element *elem, const grpc_call_element_args *args) { call_data *calld = static_cast<call_data *>(elem->call_data); calld->call_combiner = args->call_combiner; return GRPC_ERROR_NONE; } -static void SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem, +static void SetPollsetOrPollsetSet(grpc_call_element *elem, grpc_polling_entity *pollent) {} -static void DestroyCallElem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, +static void DestroyCallElem(grpc_call_element *elem, const grpc_call_final_info *final_info, grpc_closure *then_sched_closure) { - GRPC_CLOSURE_SCHED(exec_ctx, then_sched_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(then_sched_closure, GRPC_ERROR_NONE); } -grpc_error *InitChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, +grpc_error *InitChannelElem(grpc_channel_element *elem, grpc_channel_element_args *args) { return GRPC_ERROR_NONE; } -void DestroyChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem) {} +void DestroyChannelElem(grpc_channel_element *elem) {} -void GetChannelInfo(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, +void GetChannelInfo(grpc_channel_element *elem, const grpc_channel_info *channel_info) {} static const grpc_channel_filter isolated_call_filter = { @@ -710,10 +691,9 @@ class IsolatedCallFixture : public TrackCounters { GPR_ASSERT(grpc_channel_stack_builder_append_filter( builder, &isolated_call_filter::isolated_call_filter, NULL, NULL)); { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - channel_ = grpc_channel_create_with_builder(&exec_ctx, builder, - GRPC_CLIENT_CHANNEL); - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + channel_ = grpc_channel_create_with_builder(builder, GRPC_CLIENT_CHANNEL); + grpc_exec_ctx_finish(); } cq_ = grpc_completion_queue_create_for_next(NULL); } diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index adbfa4d7967..13b0e0dd7f6 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -40,14 +40,14 @@ auto &force_library_initialization = Library::get(); static void BM_HpackEncoderInitDestroy(benchmark::State &state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_chttp2_hpack_compressor c; while (state.KeepRunning()) { grpc_chttp2_hpack_compressor_init(&c); - grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c); - grpc_exec_ctx_flush(&exec_ctx); + grpc_chttp2_hpack_compressor_destroy(&c); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_HpackEncoderInitDestroy); @@ -55,17 +55,16 @@ BENCHMARK(BM_HpackEncoderInitDestroy); template <class Fixture> static void BM_HpackEncoderEncodeHeader(benchmark::State &state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; static bool logged_representative_output = false; grpc_metadata_batch b; grpc_metadata_batch_init(&b); - std::vector<grpc_mdelem> elems = Fixture::GetElems(&exec_ctx); + std::vector<grpc_mdelem> elems = Fixture::GetElems(); std::vector<grpc_linked_mdelem> storage(elems.size()); for (size_t i = 0; i < elems.size(); i++) { GPR_ASSERT(GRPC_LOG_IF_ERROR( - "addmd", - grpc_metadata_batch_add_tail(&exec_ctx, &b, &storage[i], elems[i]))); + "addmd", grpc_metadata_batch_add_tail(&b, &storage[i], elems[i]))); } grpc_chttp2_hpack_compressor c; @@ -82,7 +81,7 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State &state) { (size_t)state.range(1), &stats, }; - grpc_chttp2_encode_header(&exec_ctx, &c, NULL, 0, &b, &hopt, &outbuf); + grpc_chttp2_encode_header(&c, NULL, 0, &b, &hopt, &outbuf); if (!logged_representative_output && state.iterations() > 3) { logged_representative_output = true; for (size_t i = 0; i < outbuf.count; i++) { @@ -91,13 +90,13 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State &state) { gpr_free(s); } } - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &outbuf); - grpc_exec_ctx_flush(&exec_ctx); + grpc_slice_buffer_reset_and_unref_internal(&outbuf); + grpc_exec_ctx_flush(); } - grpc_metadata_batch_destroy(&exec_ctx, &b); - grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c); - grpc_slice_buffer_destroy_internal(&exec_ctx, &outbuf); - grpc_exec_ctx_finish(&exec_ctx); + grpc_metadata_batch_destroy(&b); + grpc_chttp2_hpack_compressor_destroy(&c); + grpc_slice_buffer_destroy_internal(&outbuf); + grpc_exec_ctx_finish(); std::ostringstream label; label << "framing_bytes/iter:" << (static_cast<double>(stats.framing_bytes) / @@ -113,15 +112,13 @@ namespace hpack_encoder_fixtures { class EmptyBatch { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { - return {}; - } + static std::vector<grpc_mdelem> GetElems() { return {}; } }; class SingleStaticElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE}; } }; @@ -129,9 +126,9 @@ class SingleStaticElem { class SingleInternedElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")), + grpc_slice_intern(grpc_slice_from_static_string("abc")), grpc_slice_intern(grpc_slice_from_static_string("def")))}; } }; @@ -140,10 +137,10 @@ template <int kLength, bool kTrueBinary> class SingleInternedBinaryElem { public: static constexpr bool kEnableTrueBinary = kTrueBinary; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { grpc_slice bytes = MakeBytes(); std::vector<grpc_mdelem> out = {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc-bin")), + grpc_slice_intern(grpc_slice_from_static_string("abc-bin")), grpc_slice_intern(bytes))}; grpc_slice_unref(bytes); return out; @@ -162,9 +159,9 @@ class SingleInternedBinaryElem { class SingleInternedKeyElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")), + grpc_slice_intern(grpc_slice_from_static_string("abc")), grpc_slice_from_static_string("def"))}; } }; @@ -172,9 +169,8 @@ class SingleInternedKeyElem { class SingleNonInternedElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { - return {grpc_mdelem_from_slices(exec_ctx, - grpc_slice_from_static_string("abc"), + static std::vector<grpc_mdelem> GetElems() { + return {grpc_mdelem_from_slices(grpc_slice_from_static_string("abc"), grpc_slice_from_static_string("def"))}; } }; @@ -183,9 +179,9 @@ template <int kLength, bool kTrueBinary> class SingleNonInternedBinaryElem { public: static constexpr bool kEnableTrueBinary = kTrueBinary; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { - return {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_from_static_string("abc-bin"), MakeBytes())}; + static std::vector<grpc_mdelem> GetElems() { + return {grpc_mdelem_from_slices(grpc_slice_from_static_string("abc-bin"), + MakeBytes())}; } private: @@ -201,20 +197,20 @@ class SingleNonInternedBinaryElem { class RepresentativeClientInitialMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return { GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_PATH, + GRPC_MDSTR_PATH, grpc_slice_intern(grpc_slice_from_static_string("/foo/bar"))), - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY, + grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_intern(grpc_slice_from_static_string( "foo.test.google.fr:1234"))), GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP, GRPC_MDELEM_TE_TRAILERS, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_USER_AGENT, + GRPC_MDSTR_USER_AGENT, grpc_slice_intern(grpc_slice_from_static_string( "grpc-c/3.0.0-dev (linux; chttp2; green)")))}; } @@ -223,7 +219,7 @@ class RepresentativeClientInitialMetadata { class RepresentativeServerInitialMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {GRPC_MDELEM_STATUS_200, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP}; @@ -233,7 +229,7 @@ class RepresentativeServerInitialMetadata { class RepresentativeServerTrailingMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {GRPC_MDELEM_GRPC_STATUS_0}; } }; @@ -331,46 +327,45 @@ BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, static void BM_HpackParserInitDestroy(benchmark::State &state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_chttp2_hpack_parser p; while (state.KeepRunning()) { - grpc_chttp2_hpack_parser_init(&exec_ctx, &p); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &p); - grpc_exec_ctx_flush(&exec_ctx); + grpc_chttp2_hpack_parser_init(&p); + grpc_chttp2_hpack_parser_destroy(&p); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_HpackParserInitDestroy); -static void UnrefHeader(grpc_exec_ctx *exec_ctx, void *user_data, - grpc_mdelem md) { - GRPC_MDELEM_UNREF(exec_ctx, md); +static void UnrefHeader(void *user_data, grpc_mdelem md) { + GRPC_MDELEM_UNREF(md); } template <class Fixture> static void BM_HpackParserParseHeader(benchmark::State &state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; std::vector<grpc_slice> init_slices = Fixture::GetInitSlices(); std::vector<grpc_slice> benchmark_slices = Fixture::GetBenchmarkSlices(); grpc_chttp2_hpack_parser p; - grpc_chttp2_hpack_parser_init(&exec_ctx, &p); + grpc_chttp2_hpack_parser_init(&p); p.on_header = UnrefHeader; p.on_header_user_data = nullptr; for (auto slice : init_slices) { - grpc_chttp2_hpack_parser_parse(&exec_ctx, &p, slice); + grpc_chttp2_hpack_parser_parse(&p, slice); } while (state.KeepRunning()) { for (auto slice : benchmark_slices) { - grpc_chttp2_hpack_parser_parse(&exec_ctx, &p, slice); + grpc_chttp2_hpack_parser_parse(&p, slice); } - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } for (auto slice : init_slices) grpc_slice_unref(slice); for (auto slice : benchmark_slices) grpc_slice_unref(slice); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &p); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_hpack_parser_destroy(&p); + grpc_exec_ctx_finish(); track_counters.Finish(state); } diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index 8ee3ae72686..08830c37466 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -52,7 +52,7 @@ class DummyEndpoint : public grpc_endpoint { ru_ = grpc_resource_user_create(Library::get().rq(), "dummy_endpoint"); } - void PushInput(grpc_exec_ctx *exec_ctx, grpc_slice slice) { + void PushInput(grpc_slice slice) { if (read_cb_ == nullptr) { GPR_ASSERT(!have_slice_); buffered_slice_ = slice; @@ -60,7 +60,7 @@ class DummyEndpoint : public grpc_endpoint { return; } grpc_slice_buffer_add(slices_, slice); - GRPC_CLOSURE_SCHED(exec_ctx, read_cb_, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(read_cb_, GRPC_ERROR_NONE); read_cb_ = nullptr; } @@ -71,47 +71,42 @@ class DummyEndpoint : public grpc_endpoint { bool have_slice_ = false; grpc_slice buffered_slice_; - void QueueRead(grpc_exec_ctx *exec_ctx, grpc_slice_buffer *slices, - grpc_closure *cb) { + void QueueRead(grpc_slice_buffer *slices, grpc_closure *cb) { GPR_ASSERT(read_cb_ == nullptr); if (have_slice_) { have_slice_ = false; grpc_slice_buffer_add(slices, buffered_slice_); - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); return; } read_cb_ = cb; slices_ = slices; } - static void read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { - static_cast<DummyEndpoint *>(ep)->QueueRead(exec_ctx, slices, cb); + static void read(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { + static_cast<DummyEndpoint *>(ep)->QueueRead(slices, cb); } - static void write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_slice_buffer *slices, grpc_closure *cb) { - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + static void write(grpc_endpoint *ep, grpc_slice_buffer *slices, + grpc_closure *cb) { + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); } static grpc_workqueue *get_workqueue(grpc_endpoint *ep) { return NULL; } - static void add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset *pollset) {} + static void add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset) {} - static void add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_pollset_set *pollset) {} + static void add_to_pollset_set(grpc_endpoint *ep, grpc_pollset_set *pollset) { + } - static void shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, - grpc_error *why) { - grpc_resource_user_shutdown(exec_ctx, - static_cast<DummyEndpoint *>(ep)->ru_); - GRPC_CLOSURE_SCHED(exec_ctx, static_cast<DummyEndpoint *>(ep)->read_cb_, - why); + static void shutdown(grpc_endpoint *ep, grpc_error *why) { + grpc_resource_user_shutdown(static_cast<DummyEndpoint *>(ep)->ru_); + GRPC_CLOSURE_SCHED(static_cast<DummyEndpoint *>(ep)->read_cb_, why); } - static void destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) { - grpc_resource_user_unref(exec_ctx, static_cast<DummyEndpoint *>(ep)->ru_); + static void destroy(grpc_endpoint *ep) { + grpc_resource_user_unref(static_cast<DummyEndpoint *>(ep)->ru_); delete static_cast<DummyEndpoint *>(ep); } @@ -127,16 +122,16 @@ class Fixture { Fixture(const grpc::ChannelArguments &args, bool client) { grpc_channel_args c_args = args.c_channel_args(); ep_ = new DummyEndpoint; - t_ = grpc_create_chttp2_transport(exec_ctx(), &c_args, ep_, client); - grpc_chttp2_transport_start_reading(exec_ctx(), t_, NULL); + t_ = grpc_create_chttp2_transport((), &c_args, ep_, client); + grpc_chttp2_transport_start_reading((), t_, NULL); FlushExecCtx(); } - void FlushExecCtx() { grpc_exec_ctx_flush(&exec_ctx_); } + void FlushExecCtx() { grpc_exec_ctx_flush(_); } ~Fixture() { - grpc_transport_destroy(&exec_ctx_, t_); - grpc_exec_ctx_finish(&exec_ctx_); + grpc_transport_destroy(_, t_); + grpc_exec_ctx_finish(_); } grpc_chttp2_transport *chttp2_transport() { @@ -145,7 +140,7 @@ class Fixture { grpc_transport *transport() { return t_; } grpc_exec_ctx *exec_ctx() { return &exec_ctx_; } - void PushInput(grpc_slice slice) { ep_->PushInput(exec_ctx(), slice); } + void PushInput(grpc_slice slice) { ep_->PushInput((), slice); } private: DummyEndpoint *ep_; @@ -166,8 +161,8 @@ std::unique_ptr<Closure> MakeClosure( GRPC_CLOSURE_INIT(this, Execute, this, sched); } F f_; - static void Execute(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { - static_cast<C *>(arg)->f_(exec_ctx, error); + static void Execute(void *arg, grpc_error *error) { + static_cast<C *>(arg)->f_(error); } }; return std::unique_ptr<Closure>(new C(f, sched)); @@ -179,8 +174,8 @@ grpc_closure *MakeOnceClosure( struct C : public grpc_closure { C(const F &f) : f_(f) {} F f_; - static void Execute(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { - static_cast<C *>(arg)->f_(exec_ctx, error); + static void Execute(void *arg, grpc_error *error) { + static_cast<C *>(arg)->f_(error); delete static_cast<C *>(arg); } }; @@ -216,17 +211,17 @@ class Stream { NULL, arena_); } - void DestroyThen(grpc_exec_ctx *exec_ctx, grpc_closure *closure) { + void DestroyThen(grpc_closure *closure) { destroy_closure_ = closure; #ifndef NDEBUG - grpc_stream_unref(exec_ctx, &refcount_, "DestroyThen"); + grpc_stream_unref(&refcount_, "DestroyThen"); #else - grpc_stream_unref(exec_ctx, &refcount_); + grpc_stream_unref(&refcount_); #endif } - void Op(grpc_exec_ctx *exec_ctx, grpc_transport_stream_op_batch *op) { - grpc_transport_perform_stream_op(exec_ctx, f_->transport(), + void Op(grpc_transport_stream_op_batch *op) { + grpc_transport_perform_stream_op(f_->transport(), static_cast<grpc_stream *>(stream_), op); } @@ -235,10 +230,9 @@ class Stream { } private: - static void FinishDestroy(grpc_exec_ctx *exec_ctx, void *arg, - grpc_error *error) { + static void FinishDestroy(void *arg, grpc_error *error) { auto stream = static_cast<Stream *>(arg); - grpc_transport_destroy_stream(exec_ctx, stream->f_->transport(), + grpc_transport_destroy_stream(stream->f_->transport(), static_cast<grpc_stream *>(stream->stream_), stream->destroy_closure_); gpr_event_set(&stream->done_, (void *)1); @@ -271,8 +265,8 @@ static void BM_StreamCreateDestroy(benchmark::State &state) { MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) { if (!state.KeepRunning()) return; s.Init(state); - s.Op(exec_ctx, &op); - s.DestroyThen(exec_ctx, next.get()); + s.Op(&op); + s.DestroyThen(next.get()); }); GRPC_CLOSURE_RUN(f.exec_ctx(), next.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); @@ -282,20 +276,20 @@ BENCHMARK(BM_StreamCreateDestroy); class RepresentativeClientInitialMetadata { public: - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return { GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_PATH, + GRPC_MDSTR_PATH, grpc_slice_intern(grpc_slice_from_static_string("/foo/bar"))), - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY, + grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_intern(grpc_slice_from_static_string( "foo.test.google.fr:1234"))), GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP, GRPC_MDELEM_TE_TRAILERS, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_USER_AGENT, + GRPC_MDSTR_USER_AGENT, grpc_slice_intern(grpc_slice_from_static_string( "grpc-c/3.0.0-dev (linux; chttp2; green)")))}; } @@ -336,14 +330,14 @@ static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State &state) { op.on_complete = done.get(); op.send_initial_metadata = true; op.payload->send_initial_metadata.send_initial_metadata = &b; - s.Op(exec_ctx, &op); + s.Op(&op); }); done = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) { reset_op(); op.cancel_stream = true; op.payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; - s.Op(exec_ctx, &op); - s.DestroyThen(exec_ctx, start.get()); + s.Op(&op); + s.DestroyThen(start.get()); }); GRPC_CLOSURE_SCHED(f.exec_ctx(), start.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); @@ -370,7 +364,7 @@ static void BM_TransportEmptyOp(benchmark::State &state) { if (!state.KeepRunning()) return; reset_op(); op.on_complete = c.get(); - s.Op(exec_ctx, &op); + s.Op(&op); }); GRPC_CLOSURE_SCHED(f.exec_ctx(), c.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); @@ -436,7 +430,7 @@ static void BM_TransportStreamSend(benchmark::State &state) { op.on_complete = c.get(); op.send_message = true; op.payload->send_message.send_message = &send_stream.base; - s->Op(exec_ctx, &op); + s->Op(&op); }); reset_op(); @@ -573,7 +567,7 @@ static void BM_TransportStreamRecv(benchmark::State &state) { op.recv_message = true; op.payload->recv_message.recv_message = &recv_stream; op.payload->recv_message.recv_message_ready = drain_start.get(); - s.Op(exec_ctx, &op); + s.Op(&op); f.PushInput(grpc_slice_ref(incoming_data)); }); @@ -582,30 +576,29 @@ static void BM_TransportStreamRecv(benchmark::State &state) { GPR_ASSERT(!state.KeepRunning()); return; } - GRPC_CLOSURE_RUN(exec_ctx, drain.get(), GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN(drain.get(), GRPC_ERROR_NONE); }); drain = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) { do { if (received == recv_stream->length) { - grpc_byte_stream_destroy(exec_ctx, recv_stream); - GRPC_CLOSURE_SCHED(exec_ctx, c.get(), GRPC_ERROR_NONE); + grpc_byte_stream_destroy(recv_stream); + GRPC_CLOSURE_SCHED(c.get(), GRPC_ERROR_NONE); return; } - } while (grpc_byte_stream_next(exec_ctx, recv_stream, - recv_stream->length - received, + } while (grpc_byte_stream_next(recv_stream, recv_stream->length - received, drain_continue.get()) && GRPC_ERROR_NONE == - grpc_byte_stream_pull(exec_ctx, recv_stream, &recv_slice) && + grpc_byte_stream_pull(recv_stream, &recv_slice) && (received += GRPC_SLICE_LENGTH(recv_slice), - grpc_slice_unref_internal(exec_ctx, recv_slice), true)); + grpc_slice_unref_internal(recv_slice), true)); }); drain_continue = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) { - grpc_byte_stream_pull(exec_ctx, recv_stream, &recv_slice); + grpc_byte_stream_pull(recv_stream, &recv_slice); received += GRPC_SLICE_LENGTH(recv_slice); - grpc_slice_unref_internal(exec_ctx, recv_slice); - GRPC_CLOSURE_RUN(exec_ctx, drain.get(), GRPC_ERROR_NONE); + grpc_slice_unref_internal(recv_slice); + GRPC_CLOSURE_RUN(drain.get(), GRPC_ERROR_NONE); }); reset_op(); diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc index 41649b8a731..2375fc0133d 100644 --- a/test/cpp/microbenchmarks/bm_closure.cc +++ b/test/cpp/microbenchmarks/bm_closure.cc @@ -36,8 +36,8 @@ auto& force_library_initialization = Library::get(); static void BM_NoOpExecCtx(benchmark::State& state) { TrackCounters track_counters; while (state.KeepRunning()) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx_finish(&exec_ctx); + ExecCtx _local_exec_ctx; + grpc_exec_ctx_finish(); } track_counters.Finish(state); } @@ -45,16 +45,16 @@ BENCHMARK(BM_NoOpExecCtx); static void BM_WellFlushed(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_WellFlushed); -static void DoNothing(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {} +static void DoNothing(void* arg, grpc_error* error) {} static void BM_ClosureInitAgainstExecCtx(benchmark::State& state) { TrackCounters track_counters; @@ -71,13 +71,13 @@ static void BM_ClosureInitAgainstCombiner(benchmark::State& state) { TrackCounters track_counters; grpc_combiner* combiner = grpc_combiner_create(); grpc_closure c; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { benchmark::DoNotOptimize(GRPC_CLOSURE_INIT( &c, DoNothing, NULL, grpc_combiner_scheduler(combiner))); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureInitAgainstCombiner); @@ -86,39 +86,39 @@ static void BM_ClosureRunOnExecCtx(benchmark::State& state) { TrackCounters track_counters; grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_RUN(&exec_ctx, &c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_RUN(&c, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureRunOnExecCtx); static void BM_ClosureCreateAndRun(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_RUN(&exec_ctx, GRPC_CLOSURE_CREATE(DoNothing, NULL, - grpc_schedule_on_exec_ctx), - GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN( + GRPC_CLOSURE_CREATE(DoNothing, NULL, grpc_schedule_on_exec_ctx), + GRPC_ERROR_NONE); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureCreateAndRun); static void BM_ClosureInitAndRun(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_closure c; while (state.KeepRunning()) { - GRPC_CLOSURE_RUN(&exec_ctx, GRPC_CLOSURE_INIT(&c, DoNothing, NULL, - grpc_schedule_on_exec_ctx), - GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN( + GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx), + GRPC_ERROR_NONE); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureInitAndRun); @@ -127,12 +127,12 @@ static void BM_ClosureSchedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSchedOnExecCtx); @@ -143,13 +143,13 @@ static void BM_ClosureSched2OnExecCtx(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnExecCtx); @@ -162,14 +162,14 @@ static void BM_ClosureSched3OnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c3, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched3OnExecCtx); @@ -179,13 +179,13 @@ static void BM_AcquireMutex(benchmark::State& state) { // for comparison with the combiner stuff below gpr_mu mu; gpr_mu_init(&mu); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { gpr_mu_lock(&mu); - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_mu_unlock(&mu); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_AcquireMutex); @@ -195,16 +195,16 @@ static void BM_TryAcquireMutex(benchmark::State& state) { // for comparison with the combiner stuff below gpr_mu mu; gpr_mu_init(&mu); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { if (gpr_mu_trylock(&mu)) { - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_mu_unlock(&mu); } else { abort(); } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_TryAcquireMutex); @@ -213,13 +213,13 @@ static void BM_AcquireSpinlock(benchmark::State& state) { TrackCounters track_counters; // for comparison with the combiner stuff below gpr_spinlock mu = GPR_SPINLOCK_INITIALIZER; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { gpr_spinlock_lock(&mu); - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_spinlock_unlock(&mu); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_AcquireSpinlock); @@ -228,16 +228,16 @@ static void BM_TryAcquireSpinlock(benchmark::State& state) { TrackCounters track_counters; // for comparison with the combiner stuff below gpr_spinlock mu = GPR_SPINLOCK_INITIALIZER; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { if (gpr_spinlock_trylock(&mu)) { - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_spinlock_unlock(&mu); } else { abort(); } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_TryAcquireSpinlock); @@ -247,13 +247,13 @@ static void BM_ClosureSchedOnCombiner(benchmark::State& state) { grpc_combiner* combiner = grpc_combiner_create(); grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_combiner_scheduler(combiner)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSchedOnCombiner); @@ -265,14 +265,14 @@ static void BM_ClosureSched2OnCombiner(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnCombiner); @@ -286,15 +286,15 @@ static void BM_ClosureSched3OnCombiner(benchmark::State& state) { GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c3, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched3OnCombiner); @@ -307,15 +307,15 @@ static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner1)); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner1, "finished"); - GRPC_COMBINER_UNREF(&exec_ctx, combiner2, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner1, "finished"); + GRPC_COMBINER_UNREF(combiner2, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnTwoCombiners); @@ -332,17 +332,17 @@ static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) { GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner1)); GRPC_CLOSURE_INIT(&c4, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c3, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c4, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c4, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner1, "finished"); - GRPC_COMBINER_UNREF(&exec_ctx, combiner2, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner1, "finished"); + GRPC_COMBINER_UNREF(combiner2, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched4OnTwoCombiners); @@ -356,13 +356,11 @@ class Rescheduler { GRPC_CLOSURE_INIT(&closure_, Step, this, scheduler); } - void ScheduleFirst(grpc_exec_ctx* exec_ctx) { - GRPC_CLOSURE_SCHED(exec_ctx, &closure_, GRPC_ERROR_NONE); - } + void ScheduleFirst() { GRPC_CLOSURE_SCHED(&closure_, GRPC_ERROR_NONE); } void ScheduleFirstAgainstDifferentScheduler( - grpc_exec_ctx* exec_ctx, grpc_closure_scheduler* scheduler) { - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(Step, this, scheduler), + grpc_closure_scheduler* scheduler) { + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(Step, this, scheduler), GRPC_ERROR_NONE); } @@ -370,47 +368,46 @@ class Rescheduler { benchmark::State& state_; grpc_closure closure_; - static void Step(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { + static void Step(void* arg, grpc_error* error) { Rescheduler* self = static_cast<Rescheduler*>(arg); if (self->state_.KeepRunning()) { - GRPC_CLOSURE_SCHED(exec_ctx, &self->closure_, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&self->closure_, GRPC_ERROR_NONE); } } }; static void BM_ClosureReschedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; Rescheduler r(state, grpc_schedule_on_exec_ctx); - r.ScheduleFirst(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + r.ScheduleFirst(); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnExecCtx); static void BM_ClosureReschedOnCombiner(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_scheduler(combiner)); - r.ScheduleFirst(&exec_ctx); - grpc_exec_ctx_flush(&exec_ctx); - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + r.ScheduleFirst(); + grpc_exec_ctx_flush(); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnCombiner); static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_finally_scheduler(combiner)); - r.ScheduleFirstAgainstDifferentScheduler(&exec_ctx, - grpc_combiner_scheduler(combiner)); - grpc_exec_ctx_flush(&exec_ctx); - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + r.ScheduleFirstAgainstDifferentScheduler(grpc_combiner_scheduler(combiner)); + grpc_exec_ctx_flush(); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnCombinerFinally); diff --git a/test/cpp/microbenchmarks/bm_cq.cc b/test/cpp/microbenchmarks/bm_cq.cc index a0c0414f2f5..2fd2ba23c0d 100644 --- a/test/cpp/microbenchmarks/bm_cq.cc +++ b/test/cpp/microbenchmarks/bm_cq.cc @@ -67,7 +67,7 @@ static void BM_CreateDestroyCore(benchmark::State& state) { } BENCHMARK(BM_CreateDestroyCore); -static void DoneWithCompletionOnStack(grpc_exec_ctx* exec_ctx, void* arg, +static void DoneWithCompletionOnStack(void* arg, grpc_cq_completion* completion) {} class DummyTag final : public CompletionQueueTag { @@ -82,11 +82,11 @@ static void BM_Pass1Cpp(benchmark::State& state) { while (state.KeepRunning()) { grpc_cq_completion completion; DummyTag dummy_tag; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(c_cq, &dummy_tag)); - grpc_cq_end_op(&exec_ctx, c_cq, &dummy_tag, GRPC_ERROR_NONE, - DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(&exec_ctx); + grpc_cq_end_op(c_cq, &dummy_tag, GRPC_ERROR_NONE, DoneWithCompletionOnStack, + NULL, &completion); + grpc_exec_ctx_finish(); void* tag; bool ok; cq.Next(&tag, &ok); @@ -102,11 +102,11 @@ static void BM_Pass1Core(benchmark::State& state) { gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); while (state.KeepRunning()) { grpc_cq_completion completion; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); - grpc_cq_end_op(&exec_ctx, cq, NULL, GRPC_ERROR_NONE, - DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(&exec_ctx); + grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, + &completion); + grpc_exec_ctx_finish(); grpc_completion_queue_next(cq, deadline, NULL); } grpc_completion_queue_destroy(cq); @@ -121,11 +121,11 @@ static void BM_Pluck1Core(benchmark::State& state) { gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); while (state.KeepRunning()) { grpc_cq_completion completion; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); - grpc_cq_end_op(&exec_ctx, cq, NULL, GRPC_ERROR_NONE, - DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(&exec_ctx); + grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, + &completion); + grpc_exec_ctx_finish(); grpc_completion_queue_pluck(cq, NULL, deadline, NULL); } grpc_completion_queue_destroy(cq); diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc index 57a69acf01e..08bcb63bdc3 100644 --- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc @@ -45,9 +45,8 @@ static grpc_completion_queue* g_cq; static grpc_event_engine_vtable g_vtable; static const grpc_event_engine_vtable* g_old_vtable; -static void pollset_shutdown(grpc_exec_ctx* exec_ctx, grpc_pollset* ps, - grpc_closure* closure) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); +static void pollset_shutdown(grpc_pollset* ps, grpc_closure* closure) { + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } static void pollset_init(grpc_pollset* ps, gpr_mu** mu) { @@ -55,25 +54,20 @@ static void pollset_init(grpc_pollset* ps, gpr_mu** mu) { *mu = &ps->mu; } -static void pollset_destroy(grpc_exec_ctx* exec_ctx, grpc_pollset* ps) { - gpr_mu_destroy(&ps->mu); -} +static void pollset_destroy(grpc_pollset* ps) { gpr_mu_destroy(&ps->mu); } -static grpc_error* pollset_kick(grpc_exec_ctx* exec_ctx, grpc_pollset* p, - grpc_pollset_worker* worker) { +static grpc_error* pollset_kick(grpc_pollset* p, grpc_pollset_worker* worker) { return GRPC_ERROR_NONE; } /* Callback when the tag is dequeued from the completion queue. Does nothing */ -static void cq_done_cb(grpc_exec_ctx* exec_ctx, void* done_arg, - grpc_cq_completion* cq_completion) { +static void cq_done_cb(void* done_arg, grpc_cq_completion* cq_completion) { gpr_free(cq_completion); } /* Queues a completion tag if deadline is > 0. * Does nothing if deadline is 0 (i.e gpr_time_0(GPR_CLOCK_MONOTONIC)) */ -static grpc_error* pollset_work(grpc_exec_ctx* exec_ctx, grpc_pollset* ps, - grpc_pollset_worker** worker, +static grpc_error* pollset_work(grpc_pollset* ps, grpc_pollset_worker** worker, grpc_millis deadline) { if (deadline == 0) { gpr_log(GPR_DEBUG, "no-op"); @@ -82,9 +76,9 @@ static grpc_error* pollset_work(grpc_exec_ctx* exec_ctx, grpc_pollset* ps, gpr_mu_unlock(&ps->mu); GPR_ASSERT(grpc_cq_begin_op(g_cq, g_tag)); - grpc_cq_end_op(exec_ctx, g_cq, g_tag, GRPC_ERROR_NONE, cq_done_cb, NULL, + grpc_cq_end_op(g_cq, g_tag, GRPC_ERROR_NONE, cq_done_cb, NULL, (grpc_cq_completion*)gpr_malloc(sizeof(grpc_cq_completion))); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&ps->mu); return GRPC_ERROR_NONE; } diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index 56b80dfcf6d..3b97936dfea 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -248,14 +248,14 @@ template <class Fixture> static void BM_ErrorGetStatus(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_status_code status; grpc_slice slice; - grpc_error_get_status(&exec_ctx, fixture.error(), fixture.deadline(), - &status, &slice, NULL); + grpc_error_get_status(fixture.error(), fixture.deadline(), &status, &slice, + NULL); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } @@ -263,13 +263,13 @@ template <class Fixture> static void BM_ErrorGetStatusCode(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_status_code status; - grpc_error_get_status(&exec_ctx, fixture.error(), fixture.deadline(), - &status, NULL, NULL); + grpc_error_get_status(fixture.error(), fixture.deadline(), &status, NULL, + NULL); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } @@ -277,13 +277,13 @@ template <class Fixture> static void BM_ErrorHttpError(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_http2_error_code error; - grpc_error_get_status(&exec_ctx, fixture.error(), fixture.deadline(), NULL, - NULL, &error); + grpc_error_get_status(fixture.error(), fixture.deadline(), NULL, NULL, + &error); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } diff --git a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc index 06ae3429857..43735eed0e7 100644 --- a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc +++ b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc @@ -172,13 +172,13 @@ class TrickledCHTTP2 : public EndpointPairFixture { } void Step(bool update_stats) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; inc_time(); size_t client_backlog = - grpc_trickle_endpoint_trickle(&exec_ctx, endpoint_pair_.client); + grpc_trickle_endpoint_trickle(endpoint_pair_.client); size_t server_backlog = - grpc_trickle_endpoint_trickle(&exec_ctx, endpoint_pair_.server); - grpc_exec_ctx_finish(&exec_ctx); + grpc_trickle_endpoint_trickle(endpoint_pair_.server); + grpc_exec_ctx_finish(); if (update_stats) { UpdateStats((grpc_chttp2_transport*)client_transport_, &client_stats_, client_backlog); diff --git a/test/cpp/microbenchmarks/bm_metadata.cc b/test/cpp/microbenchmarks/bm_metadata.cc index 360bbabe136..62a88f55b53 100644 --- a/test/cpp/microbenchmarks/bm_metadata.cc +++ b/test/cpp/microbenchmarks/bm_metadata.cc @@ -92,11 +92,11 @@ static void BM_MetadataFromNonInternedSlices(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_from_static_string("key"); gpr_slice v = grpc_slice_from_static_string("value"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataFromNonInternedSlices); @@ -105,11 +105,11 @@ static void BM_MetadataFromInternedSlices(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -121,13 +121,13 @@ static void BM_MetadataFromInternedSlicesAlreadyInIndex( TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_mdelem seed = grpc_mdelem_create(&exec_ctx, k, v, NULL); + ExecCtx _local_exec_ctx; + grpc_mdelem seed = grpc_mdelem_create(k, v, NULL); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - GRPC_MDELEM_UNREF(&exec_ctx, seed); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(seed); + grpc_exec_ctx_finish(); grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -138,11 +138,11 @@ static void BM_MetadataFromInternedKey(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_from_static_string("value"); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -154,14 +154,12 @@ static void BM_MetadataFromNonInternedSlicesWithBackingStore( gpr_slice k = grpc_slice_from_static_string("key"); gpr_slice v = grpc_slice_from_static_string("value"); char backing_store[sizeof(grpc_mdelem_data)]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_create(&exec_ctx, k, v, - reinterpret_cast<grpc_mdelem_data*>(backing_store))); + GRPC_MDELEM_UNREF(grpc_mdelem_create( + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataFromNonInternedSlicesWithBackingStore); @@ -172,14 +170,12 @@ static void BM_MetadataFromInternedSlicesWithBackingStore( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); char backing_store[sizeof(grpc_mdelem_data)]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_create(&exec_ctx, k, v, - reinterpret_cast<grpc_mdelem_data*>(backing_store))); + GRPC_MDELEM_UNREF(grpc_mdelem_create( + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -192,14 +188,12 @@ static void BM_MetadataFromInternedKeyWithBackingStore( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_from_static_string("value"); char backing_store[sizeof(grpc_mdelem_data)]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_create(&exec_ctx, k, v, - reinterpret_cast<grpc_mdelem_data*>(backing_store))); + GRPC_MDELEM_UNREF(grpc_mdelem_create( + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -209,11 +203,11 @@ static void BM_MetadataFromStaticMetadataStrings(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = GRPC_MDSTR_STATUS; gpr_slice v = GRPC_MDSTR_200; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -224,11 +218,11 @@ static void BM_MetadataFromStaticMetadataStringsNotIndexed( TrackCounters track_counters; gpr_slice k = GRPC_MDSTR_STATUS; gpr_slice v = GRPC_MDSTR_GZIP; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -237,16 +231,15 @@ BENCHMARK(BM_MetadataFromStaticMetadataStringsNotIndexed); static void BM_MetadataRefUnrefExternal(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_mdelem el = - grpc_mdelem_create(&exec_ctx, grpc_slice_from_static_string("a"), - grpc_slice_from_static_string("b"), - reinterpret_cast<grpc_mdelem_data*>(backing_store)); + ExecCtx _local_exec_ctx; + grpc_mdelem el = grpc_mdelem_create( + grpc_slice_from_static_string("a"), grpc_slice_from_static_string("b"), + reinterpret_cast<grpc_mdelem_data*>(backing_store)); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefExternal); @@ -254,47 +247,45 @@ BENCHMARK(BM_MetadataRefUnrefExternal); static void BM_MetadataRefUnrefInterned(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); grpc_mdelem el = grpc_mdelem_create( - &exec_ctx, k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store)); + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store)); grpc_slice_unref(k); grpc_slice_unref(v); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefInterned); static void BM_MetadataRefUnrefAllocated(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_mdelem el = - grpc_mdelem_create(&exec_ctx, grpc_slice_from_static_string("a"), - grpc_slice_from_static_string("b"), NULL); + ExecCtx _local_exec_ctx; + grpc_mdelem el = grpc_mdelem_create(grpc_slice_from_static_string("a"), + grpc_slice_from_static_string("b"), NULL); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefAllocated); static void BM_MetadataRefUnrefStatic(benchmark::State& state) { TrackCounters track_counters; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_mdelem el = - grpc_mdelem_create(&exec_ctx, GRPC_MDSTR_STATUS, GRPC_MDSTR_200, NULL); + ExecCtx _local_exec_ctx; + grpc_mdelem el = grpc_mdelem_create(GRPC_MDSTR_STATUS, GRPC_MDSTR_200, NULL); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefStatic); diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index eab1e894802..524129e511e 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -43,8 +43,8 @@ extern "C" { auto& force_library_initialization = Library::get(); -static void shutdown_ps(grpc_exec_ctx* exec_ctx, void* ps, grpc_error* error) { - grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(ps)); +static void shutdown_ps(void* ps, grpc_error* error) { + grpc_pollset_destroy(static_cast<grpc_pollset*>(ps)); } static void BM_CreateDestroyPollset(benchmark::State& state) { @@ -52,7 +52,7 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { size_t ps_sz = grpc_pollset_size(); grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_malloc(ps_sz)); gpr_mu* mu; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); @@ -60,11 +60,11 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { memset(ps, 0, ps_sz); grpc_pollset_init(ps, &mu); gpr_mu_lock(mu); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(ps); track_counters.Finish(state); } @@ -116,17 +116,17 @@ static void BM_PollEmptyPollset(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_mu_lock(mu); while (state.KeepRunning()) { - GRPC_ERROR_UNREF(grpc_pollset_work(&exec_ctx, ps, NULL, 0)); + GRPC_ERROR_UNREF(grpc_pollset_work(ps, NULL, 0)); } grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(ps); track_counters.Finish(state); } @@ -138,23 +138,23 @@ static void BM_PollAddFd(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_wakeup_fd wakeup_fd; GPR_ASSERT( GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd))); grpc_fd* fd = grpc_fd_create(wakeup_fd.read_fd, "xxx"); while (state.KeepRunning()) { - grpc_pollset_add_fd(&exec_ctx, ps, fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(ps, fd); + grpc_exec_ctx_flush(); } - grpc_fd_orphan(&exec_ctx, fd, NULL, NULL, false /* already_closed */, "xxx"); + grpc_fd_orphan(fd, NULL, NULL, false /* already_closed */, "xxx"); grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); gpr_mu_lock(mu); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(ps); track_counters.Finish(state); } @@ -171,7 +171,7 @@ Closure* MakeClosure(F f, grpc_closure_scheduler* scheduler) { C(F f, grpc_closure_scheduler* scheduler) : f_(f) { GRPC_CLOSURE_INIT(this, C::cbfn, this, scheduler); } - static void cbfn(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { + static void cbfn(void* arg, grpc_error* error) { C* p = static_cast<C*>(arg); p->f_(); } @@ -220,11 +220,11 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; grpc_wakeup_fd wakeup_fd; GRPC_ERROR_UNREF(grpc_wakeup_fd_init(&wakeup_fd)); grpc_fd* wakeup = grpc_fd_create(wakeup_fd.read_fd, "wakeup_read"); - grpc_pollset_add_fd(&exec_ctx, ps, wakeup); + grpc_pollset_add_fd(ps, wakeup); bool done = false; Closure* continue_closure = MakeClosure( [&]() { @@ -234,25 +234,23 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { return; } GRPC_ERROR_UNREF(grpc_wakeup_fd_wakeup(&wakeup_fd)); - grpc_fd_notify_on_read(&exec_ctx, wakeup, continue_closure); + grpc_fd_notify_on_read(wakeup, continue_closure); }, grpc_schedule_on_exec_ctx); GRPC_ERROR_UNREF(grpc_wakeup_fd_wakeup(&wakeup_fd)); - grpc_fd_notify_on_read(&exec_ctx, wakeup, continue_closure); + grpc_fd_notify_on_read(wakeup, continue_closure); gpr_mu_lock(mu); while (!done) { - GRPC_ERROR_UNREF( - grpc_pollset_work(&exec_ctx, ps, NULL, GRPC_MILLIS_INF_FUTURE)); + GRPC_ERROR_UNREF(grpc_pollset_work(ps, NULL, GRPC_MILLIS_INF_FUTURE)); } - grpc_fd_orphan(&exec_ctx, wakeup, NULL, NULL, false /* already_closed */, - "done"); + grpc_fd_orphan(wakeup, NULL, NULL, false /* already_closed */, "done"); wakeup_fd.read_fd = 0; grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_wakeup_fd_destroy(&wakeup_fd); gpr_free(ps); track_counters.Finish(state); diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index a7f85045052..8a66f6fa0c8 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -167,7 +167,7 @@ class EndpointPairFixture : public BaseFixture { fixture_configuration.ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; /* add server endpoint to server_ * */ @@ -175,19 +175,19 @@ class EndpointPairFixture : public BaseFixture { const grpc_channel_args* server_args = grpc_server_get_channel_args(server_->c_server()); server_transport_ = grpc_create_chttp2_transport( - &exec_ctx, server_args, endpoints.server, 0 /* is_client */); + server_args, endpoints.server, 0 /* is_client */); grpc_pollset** pollsets; size_t num_pollsets = 0; grpc_server_get_pollsets(server_->c_server(), &pollsets, &num_pollsets); for (size_t i = 0; i < num_pollsets; i++) { - grpc_endpoint_add_to_pollset(&exec_ctx, endpoints.server, pollsets[i]); + grpc_endpoint_add_to_pollset(endpoints.server, pollsets[i]); } - grpc_server_setup_transport(&exec_ctx, server_->c_server(), - server_transport_, NULL, server_args); - grpc_chttp2_transport_start_reading(&exec_ctx, server_transport_, NULL); + grpc_server_setup_transport(server_->c_server(), server_transport_, NULL, + server_args); + grpc_chttp2_transport_start_reading(server_transport_, NULL); } /* create channel */ @@ -198,17 +198,16 @@ class EndpointPairFixture : public BaseFixture { grpc_channel_args c_args = args.c_channel_args(); client_transport_ = - grpc_create_chttp2_transport(&exec_ctx, &c_args, endpoints.client, 1); + grpc_create_chttp2_transport(&c_args, endpoints.client, 1); GPR_ASSERT(client_transport_); - grpc_channel* channel = - grpc_channel_create(&exec_ctx, "target", &c_args, - GRPC_CLIENT_DIRECT_CHANNEL, client_transport_); - grpc_chttp2_transport_start_reading(&exec_ctx, client_transport_, NULL); + grpc_channel* channel = grpc_channel_create( + "target", &c_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport_); + grpc_chttp2_transport_start_reading(client_transport_, NULL); channel_ = CreateChannelInternal("", channel); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } virtual ~EndpointPairFixture() { diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 7d0371bea4c..742fb8d966b 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -151,32 +151,32 @@ struct ArgsStruct { std::string expected_lb_policy; }; -void ArgsInit(grpc_exec_ctx *exec_ctx, ArgsStruct *args) { +void ArgsInit(ArgsStruct *args) { gpr_event_init(&args->ev); args->pollset = (grpc_pollset *)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(args->pollset, &args->mu); args->pollset_set = grpc_pollset_set_create(); - grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset); + grpc_pollset_set_add_pollset(args->pollset_set, args->pollset); args->lock = grpc_combiner_create(); gpr_atm_rel_store(&args->done_atm, 0); args->channel_args = NULL; } -void DoNothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +void DoNothing(void *arg, grpc_error *error) {} -void ArgsFinish(grpc_exec_ctx *exec_ctx, ArgsStruct *args) { +void ArgsFinish(ArgsStruct *args) { GPR_ASSERT(gpr_event_wait(&args->ev, TestDeadline())); - grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); - grpc_pollset_set_destroy(exec_ctx, args->pollset_set); + grpc_pollset_set_del_pollset(args->pollset_set, args->pollset); + grpc_pollset_set_destroy(args->pollset_set); grpc_closure DoNothing_cb; GRPC_CLOSURE_INIT(&DoNothing_cb, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, args->pollset, &DoNothing_cb); + grpc_pollset_shutdown(args->pollset, &DoNothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_channel_args_destroy(exec_ctx, args->channel_args); - grpc_exec_ctx_flush(exec_ctx); - grpc_pollset_destroy(exec_ctx, args->pollset); + grpc_channel_args_destroy(args->channel_args); + grpc_exec_ctx_flush(); + grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); - GRPC_COMBINER_UNREF(exec_ctx, args->lock, NULL); + GRPC_COMBINER_UNREF(args->lock, NULL); } gpr_timespec NSecondDeadline(int seconds) { @@ -197,14 +197,14 @@ void PollPollsetUntilRequestDone(ArgsStruct *args) { time_left.tv_sec, time_left.tv_nsec); GPR_ASSERT(gpr_time_cmp(time_left, gpr_time_0(GPR_TIMESPAN)) >= 0); grpc_pollset_worker *worker = NULL; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_mu_lock(args->mu); GRPC_LOG_IF_ERROR("pollset_work", - grpc_pollset_work(&exec_ctx, args->pollset, &worker, + grpc_pollset_work(args->pollset, &worker, grpc_timespec_to_millis_round_up( NSecondDeadline(1)))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } gpr_event_set(&args->ev, (void *)1); } @@ -236,8 +236,7 @@ void CheckLBPolicyResultLocked(grpc_channel_args *channel_args, } } -void CheckResolverResultLocked(grpc_exec_ctx *exec_ctx, void *argsp, - grpc_error *err) { +void CheckResolverResultLocked(void *argsp, grpc_error *err) { ArgsStruct *args = (ArgsStruct *)argsp; grpc_channel_args *channel_args = args->channel_args; const grpc_arg *channel_arg = @@ -272,15 +271,14 @@ void CheckResolverResultLocked(grpc_exec_ctx *exec_ctx, void *argsp, } gpr_atm_rel_store(&args->done_atm, 1); gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, args->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL)); gpr_mu_unlock(args->mu); } TEST(ResolverComponentTest, TestResolvesRelevantRecords) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; ArgsStruct args; - ArgsInit(&exec_ctx, &args); + ArgsInit(&args); args.expected_addrs = ParseExpectedAddrs(FLAGS_expected_addrs); args.expected_service_config_string = FLAGS_expected_chosen_service_config; args.expected_lb_policy = FLAGS_expected_lb_policy; @@ -290,19 +288,19 @@ TEST(ResolverComponentTest, TestResolvesRelevantRecords) { FLAGS_local_dns_server_address.c_str(), FLAGS_target_name.c_str())); // create resolver and resolve - grpc_resolver *resolver = grpc_resolver_create(&exec_ctx, whole_uri, NULL, - args.pollset_set, args.lock); + grpc_resolver *resolver = + grpc_resolver_create(whole_uri, NULL, args.pollset_set, args.lock); gpr_free(whole_uri); grpc_closure on_resolver_result_changed; GRPC_CLOSURE_INIT(&on_resolver_result_changed, CheckResolverResultLocked, (void *)&args, grpc_combiner_scheduler(args.lock)); - grpc_resolver_next_locked(&exec_ctx, resolver, &args.channel_args, + grpc_resolver_next_locked(resolver, &args.channel_args, &on_resolver_result_changed); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); PollPollsetUntilRequestDone(&args); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, NULL); - ArgsFinish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_RESOLVER_UNREF(resolver, NULL); + ArgsFinish(&args); + grpc_exec_ctx_finish(); } } // namespace diff --git a/test/cpp/performance/writes_per_rpc_test.cc b/test/cpp/performance/writes_per_rpc_test.cc index f4f794cb88f..0cf0fd00690 100644 --- a/test/cpp/performance/writes_per_rpc_test.cc +++ b/test/cpp/performance/writes_per_rpc_test.cc @@ -83,26 +83,26 @@ class EndpointPairFixture { ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; /* add server endpoint to server_ */ { const grpc_channel_args* server_args = grpc_server_get_channel_args(server_->c_server()); grpc_transport* transport = grpc_create_chttp2_transport( - &exec_ctx, server_args, endpoints.server, 0 /* is_client */); + server_args, endpoints.server, 0 /* is_client */); grpc_pollset** pollsets; size_t num_pollsets = 0; grpc_server_get_pollsets(server_->c_server(), &pollsets, &num_pollsets); for (size_t i = 0; i < num_pollsets; i++) { - grpc_endpoint_add_to_pollset(&exec_ctx, endpoints.server, pollsets[i]); + grpc_endpoint_add_to_pollset(endpoints.server, pollsets[i]); } - grpc_server_setup_transport(&exec_ctx, server_->c_server(), transport, - NULL, server_args); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + grpc_server_setup_transport(server_->c_server(), transport, NULL, + server_args); + grpc_chttp2_transport_start_reading(transport, NULL); } /* create channel */ @@ -113,16 +113,16 @@ class EndpointPairFixture { grpc_channel_args c_args = args.c_channel_args(); grpc_transport* transport = - grpc_create_chttp2_transport(&exec_ctx, &c_args, endpoints.client, 1); + grpc_create_chttp2_transport(&c_args, endpoints.client, 1); GPR_ASSERT(transport); grpc_channel* channel = grpc_channel_create( - &exec_ctx, "target", &c_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + "target", &c_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); + grpc_chttp2_transport_start_reading(transport, NULL); channel_ = CreateChannelInternal("", channel); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } virtual ~EndpointPairFixture() { diff --git a/tools/codegen/core/gen_stats_data.py b/tools/codegen/core/gen_stats_data.py index 072a6776152..d439d99a8c6 100755 --- a/tools/codegen/core/gen_stats_data.py +++ b/tools/codegen/core/gen_stats_data.py @@ -150,11 +150,11 @@ def gen_bucket_code(histogram): code = 'value = GPR_CLAMP(value, 0, %d);\n' % histogram.max map_table = gen_map_table(code_bounds[first_nontrivial:], shift_data) if first_nontrivial is None: - code += ('GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_%s, value);\n' + code += ('GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_%s, value);\n' % histogram.name.upper()) else: code += 'if (value < %d) {\n' % first_nontrivial - code += ('GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_%s, value);\n' + code += ('GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_%s, value);\n' % histogram.name.upper()) code += 'return;\n' code += '}' @@ -168,11 +168,11 @@ def gen_bucket_code(histogram): code += 'grpc_stats_table_%d[((_val.uint - %dull) >> %d)] + %d;\n' % (map_table_idx, first_nontrivial_code, shift_data[0], first_nontrivial) code += '_bkt.dbl = grpc_stats_table_%d[bucket];\n' % bounds_idx code += 'bucket -= (_val.uint < _bkt.uint);\n' - code += 'GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_%s, bucket);\n' % histogram.name.upper() + code += 'GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_%s, bucket);\n' % histogram.name.upper() code += 'return;\n' code += '}\n' - code += 'GRPC_STATS_INC_HISTOGRAM((exec_ctx), GRPC_STATS_HISTOGRAM_%s, '% histogram.name.upper() - code += 'grpc_stats_histo_find_bucket_slow((exec_ctx), value, grpc_stats_table_%d, %d));\n' % (bounds_idx, histogram.buckets) + code += 'GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_%s, '% histogram.name.upper() + code += 'grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_%d, %d));\n' % (bounds_idx, histogram.buckets) return (code, bounds_idx) # utility: print a big comment block into a set of files @@ -240,13 +240,13 @@ with open('src/core/lib/debug/stats_data.h', 'w') as H: print >>H, "} grpc_stats_histogram_constants;" for ctr in inst_map['Counter']: - print >>H, ("#define GRPC_STATS_INC_%s(exec_ctx) " + - "GRPC_STATS_INC_COUNTER((exec_ctx), GRPC_STATS_COUNTER_%s)") % ( + print >>H, ("#define GRPC_STATS_INC_%s() " + + "GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_%s)") % ( ctr.name.upper(), ctr.name.upper()) for histogram in inst_map['Histogram']: - print >>H, "#define GRPC_STATS_INC_%s(exec_ctx, value) grpc_stats_inc_%s((exec_ctx), (int)(value))" % ( + print >>H, "#define GRPC_STATS_INC_%s(value) grpc_stats_inc_%s( (int)(value))" % ( histogram.name.upper(), histogram.name.lower()) - print >>H, "void grpc_stats_inc_%s(grpc_exec_ctx *exec_ctx, int x);" % histogram.name.lower() + print >>H, "void grpc_stats_inc_%s(int x);" % histogram.name.lower() for i, tbl in enumerate(static_tables): print >>H, "extern const %s grpc_stats_table_%d[%d];" % (tbl[0], i, len(tbl[1])) @@ -254,7 +254,7 @@ with open('src/core/lib/debug/stats_data.h', 'w') as H: print >>H, "extern const int grpc_stats_histo_buckets[%d];" % len(inst_map['Histogram']) print >>H, "extern const int grpc_stats_histo_start[%d];" % len(inst_map['Histogram']) print >>H, "extern const int *const grpc_stats_histo_bucket_boundaries[%d];" % len(inst_map['Histogram']) - print >>H, "extern void (*const grpc_stats_inc_histogram[%d])(grpc_exec_ctx *exec_ctx, int x);" % len(inst_map['Histogram']) + print >>H, "extern void (*const grpc_stats_inc_histogram[%d])(int x);" % len(inst_map['Histogram']) print >>H print >>H, "#ifdef __cplusplus" @@ -309,7 +309,7 @@ with open('src/core/lib/debug/stats_data.cc', 'w') as C: tbl[0], i, len(tbl[1]), ','.join('%s' % x for x in tbl[1])) for histogram, code in zip(inst_map['Histogram'], histo_code): - print >>C, ("void grpc_stats_inc_%s(grpc_exec_ctx *exec_ctx, int value) {%s}") % ( + print >>C, ("void grpc_stats_inc_%s(int value) {%s}") % ( histogram.name.lower(), code) @@ -319,7 +319,7 @@ with open('src/core/lib/debug/stats_data.cc', 'w') as C: len(inst_map['Histogram']), ','.join('%s' % x for x in histo_start)) print >>C, "const int *const grpc_stats_histo_bucket_boundaries[%d] = {%s};" % ( len(inst_map['Histogram']), ','.join('grpc_stats_table_%d' % x for x in histo_bucket_boundaries)) - print >>C, "void (*const grpc_stats_inc_histogram[%d])(grpc_exec_ctx *exec_ctx, int x) = {%s};" % ( + print >>C, "void (*const grpc_stats_inc_histogram[%d])(int x) = {%s};" % ( len(inst_map['Histogram']), ','.join('grpc_stats_inc_%s' % histogram.name.lower() for histogram in inst_map['Histogram'])) # patch qps_test bigquery schema diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json index 2e18ed2e8a4..b3f4b4bc398 100644 --- a/tools/run_tests/generated/sources_and_headers.json +++ b/tools/run_tests/generated/sources_and_headers.json @@ -6064,7 +6064,7 @@ "test/core/end2end/data/server1_key.c", "test/core/end2end/data/ssl_test_data.h", "test/core/end2end/data/test_root_cert.c", - "test/core/security/oauth2_utils.c", + "test/core/security/oauth2_utils.cc", "test/core/security/oauth2_utils.h" ], "third_party": false, @@ -6153,7 +6153,7 @@ "language": "c", "name": "test_tcp_server", "src": [ - "test/core/util/test_tcp_server.c", + "test/core/util/test_tcp_server.cc", "test/core/util/test_tcp_server.h" ], "third_party": false, @@ -7510,7 +7510,7 @@ "language": "c", "name": "bad_client_test", "src": [ - "test/core/bad_client/bad_client.c", + "test/core/bad_client/bad_client.cc", "test/core/bad_client/bad_client.h" ], "third_party": false, @@ -8932,11 +8932,11 @@ "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h", "test/core/end2end/cq_verifier.c", "test/core/end2end/cq_verifier.h", - "test/core/end2end/fixtures/http_proxy_fixture.c", + "test/core/end2end/fixtures/http_proxy_fixture.cc", "test/core/end2end/fixtures/http_proxy_fixture.h", "test/core/end2end/fixtures/proxy.c", "test/core/end2end/fixtures/proxy.h", - "test/core/iomgr/endpoint_tests.c", + "test/core/iomgr/endpoint_tests.cc", "test/core/iomgr/endpoint_tests.h", "test/core/util/debugger_macros.cc", "test/core/util/debugger_macros.h", @@ -8944,19 +8944,19 @@ "test/core/util/grpc_profiler.h", "test/core/util/memory_counters.c", "test/core/util/memory_counters.h", - "test/core/util/mock_endpoint.c", + "test/core/util/mock_endpoint.cc", "test/core/util/mock_endpoint.h", "test/core/util/parse_hexstring.c", "test/core/util/parse_hexstring.h", - "test/core/util/passthru_endpoint.c", + "test/core/util/passthru_endpoint.cc", "test/core/util/passthru_endpoint.h", - "test/core/util/port.c", + "test/core/util/port.cc", "test/core/util/port.h", - "test/core/util/port_server_client.c", + "test/core/util/port_server_client.cc", "test/core/util/port_server_client.h", "test/core/util/slice_splitter.c", "test/core/util/slice_splitter.h", - "test/core/util/trickle_endpoint.c", + "test/core/util/trickle_endpoint.cc", "test/core/util/trickle_endpoint.h" ], "third_party": false, From cf9b084211d1f2d99b1ce4685801bca1557f2f7b Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Thu, 9 Nov 2017 18:11:24 -0800 Subject: [PATCH 02/22] Removing few more instances of exec_ctx --- src/core/lib/iomgr/closure.h | 2 +- src/core/lib/iomgr/tcp_server_uv.cc | 10 +++++----- src/core/lib/iomgr/tcp_uv.cc | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/lib/iomgr/closure.h b/src/core/lib/iomgr/closure.h index f68918875a2..63843ad76d6 100644 --- a/src/core/lib/iomgr/closure.h +++ b/src/core/lib/iomgr/closure.h @@ -162,7 +162,7 @@ bool grpc_closure_list_empty(grpc_closure_list list); void grpc_closure_run(const char* file, int line, grpc_closure* closure, grpc_error* error); #define GRPC_CLOSURE_RUN(closure, error) \ - grpc_closure_run(__FILE__, __LINE__, exec_ctx, closure, error) + grpc_closure_run(__FILE__, __LINE__, closure, error) #else void grpc_closure_run(grpc_closure* closure, grpc_error* error); #define GRPC_CLOSURE_RUN(closure, error) grpc_closure_run(closure, error) diff --git a/src/core/lib/iomgr/tcp_server_uv.cc b/src/core/lib/iomgr/tcp_server_uv.cc index 2116ec106c4..71226600daa 100644 --- a/src/core/lib/iomgr/tcp_server_uv.cc +++ b/src/core/lib/iomgr/tcp_server_uv.cc @@ -176,13 +176,13 @@ void grpc_tcp_server_unref(grpc_tcp_server* s) { if (gpr_unref(&s->refs)) { /* Complete shutdown_starting work before destroying. */ grpc_exec_ctx local_ExecCtx _local_exec_ctx; - GRPC_CLOSURE_LIST_SCHED(&local_exec_ctx, &s->shutdown_starting); + GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); if (exec_ctx == NULL) { - grpc_exec_ctx_flush(&local_exec_ctx); - tcp_server_destroy(&local_exec_ctx, s); - grpc_exec_ctx_finish(&local_exec_ctx); + grpc_exec_ctx_flush(); + tcp_server_destroy(s); + grpc_exec_ctx_finish(); } else { - grpc_exec_ctx_finish(&local_exec_ctx); + grpc_exec_ctx_finish(); tcp_server_destroy(s); } } diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index 9f2e1f79783..571c1d6f9a2 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -301,8 +301,7 @@ static void uv_add_to_pollset_set(grpc_endpoint* ep, (void)pollset; } -static void uv_delete_from_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_endpoint* ep, +static void uv_delete_from_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pollset) { // No-op. We're ignoring pollsets currently (void)exec_ctx; From 3150744c712449585e6c0a3347f2b9366671a8eb Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Thu, 9 Nov 2017 18:27:37 -0800 Subject: [PATCH 03/22] Removing more exec_ctx instances --- test/core/surface/completion_queue_test.cc | 16 +- test/cpp/common/channel_filter_test.cc | 4 +- test/cpp/end2end/client_lb_end2end_test.cc | 12 +- test/cpp/end2end/filter_end2end_test.cc | 7 +- test/cpp/end2end/grpclb_end2end_test.cc | 10 +- test/cpp/grpclb/grpclb_test.cc | 16 +- test/cpp/microbenchmarks/bm_call_create.cc | 136 ++++----- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 126 ++++----- .../microbenchmarks/bm_chttp2_transport.cc | 265 ++++++++---------- test/cpp/microbenchmarks/bm_closure.cc | 155 +++++----- test/cpp/microbenchmarks/bm_cq.cc | 20 +- .../microbenchmarks/bm_cq_multiple_threads.cc | 22 +- test/cpp/microbenchmarks/bm_error.cc | 18 +- .../microbenchmarks/bm_fullstack_trickle.cc | 6 +- test/cpp/microbenchmarks/bm_metadata.cc | 93 +++--- test/cpp/microbenchmarks/bm_pollset.cc | 44 ++- test/cpp/microbenchmarks/fullstack_fixtures.h | 23 +- test/cpp/naming/resolver_component_test.cc | 48 ++-- test/cpp/performance/writes_per_rpc_test.cc | 18 +- 19 files changed, 479 insertions(+), 560 deletions(-) diff --git a/test/core/surface/completion_queue_test.cc b/test/core/surface/completion_queue_test.cc index 63d8ea62684..f014738f4cb 100644 --- a/test/core/surface/completion_queue_test.cc +++ b/test/core/surface/completion_queue_test.cc @@ -129,8 +129,6 @@ static void test_cq_end_op(void) { grpc_cq_polling_type polling_types[] = { GRPC_CQ_DEFAULT_POLLING, GRPC_CQ_NON_LISTENING, GRPC_CQ_NON_POLLING}; grpc_completion_queue_attributes attr; - grpc_exec_ctx init_exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx exec_ctx; void* tag = create_test_tag(); LOG_TEST("test_cq_end_op"); @@ -138,7 +136,7 @@ static void test_cq_end_op(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - exec_ctx = init_exec_ctx; // Reset exec_ctx + ExecCtx _local_exec_ctx; attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); @@ -164,8 +162,6 @@ static void test_cq_tls_cache_full(void) { grpc_cq_polling_type polling_types[] = { GRPC_CQ_DEFAULT_POLLING, GRPC_CQ_NON_LISTENING, GRPC_CQ_NON_POLLING}; grpc_completion_queue_attributes attr; - grpc_exec_ctx init_exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx exec_ctx; void* tag = create_test_tag(); void* res_tag; int ok; @@ -175,7 +171,7 @@ static void test_cq_tls_cache_full(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - exec_ctx = init_exec_ctx; // Reset exec_ctx + ExecCtx _local_exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); @@ -206,8 +202,6 @@ static void test_cq_tls_cache_empty(void) { grpc_cq_polling_type polling_types[] = { GRPC_CQ_DEFAULT_POLLING, GRPC_CQ_NON_LISTENING, GRPC_CQ_NON_POLLING}; grpc_completion_queue_attributes attr; - grpc_exec_ctx init_exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx exec_ctx; void* res_tag; int ok; @@ -216,7 +210,7 @@ static void test_cq_tls_cache_empty(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - exec_ctx = init_exec_ctx; // Reset exec_ctx + ExecCtx _local_exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); @@ -284,8 +278,6 @@ static void test_pluck(void) { grpc_cq_polling_type polling_types[] = { GRPC_CQ_DEFAULT_POLLING, GRPC_CQ_NON_LISTENING, GRPC_CQ_NON_POLLING}; grpc_completion_queue_attributes attr; - grpc_exec_ctx init_exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_exec_ctx exec_ctx; unsigned i, j; LOG_TEST("test_pluck"); @@ -300,7 +292,7 @@ static void test_pluck(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_PLUCK; for (size_t pidx = 0; pidx < GPR_ARRAY_SIZE(polling_types); pidx++) { - exec_ctx = init_exec_ctx; // reset exec_ctx + ExecCtx _local_exec_ctx; // reset exec_ctx attr.cq_polling_type = polling_types[pidx]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); diff --git a/test/cpp/common/channel_filter_test.cc b/test/cpp/common/channel_filter_test.cc index 638518107bb..7bdd53f9e7a 100644 --- a/test/cpp/common/channel_filter_test.cc +++ b/test/cpp/common/channel_filter_test.cc @@ -28,7 +28,7 @@ class MyChannelData : public ChannelData { public: MyChannelData() {} - grpc_error* Init(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, + grpc_error* Init(grpc_channel_element* elem, grpc_channel_element_args* args) override { (void)args->channel_args; // Make sure field is available. return GRPC_ERROR_NONE; @@ -39,7 +39,7 @@ class MyCallData : public CallData { public: MyCallData() {} - grpc_error* Init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, + grpc_error* Init(grpc_call_element* elem, const grpc_call_element_args* args) override { (void)args->path; // Make sure field is available. return GRPC_ERROR_NONE; diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc index b2bbe56889d..df2ed0ecd00 100644 --- a/test/cpp/end2end/client_lb_end2end_test.cc +++ b/test/cpp/end2end/client_lb_end2end_test.cc @@ -117,7 +117,7 @@ class ClientLbEnd2endTest : public ::testing::Test { for (size_t i = 0; i < ports.size(); ++i) { char* lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:127.0.0.1:%d", ports[i]); - grpc_uri* lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != NULL); grpc_lb_addresses_set_address_from_uri(addresses, i, lb_uri, false /* is balancer */, @@ -129,11 +129,11 @@ class ClientLbEnd2endTest : public ::testing::Test { grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args* fake_result = grpc_channel_args_copy_and_add(NULL, &fake_addresses, 1); - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator_, fake_result); - grpc_channel_args_destroy(&exec_ctx, fake_result); - grpc_lb_addresses_destroy(&exec_ctx, addresses); - grpc_exec_ctx_finish(&exec_ctx); + grpc_fake_resolver_response_generator_set_response(response_generator_, + fake_result); + grpc_channel_args_destroy(fake_result); + grpc_lb_addresses_destroy(addresses); + grpc_exec_ctx_finish(); } void ResetStub(const grpc::string& lb_policy_name = "") { diff --git a/test/cpp/end2end/filter_end2end_test.cc b/test/cpp/end2end/filter_end2end_test.cc index f260ea0016d..c4430379dbf 100644 --- a/test/cpp/end2end/filter_end2end_test.cc +++ b/test/cpp/end2end/filter_end2end_test.cc @@ -100,7 +100,7 @@ int GetCallCounterValue() { class ChannelDataImpl : public ChannelData { public: - grpc_error* Init(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, + grpc_error* Init(grpc_channel_element* elem, grpc_channel_element_args* args) { IncrementConnectionCounter(); return GRPC_ERROR_NONE; @@ -109,13 +109,12 @@ class ChannelDataImpl : public ChannelData { class CallDataImpl : public CallData { public: - void StartTransportStreamOpBatch(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, + void StartTransportStreamOpBatch(grpc_call_element* elem, TransportStreamOpBatch* op) override { // Incrementing the counter could be done from Init(), but we want // to test that the individual methods are actually called correctly. if (op->recv_initial_metadata() != nullptr) IncrementCallCounter(); - grpc_call_next_op(exec_ctx, elem, op->op()); + grpc_call_next_op(elem, op->op()); } }; diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index a6682b3e2f0..62d7094d4ca 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -457,7 +457,7 @@ class GrpclbEnd2endTest : public ::testing::Test { for (size_t i = 0; i < address_data.size(); ++i) { char* lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:127.0.0.1:%d", address_data[i].port); - grpc_uri* lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != nullptr); grpc_lb_addresses_set_address_from_uri( addresses, i, lb_uri, address_data[i].is_balancer, @@ -467,10 +467,10 @@ class GrpclbEnd2endTest : public ::testing::Test { } grpc_arg fake_addresses = grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args fake_result = {1, &fake_addresses}; - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator_, &fake_result); - grpc_lb_addresses_destroy(&exec_ctx, addresses); - grpc_exec_ctx_finish(&exec_ctx); + grpc_fake_resolver_response_generator_set_response(response_generator_, + &fake_result); + grpc_lb_addresses_destroy(addresses); + grpc_exec_ctx_finish(); } const std::vector<int> GetBackendPorts(const size_t start_index = 0) const { diff --git a/test/cpp/grpclb/grpclb_test.cc b/test/cpp/grpclb/grpclb_test.cc index 0955e2683d4..c2c6c0b3370 100644 --- a/test/cpp/grpclb/grpclb_test.cc +++ b/test/cpp/grpclb/grpclb_test.cc @@ -570,7 +570,7 @@ static void setup_client(const server_fixture* lb_server, grpc_lb_addresses* addresses = grpc_lb_addresses_create(1, NULL); char* lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:%s", lb_server->servers_hostport); - grpc_uri* lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != NULL); grpc_lb_addresses_set_address_from_uri(addresses, 0, lb_uri, true, lb_server->balancer_name, NULL); @@ -582,7 +582,7 @@ static void setup_client(const server_fixture* lb_server, grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args* fake_result = grpc_channel_args_copy_and_add(NULL, &fake_addresses, 1); - grpc_lb_addresses_destroy(&exec_ctx, addresses); + grpc_lb_addresses_destroy(addresses); const grpc_arg new_args[] = { grpc_fake_transport_expected_targets_arg(expected_target_names), @@ -597,13 +597,13 @@ static void setup_client(const server_fixture* lb_server, grpc_fake_transport_security_credentials_create(); cf->client = grpc_secure_channel_create(fake_creds, cf->server_uri, args, NULL); - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator, fake_result); - grpc_channel_args_destroy(&exec_ctx, fake_result); - grpc_channel_credentials_unref(&exec_ctx, fake_creds); - grpc_channel_args_destroy(&exec_ctx, args); + grpc_fake_resolver_response_generator_set_response(response_generator, + fake_result); + grpc_channel_args_destroy(fake_result); + grpc_channel_credentials_unref(fake_creds); + grpc_channel_args_destroy(args); grpc_fake_resolver_response_generator_unref(response_generator); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } static void teardown_client(client_fixture* cf) { diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index c031aff1bb0..eac1c753c7a 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -311,12 +311,9 @@ static void BM_LameChannelCallCreateCoreSeparateBatch(benchmark::State& state) { } BENCHMARK(BM_LameChannelCallCreateCoreSeparateBatch); -static void FilterDestroy(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { - gpr_free(arg); -} +static void FilterDestroy(void* arg, grpc_error* error) { gpr_free(arg); } -static void DoNothing(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {} +static void DoNothing(void* arg, grpc_error* error) {} class FakeClientChannelFactory : public grpc_client_channel_factory { public: @@ -324,15 +321,12 @@ class FakeClientChannelFactory : public grpc_client_channel_factory { private: static void NoRef(grpc_client_channel_factory* factory) {} - static void NoUnref(grpc_exec_ctx* exec_ctx, - grpc_client_channel_factory* factory) {} - static grpc_subchannel* CreateSubchannel(grpc_exec_ctx* exec_ctx, - grpc_client_channel_factory* factory, + static void NoUnref(grpc_client_channel_factory* factory) {} + static grpc_subchannel* CreateSubchannel(grpc_client_channel_factory* factory, const grpc_subchannel_args* args) { return nullptr; } - static grpc_channel* CreateClientChannel(grpc_exec_ctx* exec_ctx, - grpc_client_channel_factory* factory, + static grpc_channel* CreateClientChannel(grpc_client_channel_factory* factory, const char* target, grpc_client_channel_type type, const grpc_channel_args* args) { @@ -366,36 +360,32 @@ struct Fixture { namespace dummy_filter { -static void StartTransportStreamOp(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static void StartTransportStreamOp(grpc_call_element* elem, grpc_transport_stream_op_batch* op) {} -static void StartTransportOp(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem, +static void StartTransportOp(grpc_channel_element* elem, grpc_transport_op* op) {} -static grpc_error* InitCallElem(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static grpc_error* InitCallElem(grpc_call_element* elem, const grpc_call_element_args* args) { return GRPC_ERROR_NONE; } -static void SetPollsetOrPollsetSet(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static void SetPollsetOrPollsetSet(grpc_call_element* elem, grpc_polling_entity* pollent) {} -static void DestroyCallElem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +static void DestroyCallElem(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_sched_closure) {} -grpc_error* InitChannelElem(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, +grpc_error* InitChannelElem(grpc_channel_element* elem, grpc_channel_element_args* args) { return GRPC_ERROR_NONE; } -void DestroyChannelElem(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem) {} +void DestroyChannelElem(grpc_channel_element* elem) {} -void GetChannelInfo(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, +void GetChannelInfo(grpc_channel_element* elem, const grpc_channel_info* channel_info) {} static const grpc_channel_filter dummy_filter = {StartTransportStreamOp, @@ -422,41 +412,38 @@ size_t sizeof_stream; /* = sizeof(transport stream) */ const char* name; /* implementation of grpc_transport_init_stream */ -int InitStream(grpc_exec_ctx* exec_ctx, grpc_transport* self, - grpc_stream* stream, grpc_stream_refcount* refcount, - const void* server_data, gpr_arena* arena) { +int InitStream(grpc_transport* self, grpc_stream* stream, + grpc_stream_refcount* refcount, const void* server_data, + gpr_arena* arena) { return 0; } /* implementation of grpc_transport_set_pollset */ -void SetPollset(grpc_exec_ctx* exec_ctx, grpc_transport* self, - grpc_stream* stream, grpc_pollset* pollset) {} +void SetPollset(grpc_transport* self, grpc_stream* stream, + grpc_pollset* pollset) {} /* implementation of grpc_transport_set_pollset */ -void SetPollsetSet(grpc_exec_ctx* exec_ctx, grpc_transport* self, - grpc_stream* stream, grpc_pollset_set* pollset_set) {} +void SetPollsetSet(grpc_transport* self, grpc_stream* stream, + grpc_pollset_set* pollset_set) {} /* implementation of grpc_transport_perform_stream_op */ -void PerformStreamOp(grpc_exec_ctx* exec_ctx, grpc_transport* self, - grpc_stream* stream, grpc_transport_stream_op_batch* op) { - GRPC_CLOSURE_SCHED(exec_ctx, op->on_complete, GRPC_ERROR_NONE); +void PerformStreamOp(grpc_transport* self, grpc_stream* stream, + grpc_transport_stream_op_batch* op) { + GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_NONE); } /* implementation of grpc_transport_perform_op */ -void PerformOp(grpc_exec_ctx* exec_ctx, grpc_transport* self, - grpc_transport_op* op) {} +void PerformOp(grpc_transport* self, grpc_transport_op* op) {} /* implementation of grpc_transport_destroy_stream */ -void DestroyStream(grpc_exec_ctx* exec_ctx, grpc_transport* self, - grpc_stream* stream, grpc_closure* then_sched_closure) {} +void DestroyStream(grpc_transport* self, grpc_stream* stream, + grpc_closure* then_sched_closure) {} /* implementation of grpc_transport_destroy */ -void Destroy(grpc_exec_ctx* exec_ctx, grpc_transport* self) {} +void Destroy(grpc_transport* self) {} /* implementation of grpc_transport_get_endpoint */ -grpc_endpoint* GetEndpoint(grpc_exec_ctx* exec_ctx, grpc_transport* self) { - return nullptr; -} +grpc_endpoint* GetEndpoint(grpc_transport* self) { return nullptr; } static const grpc_transport_vtable dummy_transport_vtable = { 0, "dummy_http2", InitStream, @@ -472,8 +459,8 @@ class NoOp { public: class Op { public: - Op(grpc_exec_ctx* exec_ctx, NoOp* p, grpc_call_stack* s) {} - void Finish(grpc_exec_ctx* exec_ctx) {} + Op(NoOp* p, grpc_call_stack* s) {} + void Finish() {} }; }; @@ -489,13 +476,11 @@ class SendEmptyMetadata { class Op { public: - Op(grpc_exec_ctx* exec_ctx, SendEmptyMetadata* p, grpc_call_stack* s) { + Op(SendEmptyMetadata* p, grpc_call_stack* s) { grpc_metadata_batch_init(&batch_); p->op_payload_.send_initial_metadata.send_initial_metadata = &batch_; } - void Finish(grpc_exec_ctx* exec_ctx) { - grpc_metadata_batch_destroy(exec_ctx, &batch_); - } + void Finish() { grpc_metadata_batch_destroy(&batch_); } private: grpc_metadata_batch batch_; @@ -543,13 +528,13 @@ static void BM_IsolatedFilter(benchmark::State& state) { static_cast<grpc_channel_stack*>(gpr_zalloc(channel_size)); GPR_ASSERT(GRPC_LOG_IF_ERROR( "channel_stack_init", - grpc_channel_stack_init(&exec_ctx, 1, FilterDestroy, channel_stack, - &filters[0], filters.size(), &channel_args, + grpc_channel_stack_init(1, FilterDestroy, channel_stack, &filters[0], + filters.size(), &channel_args, fixture.flags & REQUIRES_TRANSPORT ? &dummy_transport::dummy_transport : nullptr, "CHANNEL", channel_stack))); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); grpc_call_stack* call_stack = static_cast<grpc_call_stack*>(gpr_zalloc(channel_stack->call_stack_size)); grpc_millis deadline = GRPC_MILLIS_INF_FUTURE; @@ -568,12 +553,12 @@ static void BM_IsolatedFilter(benchmark::State& state) { call_args.arena = gpr_arena_create(kArenaSize); while (state.KeepRunning()) { GPR_TIMER_SCOPE("BenchmarkCycle", 0); - GRPC_ERROR_UNREF(grpc_call_stack_init(&exec_ctx, channel_stack, 1, - DoNothing, NULL, &call_args)); - typename TestOp::Op op(&exec_ctx, &test_op_data, call_stack); - grpc_call_stack_destroy(&exec_ctx, call_stack, &final_info, NULL); - op.Finish(&exec_ctx); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_ERROR_UNREF( + grpc_call_stack_init(channel_stack, 1, DoNothing, NULL, &call_args)); + typename TestOp::Op op(&test_op_data, call_stack); + grpc_call_stack_destroy(call_stack, &final_info, NULL); + op.Finish(); + grpc_exec_ctx_flush(); // recreate arena every 64k iterations to avoid oom if (0 == (state.iterations() & 0xffff)) { gpr_arena_destroy(call_args.arena); @@ -581,8 +566,8 @@ static void BM_IsolatedFilter(benchmark::State& state) { } } gpr_arena_destroy(call_args.arena); - grpc_channel_stack_destroy(&exec_ctx, channel_stack); - grpc_exec_ctx_finish(&exec_ctx); + grpc_channel_stack_destroy(channel_stack); + grpc_exec_ctx_finish(); gpr_free(channel_stack); gpr_free(call_stack); @@ -632,59 +617,55 @@ typedef struct { grpc_call_combiner* call_combiner; } call_data; -static void StartTransportStreamOp(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static void StartTransportStreamOp(grpc_call_element* elem, grpc_transport_stream_op_batch* op) { call_data* calld = static_cast<call_data*>(elem->call_data); if (op->recv_initial_metadata) { GRPC_CALL_COMBINER_START( - exec_ctx, calld->call_combiner, + calld->call_combiner, op->payload->recv_initial_metadata.recv_initial_metadata_ready, GRPC_ERROR_NONE, "recv_initial_metadata"); } if (op->recv_message) { - GRPC_CALL_COMBINER_START(exec_ctx, calld->call_combiner, + GRPC_CALL_COMBINER_START(calld->call_combiner, op->payload->recv_message.recv_message_ready, GRPC_ERROR_NONE, "recv_message"); } - GRPC_CLOSURE_SCHED(exec_ctx, op->on_complete, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_complete, GRPC_ERROR_NONE); } -static void StartTransportOp(grpc_exec_ctx* exec_ctx, - grpc_channel_element* elem, +static void StartTransportOp(grpc_channel_element* elem, grpc_transport_op* op) { if (op->disconnect_with_error != GRPC_ERROR_NONE) { GRPC_ERROR_UNREF(op->disconnect_with_error); } - GRPC_CLOSURE_SCHED(exec_ctx, op->on_consumed, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(op->on_consumed, GRPC_ERROR_NONE); } -static grpc_error* InitCallElem(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static grpc_error* InitCallElem(grpc_call_element* elem, const grpc_call_element_args* args) { call_data* calld = static_cast<call_data*>(elem->call_data); calld->call_combiner = args->call_combiner; return GRPC_ERROR_NONE; } -static void SetPollsetOrPollsetSet(grpc_exec_ctx* exec_ctx, - grpc_call_element* elem, +static void SetPollsetOrPollsetSet(grpc_call_element* elem, grpc_polling_entity* pollent) {} -static void DestroyCallElem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem, +static void DestroyCallElem(grpc_call_element* elem, const grpc_call_final_info* final_info, grpc_closure* then_sched_closure) { - GRPC_CLOSURE_SCHED(exec_ctx, then_sched_closure, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(then_sched_closure, GRPC_ERROR_NONE); } -grpc_error* InitChannelElem(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, +grpc_error* InitChannelElem(grpc_channel_element* elem, grpc_channel_element_args* args) { return GRPC_ERROR_NONE; } -void DestroyChannelElem(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem) {} +void DestroyChannelElem(grpc_channel_element* elem) {} -void GetChannelInfo(grpc_exec_ctx* exec_ctx, grpc_channel_element* elem, +void GetChannelInfo(grpc_channel_element* elem, const grpc_channel_info* channel_info) {} static const grpc_channel_filter isolated_call_filter = { @@ -711,9 +692,8 @@ class IsolatedCallFixture : public TrackCounters { builder, &isolated_call_filter::isolated_call_filter, NULL, NULL)); { ExecCtx _local_exec_ctx; - channel_ = grpc_channel_create_with_builder(&exec_ctx, builder, - GRPC_CLIENT_CHANNEL); - grpc_exec_ctx_finish(&exec_ctx); + channel_ = grpc_channel_create_with_builder(builder, GRPC_CLIENT_CHANNEL); + grpc_exec_ctx_finish(); } cq_ = grpc_completion_queue_create_for_next(NULL); } diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index a1bfc6997f8..f9d02ee5041 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -54,10 +54,10 @@ static void BM_HpackEncoderInitDestroy(benchmark::State& state) { grpc_chttp2_hpack_compressor c; while (state.KeepRunning()) { grpc_chttp2_hpack_compressor_init(&c); - grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c); - grpc_exec_ctx_flush(&exec_ctx); + grpc_chttp2_hpack_compressor_destroy(&c); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_HpackEncoderInitDestroy); @@ -65,7 +65,7 @@ BENCHMARK(BM_HpackEncoderInitDestroy); static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; - grpc_millis saved_now = grpc_exec_ctx_now(&exec_ctx); + grpc_millis saved_now = grpc_exec_ctx_now(); grpc_metadata_batch b; grpc_metadata_batch_init(&b); @@ -85,14 +85,14 @@ static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { (size_t)1024, &stats, }; - grpc_chttp2_encode_header(&exec_ctx, &c, NULL, 0, &b, &hopt, &outbuf); - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &outbuf); - grpc_exec_ctx_flush(&exec_ctx); + grpc_chttp2_encode_header(&c, NULL, 0, &b, &hopt, &outbuf); + grpc_slice_buffer_reset_and_unref_internal(&outbuf); + grpc_exec_ctx_flush(); } - grpc_metadata_batch_destroy(&exec_ctx, &b); - grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c); - grpc_slice_buffer_destroy_internal(&exec_ctx, &outbuf); - grpc_exec_ctx_finish(&exec_ctx); + grpc_metadata_batch_destroy(&b); + grpc_chttp2_hpack_compressor_destroy(&c); + grpc_slice_buffer_destroy_internal(&outbuf); + grpc_exec_ctx_finish(); std::ostringstream label; label << "framing_bytes/iter:" @@ -114,12 +114,11 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { grpc_metadata_batch b; grpc_metadata_batch_init(&b); - std::vector<grpc_mdelem> elems = Fixture::GetElems(&exec_ctx); + std::vector<grpc_mdelem> elems = Fixture::GetElems(); std::vector<grpc_linked_mdelem> storage(elems.size()); for (size_t i = 0; i < elems.size(); i++) { GPR_ASSERT(GRPC_LOG_IF_ERROR( - "addmd", - grpc_metadata_batch_add_tail(&exec_ctx, &b, &storage[i], elems[i]))); + "addmd", grpc_metadata_batch_add_tail(&b, &storage[i], elems[i]))); } grpc_chttp2_hpack_compressor c; @@ -136,7 +135,7 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { (size_t)state.range(1), &stats, }; - grpc_chttp2_encode_header(&exec_ctx, &c, NULL, 0, &b, &hopt, &outbuf); + grpc_chttp2_encode_header(&c, NULL, 0, &b, &hopt, &outbuf); if (!logged_representative_output && state.iterations() > 3) { logged_representative_output = true; for (size_t i = 0; i < outbuf.count; i++) { @@ -145,13 +144,13 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { gpr_free(s); } } - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &outbuf); - grpc_exec_ctx_flush(&exec_ctx); + grpc_slice_buffer_reset_and_unref_internal(&outbuf); + grpc_exec_ctx_flush(); } - grpc_metadata_batch_destroy(&exec_ctx, &b); - grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c); - grpc_slice_buffer_destroy_internal(&exec_ctx, &outbuf); - grpc_exec_ctx_finish(&exec_ctx); + grpc_metadata_batch_destroy(&b); + grpc_chttp2_hpack_compressor_destroy(&c); + grpc_slice_buffer_destroy_internal(&outbuf); + grpc_exec_ctx_finish(); std::ostringstream label; label << "framing_bytes/iter:" @@ -169,15 +168,13 @@ namespace hpack_encoder_fixtures { class EmptyBatch { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { - return {}; - } + static std::vector<grpc_mdelem> GetElems() { return {}; } }; class SingleStaticElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE}; } }; @@ -185,9 +182,9 @@ class SingleStaticElem { class SingleInternedElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")), + grpc_slice_intern(grpc_slice_from_static_string("abc")), grpc_slice_intern(grpc_slice_from_static_string("def")))}; } }; @@ -196,10 +193,10 @@ template <int kLength, bool kTrueBinary> class SingleInternedBinaryElem { public: static constexpr bool kEnableTrueBinary = kTrueBinary; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { grpc_slice bytes = MakeBytes(); std::vector<grpc_mdelem> out = {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc-bin")), + grpc_slice_intern(grpc_slice_from_static_string("abc-bin")), grpc_slice_intern(bytes))}; grpc_slice_unref(bytes); return out; @@ -218,9 +215,9 @@ class SingleInternedBinaryElem { class SingleInternedKeyElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")), + grpc_slice_intern(grpc_slice_from_static_string("abc")), grpc_slice_from_static_string("def"))}; } }; @@ -228,9 +225,8 @@ class SingleInternedKeyElem { class SingleNonInternedElem { public: static constexpr bool kEnableTrueBinary = false; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { - return {grpc_mdelem_from_slices(exec_ctx, - grpc_slice_from_static_string("abc"), + static std::vector<grpc_mdelem> GetElems() { + return {grpc_mdelem_from_slices(grpc_slice_from_static_string("abc"), grpc_slice_from_static_string("def"))}; } }; @@ -239,9 +235,9 @@ template <int kLength, bool kTrueBinary> class SingleNonInternedBinaryElem { public: static constexpr bool kEnableTrueBinary = kTrueBinary; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { - return {grpc_mdelem_from_slices( - exec_ctx, grpc_slice_from_static_string("abc-bin"), MakeBytes())}; + static std::vector<grpc_mdelem> GetElems() { + return {grpc_mdelem_from_slices(grpc_slice_from_static_string("abc-bin"), + MakeBytes())}; } private: @@ -257,21 +253,21 @@ class SingleNonInternedBinaryElem { class RepresentativeClientInitialMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return { GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_PATH, + GRPC_MDSTR_PATH, grpc_slice_intern(grpc_slice_from_static_string("/foo/bar"))), - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY, + grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_intern(grpc_slice_from_static_string( "foo.test.google.fr:1234"))), GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP, GRPC_MDELEM_TE_TRAILERS, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_USER_AGENT, + GRPC_MDSTR_USER_AGENT, grpc_slice_intern(grpc_slice_from_static_string( "grpc-c/3.0.0-dev (linux; chttp2; green)")))}; } @@ -283,18 +279,18 @@ class RepresentativeClientInitialMetadata { class MoreRepresentativeClientInitialMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return { GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST, - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_PATH, + grpc_mdelem_from_slices(GRPC_MDSTR_PATH, grpc_slice_intern(grpc_slice_from_static_string( "/grpc.test.FooService/BarMethod"))), - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY, + grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_intern(grpc_slice_from_static_string( "foo.test.google.fr:1234"))), grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_GRPC_TRACE_BIN, + GRPC_MDSTR_GRPC_TRACE_BIN, grpc_slice_from_static_string("\x00\x01\x02\x03\x04\x05\x06\x07\x08" "\x09\x0a\x0b\x0c\x0d\x0e\x0f" "\x10\x11\x12\x13\x14\x15\x16\x17\x18" @@ -303,7 +299,7 @@ class MoreRepresentativeClientInitialMetadata { "\x29\x2a\x2b\x2c\x2d\x2e\x2f" "\x30")), grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_GRPC_TAGS_BIN, + GRPC_MDSTR_GRPC_TAGS_BIN, grpc_slice_from_static_string("\x00\x01\x02\x03\x04\x05\x06\x07\x08" "\x09\x0a\x0b\x0c\x0d\x0e\x0f" "\x10\x11\x12\x13")), @@ -311,7 +307,7 @@ class MoreRepresentativeClientInitialMetadata { GRPC_MDELEM_TE_TRAILERS, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_USER_AGENT, + GRPC_MDSTR_USER_AGENT, grpc_slice_intern(grpc_slice_from_static_string( "grpc-c/3.0.0-dev (linux; chttp2; green)")))}; } @@ -320,7 +316,7 @@ class MoreRepresentativeClientInitialMetadata { class RepresentativeServerInitialMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {GRPC_MDELEM_STATUS_200, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP}; @@ -330,7 +326,7 @@ class RepresentativeServerInitialMetadata { class RepresentativeServerTrailingMetadata { public: static constexpr bool kEnableTrueBinary = true; - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return {GRPC_MDELEM_GRPC_STATUS_0}; } }; @@ -434,18 +430,17 @@ static void BM_HpackParserInitDestroy(benchmark::State& state) { ExecCtx _local_exec_ctx; grpc_chttp2_hpack_parser p; while (state.KeepRunning()) { - grpc_chttp2_hpack_parser_init(&exec_ctx, &p); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &p); - grpc_exec_ctx_flush(&exec_ctx); + grpc_chttp2_hpack_parser_init(&p); + grpc_chttp2_hpack_parser_destroy(&p); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_HpackParserInitDestroy); -static void UnrefHeader(grpc_exec_ctx* exec_ctx, void* user_data, - grpc_mdelem md) { - GRPC_MDELEM_UNREF(exec_ctx, md); +static void UnrefHeader(void* user_data, grpc_mdelem md) { + GRPC_MDELEM_UNREF(md); } template <class Fixture, void (*OnHeader)(grpc_exec_ctx*, void*, grpc_mdelem)> @@ -455,24 +450,22 @@ static void BM_HpackParserParseHeader(benchmark::State& state) { std::vector<grpc_slice> init_slices = Fixture::GetInitSlices(); std::vector<grpc_slice> benchmark_slices = Fixture::GetBenchmarkSlices(); grpc_chttp2_hpack_parser p; - grpc_chttp2_hpack_parser_init(&exec_ctx, &p); + grpc_chttp2_hpack_parser_init(&p); p.on_header = OnHeader; p.on_header_user_data = nullptr; for (auto slice : init_slices) { - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_chttp2_hpack_parser_parse(&exec_ctx, &p, slice)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_chttp2_hpack_parser_parse(&p, slice)); } while (state.KeepRunning()) { for (auto slice : benchmark_slices) { - GPR_ASSERT(GRPC_ERROR_NONE == - grpc_chttp2_hpack_parser_parse(&exec_ctx, &p, slice)); + GPR_ASSERT(GRPC_ERROR_NONE == grpc_chttp2_hpack_parser_parse(&p, slice)); } - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } for (auto slice : init_slices) grpc_slice_unref(slice); for (auto slice : benchmark_slices) grpc_slice_unref(slice); - grpc_chttp2_hpack_parser_destroy(&exec_ctx, &p); - grpc_exec_ctx_finish(&exec_ctx); + grpc_chttp2_hpack_parser_destroy(&p); + grpc_exec_ctx_finish(); track_counters.Finish(state); } @@ -769,8 +762,7 @@ class RepresentativeServerTrailingMetadata { static void free_timeout(void* p) { gpr_free(p); } // New implementation. -static void OnHeaderNew(grpc_exec_ctx* exec_ctx, void* user_data, - grpc_mdelem md) { +static void OnHeaderNew(void* user_data, grpc_mdelem md) { if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_GRPC_TIMEOUT)) { grpc_millis* cached_timeout = static_cast<grpc_millis*>(grpc_mdelem_get_user_data(md, free_timeout)); @@ -793,7 +785,7 @@ static void OnHeaderNew(grpc_exec_ctx* exec_ctx, void* user_data, } } benchmark::DoNotOptimize(timeout); - GRPC_MDELEM_UNREF(exec_ctx, md); + GRPC_MDELEM_UNREF(md); } else { GPR_ASSERT(0); } diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index 154cc917785..a32b841501e 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -58,7 +58,7 @@ class DummyEndpoint : public grpc_endpoint { ru_ = grpc_resource_user_create(Library::get().rq(), "dummy_endpoint"); } - void PushInput(grpc_exec_ctx* exec_ctx, grpc_slice slice) { + void PushInput(grpc_slice slice) { if (read_cb_ == nullptr) { GPR_ASSERT(!have_slice_); buffered_slice_ = slice; @@ -66,7 +66,7 @@ class DummyEndpoint : public grpc_endpoint { return; } grpc_slice_buffer_add(slices_, slice); - GRPC_CLOSURE_SCHED(exec_ctx, read_cb_, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(read_cb_, GRPC_ERROR_NONE); read_cb_ = nullptr; } @@ -77,50 +77,45 @@ class DummyEndpoint : public grpc_endpoint { bool have_slice_ = false; grpc_slice buffered_slice_; - void QueueRead(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* slices, - grpc_closure* cb) { + void QueueRead(grpc_slice_buffer* slices, grpc_closure* cb) { GPR_ASSERT(read_cb_ == nullptr); if (have_slice_) { have_slice_ = false; grpc_slice_buffer_add(slices, buffered_slice_); - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); return; } read_cb_ = cb; slices_ = slices; } - static void read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_slice_buffer* slices, grpc_closure* cb) { - static_cast<DummyEndpoint*>(ep)->QueueRead(exec_ctx, slices, cb); + static void read(grpc_endpoint* ep, grpc_slice_buffer* slices, + grpc_closure* cb) { + static_cast<DummyEndpoint*>(ep)->QueueRead(slices, cb); } - static void write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_slice_buffer* slices, grpc_closure* cb) { - GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE); + static void write(grpc_endpoint* ep, grpc_slice_buffer* slices, + grpc_closure* cb) { + GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE); } static grpc_workqueue* get_workqueue(grpc_endpoint* ep) { return NULL; } - static void add_to_pollset(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_pollset* pollset) {} + static void add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {} - static void add_to_pollset_set(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_pollset_set* pollset) {} + static void add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pollset) { + } - static void delete_from_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_endpoint* ep, + static void delete_from_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pollset) {} - static void shutdown(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, - grpc_error* why) { - grpc_resource_user_shutdown(exec_ctx, static_cast<DummyEndpoint*>(ep)->ru_); - GRPC_CLOSURE_SCHED(exec_ctx, static_cast<DummyEndpoint*>(ep)->read_cb_, - why); + static void shutdown(grpc_endpoint* ep, grpc_error* why) { + grpc_resource_user_shutdown(static_cast<DummyEndpoint*>(ep)->ru_); + GRPC_CLOSURE_SCHED(static_cast<DummyEndpoint*>(ep)->read_cb_, why); } - static void destroy(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep) { - grpc_resource_user_unref(exec_ctx, static_cast<DummyEndpoint*>(ep)->ru_); + static void destroy(grpc_endpoint* ep) { + grpc_resource_user_unref(static_cast<DummyEndpoint*>(ep)->ru_); delete static_cast<DummyEndpoint*>(ep); } @@ -136,29 +131,28 @@ class Fixture { Fixture(const grpc::ChannelArguments& args, bool client) { grpc_channel_args c_args = args.c_channel_args(); ep_ = new DummyEndpoint; - t_ = grpc_create_chttp2_transport(exec_ctx(), &c_args, ep_, client); - grpc_chttp2_transport_start_reading(exec_ctx(), t_, NULL); + t_ = grpc_create_chttp2_transport(&c_args, ep_, client); + grpc_chttp2_transport_start_reading(t_, NULL); FlushExecCtx(); } - void FlushExecCtx() { grpc_exec_ctx_flush(&exec_ctx_); } + void FlushExecCtx() { grpc_exec_ctx_flush(); } ~Fixture() { - grpc_transport_destroy(&exec_ctx_, t_); - grpc_exec_ctx_finish(&exec_ctx_); + grpc_transport_destroy(t_); + grpc_exec_ctx_finish(); } grpc_chttp2_transport* chttp2_transport() { return reinterpret_cast<grpc_chttp2_transport*>(t_); } grpc_transport* transport() { return t_; } - grpc_exec_ctx* exec_ctx() { return &exec_ctx_; } - void PushInput(grpc_slice slice) { ep_->PushInput(exec_ctx(), slice); } + void PushInput(grpc_slice slice) { ep_->PushInput(slice); } private: DummyEndpoint* ep_; - grpc_exec_ctx exec_ctx_ = GRPC_EXEC_CTX_INIT; + grpc_exec_ctx _local_exec_ctx; grpc_transport* t_; }; @@ -175,8 +169,8 @@ std::unique_ptr<Closure> MakeClosure( GRPC_CLOSURE_INIT(this, Execute, this, sched); } F f_; - static void Execute(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { - static_cast<C*>(arg)->f_(exec_ctx, error); + static void Execute(void* arg, grpc_error* error) { + static_cast<C*>(arg)->f_(error); } }; return std::unique_ptr<Closure>(new C(f, sched)); @@ -188,8 +182,8 @@ grpc_closure* MakeOnceClosure( struct C : public grpc_closure { C(const F& f) : f_(f) {} F f_; - static void Execute(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { - static_cast<C*>(arg)->f_(exec_ctx, error); + static void Execute(void* arg, grpc_error* error) { + static_cast<C*>(arg)->f_(error); delete static_cast<C*>(arg); } }; @@ -220,22 +214,22 @@ class Stream { gpr_arena_destroy(arena_); arena_ = gpr_arena_create(4096); } - grpc_transport_init_stream(f_->exec_ctx(), f_->transport(), + grpc_transport_init_stream(f_->transport(), static_cast<grpc_stream*>(stream_), &refcount_, NULL, arena_); } - void DestroyThen(grpc_exec_ctx* exec_ctx, grpc_closure* closure) { + void DestroyThen(grpc_closure* closure) { destroy_closure_ = closure; #ifndef NDEBUG - grpc_stream_unref(exec_ctx, &refcount_, "DestroyThen"); + grpc_stream_unref(&refcount_, "DestroyThen"); #else - grpc_stream_unref(exec_ctx, &refcount_); + grpc_stream_unref(&refcount_); #endif } - void Op(grpc_exec_ctx* exec_ctx, grpc_transport_stream_op_batch* op) { - grpc_transport_perform_stream_op(exec_ctx, f_->transport(), + void Op(grpc_transport_stream_op_batch* op) { + grpc_transport_perform_stream_op(f_->transport(), static_cast<grpc_stream*>(stream_), op); } @@ -244,10 +238,9 @@ class Stream { } private: - static void FinishDestroy(grpc_exec_ctx* exec_ctx, void* arg, - grpc_error* error) { + static void FinishDestroy(void* arg, grpc_error* error) { auto stream = static_cast<Stream*>(arg); - grpc_transport_destroy_stream(exec_ctx, stream->f_->transport(), + grpc_transport_destroy_stream(stream->f_->transport(), static_cast<grpc_stream*>(stream->stream_), stream->destroy_closure_); gpr_event_set(&stream->done_, (void*)1); @@ -276,14 +269,13 @@ static void BM_StreamCreateDestroy(benchmark::State& state) { op.cancel_stream = true; op.payload = &op_payload; op_payload.cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; - std::unique_ptr<Closure> next = - MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { - if (!state.KeepRunning()) return; - s.Init(state); - s.Op(exec_ctx, &op); - s.DestroyThen(exec_ctx, next.get()); - }); - GRPC_CLOSURE_RUN(f.exec_ctx(), next.get(), GRPC_ERROR_NONE); + std::unique_ptr<Closure> next = MakeClosure([&](grpc_error* error) { + if (!state.KeepRunning()) return; + s.Init(state); + s.Op(&op); + s.DestroyThen(next.get()); + }); + GRPC_CLOSURE_RUN(next.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); track_counters.Finish(state); } @@ -291,21 +283,21 @@ BENCHMARK(BM_StreamCreateDestroy); class RepresentativeClientInitialMetadata { public: - static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx* exec_ctx) { + static std::vector<grpc_mdelem> GetElems() { return { GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_PATH, + GRPC_MDSTR_PATH, grpc_slice_intern(grpc_slice_from_static_string("/foo/bar"))), - grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY, + grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY, grpc_slice_intern(grpc_slice_from_static_string( "foo.test.google.fr:1234"))), GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP, GRPC_MDELEM_TE_TRAILERS, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC, grpc_mdelem_from_slices( - exec_ctx, GRPC_MDSTR_USER_AGENT, + GRPC_MDSTR_USER_AGENT, grpc_slice_intern(grpc_slice_from_static_string( "grpc-c/3.0.0-dev (linux; chttp2; green)")))}; } @@ -330,34 +322,33 @@ static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State& state) { grpc_metadata_batch b; grpc_metadata_batch_init(&b); b.deadline = GRPC_MILLIS_INF_FUTURE; - std::vector<grpc_mdelem> elems = Metadata::GetElems(f.exec_ctx()); + std::vector<grpc_mdelem> elems = Metadata::GetElems(); std::vector<grpc_linked_mdelem> storage(elems.size()); for (size_t i = 0; i < elems.size(); i++) { GPR_ASSERT(GRPC_LOG_IF_ERROR( - "addmd", - grpc_metadata_batch_add_tail(f.exec_ctx(), &b, &storage[i], elems[i]))); + "addmd", grpc_metadata_batch_add_tail(&b, &storage[i], elems[i]))); } f.FlushExecCtx(); - start = MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { + start = MakeClosure([&](grpc_error* error) { if (!state.KeepRunning()) return; s.Init(state); reset_op(); op.on_complete = done.get(); op.send_initial_metadata = true; op.payload->send_initial_metadata.send_initial_metadata = &b; - s.Op(exec_ctx, &op); + s.Op(&op); }); - done = MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { + done = MakeClosure([&](grpc_error* error) { reset_op(); op.cancel_stream = true; op.payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; - s.Op(exec_ctx, &op); - s.DestroyThen(exec_ctx, start.get()); + s.Op(&op); + s.DestroyThen(start.get()); }); - GRPC_CLOSURE_SCHED(f.exec_ctx(), start.get(), GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(start.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); - grpc_metadata_batch_destroy(f.exec_ctx(), &b); + grpc_metadata_batch_destroy(&b); track_counters.Finish(state); } BENCHMARK_TEMPLATE(BM_StreamCreateSendInitialMetadataDestroy, @@ -375,21 +366,19 @@ static void BM_TransportEmptyOp(benchmark::State& state) { memset(&op, 0, sizeof(op)); op.payload = &op_payload; }; - std::unique_ptr<Closure> c = - MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { - if (!state.KeepRunning()) return; - reset_op(); - op.on_complete = c.get(); - s.Op(exec_ctx, &op); - }); - GRPC_CLOSURE_SCHED(f.exec_ctx(), c.get(), GRPC_ERROR_NONE); + std::unique_ptr<Closure> c = MakeClosure([&](grpc_error* error) { + if (!state.KeepRunning()) return; + reset_op(); + op.on_complete = c.get(); + s.Op(&op); + }); + GRPC_CLOSURE_SCHED(c.get(), GRPC_ERROR_NONE); f.FlushExecCtx(); reset_op(); op.cancel_stream = true; op_payload.cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; - s.Op(f.exec_ctx(), &op); - s.DestroyThen(f.exec_ctx(), MakeOnceClosure([](grpc_exec_ctx* exec_ctx, - grpc_error* error) {})); + s.Op(&op); + s.DestroyThen(MakeOnceClosure([](grpc_error* error) {})); f.FlushExecCtx(); track_counters.Finish(state); } @@ -420,39 +409,37 @@ static void BM_TransportStreamSend(benchmark::State& state) { grpc_metadata_batch_init(&b); b.deadline = GRPC_MILLIS_INF_FUTURE; std::vector<grpc_mdelem> elems = - RepresentativeClientInitialMetadata::GetElems(f.exec_ctx()); + RepresentativeClientInitialMetadata::GetElems(); std::vector<grpc_linked_mdelem> storage(elems.size()); for (size_t i = 0; i < elems.size(); i++) { GPR_ASSERT(GRPC_LOG_IF_ERROR( - "addmd", - grpc_metadata_batch_add_tail(f.exec_ctx(), &b, &storage[i], elems[i]))); + "addmd", grpc_metadata_batch_add_tail(&b, &storage[i], elems[i]))); } gpr_event* bm_done = new gpr_event; gpr_event_init(bm_done); - std::unique_ptr<Closure> c = - MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { - if (!state.KeepRunning()) { - gpr_event_set(bm_done, (void*)1); - return; - } - // force outgoing window to be yuge - s->chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); - f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); - grpc_slice_buffer_stream_init(&send_stream, &send_buffer, 0); - reset_op(); - op.on_complete = c.get(); - op.send_message = true; - op.payload->send_message.send_message = &send_stream.base; - s->Op(exec_ctx, &op); - }); + std::unique_ptr<Closure> c = MakeClosure([&](grpc_error* error) { + if (!state.KeepRunning()) { + gpr_event_set(bm_done, (void*)1); + return; + } + // force outgoing window to be yuge + s->chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); + f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); + grpc_slice_buffer_stream_init(&send_stream, &send_buffer, 0); + reset_op(); + op.on_complete = c.get(); + op.send_message = true; + op.payload->send_message.send_message = &send_stream.base; + s->Op(&op); + }); reset_op(); op.send_initial_metadata = true; op.payload->send_initial_metadata.send_initial_metadata = &b; op.on_complete = c.get(); - s->Op(f.exec_ctx(), &op); + s->Op(&op); f.FlushExecCtx(); gpr_event_wait(bm_done, gpr_inf_future(GPR_CLOCK_REALTIME)); @@ -461,13 +448,12 @@ static void BM_TransportStreamSend(benchmark::State& state) { reset_op(); op.cancel_stream = true; op.payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; - s->Op(f.exec_ctx(), &op); - s->DestroyThen(f.exec_ctx(), MakeOnceClosure([](grpc_exec_ctx* exec_ctx, - grpc_error* error) {})); + s->Op(&op); + s->DestroyThen(MakeOnceClosure([](grpc_error* error) {})); f.FlushExecCtx(); s.reset(); track_counters.Finish(state); - grpc_metadata_batch_destroy(f.exec_ctx(), &b); + grpc_metadata_batch_destroy(&b); grpc_slice_buffer_destroy(&send_buffer); } BENCHMARK(BM_TransportStreamSend)->Range(0, 128 * 1024 * 1024); @@ -551,16 +537,14 @@ static void BM_TransportStreamRecv(benchmark::State& state) { grpc_metadata_batch_init(&b_recv); b.deadline = GRPC_MILLIS_INF_FUTURE; std::vector<grpc_mdelem> elems = - RepresentativeClientInitialMetadata::GetElems(f.exec_ctx()); + RepresentativeClientInitialMetadata::GetElems(); std::vector<grpc_linked_mdelem> storage(elems.size()); for (size_t i = 0; i < elems.size(); i++) { GPR_ASSERT(GRPC_LOG_IF_ERROR( - "addmd", - grpc_metadata_batch_add_tail(f.exec_ctx(), &b, &storage[i], elems[i]))); + "addmd", grpc_metadata_batch_add_tail(&b, &storage[i], elems[i]))); } - std::unique_ptr<Closure> do_nothing = - MakeClosure([](grpc_exec_ctx* exec_ctx, grpc_error* error) {}); + std::unique_ptr<Closure> do_nothing = MakeClosure([](grpc_error* error) {}); uint32_t received; @@ -569,51 +553,49 @@ static void BM_TransportStreamRecv(benchmark::State& state) { std::unique_ptr<Closure> drain_continue; grpc_slice recv_slice; - std::unique_ptr<Closure> c = - MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { - if (!state.KeepRunning()) return; - // force outgoing window to be yuge - s.chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); - f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); - received = 0; - reset_op(); - op.on_complete = do_nothing.get(); - op.recv_message = true; - op.payload->recv_message.recv_message = &recv_stream; - op.payload->recv_message.recv_message_ready = drain_start.get(); - s.Op(exec_ctx, &op); - f.PushInput(grpc_slice_ref(incoming_data)); - }); - - drain_start = MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { + std::unique_ptr<Closure> c = MakeClosure([&](grpc_error* error) { + if (!state.KeepRunning()) return; + // force outgoing window to be yuge + s.chttp2_stream()->flow_control->TestOnlyForceHugeWindow(); + f.chttp2_transport()->flow_control->TestOnlyForceHugeWindow(); + received = 0; + reset_op(); + op.on_complete = do_nothing.get(); + op.recv_message = true; + op.payload->recv_message.recv_message = &recv_stream; + op.payload->recv_message.recv_message_ready = drain_start.get(); + s.Op(&op); + f.PushInput(grpc_slice_ref(incoming_data)); + }); + + drain_start = MakeClosure([&](grpc_error* error) { if (recv_stream == NULL) { GPR_ASSERT(!state.KeepRunning()); return; } - GRPC_CLOSURE_RUN(exec_ctx, drain.get(), GRPC_ERROR_NONE); + GRPC_CLOSURE_RUN(drain.get(), GRPC_ERROR_NONE); }); - drain = MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { + drain = MakeClosure([&](grpc_error* error) { do { if (received == recv_stream->length) { - grpc_byte_stream_destroy(exec_ctx, recv_stream); - GRPC_CLOSURE_SCHED(exec_ctx, c.get(), GRPC_ERROR_NONE); + grpc_byte_stream_destroy(recv_stream); + GRPC_CLOSURE_SCHED(c.get(), GRPC_ERROR_NONE); return; } - } while (grpc_byte_stream_next(exec_ctx, recv_stream, - recv_stream->length - received, + } while (grpc_byte_stream_next(recv_stream, recv_stream->length - received, drain_continue.get()) && GRPC_ERROR_NONE == - grpc_byte_stream_pull(exec_ctx, recv_stream, &recv_slice) && + grpc_byte_stream_pull(recv_stream, &recv_slice) && (received += GRPC_SLICE_LENGTH(recv_slice), - grpc_slice_unref_internal(exec_ctx, recv_slice), true)); + grpc_slice_unref_internal(recv_slice), true)); }); - drain_continue = MakeClosure([&](grpc_exec_ctx* exec_ctx, grpc_error* error) { - grpc_byte_stream_pull(exec_ctx, recv_stream, &recv_slice); + drain_continue = MakeClosure([&](grpc_error* error) { + grpc_byte_stream_pull(recv_stream, &recv_slice); received += GRPC_SLICE_LENGTH(recv_slice); - grpc_slice_unref_internal(exec_ctx, recv_slice); - GRPC_CLOSURE_RUN(exec_ctx, drain.get(), GRPC_ERROR_NONE); + grpc_slice_unref_internal(recv_slice); + GRPC_CLOSURE_RUN(drain.get(), GRPC_ERROR_NONE); }); reset_op(); @@ -624,7 +606,7 @@ static void BM_TransportStreamRecv(benchmark::State& state) { op.payload->recv_initial_metadata.recv_initial_metadata_ready = do_nothing.get(); op.on_complete = c.get(); - s.Op(f.exec_ctx(), &op); + s.Op(&op); f.PushInput(SLICE_FROM_BUFFER( "\x00\x00\x00\x04\x00\x00\x00\x00\x00" // Generated using: @@ -642,13 +624,12 @@ static void BM_TransportStreamRecv(benchmark::State& state) { reset_op(); op.cancel_stream = true; op.payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED; - s.Op(f.exec_ctx(), &op); - s.DestroyThen(f.exec_ctx(), MakeOnceClosure([](grpc_exec_ctx* exec_ctx, - grpc_error* error) {})); + s.Op(&op); + s.DestroyThen(MakeOnceClosure([](grpc_error* error) {})); f.FlushExecCtx(); track_counters.Finish(state); - grpc_metadata_batch_destroy(f.exec_ctx(), &b); - grpc_metadata_batch_destroy(f.exec_ctx(), &b_recv); + grpc_metadata_batch_destroy(&b); + grpc_metadata_batch_destroy(&b_recv); grpc_slice_unref(incoming_data); } BENCHMARK(BM_TransportStreamRecv)->Range(0, 128 * 1024 * 1024); diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc index a09475b2d11..0e25c3d235d 100644 --- a/test/cpp/microbenchmarks/bm_closure.cc +++ b/test/cpp/microbenchmarks/bm_closure.cc @@ -35,7 +35,7 @@ static void BM_NoOpExecCtx(benchmark::State& state) { TrackCounters track_counters; while (state.KeepRunning()) { ExecCtx _local_exec_ctx; - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } track_counters.Finish(state); } @@ -45,14 +45,14 @@ static void BM_WellFlushed(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_WellFlushed); -static void DoNothing(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {} +static void DoNothing(void* arg, grpc_error* error) {} static void BM_ClosureInitAgainstExecCtx(benchmark::State& state) { TrackCounters track_counters; @@ -74,8 +74,8 @@ static void BM_ClosureInitAgainstCombiner(benchmark::State& state) { benchmark::DoNotOptimize(GRPC_CLOSURE_INIT( &c, DoNothing, NULL, grpc_combiner_scheduler(combiner))); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureInitAgainstCombiner); @@ -86,10 +86,10 @@ static void BM_ClosureRunOnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_RUN(&exec_ctx, &c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_RUN(&c, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureRunOnExecCtx); @@ -99,11 +99,10 @@ static void BM_ClosureCreateAndRun(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_RUN( - &exec_ctx, GRPC_CLOSURE_CREATE(DoNothing, NULL, grpc_schedule_on_exec_ctx), GRPC_ERROR_NONE); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureCreateAndRun); @@ -114,11 +113,10 @@ static void BM_ClosureInitAndRun(benchmark::State& state) { grpc_closure c; while (state.KeepRunning()) { GRPC_CLOSURE_RUN( - &exec_ctx, GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx), GRPC_ERROR_NONE); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureInitAndRun); @@ -129,10 +127,10 @@ static void BM_ClosureSchedOnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSchedOnExecCtx); @@ -145,11 +143,11 @@ static void BM_ClosureSched2OnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_schedule_on_exec_ctx); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnExecCtx); @@ -164,12 +162,12 @@ static void BM_ClosureSched3OnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_schedule_on_exec_ctx); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c3, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched3OnExecCtx); @@ -182,10 +180,10 @@ static void BM_AcquireMutex(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { gpr_mu_lock(&mu); - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_mu_unlock(&mu); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_AcquireMutex); @@ -198,13 +196,13 @@ static void BM_TryAcquireMutex(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { if (gpr_mu_trylock(&mu)) { - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_mu_unlock(&mu); } else { abort(); } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_TryAcquireMutex); @@ -216,10 +214,10 @@ static void BM_AcquireSpinlock(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { gpr_spinlock_lock(&mu); - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_spinlock_unlock(&mu); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_AcquireSpinlock); @@ -231,13 +229,13 @@ static void BM_TryAcquireSpinlock(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { if (gpr_spinlock_trylock(&mu)) { - DoNothing(&exec_ctx, NULL, GRPC_ERROR_NONE); + DoNothing(NULL, GRPC_ERROR_NONE); gpr_spinlock_unlock(&mu); } else { abort(); } } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_TryAcquireSpinlock); @@ -249,11 +247,11 @@ static void BM_ClosureSchedOnCombiner(benchmark::State& state) { GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_combiner_scheduler(combiner)); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSchedOnCombiner); @@ -267,12 +265,12 @@ static void BM_ClosureSched2OnCombiner(benchmark::State& state) { GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner)); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnCombiner); @@ -288,13 +286,13 @@ static void BM_ClosureSched3OnCombiner(benchmark::State& state) { GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner)); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c3, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched3OnCombiner); @@ -309,13 +307,13 @@ static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) { GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner1, "finished"); - GRPC_COMBINER_UNREF(&exec_ctx, combiner2, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner1, "finished"); + GRPC_COMBINER_UNREF(combiner2, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnTwoCombiners); @@ -334,15 +332,15 @@ static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) { GRPC_CLOSURE_INIT(&c4, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_CLOSURE_SCHED(&exec_ctx, &c1, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c2, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c3, GRPC_ERROR_NONE); - GRPC_CLOSURE_SCHED(&exec_ctx, &c4, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(&exec_ctx); + GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&c4, GRPC_ERROR_NONE); + grpc_exec_ctx_flush(); } - GRPC_COMBINER_UNREF(&exec_ctx, combiner1, "finished"); - GRPC_COMBINER_UNREF(&exec_ctx, combiner2, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_COMBINER_UNREF(combiner1, "finished"); + GRPC_COMBINER_UNREF(combiner2, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureSched4OnTwoCombiners); @@ -356,13 +354,11 @@ class Rescheduler { GRPC_CLOSURE_INIT(&closure_, Step, this, scheduler); } - void ScheduleFirst(grpc_exec_ctx* exec_ctx) { - GRPC_CLOSURE_SCHED(exec_ctx, &closure_, GRPC_ERROR_NONE); - } + void ScheduleFirst() { GRPC_CLOSURE_SCHED(&closure_, GRPC_ERROR_NONE); } void ScheduleFirstAgainstDifferentScheduler( - grpc_exec_ctx* exec_ctx, grpc_closure_scheduler* scheduler) { - GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(Step, this, scheduler), + grpc_closure_scheduler* scheduler) { + GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(Step, this, scheduler), GRPC_ERROR_NONE); } @@ -370,10 +366,10 @@ class Rescheduler { benchmark::State& state_; grpc_closure closure_; - static void Step(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { + static void Step(void* arg, grpc_error* error) { Rescheduler* self = static_cast<Rescheduler*>(arg); if (self->state_.KeepRunning()) { - GRPC_CLOSURE_SCHED(exec_ctx, &self->closure_, GRPC_ERROR_NONE); + GRPC_CLOSURE_SCHED(&self->closure_, GRPC_ERROR_NONE); } } }; @@ -382,8 +378,8 @@ static void BM_ClosureReschedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; Rescheduler r(state, grpc_schedule_on_exec_ctx); - r.ScheduleFirst(&exec_ctx); - grpc_exec_ctx_finish(&exec_ctx); + r.ScheduleFirst(); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnExecCtx); @@ -393,10 +389,10 @@ static void BM_ClosureReschedOnCombiner(benchmark::State& state) { ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_scheduler(combiner)); - r.ScheduleFirst(&exec_ctx); - grpc_exec_ctx_flush(&exec_ctx); - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + r.ScheduleFirst(); + grpc_exec_ctx_flush(); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnCombiner); @@ -406,11 +402,10 @@ static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) { ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_finally_scheduler(combiner)); - r.ScheduleFirstAgainstDifferentScheduler(&exec_ctx, - grpc_combiner_scheduler(combiner)); - grpc_exec_ctx_flush(&exec_ctx); - GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished"); - grpc_exec_ctx_finish(&exec_ctx); + r.ScheduleFirstAgainstDifferentScheduler(grpc_combiner_scheduler(combiner)); + grpc_exec_ctx_flush(); + GRPC_COMBINER_UNREF(combiner, "finished"); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnCombinerFinally); diff --git a/test/cpp/microbenchmarks/bm_cq.cc b/test/cpp/microbenchmarks/bm_cq.cc index 8cf7823a94d..6d36e61cff9 100644 --- a/test/cpp/microbenchmarks/bm_cq.cc +++ b/test/cpp/microbenchmarks/bm_cq.cc @@ -65,7 +65,7 @@ static void BM_CreateDestroyCore(benchmark::State& state) { } BENCHMARK(BM_CreateDestroyCore); -static void DoneWithCompletionOnStack(grpc_exec_ctx* exec_ctx, void* arg, +static void DoneWithCompletionOnStack(void* arg, grpc_cq_completion* completion) {} class DummyTag final : public internal::CompletionQueueTag { @@ -82,9 +82,9 @@ static void BM_Pass1Cpp(benchmark::State& state) { DummyTag dummy_tag; ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(c_cq, &dummy_tag)); - grpc_cq_end_op(&exec_ctx, c_cq, &dummy_tag, GRPC_ERROR_NONE, - DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(&exec_ctx); + grpc_cq_end_op(c_cq, &dummy_tag, GRPC_ERROR_NONE, DoneWithCompletionOnStack, + NULL, &completion); + grpc_exec_ctx_finish(); void* tag; bool ok; cq.Next(&tag, &ok); @@ -102,9 +102,9 @@ static void BM_Pass1Core(benchmark::State& state) { grpc_cq_completion completion; ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); - grpc_cq_end_op(&exec_ctx, cq, NULL, GRPC_ERROR_NONE, - DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(&exec_ctx); + grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, + &completion); + grpc_exec_ctx_finish(); grpc_completion_queue_next(cq, deadline, NULL); } grpc_completion_queue_destroy(cq); @@ -121,9 +121,9 @@ static void BM_Pluck1Core(benchmark::State& state) { grpc_cq_completion completion; ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); - grpc_cq_end_op(&exec_ctx, cq, NULL, GRPC_ERROR_NONE, - DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(&exec_ctx); + grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, + &completion); + grpc_exec_ctx_finish(); grpc_completion_queue_pluck(cq, NULL, deadline, NULL); } grpc_completion_queue_destroy(cq); diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc index 8d4349a297e..41e616a6ef0 100644 --- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc @@ -43,9 +43,8 @@ static grpc_completion_queue* g_cq; static grpc_event_engine_vtable g_vtable; static const grpc_event_engine_vtable* g_old_vtable; -static void pollset_shutdown(grpc_exec_ctx* exec_ctx, grpc_pollset* ps, - grpc_closure* closure) { - GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE); +static void pollset_shutdown(grpc_pollset* ps, grpc_closure* closure) { + GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE); } static void pollset_init(grpc_pollset* ps, gpr_mu** mu) { @@ -53,25 +52,20 @@ static void pollset_init(grpc_pollset* ps, gpr_mu** mu) { *mu = &ps->mu; } -static void pollset_destroy(grpc_exec_ctx* exec_ctx, grpc_pollset* ps) { - gpr_mu_destroy(&ps->mu); -} +static void pollset_destroy(grpc_pollset* ps) { gpr_mu_destroy(&ps->mu); } -static grpc_error* pollset_kick(grpc_exec_ctx* exec_ctx, grpc_pollset* p, - grpc_pollset_worker* worker) { +static grpc_error* pollset_kick(grpc_pollset* p, grpc_pollset_worker* worker) { return GRPC_ERROR_NONE; } /* Callback when the tag is dequeued from the completion queue. Does nothing */ -static void cq_done_cb(grpc_exec_ctx* exec_ctx, void* done_arg, - grpc_cq_completion* cq_completion) { +static void cq_done_cb(void* done_arg, grpc_cq_completion* cq_completion) { gpr_free(cq_completion); } /* Queues a completion tag if deadline is > 0. * Does nothing if deadline is 0 (i.e gpr_time_0(GPR_CLOCK_MONOTONIC)) */ -static grpc_error* pollset_work(grpc_exec_ctx* exec_ctx, grpc_pollset* ps, - grpc_pollset_worker** worker, +static grpc_error* pollset_work(grpc_pollset* ps, grpc_pollset_worker** worker, grpc_millis deadline) { if (deadline == 0) { gpr_log(GPR_DEBUG, "no-op"); @@ -80,9 +74,9 @@ static grpc_error* pollset_work(grpc_exec_ctx* exec_ctx, grpc_pollset* ps, gpr_mu_unlock(&ps->mu); GPR_ASSERT(grpc_cq_begin_op(g_cq, g_tag)); - grpc_cq_end_op(exec_ctx, g_cq, g_tag, GRPC_ERROR_NONE, cq_done_cb, NULL, + grpc_cq_end_op(g_cq, g_tag, GRPC_ERROR_NONE, cq_done_cb, NULL, (grpc_cq_completion*)gpr_malloc(sizeof(grpc_cq_completion))); - grpc_exec_ctx_flush(exec_ctx); + grpc_exec_ctx_flush(); gpr_mu_lock(&ps->mu); return GRPC_ERROR_NONE; } diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index b9b3960f859..3f85e351f56 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -250,10 +250,10 @@ static void BM_ErrorGetStatus(benchmark::State& state) { while (state.KeepRunning()) { grpc_status_code status; grpc_slice slice; - grpc_error_get_status(&exec_ctx, fixture.error(), fixture.deadline(), - &status, &slice, NULL); + grpc_error_get_status(fixture.error(), fixture.deadline(), &status, &slice, + NULL); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } @@ -264,10 +264,10 @@ static void BM_ErrorGetStatusCode(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_status_code status; - grpc_error_get_status(&exec_ctx, fixture.error(), fixture.deadline(), - &status, NULL, NULL); + grpc_error_get_status(fixture.error(), fixture.deadline(), &status, NULL, + NULL); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } @@ -278,10 +278,10 @@ static void BM_ErrorHttpError(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_http2_error_code error; - grpc_error_get_status(&exec_ctx, fixture.error(), fixture.deadline(), NULL, - NULL, &error); + grpc_error_get_status(fixture.error(), fixture.deadline(), NULL, NULL, + &error); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } diff --git a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc index 2680ae61983..74e99982ce8 100644 --- a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc +++ b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc @@ -180,10 +180,10 @@ class TrickledCHTTP2 : public EndpointPairFixture { ExecCtx _local_exec_ctx; inc_time(); size_t client_backlog = - grpc_trickle_endpoint_trickle(&exec_ctx, endpoint_pair_.client); + grpc_trickle_endpoint_trickle(endpoint_pair_.client); size_t server_backlog = - grpc_trickle_endpoint_trickle(&exec_ctx, endpoint_pair_.server); - grpc_exec_ctx_finish(&exec_ctx); + grpc_trickle_endpoint_trickle(endpoint_pair_.server); + grpc_exec_ctx_finish(); if (update_stats) { UpdateStats((grpc_chttp2_transport*)client_transport_, &client_stats_, client_backlog); diff --git a/test/cpp/microbenchmarks/bm_metadata.cc b/test/cpp/microbenchmarks/bm_metadata.cc index f330493de9e..5d89e0d3c6c 100644 --- a/test/cpp/microbenchmarks/bm_metadata.cc +++ b/test/cpp/microbenchmarks/bm_metadata.cc @@ -92,9 +92,9 @@ static void BM_MetadataFromNonInternedSlices(benchmark::State& state) { gpr_slice v = grpc_slice_from_static_string("value"); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataFromNonInternedSlices); @@ -105,9 +105,9 @@ static void BM_MetadataFromInternedSlices(benchmark::State& state) { gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -120,12 +120,12 @@ static void BM_MetadataFromInternedSlicesAlreadyInIndex( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); ExecCtx _local_exec_ctx; - grpc_mdelem seed = grpc_mdelem_create(&exec_ctx, k, v, NULL); + grpc_mdelem seed = grpc_mdelem_create(k, v, NULL); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - GRPC_MDELEM_UNREF(&exec_ctx, seed); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(seed); + grpc_exec_ctx_finish(); grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -138,9 +138,9 @@ static void BM_MetadataFromInternedKey(benchmark::State& state) { gpr_slice v = grpc_slice_from_static_string("value"); ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -154,12 +154,10 @@ static void BM_MetadataFromNonInternedSlicesWithBackingStore( char backing_store[sizeof(grpc_mdelem_data)]; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_create(&exec_ctx, k, v, - reinterpret_cast<grpc_mdelem_data*>(backing_store))); + GRPC_MDELEM_UNREF(grpc_mdelem_create( + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataFromNonInternedSlicesWithBackingStore); @@ -172,12 +170,10 @@ static void BM_MetadataFromInternedSlicesWithBackingStore( char backing_store[sizeof(grpc_mdelem_data)]; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_create(&exec_ctx, k, v, - reinterpret_cast<grpc_mdelem_data*>(backing_store))); + GRPC_MDELEM_UNREF(grpc_mdelem_create( + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -192,12 +188,10 @@ static void BM_MetadataFromInternedKeyWithBackingStore( char backing_store[sizeof(grpc_mdelem_data)]; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF( - &exec_ctx, - grpc_mdelem_create(&exec_ctx, k, v, - reinterpret_cast<grpc_mdelem_data*>(backing_store))); + GRPC_MDELEM_UNREF(grpc_mdelem_create( + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -209,9 +203,9 @@ static void BM_MetadataFromStaticMetadataStrings(benchmark::State& state) { gpr_slice v = GRPC_MDSTR_200; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -224,9 +218,9 @@ static void BM_MetadataFromStaticMetadataStringsNotIndexed( gpr_slice v = GRPC_MDSTR_GZIP; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, grpc_mdelem_create(&exec_ctx, k, v, NULL)); + GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_slice_unref(k); track_counters.Finish(state); } @@ -236,15 +230,14 @@ static void BM_MetadataRefUnrefExternal(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; ExecCtx _local_exec_ctx; - grpc_mdelem el = - grpc_mdelem_create(&exec_ctx, grpc_slice_from_static_string("a"), - grpc_slice_from_static_string("b"), - reinterpret_cast<grpc_mdelem_data*>(backing_store)); + grpc_mdelem el = grpc_mdelem_create( + grpc_slice_from_static_string("a"), grpc_slice_from_static_string("b"), + reinterpret_cast<grpc_mdelem_data*>(backing_store)); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefExternal); @@ -256,14 +249,14 @@ static void BM_MetadataRefUnrefInterned(benchmark::State& state) { gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); grpc_mdelem el = grpc_mdelem_create( - &exec_ctx, k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store)); + k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store)); grpc_slice_unref(k); grpc_slice_unref(v); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefInterned); @@ -271,14 +264,13 @@ BENCHMARK(BM_MetadataRefUnrefInterned); static void BM_MetadataRefUnrefAllocated(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; - grpc_mdelem el = - grpc_mdelem_create(&exec_ctx, grpc_slice_from_static_string("a"), - grpc_slice_from_static_string("b"), NULL); + grpc_mdelem el = grpc_mdelem_create(grpc_slice_from_static_string("a"), + grpc_slice_from_static_string("b"), NULL); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefAllocated); @@ -286,13 +278,12 @@ BENCHMARK(BM_MetadataRefUnrefAllocated); static void BM_MetadataRefUnrefStatic(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; - grpc_mdelem el = - grpc_mdelem_create(&exec_ctx, GRPC_MDSTR_STATUS, GRPC_MDSTR_200, NULL); + grpc_mdelem el = grpc_mdelem_create(GRPC_MDSTR_STATUS, GRPC_MDSTR_200, NULL); while (state.KeepRunning()) { - GRPC_MDELEM_UNREF(&exec_ctx, GRPC_MDELEM_REF(el)); + GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } - GRPC_MDELEM_UNREF(&exec_ctx, el); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_MDELEM_UNREF(el); + grpc_exec_ctx_finish(); track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefStatic); diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index d097f8e32e8..3da8e16788e 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -41,8 +41,8 @@ auto& force_library_initialization = Library::get(); -static void shutdown_ps(grpc_exec_ctx* exec_ctx, void* ps, grpc_error* error) { - grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(ps)); +static void shutdown_ps(void* ps, grpc_error* error) { + grpc_pollset_destroy(static_cast<grpc_pollset*>(ps)); } static void BM_CreateDestroyPollset(benchmark::State& state) { @@ -58,11 +58,11 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { memset(ps, 0, ps_sz); grpc_pollset_init(ps, &mu); gpr_mu_lock(mu); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(ps); track_counters.Finish(state); } @@ -117,14 +117,14 @@ static void BM_PollEmptyPollset(benchmark::State& state) { ExecCtx _local_exec_ctx; gpr_mu_lock(mu); while (state.KeepRunning()) { - GRPC_ERROR_UNREF(grpc_pollset_work(&exec_ctx, ps, NULL, 0)); + GRPC_ERROR_UNREF(grpc_pollset_work(ps, NULL, 0)); } grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(ps); track_counters.Finish(state); } @@ -142,17 +142,17 @@ static void BM_PollAddFd(benchmark::State& state) { GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd))); grpc_fd* fd = grpc_fd_create(wakeup_fd.read_fd, "xxx"); while (state.KeepRunning()) { - grpc_pollset_add_fd(&exec_ctx, ps, fd); - grpc_exec_ctx_flush(&exec_ctx); + grpc_pollset_add_fd(ps, fd); + grpc_exec_ctx_flush(); } - grpc_fd_orphan(&exec_ctx, fd, NULL, NULL, false /* already_closed */, "xxx"); + grpc_fd_orphan(fd, NULL, NULL, false /* already_closed */, "xxx"); grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); gpr_mu_lock(mu); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); gpr_free(ps); track_counters.Finish(state); } @@ -169,7 +169,7 @@ Closure* MakeClosure(F f, grpc_closure_scheduler* scheduler) { C(F f, grpc_closure_scheduler* scheduler) : f_(f) { GRPC_CLOSURE_INIT(this, C::cbfn, this, scheduler); } - static void cbfn(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) { + static void cbfn(void* arg, grpc_error* error) { C* p = static_cast<C*>(arg); p->f_(); } @@ -222,7 +222,7 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { grpc_wakeup_fd wakeup_fd; GRPC_ERROR_UNREF(grpc_wakeup_fd_init(&wakeup_fd)); grpc_fd* wakeup = grpc_fd_create(wakeup_fd.read_fd, "wakeup_read"); - grpc_pollset_add_fd(&exec_ctx, ps, wakeup); + grpc_pollset_add_fd(ps, wakeup); bool done = false; Closure* continue_closure = MakeClosure( [&]() { @@ -232,25 +232,23 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { return; } GRPC_ERROR_UNREF(grpc_wakeup_fd_wakeup(&wakeup_fd)); - grpc_fd_notify_on_read(&exec_ctx, wakeup, continue_closure); + grpc_fd_notify_on_read(wakeup, continue_closure); }, grpc_schedule_on_exec_ctx); GRPC_ERROR_UNREF(grpc_wakeup_fd_wakeup(&wakeup_fd)); - grpc_fd_notify_on_read(&exec_ctx, wakeup, continue_closure); + grpc_fd_notify_on_read(wakeup, continue_closure); gpr_mu_lock(mu); while (!done) { - GRPC_ERROR_UNREF( - grpc_pollset_work(&exec_ctx, ps, NULL, GRPC_MILLIS_INF_FUTURE)); + GRPC_ERROR_UNREF(grpc_pollset_work(ps, NULL, GRPC_MILLIS_INF_FUTURE)); } - grpc_fd_orphan(&exec_ctx, wakeup, NULL, NULL, false /* already_closed */, - "done"); + grpc_fd_orphan(wakeup, NULL, NULL, false /* already_closed */, "done"); wakeup_fd.read_fd = 0; grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); + grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); grpc_wakeup_fd_destroy(&wakeup_fd); gpr_free(ps); track_counters.Finish(state); diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index 71bbb393db4..24b74b9d374 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -166,7 +166,7 @@ class EndpointPairFixture : public BaseFixture { fixture_configuration.ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; /* add server endpoint to server_ * */ @@ -174,19 +174,19 @@ class EndpointPairFixture : public BaseFixture { const grpc_channel_args* server_args = grpc_server_get_channel_args(server_->c_server()); server_transport_ = grpc_create_chttp2_transport( - &exec_ctx, server_args, endpoints.server, 0 /* is_client */); + server_args, endpoints.server, 0 /* is_client */); grpc_pollset** pollsets; size_t num_pollsets = 0; grpc_server_get_pollsets(server_->c_server(), &pollsets, &num_pollsets); for (size_t i = 0; i < num_pollsets; i++) { - grpc_endpoint_add_to_pollset(&exec_ctx, endpoints.server, pollsets[i]); + grpc_endpoint_add_to_pollset(endpoints.server, pollsets[i]); } - grpc_server_setup_transport(&exec_ctx, server_->c_server(), - server_transport_, NULL, server_args); - grpc_chttp2_transport_start_reading(&exec_ctx, server_transport_, NULL); + grpc_server_setup_transport(server_->c_server(), server_transport_, NULL, + server_args); + grpc_chttp2_transport_start_reading(server_transport_, NULL); } /* create channel */ @@ -197,17 +197,16 @@ class EndpointPairFixture : public BaseFixture { grpc_channel_args c_args = args.c_channel_args(); client_transport_ = - grpc_create_chttp2_transport(&exec_ctx, &c_args, endpoints.client, 1); + grpc_create_chttp2_transport(&c_args, endpoints.client, 1); GPR_ASSERT(client_transport_); - grpc_channel* channel = - grpc_channel_create(&exec_ctx, "target", &c_args, - GRPC_CLIENT_DIRECT_CHANNEL, client_transport_); - grpc_chttp2_transport_start_reading(&exec_ctx, client_transport_, NULL); + grpc_channel* channel = grpc_channel_create( + "target", &c_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport_); + grpc_chttp2_transport_start_reading(client_transport_, NULL); channel_ = CreateChannelInternal("", channel); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } virtual ~EndpointPairFixture() { diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 120cf6fa9fa..836cc676c23 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -149,32 +149,32 @@ struct ArgsStruct { std::string expected_lb_policy; }; -void ArgsInit(grpc_exec_ctx* exec_ctx, ArgsStruct* args) { +void ArgsInit(ArgsStruct* args) { gpr_event_init(&args->ev); args->pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(args->pollset, &args->mu); args->pollset_set = grpc_pollset_set_create(); - grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset); + grpc_pollset_set_add_pollset(args->pollset_set, args->pollset); args->lock = grpc_combiner_create(); gpr_atm_rel_store(&args->done_atm, 0); args->channel_args = NULL; } -void DoNothing(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {} +void DoNothing(void* arg, grpc_error* error) {} -void ArgsFinish(grpc_exec_ctx* exec_ctx, ArgsStruct* args) { +void ArgsFinish(ArgsStruct* args) { GPR_ASSERT(gpr_event_wait(&args->ev, TestDeadline())); - grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); - grpc_pollset_set_destroy(exec_ctx, args->pollset_set); + grpc_pollset_set_del_pollset(args->pollset_set, args->pollset); + grpc_pollset_set_destroy(args->pollset_set); grpc_closure DoNothing_cb; GRPC_CLOSURE_INIT(&DoNothing_cb, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, args->pollset, &DoNothing_cb); + grpc_pollset_shutdown(args->pollset, &DoNothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_channel_args_destroy(exec_ctx, args->channel_args); - grpc_exec_ctx_flush(exec_ctx); - grpc_pollset_destroy(exec_ctx, args->pollset); + grpc_channel_args_destroy(args->channel_args); + grpc_exec_ctx_flush(); + grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); - GRPC_COMBINER_UNREF(exec_ctx, args->lock, NULL); + GRPC_COMBINER_UNREF(args->lock, NULL); } gpr_timespec NSecondDeadline(int seconds) { @@ -198,11 +198,11 @@ void PollPollsetUntilRequestDone(ArgsStruct* args) { ExecCtx _local_exec_ctx; gpr_mu_lock(args->mu); GRPC_LOG_IF_ERROR("pollset_work", - grpc_pollset_work(&exec_ctx, args->pollset, &worker, + grpc_pollset_work(args->pollset, &worker, grpc_timespec_to_millis_round_up( NSecondDeadline(1)))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } gpr_event_set(&args->ev, (void*)1); } @@ -234,8 +234,7 @@ void CheckLBPolicyResultLocked(grpc_channel_args* channel_args, } } -void CheckResolverResultLocked(grpc_exec_ctx* exec_ctx, void* argsp, - grpc_error* err) { +void CheckResolverResultLocked(void* argsp, grpc_error* err) { ArgsStruct* args = (ArgsStruct*)argsp; grpc_channel_args* channel_args = args->channel_args; const grpc_arg* channel_arg = @@ -271,15 +270,14 @@ void CheckResolverResultLocked(grpc_exec_ctx* exec_ctx, void* argsp, } gpr_atm_rel_store(&args->done_atm, 1); gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, args->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL)); gpr_mu_unlock(args->mu); } TEST(ResolverComponentTest, TestResolvesRelevantRecords) { ExecCtx _local_exec_ctx; ArgsStruct args; - ArgsInit(&exec_ctx, &args); + ArgsInit(&args); args.expected_addrs = ParseExpectedAddrs(FLAGS_expected_addrs); args.expected_service_config_string = FLAGS_expected_chosen_service_config; args.expected_lb_policy = FLAGS_expected_lb_policy; @@ -289,19 +287,19 @@ TEST(ResolverComponentTest, TestResolvesRelevantRecords) { FLAGS_local_dns_server_address.c_str(), FLAGS_target_name.c_str())); // create resolver and resolve - grpc_resolver* resolver = grpc_resolver_create(&exec_ctx, whole_uri, NULL, - args.pollset_set, args.lock); + grpc_resolver* resolver = + grpc_resolver_create(whole_uri, NULL, args.pollset_set, args.lock); gpr_free(whole_uri); grpc_closure on_resolver_result_changed; GRPC_CLOSURE_INIT(&on_resolver_result_changed, CheckResolverResultLocked, (void*)&args, grpc_combiner_scheduler(args.lock)); - grpc_resolver_next_locked(&exec_ctx, resolver, &args.channel_args, + grpc_resolver_next_locked(resolver, &args.channel_args, &on_resolver_result_changed); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); PollPollsetUntilRequestDone(&args); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, NULL); - ArgsFinish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_RESOLVER_UNREF(resolver, NULL); + ArgsFinish(&args); + grpc_exec_ctx_finish(); } } // namespace diff --git a/test/cpp/performance/writes_per_rpc_test.cc b/test/cpp/performance/writes_per_rpc_test.cc index 0e5233403e3..b05da25e1d5 100644 --- a/test/cpp/performance/writes_per_rpc_test.cc +++ b/test/cpp/performance/writes_per_rpc_test.cc @@ -89,19 +89,19 @@ class EndpointPairFixture { const grpc_channel_args* server_args = grpc_server_get_channel_args(server_->c_server()); grpc_transport* transport = grpc_create_chttp2_transport( - &exec_ctx, server_args, endpoints.server, 0 /* is_client */); + server_args, endpoints.server, 0 /* is_client */); grpc_pollset** pollsets; size_t num_pollsets = 0; grpc_server_get_pollsets(server_->c_server(), &pollsets, &num_pollsets); for (size_t i = 0; i < num_pollsets; i++) { - grpc_endpoint_add_to_pollset(&exec_ctx, endpoints.server, pollsets[i]); + grpc_endpoint_add_to_pollset(endpoints.server, pollsets[i]); } - grpc_server_setup_transport(&exec_ctx, server_->c_server(), transport, - NULL, server_args); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + grpc_server_setup_transport(server_->c_server(), transport, NULL, + server_args); + grpc_chttp2_transport_start_reading(transport, NULL); } /* create channel */ @@ -112,16 +112,16 @@ class EndpointPairFixture { grpc_channel_args c_args = args.c_channel_args(); grpc_transport* transport = - grpc_create_chttp2_transport(&exec_ctx, &c_args, endpoints.client, 1); + grpc_create_chttp2_transport(&c_args, endpoints.client, 1); GPR_ASSERT(transport); grpc_channel* channel = grpc_channel_create( - &exec_ctx, "target", &c_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); - grpc_chttp2_transport_start_reading(&exec_ctx, transport, NULL); + "target", &c_args, GRPC_CLIENT_DIRECT_CHANNEL, transport); + grpc_chttp2_transport_start_reading(transport, NULL); channel_ = CreateChannelInternal("", channel); } - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } virtual ~EndpointPairFixture() { From 00325486749b5b56bde1fe8155fb2e3eef6499de Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Thu, 9 Nov 2017 18:44:50 -0800 Subject: [PATCH 04/22] Correction to closure.cc,bm_chttp2_hpack and few more --- err | 37 ------------- grpc_c.32.ruby | Bin 2033926 -> 0 bytes grpc_c.64.ruby | Bin 2190421 -> 0 bytes memory_usage.csv | 1 - remove_exec_ctx.py | 49 ------------------ scenario_result.json | 1 - .../client_channel/subchannel_index.cc | 2 +- src/core/lib/iomgr/closure.cc | 10 ++-- src/core/lib/iomgr/combiner.cc | 4 +- src/core/lib/iomgr/executor.cc | 2 +- src/core/lib/iomgr/pollset_windows.cc | 4 +- src/core/lib/iomgr/tcp_windows.cc | 5 +- test/core/debug/stats_test.cc | 2 +- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 2 +- .../microbenchmarks/bm_chttp2_transport.cc | 2 +- 15 files changed, 16 insertions(+), 105 deletions(-) delete mode 100644 err delete mode 100644 grpc_c.32.ruby delete mode 100644 grpc_c.64.ruby delete mode 100644 memory_usage.csv delete mode 100644 remove_exec_ctx.py delete mode 100644 scenario_result.json diff --git a/err b/err deleted file mode 100644 index 3c68c4f300e..00000000000 --- a/err +++ /dev/null @@ -1,37 +0,0 @@ -src/core/ext/transport/inproc/inproc_transport.cc: In function ‘void grpc_inproc_transport_init()’: -src/core/ext/transport/inproc/inproc_transport.cc:1092:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -src/core/ext/transport/inproc/inproc_transport.cc: In function ‘grpc_channel* grpc_inproc_channel_create(grpc_server*, grpc_channel_args*, void*)’: -src/core/ext/transport/inproc/inproc_transport.cc:1158:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -src/core/ext/transport/inproc/inproc_transport.cc: In function ‘void grpc_inproc_transport_shutdown()’: -src/core/ext/transport/inproc/inproc_transport.cc:1192:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -cc1plus: all warnings being treated as errors -make: *** [/usr/local/google/home/yashkt/grpc-projects/grpc-c-fork/grpc/objs/opt/src/core/ext/transport/inproc/inproc_transport.o] Error 1 -src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc: In function ‘void grpc_ares_request_unref(grpc_ares_request*)’: -src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:111:21: error: unused variable ‘new_exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx new_exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc: In function ‘void on_srv_query_done_cb(void*, int, int, unsigned char*, int)’: -src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:229:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -cc1plus: all warnings being treated as errors -make: *** [/usr/local/google/home/yashkt/grpc-projects/grpc-c-fork/grpc/objs/opt/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.o] Error 1 -src/cpp/common/channel_arguments.cc: In destructor ‘grpc::ChannelArguments::~ChannelArguments()’: -src/cpp/common/channel_arguments.cc:70:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -src/cpp/common/channel_arguments.cc: In member function ‘void grpc::ChannelArguments::SetSocketMutator(grpc_socket_mutator*)’: -src/cpp/common/channel_arguments.cc:99:17: error: unused variable ‘exec_ctx’ [-Werror=unused-variable] - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - ^ -cc1plus: all warnings being treated as errors -make: *** [/usr/local/google/home/yashkt/grpc-projects/grpc-c-fork/grpc/objs/opt/src/cpp/common/channel_arguments.o] Error 1 -src/proto/grpc/testing/services.proto: warning: Import src/proto/grpc/testing/stats.proto but not used. -src/proto/grpc/testing/services.proto: warning: Import src/proto/grpc/testing/stats.proto but not used. -make: Target `all' not remade because of errors. diff --git a/grpc_c.32.ruby b/grpc_c.32.ruby deleted file mode 100644 index 5b14ce6a6ea3e1022fd2e5054a2c46a9b5834961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2033926 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%0Aj6#ml^I?$5Pl5Y;^^KW~> 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Π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�WacJutHkMVuV|ItI z;J}Ob31+j`3$Jif%V&D6Yr`d=oN#2|Gg{ZJnk7e4{&u}gO7LC3giRx>A3fReL)4Q0 z8`*<wtrrK0rCGyX;kD~79%a{zQ2Hq+4G=59`35M_>RluRZQd$h;AE1C+;81$oHBk* zhHiF^ZZJfdJbS(Hd!K!VKTKG4*~bz1k@rD|gZtmJy2txP`n{8?$6;ufzRu_8ruX|f zx{r^gH}da79F0#Ok~H0v@1{<v=Owif51FPl?%~(rXnUGhGxZWMmN9bGYxN_a7Y1-R zyI$!VIwJm6^W;b{T40%ajPMazrVJv_3XQcl$Z)Td1TaQhCrn2MLr{nzFv&OkgpeZU z)(g7k#o9oE=NC(;Xh71xPs;FUi~n-#1))pFdvLP5$G+{as>|g{2PnWW)=J6<kxrri zQB%+NH+7VzZv88cJx2g!n(`ZKFQX}qfh2B&9;A{w+x^b)j{qObI3sH&!R13m;33FJ z%PB%<y=FAr23oM_4yhjayvLsS7nK;)j<#B4=_!EG-i4VbDQNQ353Ey1@ItX*-ywYs z4Bskp&H+%2^lt=^Y1-bUVWb;|dOs$ycP*_}98}`4U=qsiRsGBz*cG=KZCc(Lt-lmL zatH&L9*b^Agg9D{7;V3LURcX`bderg8Ps<Gs!#e4KN8vN!n9Hj+|FZiUr3}a9Z(-7 zWq$(wkyA-nmQ<&bS4tf2NnEP?l3!qVh?6{EbE$JWed-yBiiFzi$<drt6+C8FdF|;# zBAxxx#Ss(~3f|`z`hiQE?h<b7S5uNF*sjDhZa-gH{btp4jQOk?DB*p{pRmm!^+jpM z5|7QsmF>O9j(2)uBkIi(WQm+q1;6e(9O;NB>&+MR@~&P_i<fdMvLP#eJy#+zvf>5y zdQr3K%liG9d@Wf@<Xk(cGWMbVTFod-y>&`B<s(VdCeDR^{Uw^i(O+n)0B6_)&~WE4 z$)^U;6clw<YmNbYo0=$nS}vN^Xk(@W|H=GP4>c637H6o)QL`5!+H*;#H$ym@iBrGE zt`(XrP<zcJ#y6P8bviteksD4ai9MH%5+Tu7Lxz8pd8_-E5<^z%D9p$WJ<%RA{IyIm z-J_JBVr2PCh?%X`uSCYmJSbqT)05zz%k;8|v!MOcMbP}*dH6IBTY{IzW*e>lTPBqD z?Y-tI$tH>mxbbP7XPMIr8Mh^4`)zh!t#dLjw>(49S#$Ynyl#bvBuQV!0m&<wjiq06 ztR|^SEJ06thc**8WRWj$VE(IVyc~Eh*1}kf3d`HHN{XIiUqaA+<7YU1p>J>M_$$z{ zV|cjnGrV_RjoiU%fvjh$z0+U1ch#^}EaS1`?j55oZL}rK_q-kH+>Q@(6|uCZI}RIP z-+h#>hIgs$#?M{}cT33)M|h%M>-fO<`f>g8sOROJ!jQdQZeqE1W$#T=V#!duX%u38 zby}XUK6R+qlVy~5+YcM^@RU3>%6FNYC7fo~aGm8;6mwsGH?be02m{%UIa5|V-Y3qU zc#hfP+b%R3??Adraz4qNEsu?*bLix3mPI6#WH#4@p6z-!`klR=KYEfZG#!;M?IsPt z83ACUAOO)*Xp|@AgA<3O%boIy4Z%k`4(1L|nwz8AU}Uj-_RlT@=rx~m<ofLEe$Fjb z7Tc@ct8sn$+GzE7k|f+}o#0Wd^(MH;_MAXadr5)VIw8k%8b5_kb#m?HY({*!oNCrO zVTflB0zB9Kbf}84Vs*r5z1Od67{>Q`tV*?hYoxA4GEoOT`;68*FVZy)r=EPzPNVhq zQM$Gf)D`k1jn=Ol9?_}=mN%3GeR$6D*XKFLU%%%7e{(&1_#5E=JpK>ze?I?9*#dpW z(k9OV&tU=qSm?=Rm1CUI6hx+P$YAfppZn3aML#|9PXCiGFjp*?1H=0Gyd}edWp?T} z@TFKv%S2fAu>DeUs_HV5fMceal%U<xj-;0#_8oXS4tjMm1kT;dHalG$l^q2~UcpY; zM;gCA!A#jPjbA_NueIzip8ZDaU8ls+C0Hr@tLGJ?b>eAo6L9cccAPr$1kd-K)HTUC z1qILd_t17e>wT?dAA8Pvj(PUmg?OII&ZxqWg=1T)JDWlB-J*aBJX`337tHzi-_QTK z{67e@8l(F>TXXbaI7m)<pgzt91hZFzS*j=%vWGN_&4Wkm$sQe10|rj8KYr+k<~v60 zD!Yz@Z~5#3G_I1rk+C`P7U%9Hjjy+Bf)>CEPrTJXFx=|zg}^nble$#scFRB(aXG`2 zwATsW+~n|WCtSfNvxX-nADW&&rd-QbZ2aO>F@sCxv#<LF1E0E`J`I*fsjEcM^z%Et z6{Rez8l>D@HY7C*59bCx>viJ!&U-(;|GfxM$G^GyJxMl7oE0k|YwNgFuiA|viAJ*@ z(RoM{jiE;F^34tJI|?-yMeEs(n*J-vI~t#nmqpu<Awm0bT{7bjc+L~czJc&L@2+J0 zn40{ImyMz3>HPT1d{*&{SAUboP7$x$&B5g#(G|O&yvo7I<X`J=E8w;@_?!MVx=$qN zN>=O&mL4yYHq?=#<GS$m8Gz30Iulz^^m@Pj&<E6|@<IK&!F3OU=MUzeJ+UBl=ecm4 zSA9osHv6meSqnE5hgNSEB<l>$B&K%zyP<us{&MDjK9p@fGF&HK{;^CTkS<N{pV%3{ zF14Q9et5x+>SX$U{Z#z9yKnG5A@$+VWcNDdj&I6||Is`%S_MPK8d<@zryL~D7L}8% z$ItG@gSbTVZx|}vyOV>sKFqTMPqcr1{sNTQ4S^S>E~9m`(faxg)4exf`2EBD1vdn~ z)BbnZa(hYNqq^k_Z&T(AulvPo@<o+Tpph@U&KG~X4gY_;jokls8-a7$=+-^a$~)7Q z8wU3y&+N+oZ#VPtInC@<-5?Bf(UOZXqxH4EmR=v+KxBu}R4<Z%C=mwB{PSpcsASO2 z<SbcePx)A<Tk=}|P{-kHJN9j_V;^A?-Z0@~(P}-6=ixl7^u^5Rlxo^ATK~Z4SkBNC z^|*r*IU3($LGV;({yE1y^sznpVlRym9&wF@9zN<xx%GFs^fr9}y+wA!-!(V;PB=;A zx$4i?ni?y<oO9%rc-E0wsg=m0bL}yaXPNi&c(1Lz{yz?XRPgys+43lHp<aEnm?Xg^ zq{1f5jaVv_);K1_+EYzIuU#?hG)1M^nR1RGxd1!IV(r+C!{iW8UXiuA)^iF&pun0c zn@oaQI1{iW`|_q1^MkXk)S6UB)p^#WnceTOp^^|eqEC2|YfWP7x10**m;kbQJwz?V z=9y7TKWpJ1<{Z1$a&jA7#pE(&Zpp<*y^rUfPP;tYfiri^PTRjGJ?6Pwqv_Ykt>>af z)4edU1_W!LTwpsrn{5BH=o+K#PLjOb;^{sdMk#M4HfCGPXd)7!7GES7T0C_8gCYNY z577X}Nv34WlB{#QH7xAt9ANl>`oeFFk>dzvlDReVM|Qp~^Q$99br;>5$+^G$_|>uS z>D8Mg(l&B}S>;UjX_ReJ)uL6sZ0S%nQFC*JHuGG0Mv@7{OE5OUXx$e{b6K+FN}%A_ z9QCsF+eg0-@Id4iz;(PJ5_&8NJ7pOiT#ni0k?_Zk?!#ctSYz{=wuB4v1U;tFdW8;A za{GRKQ?Akaa=g}j8)W^Q!VG>1faj$RmtN(?Q@qd(^*6E=R9~>J*eiTqV!mxKdc<RH ziX^!xT{7B|U@?zMG0JkX8F`UPjpkRV*u>%|AJ2Y0O!TDG9V*P1lJ3J&i|QFGHYB*< zSg<vp<D2j%4qcaAP^F765mZ_&5{NH(r5<yHy`E%Sl;o>YN=O`jFuadC#}P8p9FbC> znWHzB6cGO0nrF7>kSNDY<h0B?LjsMnE%VOmJQ^pnTjupHeFJh7A9GMPZtRmeVylmD zTMVOV6je!HLo<=xQq8t=UJ{@9c7Ci<086+#+MnmKvmfSflX7Yj9F@^;R5FvTc7Iu} zGbu=YI=kFg`|5Mvzj4m{asi`9Iz3hpc$#6At!E`^bhtWAI!1d@roS`jZ>^_g2K}AR z2E^=^8NEvnG;L!Pg9wrm>ABJPCz<)S*5okZ31*W$y=794(e$c*h;VpdNK3gl)y}Qu z4Z)j&57Mr7%3Zr~XX?`;j3?_*wbDq(;^pA7I4nsW$HB!6QTSznm7!Vl50nh=2i7R2 zG|$MAD=AHCdoed7`&({zQkn!wZ7O-WqK5ed3?NnKkgHhlS`A9I`lA|2qY*jXGKr5g z5tXEd3Lp+m1f<D6nph)eiPJF8Z2#!K`IN4Qd@5`Qcoj;Bf0%CVD<oq1{P#~%HuWnc zuYjRmO+8M%T*@f6pEF9|IbS{#-P)zPSuZD;LP8Fc|K}wLyIpm}ZZc1wk+l{KvK!g> za{4S2e8s6G`w|m$1bkwGUtT6A<cjrr#Q4Q1_HT2%-(yr@jWXF|xRtdNeQtU>(bqpm zA83?WdG^#C&M#eZ^-C~LmO9Zqo-CRZtVtvliGN=9+PEti2a?li0iZU;_waCowCl*Q zC0V_feQ)ts7jPmqFI+8VP4#k8cMXms?AvczH!X~Pb-_z;4W?Xk4v(Hqz$gN<xRwZr z+e;uFkKfX#cWuO};RM|f?w<OVl=?=l(+ImAex#1j(edU3-s}w_3K~r_C}EcSJ*mlD zVCGS`gBFw*1>_!&7r)MC>)y*20<QTUp$O!Szq+WM>ZTIXBpp=bo4#y;e(g<F@}T#! zA9J@+>N9(WXn7?-{Rxs9gwL0xtaGq}-t<LhK1Iip->ad|dsSER%UneEF1~?Hvg7S) zQW57Ysn+sU{jvEA>`7T}-6lBy>IL>UEx9?|b;Vw@H*3jeYrJmAsbJ~v9C@vygWDiE zI+Te2(BycC{^5aMBV9{hDmtES&d3*cys8<m!pwNhaK@`zM&Ul|IvFp$Xr%Tv50i=W zT)KxqVVk2KuRWhUUN=$Fs+Re5&>b_b;y+OPK=T(k%sn$|mkGkE8MP5y{C^m-84TG} zfokB8mGR&chU^CnnS(E!Jq5z3R<1oU$2<w~TX#v~^}?cU%_G47$?Vu{b8|u8{;1?E zq@3#1NQJ6*>vz@&StmgM#QtF2B|&j+Z^@*{wI-Cv%kd3X8KHLZYsj%AkfpyP@`EsT zq4~@5K{8G-(5u~cX$$j0mHFA~x!M6VvmecTPY&S7?}K-=yMqyoj)>iA-tWzhjn!d_ z=4Mu^W^GFT5FsPf9e?cwO}WnF%=kO-`km1MT0gtE+RZY*heI}BEP9>#vSPocM*~Wb zmnr?Pec!`ZkV%P^yP*IS9PjkTKVu%s(c9WMjwW^yIOJ^PC)!W!Gq;|h0k6s~YCqOL zf77UVw~v3E{nS{X*41{o=8Q3p;P7iSx$LMoJbvSE;9`kNW$B1>ie+6`@F_}H9<rNC z+?XgVFM+7$!OLmVeGj~{N=t6)c&;9}0sc-)Z-5~`xPU49JAv34+}*KZROZWG;y*U9 ze71S;<B=dCQ=az!cKsbmKJ(~L&b8lZk9cL>lxN9M2Rv!lLwAvcf@Gtz!~D$Y{{Bc` ztSs|jp004PzXO`mbx_7{9?COM<;B>j;qAje`0}9#`5ye52j8VDe#IVPDU-pMQ$N}8 zE>J(;YTt?F={PimY<c7z=Ij0)gEOY9y?A<G68=EUN@64}e80bA)`Fw~K@zo;XXWVk z;O!!b;vT!Y<ozSR*ciJEA+5`Oo^s}9_wXibkr$uAr(TlKtMnfe_(U1&<LPc!{ta`U zq}?b1y;&qLQ_-`m{?XvIR?Z8WVIc&!t<PtQyg(6`b^b4DX9FKqdFB61GJybr8zpGe zAfZN^lxUNRmK3m&B!Cqa6_pBFwzZU2Yh9QTT9FrLBHUgF*{$8JwJ);RmbP}+w*Hk` z#e_fx&?+y!B)p4O?=XT<YXXSm|NTAp-pK@QclWdUA#?A2-p)DCIp;agdCv1Z!r$ae zAIR{h;46sLg(V-)8=alr=nLqxg5-wl6AOwN!@<=aSML6lL*6t{Mg|D}c1Fq8SX+tB zwr48xQr=WPU5S>-(YHQBzgTlgthHE`GLB3pGZMf+a*1S{9VSq&KgCu3fNst>_n+Z^ z`j^`|ijs9AS5Eg%&Z;Gf`_~zKw426$CH8iCfd5@AojG|PRifu`QIAgQUv#FE7n>6f z1)2VhOtB5+^2M~SdIZ&l&Mp#bN_Q76B0dDRn&bV3*YX={t`p?vJz+Xu=7oC=&x#*^ zMp{W`4<n{0xfBkUsWR_e4fnCfWdcPaP&S$K&SSsZ>tmCwQ&CP_DbSDIs&eKDg5Kh3 zy^YbYChB!=hL;f5oU+uN6eRvrg6lkb6Ww*A)snq2T9V8Y3)*KhEZVMT+yF1FQ1^6- zL)TJaG=*nrqbg>cS$Q+}87O~+pQoU29#db2KOdGroB)&9*q+E4pso*w``ij50(_QS z$r_;UpYYS|R(DWuqWIO@9aS6~(-Ub3dTR}}I<mATc-?A*tyj7>t5M8Db>>RL+Fj|_ z1O4vKKtcbSsD>W9E!vTO)Rawc$ncN&Yjt_SKe2{n@G;>R)vNRcGrNvPuQE;FzzKX# zwLi=ZMQb!b_fk=m-xB{<25$~N@FJ}6GAxWjddtMofJrA@<j(%1K&=*^`)V$`M&%~w z0di7-cF2X@(UeF(-|O!ayZ}{@ieV%1`DFcX;4gC)mRI{EcE8mhw;#i}eZ>7N9qE6D z^8Z2tmcj(hl+Z|DU~m5kGDzH`W1NXawG#^$_h)B4;!`Vj@f^SX$@Xd45UowkW)<CP zXpe2+wmcza_CJ*BEDry}N@BeFiRCHvZczEI1RL_<z5N#f8T<5k+=w<wOw?%s?o&Lf zIlmlVR{jARJmmFHVDA$z1uMN^48_R6m~YzC{)GvSWq@g4XRRA+<+RS&#KO?hMLLvb zab%=YHtUeM^%U`!!2bkX8Gi7A_=PELZ;V(f@$V{e&~yWIsho%kN=`Hi3AE0nc>2Er ze#?T7P8bc0pYdQU2w-$B)M{4Z_F|i>p%R>U^f4&UQp!0eK{=FW#0C&ai(!yOrzO!@ z$;hbj--qwmpG2{@KLFHY>0|&8=of|3f6d_carkd!T|E86Ab%G8z<xU&4Yz#~eJ=#Q zk3nwe`%Qt6Mc*&eK&E}4zKz5INKtw8{k%&2J^DU%^zYDD{cl+66XE*-bpqc_euHuI zie~&G9BsmRNt^&R;O@(vD+~SptmG6``%28*MPmsJ>2$}_xSyLX<@Wlt;fH00@>avf zY&7SR75<x8m~Kf<G>2L+Q0@2S(PP)onlUpv!?}>aV63E1b;fQl2$_anB1yG*a+5lj z%8b32SX3eo9L6zR&})5kkLgeYcjO$Ud<drk*T%sAW)2={&Com6R;tlDpMingX7t!h z2~46=ZIIrYzOS#n<@NtK1aPW*2OUT6V{du4`}p?MR7W9XI|v*BqBg6k8RjDnk?NWr z(__8j;#ahquZ0|-!vi~3?5*~-+NrbRK3==q(VFE`(>E&WoTE6361SEl?kaT`olbcZ z-_#i^EYERo=RF}$YJquA7pye3f47#k!?3XbHYx-VQwFg*mDc%Ia!*zuB0U5`psGvl z7t&|@Xu4-9lLBT6lJ#cz?TpnIXgzQ$!888}QW<Q`c)%G!sfp;0zVb1Sv0*BPm`u-U z%yb7EH5`<LIv3G@FxVk_n$sjD?C5RD=TC^dg9=UUB9D?x|0>m8YLa*?@oua#JYqFH zsGQ<cc8clo6L|HzS@ev6`NX2c?WJzbY2?l#=1ATd2+HjupP1@T<`9bnhfyl*X<`U+ zOUA$~>rI;r_GvcgzB!Dlco5+@hQA<sQ*xqDJXoC+al}8P5mHAO+=(V^cfY1LUCAn} zuZMm8T$k(ncD^GisXC3zly;lc0F|3e1pri`&$icv>7VtEe;=C<WzBC2JnLN3vkd=J z)&F2VV<raK^Q*q|7oaMzx!;;;f$B@Lo~zy1nnvlbVU*r@5f(M=Ez63K?>ti9U+L)a zNILD+54<(a%W~;XGf`$~I;g<d-+k(5*+cJ+Sp2l5W0nv7cAZzMyM2AwJ5QsgnJ0Cm z-#+t|BtC&6hWRzJ$Zi8t=b~!N8HV^<$6gXGNH^4uwf9CQIyV<G`oE7Lh9#mDFlKGu zZ|M9n*rdjX)@n~IOw@;!i9DKPxm#e<Gz$YB+7h0iE%jz*5^!?8zx_4ETQfDU7D(ww zR)X1$p7AV?p#fR(4bE@_@~+6uwR@w3)6+Bk$pN;gk?l;#*_8LgmiVUVA*g$a^k`&g zP{WhdfJHdtW@fq*%~<($$<{7dE>go0LDGn0!884Wy_0#+Ix_{pUMmpLrHeD>{^ynF zHy)_ZdH6!x5`@1DqKFuGb7rJx+NM4S_Uuo78&AVzIYW;0tbUvxh=gMs3R~Tm)*yUz z6XSt1yg}W;9aHSBW%!;FONUlX=2Ok)^q|@;k>QCOdupGXds?FSjBN)KqqmM-6pob4 zeUpf^+UMpSG)}H8{_bat$&9`33^O$~kNsXa`pOI^SC(cre|q}83igYSqK7$sZM>ja zRmUIaB9*O8&b>^l*4m8?L6`93?ge_I?BiYfny=hqn$;?hJ~Np=j$bj1=LKwchd~Uw zcBC_0DR{BFH6GO2<~8~v$fwioM*s9grV=iffxmWU+i~mOWn{*I6nz&%3w?-zpJN{l zy~pT`_(&t!o6r^|Ex0*QSfO|A!gBXaU_?+$nGGh{aS^sJunlUO)yO#IdRd9d^rA#~ z5A{hgh7H-(kN@vi9)giG?BPPrAeOoWENYX{Qxc<3q~(g_{7=88;*F{z!L6czVeYy1 z#~0C8=R4?7#YZK8Gjy2aADIE_hUKQa`Q<)SNF%qI`vlE;$KRRPUzyj@LF$iqH8;I- z<E3#EBx9;a|8e?N<<X@rijU;5s`r1pY6?J8?hgA$8iRwz_Y%Pk+#dFZ4V?20^KnXd z6y%6GbH*En*$z2ac1sVf-RkWQV=a^D<$JDDuJFKZ?$}5&92q%xKf$(X9n9qG8+*7~ zwuevUZ+f{o->i1y{LeYm*3`UOZCOo&s6&JGre6lUBNUSPO4XAYCMq{3e4>UA>7zO} z5k6hLlxR5ph^RG&^66jnwO5S4EkO4j9S><hfx#|g5E^1^Z`+WKE8SwE4PXh_$o0f> zt0Ddi%KsOKBWfl|CkOL0)Wd7i3ZgXGjEda<h|erZ_jjIwe1?6mdd7Y~{dh881W~PK z*pjN*`U_tC`HO_YW04I@gwxX)3T!ox3`yoeCA{uS=q%LM%<^IDs?kJ$8c0nX{IT!- zUnCZmkN;CWukZiHn>8|+n_~!-g}NjgJ;Qzy{n{;@Dl;x;?Wg%1?VlbRJMygv>w}>s z>~oI3r?-J^4dG$>b6O5_|DIt-SQeP-)_@lAo@-|UKMOeS?*T1w2XS}8;Q<cTT%{Bc zs1v|46$%62Nr6&CriXf!=P{~N$r}*>x?(8CWZ>v@U*RR0uR<aynjphZzJ7|0H;Iva z_g1K~N{SQ=dxlL3+|0P7*piZw>`Zw#O_$qktIAe>O`z^()N4;pH2vlg&7LTld5#xY zjOI0i4+{?ZSFhfh3YSkOCXUfaI<Zte<4!Qc(n?5`oM`$tIkDJe-(hcr?0mPAJv$QD z7gJq{+=Tp^4E#!0>iTdw1I$4|2AMczxUUm1C+fI5;kQ-QOuUV2ugdUzCMV8O!Px#6 zW1EVWPb~B35HZugo?%lBE#$rKZ@-^<2k_k6{{xNjxY>y1%P0G%c4_x29%)E1GT`)$ z9M;P8=61T+|Aa%}F~lce|GxHa6~MW_hYHxVg9C-)%}=I}u{VNYsm?HincNSt@0{x@ z7^35ho+3htaHzp%kp4wCkG;EM-tA6f^^$Rl&vqKCoY89m;xTE<;f&L(D#U=})`mz* z8o|pUcUyQ&&YkC|g$`OUdEl;|;<fs8FQ3$s-;1h>hTO%>GHGq@zbemv2r%+!=&J=4 zPVOk>h_lH&n(KO$XAyZ)>h6ra;ra6$h{S5fo5;aR3Y~pbowC6@O>4%@>kG5vu{a1O zuFc&nibZ#s4wK7uo9W$b?tQkau8bqA%yyS0QXat7G>d}lX`o9-QNX!K%LP5JaEG{A zS}|ir56;f8e}iqZ-Y^(WKytfF>Apn$823RY#m*0ms-qJ$${R4CPgp%+An|#}EbV}a zLBjOssxd~!*>Wl>h$V~U9?jQhm8S7jh@^l&oVqz26I@>sy&j<ZtZ_I->t-OGqrMT2 z-{-fhzC0Wm3#Q4uch>!Guezi<XfIf?9Ki?fCq1cFzdj%36=)@){7dvn>RU*_N?|#* zi`(ZtUEMQmmJzao)j}XONkUSIhDiMzPvS@SEWOD}_RJ(SRV`ETl$?}Gzs~-vSU~o) z8P4x}4dONyB&L@de&MZGRW$<zX&SP6HI^uS{q??^?}`HZ(s3%-i2RW?=o6jdO%I;_ zupv?Wen=EFcvhbV2YYX<Avkq#GArcjB9ZKBs*5cs#+z*9&5A!nC2DG?jxOf+t2(oq zChLqkOV*hVNe`hNGNSax0O-`9)n8DE>JLc7hCLt-2=Lc=$BhN%4qGc8r=)XTfpbmR zX62Fy!XVq%_j{z^61#x8;}=6@_feQLRmGD)$x-JEwu^lj*Fl!p-32+^Ee1Ag&G;P6 zcYlRgelibVb4}_pD*N*i07>7&FycV`)uZWa-|StbXE6Du?}%Zkls84ZSBv6%)MX2F z0+D%rL9f1-*T1QSOuBFx%W|~w?8>W4kd-<aWS?NXL#G$J_x)5Vq09{4erM~XaYmS+ zkIDU8<;Jt?-c0WFR`J)#^G7Vlo?#kfjLX&x>IFQOc!T@XhM94rm_^gbr-7=3>CcFo z&4E1X4wO)+W!u5%2Thy3CH{s@T+y|m%3E){?gsNwJYD6SuZEn3xVd|*h9fmyJum;` zRwG}8P$f0Hpx`<FFcaEU+r4NYQL_DF&v9FEh%n!`!PxL%&&yCs)1;nZ6|fM?>>9Cg z(_@PV@cQFD<C7O^&=vW1Y-}h(pqX2P(;&fN>`8eLiuck7S_8OQ#z$Gk_)uSn!dZsL z(x1Ti6nPCE#OeKGs-ay!IH32*pT81da2m|xnaC#IqIiEdekpbgxZg28uE-_c<-et# zPwGbR<3vbR%xaYR*z<~8?|mL&rXW)blX=p2sR+!uiiaF)kk=jrEM4t=@W#)E^5X1w z`bXe+{i6j4roeEH860Q54GjiQgQ1;^rt_DxXTRnQ(`cCp>rkeg#JF4zN(gi1lA<u` z>@CJ0-(U~LRWER?M()S7`)BH7cF-H5;p@L7f!)rW;{<+gVAEOcd(5vlN2;9hYQ{0) z6ECWzNjmUp$n2GNZ~h0Ae_Qm>(i1s3MLAadUzBfA$nJbb@1bU^AvxZpT<Iplza!C` zf~jJ7#QoflrTii{CyF1VcR9<uvNI5!mi@Wt7et^$0_9ea6FN3994o}D#2zo2*yoET zeJ~wt>b}s<O%0$Q47~%~Z^6_zK@h3qXnJ-#?U2I1lli%!zf``%G{1JZDxI&@PdG&D z8;0J<+#$cF#5iP`DRL_njvX#QjBSz(|45(b^|Q@4GMnM!id}T!Ff-$xENHhgzvs3> zd5B7#FLASEWZ2jnE9NoW)T+2s<XnU0b0%S0oNN?*HK?W^(hy+sW9)0d^ZWuPo?mys zbAF^3J7RBi*Wj*BEEt0!Kd#)J!FIsfc@=kF%)E2Sxau5^J?9MM(#MpxSX%|F5Z7`e zuEb`=f|#i;-=1VX^s>h(+56Y4Xs^z14~BLx&TcUU+p0y5aIaFg+2KFXc3ZeQq&5f9 zCSN`C*KfC%DOV<L4`ne6po&%cLtEJliy@KW6}-Vzsie36T}gZ_kswB9IhR-1Zoo%y zP-!KRpWhcl6_y)j+C_mrnYayzIla>4Rd`y-6a&N(`_>BkT8@maPF(~$`SJn^lR*%@ z(l=1arx)c4YSB-g->!8f?_o^I0;YIoKAw6=q+%fO^W#5qkC?>~Za*+Xr`$)q^COWa z`(61rdHMTe5-5?Fn<E+fRlLx^VkD$_*Q{wp26Jm3-Rieb=J&GuQ}r$I>x(tx`ah{Y z!S4*41@C$eQN6F$s|GUA@a$z~8}8?*1(w57@hyPp*SqS=s-r_=t#_zHq>wcBFCOa~ zsKDq=@S2*hVS0CgteHp@Qzz-!Dj&0WWJUV+V6-S>skoPcXZnGRacQcRg>+5q&&Hte zt>#F>Cz}*gr>6htStchpczvb<GrT$T!qKN0rv~5yO#jgz4_DnHv2Kp`_vs;eRxko- z@g_nK;m2Pz$m>L-kGdw5<wf4<nou4x8anbu`VGH3p4R*wd%Mte<-8=e1U^JjEMmy1 zD+>8+&>5TKKR<4!eezGbPf~!8(=r@U2i}iu2``^ohPDvF-ACcv&e-{aGUUv_101m& z<I3zA>dfHw_2|3gRKxB)<m6c<ntPs<qv2Q84@KQa3{H_VnZ*>cUVN&V2Sf)s^#tK4 z><N2dLkY)%1fs_j!E}Uz@l3p3bYHC1*wA0-z${dFqM?W3AGeDIdoVu5uYEv3RVrn! z(wdlO7PWF-5t{X7Yw|$i+H&n9?(baAt-y<hzzyze?Gj7nkL`aycHl&8Q`o+?d^u;p z*Y}#v#lSOFx&KIRSGQN3Jb%{g83_WM`9l1m5p>G2oI5XeuLj6J12^sl13!n&Yy8UC zJU*&!C0T&Ogm|rt9XT<7BXjLyVYrK!gbl97CZFh@70w*X)p`CwA@?nD*sF#<NK7VE z`Vrk1A@~@n-1TIlJ1+nl`M*7ACVUK<hq5Y0t+)>FA8TFr5d^LGX|Y-M+S0e*#=pU- z%sF|8Ftq!3ue%0gGS?Mz-f8UEM|YmKmc*Q;8<f>Et_=U+#FDDla#PQ+HO8Ek2V;BU z)>7GQ=f6ZR9AQY1dS400ddj1=E%LPtYpKhvIB^j<Yx1HO622DO6rxu<WBDFeo8I-N zqJC7OYTf~}a6GZxNqXJDE9!`QF{bf_glqWmm<i7OAJhprtk)h;z;X2FvHd6PdiDp@ zmx<Ljg#ky6e1%5bZykrHGXAMGoO!y2u=~C0BIdshY^KC@Vq~Mv8+Cg{#v2rUJ~H9N zR+E`0Lp=(cLeE3PtFIP4Rb9ONdFZmF(07+rQRDU38@Rq!eu5p5u}y@!pF}Ee4k=Py zBcOltvVqK0ULxs8={}XfUWZcO;Wab9WcUvrl7-_$%FEqvY$r#%TZBV`zAYI0Bl$NX zr~6sl$+Td&0~SL%CFIf9ovCwJi`=cjNr#DiG=E!={S30>yE==z*1Tob6T=W8Sl$#* zeTxY^qu3uk{e+GTJB+#K<a+ZR-V02r?(I$Z-Xgj0D{4P{PSGHF;<TpMSKgHv#AV5) z#e6!<-ylfqlk+RXNg4e*K9(QZ_P}ZIZu^K3+0F`JhCc+mVD{q~KO96ptxlR;jIV;v zOXsf3Pl{&*f71XKrLHtDi0$u=c;UU69L$fo`nP)!0h9K?lj0*|`@I;@zVyh37b)-g zZ{U6BAHiGnN$?7vsiw<JZv^<+Q&}eU;)zJtim<l=+ndfNGt#~Bq756^ZuRiq6&cu# zzJ^JAGzevl7h7L6re--j$!@Q5$jD$t6syrJCxDy_LO5bY%<2~78I@}L39JlvJsI%7 z*WUFXZx1d!xxHDR)LyRN-ba1gdqnXcv{!Xfd;a{`EjF^m1*Ouww{a0mk{Mc|ryW70 zj#?YI(d!~@2QZ6p&iQiaBqtdUa&nRx{gac5fwIS*BzjM_Cu!#V4?W@d8ZlVxNhQ(G zvsM{74Uv?`v4@a(4hGJTjAUgm{S;p%0KMZ<s+XS=Um25}WIRqNgdW^=&is;O|G~s2 zCMVsdQpriT=!eCz_-CZ=iL8^0b%CBW$D78#9A|F98m=BHx0<E~-|Gsw_D50tQlX|I z-0TunRAC|C3bux3$ZMsfo?-Vv3%e~*$6Cur)-s){<y>{!T5K40486B-MC@pfiTGYP zjFUdsS|l$XMCiQPY+_xhs}sU>PS3Dvs&OXajn#5p&oCJeP@-!R_I(`JJIEMNOkU|u z63w&k)69UQt|6^=o<pVLN>i(!Il;BI*c-pyMu)Y#8}QyGCmFlbZ$!P0kPn1PbxGO= zrDewHi}8uuV;(LwO-cv{&K`d`l{Oo?)Hfl4yG;F3cN+vv{RX+=Ccf21<)d$Ww;Az- znyme&r_o26fgXUhb6Ze)-l@!R9vz}Xq2v!U-kw$&>L&0q`nG!(ZE0}FNfQk2$#v?b z$X4g_IgDY<fjQAfHpKkXH53|-6}2@ElI{`z@B7A~%V>XA0C@&r-NI9&?GP?w4r+#? zU*5`qjMMm^<%9K?1g)m4BpB`PIPOYI)$`0i_ceYb@8$HHnZ4itoKYav?!~y4K>xp` zLuS3@x)(A-Ubzg|jJ`LX@H2x3E+AWML%C68UN$!kl%m&fd+CL<(u&Jz<jkAH$=Fq* z5^q{L06&jV#>U2tdifkl(|x4+<0A(bnPmm#{DhT-e?UFaZa6AUw7UrI3TPLZ6oCJo zzZklec;u5|wK7PWMv~d$lsX1$1z#`G*CK%PHX*gU&p_DpV_EZILx0D2&wf@y;PnM2 zbZ85d*%cWfp85N%cy`d%_UHR{!Q*DWgzjGxjxNMz<LDlLX2>W2=UivA`8rsExpofX z%Evly?qI}U3o(knt~XLC>hyq)sB=0@6i_ER7_NGA9|^|(4WMZN8d&TOXcT;^5rC(O z7&r1Ym`_$QQ_JEPND*GGZ?Y_qPmK>I%3A(hoTwN|=a8rF&k{hv^dUWk3Qq=uMJ<U6 zm<*OqyCz|Mbvj>}11bBPQt1Pn#_bznhfx-;+hlwy8zbL#Zr~6~mZ6HN_g)xo(m4A& zqhY@y9DLe(D|^-iMau!xGt6Z$VlF(uUsQ_N39^#K+y)zPE$Az-i4sK46d1)=l$r?z z%yu7RmuK-qFS<pbTdp-t&@IcLTWHV)+2tC>*`-^i_(gx~0%B*3&BM<0EOhs?0Ki2w zQaFcUf0izz{r~(aN~hbL1*6%XaFg+yK?G=5apxO^pjG57+M}P4_Bo#(-yR*B9^>^d zuV7LU-;Q&hUp(S0L@sAzs*Kvu{QZz)NZZ7o9MeGRtDxD|&+Bk+k2~iJ{e=jU9rivt zw54YRm6hU$>KV4&%#}27*Et3DrUygqryOG*y71gZnmF|gdz<vNf*P)*cLRU+cv@II ze~*fFhDtag<m^oDJ_Ar--*k77ReK7|$~YTZuX>IZi?A)dQfNAd)raVxRbTfmYRuGT zIF~9}h4ChOp8tY)v^G?zdOfW1p5B&K?fxX@x$p{kOXfWLyS>f6q0JhSw;!VKCJASJ z1O%xiW3LFYEFPlL9BsWUvg`l*Y|ga|zvN`f5t)hdxGaHM9KW9ygy^e@`pID8KUM{g z{3h!g)K0Qq3$;1PypMkWRI~P26wRn<R-_f@i?a@9*5jOdqcTn!)aCGM0rg<xS5YuN z2h$Mh3jBz^KP|KQNC9$dwMhP>SB>K9&&_4*wHO|JZs9ZbuGt5XnV+G2zKg=O+tTgE ze?Z4+zFo3<4myOF@ao&7U^4kv={r6Ah6(M6HJ4@Fy+MD{n`Nt12(N?I((25z%p_+) zL9lY>Xn%y(z6wok7-Yrh25pMaGL~7cc~vW6Xs4I&F=m2%>mJ+qYiE6HP&YsCt(}=8 z`&IHGN~SmT+28hw@t;}qp-)VwYLNJE_S0p>hf<$Zphw3~*nbCoJ!?z~n)z0r{E?6C z*Hf-+dC6Y?LBrJL-Z?msX48LN*u;ufo(v75bKSv%(YtMI$_@PU?5v$XaOsJkagv_> z!JYZf{G11O8A5}g%Kc5Rl(@-57=3g3IEuHk_{wJ9i-B|sH@Iz&-0v*p*6IF+(I*+h zB7gvV++C`R7PV!7@n?Rxw(ZUh+S6+v8}MFqNqTMH`6Hl;zJ23qL5!$THIQRsWX-NX zf4)wBAQ6vh5YCT%Aru*udV*DBk4#=x0P+3hM(t#ckKTM~94$->F+fa(NvE?N8gYdM zE8M?uNw8TSsIuZepm_$Q3S0?h!XR*vrCffXQW!Dz1|#&g6@P~sSjWoAnS0&%CH!#2 zAQ^q1Oc{^QD6Ro)D*~NF2W6RJR(usT2rO+TjW<VzxZ9XSf@c0R8uN)A_xEYVKIBUJ zzw&974Blroq0k^uyN{vRn)IRZoY7?%cm|NjcMK4bFEllqiX!LNei#|xMoi_=)m$L; z!)DWL<R`THBljT_;}$fwvgS~Fcjbpx(=wpTK+c^h!iMm9H6!cu4PK3dI{n9I$eEM= zabTYaNaJMWlo-J5*%|<5#dRvAN1-@_ClN8aQD(!q?w4bKJ#B_<PQY4ekW@i6UO_If z^xO66%wk_q%g=eNIV5=gf=)B&x{m2lE524O81lw{OQQQn2w-xgR!RQ_@?j9mLbMmh zCh1AQt2yMuMrUfZDKpJ8wMT#Hewmt6t<3ku|Arc=I~j~T{&YX|C+byvGTugyUiX>O z1|T{l^&!Q*qMLb&eRP`D^bHlz)fDbpzls3>l-lbz<nz1l4{*lI9)P)JHx(n;C1_W< z(=`N!fxMwJRv|sn;9Mljz^PE$D@-^sV-GE0J=3!gv>qj$AbqAaFBR1!!hIaCB}G(w zP$gD&w9GW8s=Q_tgJ(>Qz<xk>X*xF)oYyFL&D2l!DMkYff02Hj670=UhSzO+j?pr4 z>#W3GlWVsB2|Dxy`#T2njJ&pa7ONLJz*r3wns)XKn`T5*8s<)RhSb&<SSySi*3aR{ z)2ec_WzAjF<yGQuSL>vGue2xw9_iJ+`oteh&F)<Hv&<9)EV~h{IGfO<9?S@QJqf9A z0UP^KvRd*=)zVz*3KGR1DsCS&aQKsS3gBfeCX-Wti*vqa`$FYq&tNc*qAk&B<n!!0 z-g$P;UqW8vd%++jR--;JP2`TDv)pgo#pJ<X$oBcgAB(zDmkOXe&H7w9KxyPY$8^GQ zIw4ZAbgXO{qfH|tVjDC`HTs=L^D%hG7xr3Wp65d_ELdMi<5V`*YypZa<{m0yP3>#B zkXLc`9s*!WuEgb4vDOA}8zHuXX(cu20}(=9x2QgG?JTI^F#zLc;@Zh}vEPSb!~p)Q zH~W90RqUz9qGkt=lo40|rXTS2QKm`5>Lw_k!&ZY`NbK(7>=1Q-02yFGjZzaJp#Jjx z9Ug%`WeCJ6J3Wz4XA=mEPmw+vc6jpX!z<;X&w)>*&qQyFRNMjJ(AH$Vv9B4p{|=Qn z2g8s^?WEpfMbpR6C)MPCK&lP~OGq__tZK74GN5w3Pk^A=YYQ2`mkHhsAv}7W1DAXv zeFpmcoMoSkbG%JZr#nL#sZWU=Lr4_5z4QxWC3czn+s4?kfpp(BD={x4-K<v7u-T7l zM&sfr3qabx=+AT5R3erR_}>?ecVT-^qF;H>NHoeR`XEDiF|^Vq>GJB&u<+5q;S1W) zM7NSAtybZltGGFhqg7rI&oJKcT?KogOn$W9e?A@58>x5SRSet5wv*9X>Qf@d<Hmo0 zef{OX1v`vMvzqcrbk0f@D9^PGaDEm)SHaIU+uhF-PzEf;>4*Gy4HG}Xi4k{c>#9cs z=T;+Fhay)Hq%ST}g0HY*ABCc4il~=Qj<wE0@;$0>T%|gmTV%pE$h@{zuaSKAk=eO{ zo`xyLGpu|ua+;*HUYq<g)u!8KuVm_jB8FW6|BIfe%KceNYfM9>mJK>?<fv(@n))j1 z3rt3`VE3D4yo)_ZPW9O?{a|MNRbAO_0-WTJ5FI%^OuT0mbKs=>K2w|$BU_9V7BXnR z5*g`9VdSFVZaZ_5eomJCXCKi(=x&5Tyj|aLMRc1pLXgqWEReu{XnGkwb&D|Dm_l3k zzQr5tW8Bmt>nDvwMDapRz%P&9V|EN?D}J}JGe{+fS3OTYn6d(+Q|`IZK4VrJdy^Bb z+z0mh3^~qY$T;sX<Y<3$o}^>sQ$d}P8SX90PrSd`+c<{q#c&x7LglG<>CWEq%l!~s zgw(Q8fWd0BwM^V9vZqFRU-WF<tCfIMfBwLs;#24oYps$a7k+|Ae?UB&uuaGN%ui@i z{#0{DABdUhfeEV(^wUY{($A?+1EPO~p9x2=FmkE!dy_W;Q>*qCN`?!HK5aU~%=7K_ z+=|_jv!vxSOLvUC@~bC8n@-sY?t;?&!>J%@PPWOOKj95?aeX-o(`@g)z_~MwFQw(F z*xs}1IhXjvi0*?N?Rw<Y%FYK>7o*xq=a<}Y{W|6KY9apV?J@`7clT$V#bK^cK4S0a zK8#n!ho8foPn=qL!tUl%=!H}EW$@t!aF5?Uj?r^9oAV7q+fPR5wNvmg9n*ZTtfskU zy9SuqE9Y5eZq;cY^T(Xp&iQ+TPwXl5%&KY#=dBH(RdVPQ-iwwnN9VWDe>Yu4kLrkl z9%#p+h#`LIT4h8(m_ttxyNXpMXL})e_d`keo<b#7{2mEO*!YFqJLfSy337dtT*|Vl z)Gs#O`ylOWY)eBe&$cu%TGJ_QqH9eg$rs4IT6KvD=v=pw4}L?dRi*pzKbxLrTaJmJ zQXM_R9+Ty_p@Ik_KKJr}R=iUU%#Ex+&>Y)P%1Pqg?Lu(X(^{k^L<}qE?ZVkBd$yV{ z36>!1!uBwwqC!)#4LT)<@ez8IIK#_+!-fK^fRU)8!k*%vn)h@l`ZwTw__MfVnj~5Z zcp*M6*KSSJhn(Uj<-(cRncmzB->Qd;<X?&O*AYV0pUl?>Go^Y!BI4Wks|sFZ^@>h} z=;}<ftTg`0H|zc!vAVaeE+jS3=uo%FP$ZD0ndL<na#lNW+cGWLoAR)JlRd*;(r=s3 zyFJ5lJlh$vm(;Xh2=Qy&nj<xxUMr{D>$|tF78Lfd?AD%o?2Km{)?Ni5*nz-Ld^{Wj z7DNB(mI2|MW~VWnxGtQ`e}s2o1%ZTuJuH3-yXqF`&!Z#}-o5%ZUJRagW9KThVK@G* zXV_>DD#~@@@#z^h-Fx?fqM<}str&b8OiF?K-S3!_**yj0^*@)X=0&tBP-G^pFaVo0 z4875z6)>xezB1HE0X4bp{rt(Tm#>e$GwZ#v@tfcat+19y1}5{(3rKP0N#s;!wUIBx zvNwbLxr)6<>-2|fO#f=UW4TO=xs-Kp^xZx=VGHUs9s^^?dh@U{!PEdu={2)g;ve!5 z^Z$~cZ~+MK+xO-@D~I?svn%T?bpQoaIXlX<j&&TO>M$Ghf?EdRC||}v<!xGcL=+{F z_DgSPfE>Y}kLgERsCF(YDTa-^tQ8$p?TjzwjZ>6w2(NSo*0#(a;(RZhcU1xRpWdTc z6N|*L^@UtXdw`k=PnzD}tS2Nnic+O7Qt3qLjF#7PLwoIs1)guzoq&a$H>r?=Na0v5 zEEH&EL4CJM1)PQwSvhR*Fl>NVn&k<InV5P!cHqOv#WA-ow*T441$-;Z8?F+nqRy{^ zuQD3F1=pFT1{S&_!(#bDEEMz3XsOwi`VxZe1-3%G+m_(91OQjNM|z=9x3QKUE*}%5 zD}IWhUpoX!_~z;?UyrSj7c<3};tVgQCG^SQ#Ml4kPoa%I&}Vg+y9yRagzFOFrn7nF zJa_hryFY;{NdqL`aw<1Kn-RqItQLZ6@7Of!mh<%|cBKEJHL)XH+j1LKt<oo1J<BMv zDq>!ui&ib*VckM6DSjFG)+ryyW60sv)KA7yTjA0Z`e?;&fDHCc%}zf~*(`9l(Pw#1 z&g5I1CHfmXR+PXsGZ_KiV8zd%rr5DEE56)3aI)QW9yDY_jZLD)bmnrVt)Ox(3EDSp z5L;8Vb6TveAdk4)$+skcm}+;pO%(BR+oq+tuR1qvSY?>7dGVR%NPLgJ@Y>kn`fep2 z5z)uZF#VJmZJc+ZP7`XqGjYZ98HQqYL#n?ID_QXakSfu*Npj+Kba*Y#1x{nT7{F<K z-W2dTCv9i!TaSj9Xan`xkj%M~gAlFwuK*=Agm>=YH5hHhZ;QDbdsc5b*5s{D<A%yD z96m<H?e4$he6gNve4a})mEPM8_bj9$=cZ<Zx!H$hJu%dNb?J*#*0W?R6}{S9%hjso ziN@!b=cS)f^_%kY*h^s=xR@k+EO)dI7T<*4bvTDp*j=iPJ=u)>JLZx?m~RiL>pphk zr#D`el3qbg{?ui78PA$opRXNn&iF?ec;IwhWA5aMaK>TL*7GVuZ6Ql|1qwlBM!wYx zLEV+9Etv24QRtLsKVugWkE_aQfzllN=pX##+n;o6Sf(RYz;!w9=x-Wb(;BHq<jeeu z?L1z}?fS3>?<yZ$+rS;<sV~S(jJTS|#1XB7$~~Nz;u)Ouoo?ns-wGHe!^DV2Evx_{ zJsI2|H}k^`D#lqd%x{VL^65@4M->iCU+EOoc0?*TZ({;;brXK;Q8I&jpZd6F%x2d) z8v1)+mZ{y(oZdz)tJR3THN8{vWb7A^HBRjN0eJ5D8n#LpAfq1Os6ETQ2);@eKwozh zb|N^KaT7FrLR(Gp;F=d|itaTeqvR>hbOX$xIgpv%@zHmZ`D$LIN#=_#<|*I~Ik4c1 z^v^Q#;@3}bpvkR1>unu)G8k%cPDNjJZFE8EpXmt=dwF%^mX4X)$U;KD8gpOF?4=7z z28H}^d$a!~JbUSwD{hSBGnCF=nSR0V7=QfaI0ga%>Aa%6YsOhm&h5uN;KfZ{Y@;cO zoW-^(XKG>X&iVcGrWVxhm|Lj(+M6plEZsHHyuc^^*AClKO%s^dx)*)}42~4cA2fR@ zyIm&VLd%1&EBu24R^q0fe2Y5~=%L<QtH$xhW#Gm9<SWH`a!$X*%%T#4yFOjhCHxUf zRKB8`jEnF2+2ZHO@3gSoT2XsAx|hl`=MrEqZ0~J1&)(X~es0s^OLQ>hzGPYi-NNiv zm!`e8@8D8*+Gb6?W^*u~o4|>hbNlB_DB#E7zuv=tyS-ID!IRtbTGMz(Ywra3^#e74 z0iUe=*D^;chzy~gEc@LnuXuCHzY&zrqR(^>#$6GP=cT@`37;;Da6fxwEr*BW(ue_G zdo;zFN?x^D?L|Znul_dUO*GF|<5oUr__3xri+(1)&?})+ko(Y&E0j!sEfH)10q6D; z<3PYN2xzo~_-6<7GyHREU;cTY`kgvlt=-%<G9uk6dA;HKnyw54*NQKR3X|X4UncaR z>E}W7rlC(T6fXe~K;&ld@504b7dPQhIHe@g;(V#Fb`v0c34?6zsbU;xbOILc@+vlr z7cES`qxNHIsK^zgI={C+z@w>NZQ8Zib?zvfv9wJn+noTDu{d|V-utYNS5F<USP%|v zDx5oPX-dzr0XgUE*CfnOSGMqB`j;s-oB#ds10fs@vg6Rp)v(1Fsc~rz4jbBQE&q|8 zx~%0(^t($VmHmqSB8PdMQoHTWE4tsUImF2ogN=P(yW`FgHHSEXM+bz2?SpVee~xb5 z&e4$wim|h-XVS3`MnrF<UkYkAb5MT4{B34GWt#nRpgqXwzMAdb?=s`>G{0?}qW^*3 z)4%HO=*E<Z?a1lgWukY?(Mu*s%`}oy)YIBB0JT&0u}YT{=Q+#XP7T<(<1PDrDwMWi z-mxRiQSxspjoY_&atWs#7CY>=?zaHzOq59h>2K90=Y?x`u*(+|%_jAgi7R_}JlofP znfW3G8lc}4{2p~6K3Qr57<A`zyS4mDJvCd)|3kmKI6?gw>cm@*CuWD|!szKx@@rry z@UVH<+;@sMU*cA!+Vq`gQRtxLwGTbLr622=4`baUsHHUe^|3Ilb<Z){;ku(@>)uYD zs82_o7p9*@UQePgX+@&2@_4PMmvnb{)V)SXcJCD`JoUt0&FS7}c3y#OsdHO-$x~(2 zUU`g_o>w5Vwqw4_710OnZGZ~c19TXAp?!460XuEKyCZEqflmgH`+N3bdn2^p#tou} z%*O$Txe#Gv&<W}SR=Bs#?H3(VyK&yY$|Ee17m^(=P}7y2XFR83#r9rmIl9BOj}B;~ zKRfN6sSXsEk8e@srZc<?s=zJPO@ibj;P(i;j)NbPj;78rO<iUZw#7aY9nZzi%S?~; z*dO&WV>bY9f>a;CL+$p9{I;55#Xjaw9v(OLM(qppZ?~Q~L5Hw^0`mM>G=f4KD?bF- zjva>pc>jRIb_Y^aXuk}s1?JlU(p+v!-)bN1?y_IDTf1-JEajKyD$1&WGH=$l&Ff$L zax_m0f)NM4@>@1<8i9J>@w|1D1J{iIjgI%n+u9fA7S`+<OS9IparCN*RW{2sqE0V; z8q7sb)wJ%>r`f=(xOGmklVraaEw1gpvyO|^x<!Yr#$k3-Yi+0f{`@al&$trtYic{K zdv-#AS}t$6cN-7jOLUZ{2Mm8BASV%768{0!evtkZV5{!;bn?7^evmV|{8>ZNROLG` z4fiS<>E^^Un;oiLEXXJHgAs9V-mu%?%%k>Jm?Slz9RYu@n{{&774n8_UooA&&2F7r zfGUF~^9GFqz_X}{kE(;_D|epp0#$U<T1sv0I6PqM4EsF;5b;LuRUS3$2~D!pf=5jL z`sRtcvCLsw5;@ap_*s}?VvtjJ+{TQ&@GEF&ZW-7YeUlk$S<Gy7O%3O(p-<q8FV&F) z6|ocH`QsCfnk~6oZkAGse9PucC5}=r)bS=5unl%;d7!=BMdT3$v(8^?xIi-i_dc(5 zRbpm!UiaRS@7wjqGj&9srVjc$>|WWYynFvmAM;0Gd2!+ncBWJW?HaeSr!ufWse?|J z5viY^VGE2AS+shp3IxY=5kW=1l@oA4h09k@Cds`RvlU#394u}1X8-9<_Y_(W{BzFv zasoM8&_2Y1OP!Y4G9Ec+P61&T@!!)VM`}@@Hv{T<6^YQgqb5aK-f9EQ%wAiJhKroj zYG1aN9i?1i^nW`2fZ$Oz;m${S*!|K!hab)RH>72zu&{h-LHhfN#*vBZ%7lV&1qJx8 z#2q(N7;v>IFMy&Mc+o1sBDVyYvW}05{%g;x=@o&!XIx$INvU(u^Kym~mp_Km?5+}( zaSR+6T0rGvxr5hLA_fCYT+8*WI_dg`7L%VvT5Gv<-zt$@{X+JPPs+gIM-`^Fk&E@G z!c!BCWsnIhN^AdOP1?lXc7vF=DL3p6^f9yIy95cJ!LigXsN9xlSQ&14EjQ?O)P$Lv z9G$@ugeJ)Di<nKxe4(XzhBM57&9RjuNbE(aX_DY=0N%tLg;3Pl=j+9uQ;-@;#sCvD z<{JzY0^`TYyiQTJR~k~KUNJBETh(6V9%r~3b}mxvKl?2GWAOvle8m~8WY~fc_MkaY z%zgMq=9d7V;IzyYoV7*s2H2d3Z5X|Fa(G^zjj^^X5*}L=$(_+^PcLNF*888aW#s(y z|2z2||53QL=iKKxHOkmyGRlpC0vP8m`9hApBYH}@v{!%giTTX>kiE6C9doi1kGE#K zng4=#?a?TlYTzD2ed7?0&nKoEj~Jbz5WYemZz(|c$fwZIt=3iTZQ-*~7m7W|*yDy> zgE9g8c;f6fQ_jntX?|s@6{7XNY6#@N&M)4-{)38{_iz8=p8S=QX56v|tULa?Z+}Pg z&*lzqKhV+K@!Ia;KO$k@{v~fTM)LP`bR2En)86rJ>-S#U)3K+c)zC)vD)Z^-l%B=E zIUOw>e|>1*{ypvXdTQ_<&&^>jIzFdP5n|e_(&1VUwC+1-J=9_~J{RYLpUe5U^nh|L zJ*Ew2R{T!@INp2wPagSfN*^F`d=AFB6~94cj(N|&MHo7or^0U?ObM+g!DPwvg|lJA zj;ivG;~lqYfGe2p!!{duW>bq5KPQ)RhdVa6AJ~`L)Be4IR(vR5_Oz#S!81UlYeTNp z^e5I|I`WH_&bp;z^RCpM4(t0><g}X3Gx<A?r5*#yz`xPA=+8*$$j>oF_i*1)$7cRk z^RL3a_RF*;XLrs>GD${{;7}q-huedn636gb#IH&exUZpaRU)=wdaplaPdgwF>E%bg zcev@Y03P*L`qb?7bXea^C4BD4KTfk9n^QL-%Dj7Ijf~00Bhs&9bH{%ExpeDuyV84h zeXn2Smp-Z7jxGBRLX>;ofE*C7!|!-Qx)b_VO3o7g6$>_g3-@H5Z`P4t2z655rgbyE z`aS$Z3TA^~#pgkj|9L;}Y47dn@sw;&sjp2>_p{<Ps>|a~ff*mG*7moL4-1q7XsK*^ z?a43U^S;#F&v)dPnVwWNb4S5$6UA;5ABWorEQ8Y;cFjZzZY!Tif6WqwQ^Vm-kfy^s zn)zGZ@!BqYBL80L_2k~odV8>fx0&UW>0AA)?uAUfZN)DGAj3FX7%`^*9%7sRNU8rV zJyf5^{YTOK9b5LkmQ9tEzU@yP;HMY=j?L);IBIh`*W=v`2*u^X%B}i8fFWe9_=_U` zb9)c;qTO-WiZ`f>G9C7mKvRdA?s_bE+tY5|*Yck3=W$m@et|l1IG+qZ0i>j;+I{^x zDm2V~lEh&U_!8FvLcr8l>TX4Uc0jk(7JS6BSN7%aOVqOA?~J?|{uV5rzoX-D>R;qs z4&p8QGPO3|{ck%_9T=IJ#n8EtX}z?wnl2P|_IvlDBHx?SVI+4;!1^;0w5;55^M088 zX@wM<{Qt1O$1$t=-$ER)o!8%oh4YrZ>1;|w5RYD{B4>6Seu`W<`_k4!&0NV8XRSs{ z27)h3HAl|PE)_kUQgDq*{WvJ~mWYvE<g<N>jQoU#uJ;Jx&(C_Hf-9T;AW<~>?t7?_ z(d6t+x0;sFSZWj>_w3xWQ<BxOC3PO({MRkssXJMNF^`O&5_%JtZR*mEbXu3vK-sb@ zWj(asYTU+-n(z4vEfiU3?~EM?!3K3+e3>WFLnSaR@;P_BW-Z@H4JdgX4YelJ(QL&Z zF!Hp`T@z~G6v^GanRBWB7RYrk4#cIu&IPp{`(qm><Auckg}x4pn>$?dX(dmA95xv> znm^j;L|@J-+`F#vbekt-*fSM-Bw>ti6=V#?HY9QvLPaT!Z<4qIH*|w3S?x9C+uwVS zcDJWSYi#o7^LyGM(DFAy4^P~LUdW|0CW*KAdxvNT^41G)q}*=Dtw_-KSzWE6=xM?X zd2UBSwG!pmA7B?bt!dYSQ^^<^OqTp{QYvq$_kHX+-w!wzP!KqV^uiI{kv^50hh*sk z85H?rRKYJ*L4LI%SZWI|rhPZ{H6H!;ZSd>fy5K+7grXbLKf(XDJ>p3QnlAbyYJU7A z{;^x&AdKRvj6r4mD$cK*-|75T@H=zYZLDY$=$C;p6!})yhOia?Aw<*wreS3aHV(e% zb90t34`2|p^Du<R`NpYMyV^0vsYNkk`Yqvi7Qe-08^doQziOqxeePTtq2eCn@1-T^ zy`e5LR;{4wy(XV(eHP7${iv^e^uBWJ)c2sMzA<hB4?6;H=R*cciMPFe>4Bcb7=Q;a zsbeB@8R=qFUtW=?3U2)BO4daSoG+EteyMy>(UP~yqNnrXoVh$ah+n+UHh&c>#rnK$ zW{9P7qPSOH1^UdM`ew>r-;%$|evVi?5g~C~xgyvy8%{Mx6A=j1bkCVWRr54;DCK1C z#C9N;%XSOD1nbteS@+$;W0F-h{<9;*W_tc{Xv~o~(_&Pgi`TdcLMxWNz<RRo1ocvV z*iBxp$?T%fCL;Mc_B(8-v(`=Ov3I(<y0x}Dde|K0nSNYkv3DBhtE)@xXqSz|%!02i zSo~HHF<9BzRi7UwWY}s_)IJkbo_ojtpu853v&u)`N=+8rucSW9PZs?RecD8!Lg$-> zgw`*vefjRYgz?6O7d9R8@lD*_W5pi?fBS>jMxZC6bEkVLO_=FerK_vWqkm0bFneXC z>x0LJjzbiS{>6hZkgou~a9{X@U!ieQ*)OM;21T;y@e+C&s5r934dGO;FNprt)NeI? z6NJ)F0w^{1q}QGl@1fJIb-xn9G;8Y+WNv#g*T5|}FYwW9A=WdtLB3a<U^8wuhdF1_ z6Vt5>*2vDWiIxI<e1B+DbMn$c+VA18y>Es&BxW#tR@lbB^J9N4tLd_yDE(aQ^?d`< z%S%766^s*k(YF&f<W;VB@1io?G@gSF|HwDP-5WKTiVRcfQ9)JgOEUb{y|IpNh?FR? zER*<9#$Hjgb~63_416YDLnnHVi!CVn$ciT@Zaq1*cs82qt3<!rUw<jqZ28d{C)nIh zOh)4y$;LOxmqP=Z?S_qzVEUezY#8~H#OVIM{_ADt&tW!+nVqk{6hwqTM*8~#DsqcS z4L%3oa`=|s>Nn+1Ku8kTy@4_*D58WW*(TySoM=?sjhj2sv|VI9dEJ58_O-<X|E4|< z#jPi=El$6e!S@DxBYpmY%|4P+Zc%06B7WXl5r(APN`1cq?knH5FK5Y~RV6DSZ%}0m zGNw#2ZCQrHnSFV|qJc0nHyQtq0-VS+LLRZJcvkvm(j$Yr>%%$yAZGj;WjVxU$NUlr z(6s?CQ!!QP0_2(en#lP@LrFSU1;*#_&5GyoR}n}*6`gM__36p}+qKnvVFPYIL)-O8 z+N;D{#}2cLYc6F3R-}D)?5@%rj^*uq>iX-hyN;;P&Xyx1D%U5%*VMK}pRzl=&}Y{@ zPSNyldignaG{?ICNdUDHidtFO)a8q~35&K?Xy`VGbFnnm(SHGofd?qArYfk0pKL`J zpNaGMIYNowuRPU8g&u!?BK)U&C4FU9xHz+v#rk1=_}9$>r%6XPbZzLT-fGen3J@AH z2m0bA;<dB%+2Xg<ANP}u4Ce!l`$saQ{*@1gGFE&tkBN!7hCHxuVfR5abD<#;_aa*H z3epK}Sy8V#HdStA?KM46>t|M6;z#SXo1$Wr)CsW6$QQH$K6&HhSyVtms8iAHf&BtF z>OQv|a1iw9JE=VK_R^p9QA!UB+}Ej@{U+LMa&q}M2-og|Z)z)<IiKE8C8ddsnJ)$O zd7S*IAE-VJ2!*L13w`vb;YT1omn3o9Mf`ScD6-;JJouy<$zy7(3ZQ=|`xzjHD*!Vm zRZg1e^u_&zdgNiceGMjas>;hR{Th3_ffGixK&SZ;_KR$rBBH^~B`EwVEW3EuLPU`n zB(luUXbp_~$`~o&cbxiYt*jbzJ~m#rD!Xmz(VQiy)F}j)VD_M}-QiLhg#psf664*6 zNcdgdgJ()xH{gU5{%o;9<Z{;PPwJmQ%&)7%od8oR|5JVPd+}|!wx5#*8RuMDDEF3J z(T!WJ%QivISj*`U&~9vx4D#sLG+Z*yh`EUogz%(I))nhx&1d^6^|!AXmFk7Lbv3px zu^abCh7n)2Tz8`{{d)UifKpf%Aw)+8bXxJ*s;zOqebY-^U&?n3H1wg}xZCu1;_{H3 z%ec;@C<g)>zs8qpU-5>!hyx~K&DG2E{!Siu{2L(M#wyvX13H~6-iS=Cy<&f4l+(By z7iYP1-Al7$-$SjOX>S_Uxc|YHgJ*|0jyDhCARKj=$8XP>OMo-{nz%f-tv*y`KWEMY zK%Q@U$+>%LQ_rH2rjE)a3sgrI6^Awj<3&rT?b4oVWa|Uxx~;Osfgn1dEmVz_C;q$p zc?y3ktFV1n!J-?x8{4HN(22(0aT>RZ-S&Y#DGCseem;v47JbGJ!ejzgdBAMb%Ce{E zNrwE!c6AARRQ@^C7COH+y5G5b|Gdvg*RJb_%Db6TjA`#=*L_A%<)tTA8H{fNNx+_C zY8{ncV{Zzy^d_T#LfcZ$BUj>2ny<58u;NSM0`x^&sLX7}%+MDO$Qm@7H1o*<##%9+ z4-hxAJ_!{KeOsa*_=-JsCRsA|b?^1op;t<-uh^fuN@8p*i{Ly|`_=2OO?<iMPv4k5 zdp6Pe$R+Dv%nOSE-HEW8z$}89*@q*#Q}(u&qq&tGW(_n_@{CH@n_7;JU_Gw;P|LC0 z$}KkM={na}u(yhnFs~#A$(ph=ac!;?Ztb?G0IbKla=i&&U`>Cb6al+9#NqCRQh*b= z3#w4tf!4?Nmo42Q7Km+Xw6ACR)LqY}ve3;cQe?l2*&b}=Ox2<zGWf1~Nvjf^U_TNL zAN&-um1AFDVIm*gSq+TQp{JyDFkW3|O_Q(?-IfWG_sD71I__|(CfdyUH$`TxR!!+Y zu|e*=Ec-cI|1FryAo71ve}c~4i9Om!{Z;j<znkeT5vSj2fsPCGTYrkCW1MH~smc!b zYjCHs?&4-DPaPWh)pQ7jUFR$8;ZW3yAEWU98SYOB?uABe_egD9@%>aA>-lKmt+KU} zi*ND9&Oh^2fNiP6@;ZWItuOTaAHI&)nzVZn+e_0HY#j*OOR7D4KBOvo*j5nRP>1cD ziC0t`(My#0E$a6M!|aMn;d`ZS=q>8+!ZcHv)CW*Fc57iMy~UG?fWBt@XeY7qh=$jx zaIU8h1A4!&Q(J$r(%U7uqMCG~Ve1Q0=kb)qFaG%Q;-A>TlB0=9RqV)jP(y1=c;{ka z?u4?Q*c@xgL!CQU6gZa^Vr@QWU-6O|hOEn;3o$4V<%*Tb81y`6<TVz|jx8v~fEsBA z4n@E+616g3X(Vdx9f?Nn;>e!ul^g7%OcE>|rg(Szca(9r^~3c8-c1z0EGDwzS5psh zx9!WXdmX7;-gtnQ*OAJRor%fSvF6VY#2(+W<Y=w+#1(H?6W1@V=O7^KcPDnd)74UD zHFEv!5p$Hn=GvQfTk-w^>h6~q?^fsl0lR%v<8E(IuvX}N%uqWux79Nuv_?OmL==Qx zLi+l*<yDiyeXA6xW$ay{NPH){wX#iMgSCAJq1oS|ihv$iIr3F9ig9_z@^^WZ+ob6$ zWJxUQaiRt41~a>ky%U1RmcB#JObRtMFFwcsxQ>46scoP4Dd+A2JNkybmt8RA_lJUG z?zQBueShvdPV^1JD{t;ubOtpdZ|`|ErbBKGIoM>w#Lf?hH|0HGITJ?pTk$V>0NXni zv)!`vwH(Z>rp=~tdq-p#G;OE)8*|$xgsPVhwC=AJR5$IO_gi2RWP6>PcBj6<$6!1? zoZHm3sNA{YrKZi_9WGysrWmXWsT1Rm8zMlb_uyQ6XZqolpD+|{l1K#hr-*Ac%_BQx z?W)7rjVl<^>y6Y5eOGTTs3#e!k^_H{ditIj0_tYb**M;O`1HD5rEc2oG(HaoOWx?_ z{JxZ{@y9UoNidt$>qPN|0e(Jr?1+9K&?18aqNUoXbscT?q;~VvJOA?(oZM)4bTngh zRv1TG;Em;I3aka|$!X=)%z&-s<9PEuZM`c{ukz8}I{Vz7#a3K{8&|fW*(zqA-}6NR zv#MgphA4`Ml}c;b=g5lJ<cy$w>yeK_p`NBg-|h0V{Amb%u#Q|g&+;#)a$C(I*7&Vo zbnkf6$jb?<@dMmR1&U&GMwio0*n0FtXxlq^d>qP0nTnN^w;t&Zg}VM^QAy3A%5AD7 zTj)MQtH~^M?g}R&EL#JeiO$i%HAhJ(@pui_RH=Q`8CM>At!(*}^3&5(m?9TAm!oDD z4b-EVU=&)9z7uXa6vorSp&fB^!olcrIWCS3uvR<-2(k5_A2_Z2bf>U<`6+}39figC z$}YbHR_&|N-;Sl(`KM7|DWL*G7|sf)$SAW#0}@w;+WK8!7na99%9)=Z>j~Xi#${c8 zf75Vi+aWG7{m?$l*Vy}^0ehndYX};ox0>eD-BeaYJk<PC9SFp2k`Rqa+j5iS!MMIU zrEnUfpVeRLJ3^VfE)%H#gm5r_Tz(2e|5Kr6_%>rdssHS)Ax+EZMD5sCKf?fYy0z@* za9Zj!{K?3R5Ea>&a7xqNRe-&_kk=JDaOFq#d!wd7|0Dw-H6;plZQ@niYMQ%o63Un{ zMi%F3ByP*iw~t^@9l^-*tg03(K8G5g<zLQPV~cInQC!_A?5n`EddqrNaUTV>?xGti zT~%rv5=}p(YR^z!8H}F~9E5V&<EQLj3Uu*rN#xTRe8_L6)4E?EU5UTfb9kC;(F3Ll zDz}=V{MAQX9Cz_ZF*EHw-!v0u#bbY2Y}0gixYw+lpN!18kxCD&UU~-w|Hh#tec&^M zB?@wWd3uudWPR!Ere-bMo);-%^g7RXaG3gQ4@b`R)O75~1-f6OD#E>p?tf5Y`t_jx z2Tc8i85hJ`!ry~(syknatm5BQV0SFNJglC1(0$MN1!o41Ip1H+^!L|qQ}OqGekJ=7 zdMLG)Iq{E7XW8NMl#X}tcxL{&$eM&Pb$}c)2!5|L@f55j!D;#u_9{{f+mzsM8^bT> z9uT;^XfadgS{!|2E=bG`wdGc)ekx7vI}lo3Sg}d0=zEO+pbrr~V1%Y#rZM6=I-a^2 zi?*iOy^gCgQWqc;O#M2Z`YIpI(t$f(-%sPa0X_9!G_W=ofk+MH$@Dhk6UH?T1FfBy zGei98f_I*l{GUtTz7G;OkCs2GpQp<o<HtRRWdcW&)0vdh62UD0_ZDi_`)%Y>dPKkU zY=sjqf5iK=P+9pjjZY8r>D-)ICW}@qrW4`L&m8aP4sxs^2VWL2cIK?K*0m&}jOkYV zU-=w6a;|>?Ez2FGGwf$UVj!#8#TOZ0I$)_>4ZvSB`7Moaj$E3!bbsPoOa|W_ccZne zQ^71xH20J@MId0{@A^_GQ^CPMOV7tQM>l2U33%+6o0@^iYSPjO;u=}HLG&_=wUREL z=62(DHPC&K8t3IHiMhGj@^bGBwCVIud?l=m_CB`?Ru!TqlnXJUJ}uT6;s#|Rs5P$) zxBGgIz<tY!0|T)-cMxonekKDS<)_Csm93F7m~O?j7kbxc6JOE#5X~vv;Wtdg()R`9 z+e!ITsHc<iALQtQ)R#fS=-;JN%BL>@TaFJZ$+O}+F;4VI5XZ9~W><wD)Q1r5*Wo5= zu;RD*dGhTSt@w6cq!33ia834prm)O1&As+8&B(0rYreI&<^|MTv)$AR8LkSeT2*hw z&&#g*YkD~mRc(>S7><ZpUC*6zH~x)^AEaUfzxBkILNRb46yJ1i>P^^JAD0}x7~=qP zEjfB2x0KPOeK24IFXz+bTxo_sm~X5hZ?$kfU9_b~Yc`X=0oq6kChOPcc%B8``xNs& z4Vvt8H!-zH^#>yQTUg~g{SnEC75_HX88of<K{!v35cUuL*E}1kwe*q<r)1>G9u?>U z6Tku319YeW4aQ%C+8itXOLBM^p$&7qj0cY!2F_-f2T44M0UktgrnE;=?VZFg#zEMZ zzn+o`sx%;Y`70oU`}F6q+9exfkqx7bdgX1&(c7%}hzxuhAwBqvCWX*zF#BaA??G@1 zL~ZyOI_3zlXMG%$XYR-IR0*1g$m7#P@GI--0C-Y$A<oQ5-9c99Y2@!@nUkLKgzipG z^-MLAb!AYWwn&~-pZrOwGQKOMK<fvw5A&>Lukx@?V{7cgTt&BAP509wV!WJG6HlCL zZQVPHOzK%f2K!*@Qq;dkFZgeYQY44+laW}ifhe%|Nw3PJQyuBylhO-KS;m2Yf5@{R z=c$no%D=7hl94(Rk|gkryK#*;SDCU!hQ;duImew*Ln9II#5%s`XdZ+sm|nU>{a#un z=L_szwP>LA<dpJDW+V7_s0DJ}Mgy~HK#Z~WT-El>YtZa%1I**+seX*YQhDYNBQ9O7 z#0^%1l#0_yrOFU6{n->+^1a;A94-v;5)*RQU2IY%9LndBa$_u2z2xWsYnfspO@B<{ zfevc=HVxQYjqA(oEMc)Jau&8}sWU+4sIH$*6xxX?S8f$Z_7Lld$)VJ*@%lR>*3Q=O zF`uYctwzE;@@1-k2w~&p?!JJ+s3omP+THFLA=zJe-)T@WGzDm=F`Wv*E>}<^>6qoY zo+x}VD?z-HNjQ%Lh&{`v$t==D6RK15rKx@b(c*qAtY&bsEo-@E-lhkVMj;q7ruND| z*B{mLAjOR4PE7+ur$3rEnNhi^hx84q#12>6HHHSipdf_*T%-}gl=pV!d;1{h2dNRX zFB)764a}~SCC>}HS@53#oSu4`8fV)@Qflv06@cXldm#{8pXXtJDGBN%t=<Qm-#xQ@ zrrCaD@1QLHOM7}a^?TLutPpsy7mxcyyC?a`F1#0m!6UVeuggud3n_#Oz9Ae->f8Yj z`9FwmCx4uvnx61#@&}=mt#9l2*4yA&eDW|FnT3(pZ9Yc2$}Q+Jv{ny0p*7rieQ^zm zewYc<ULu2uynCXt?9C-7@*~w9oSF9zV{Lb*h<xhoaQC)!d_<`5ujM+35Jc2*n7C+G zQ3?1d^XAYkF4r-HqTlW~>;*bC5a|`YX&1JeVy9HPPrlPk^zB0g7h5LhP=&FUwi4hv zD5HN&uw{Y!0h12e;pov%sUOMZ>)$=P!YeC2n^gYGj)#6YGUFBx>yzT4*O2hv$3tuL zYY7}$7CSn0(J5<Xz=fLeJSC=DwObbcO{_TiELe}LsknqVOq`6TX#DvA<}WAlQoaIi zE@LKGu6m}MdTLm&qpqZ>Yun<#F$Hvwv)Y7Mk4Y>DTTk?3DjaWKJ|S!$i=5`^Yy9`t z6PNZ7p-w_>w3EpATze?HTI?fob8-#spS+BI`>2nwcY4+2<1shP{+-ETd#X7OBQ*=S zz4(MFWYa~7vz)1188Y^UBI|xF+3G91CE+EyI57e5AP?1CF2?#koBa?^kecP36>BRF zb!z1a#{xOVu`bVgK=->iZ#VLe4&4CRV8;q|4!<aI^D70fcbu*MejG%PU1&qPzi~X^ z-aLv8Mc=apYo_^&Fppwa#925G_$}hMIMybOqQECp6I$`g<8Wf_LSwNP&HFXDjdM=7 zk8oVgIA9(FDcJCJp0oIPQ%`h+Ss$oQ50JggxsB0*Bs0OUZJFCiwOW;&MFrLNf+A4_ zjI=U2%Vs$G-3Sdw*765{KhYRs-ZrMDi>+ZG?e`ay<2VKEP5Qpfx%_y|F72DE?9}TS z$6_19<lbgC9*?~is)al37v?=rTVnvSI#K+jgGV6xg~Wv8?3Ao<zQwhL(UEe1rw0f2 z$A1g&=pZu4Xn?HwSlpYB-RJ#Oa|pox7j3RHjP36qJA&)#C@TZZWjgO+Fv|Ep9B;-2 zI%8rzWs8Ow?<P#l)riT(-F9)g`vrza=RR-NwJ|ZNCvjbI%aQy<;ZlmOflO=?BY-fl zC!HdMMrX&g*w-GPr*)c=${j2p9mypM9(zv#kXF14v15aUQ}|;>(YLK<rZwT*E^67I z&sxQMBPc+C)?C&+X!jACfbSa07h)JxTTRbV)VZRFF}JB%t&?+(AdHu<<u$2=IK4cr z7Zi+MS?D<g(&}e-9QIcBd@NH=OBh+@q>L$-3d)81mdog~zgJ$v7v=W{<u_ntWwo0r zpAcex*w`$Xk4Q_iKM01DmZ~O}uE)|qSZ3BMmNLS1elgSm$+fMp1n-^HHIG%JDABaJ z{oHVjsHe+X&c6skH8t-ZT)_M8{38CMxT|&#F5zi!%c3IcEa6MZ?!jf|OUJ_U+cgT_ z?#0XBMx6X@yXZcCZ|^v~FJ&!T0#Y~`HbK{!qHD|kV%9twOgJM4G@Lg7yglKKOQ_6@ zASO86y7y)%i4#a=C?ZTs>~`MFgr|}vbOl6AE1zsF4^h3)mi)cS(nN?^64_^wd76sG zJWm70S(*{cf6KR4xO#ikcp<`^3hCuy?peZWxwT@CW_{i_Eul{r;8y(Q>>8S0BoD+c z$-A%oaltqRHQA!DAINI07*<FPM~CpT(E7LaBiGxTmQTY7KwJEm#&J{wOz<$}SYwmB z3kME|{Ie;1Esfypr!(vp6Y5a8DfVW8)zG3W+<9LIAcc@eNDtx@pQl<)$0)^@nIa+p zFQkqfLUhNlNHV0uRX-%~2@`2b+$wp-v^Tfsj}y^3T$gfn)KbQ810!r*9xsZ%sFH(Z zqE~U13Q=*LDrUnSG*Rl&K{&?q8>lG52tn(+M}M$@?>=8pV02<~X!k8x37dT;DHD@e zPfRN>gQLn~>#O%-V=OPiYFKt3t#q`spI@z-z5O}Mt{QAmT!`n2{jcC?CAQHo9r>fl zlpb|*_VYfTeT}kXgY0JMEVO$I#)!wQpA5*=J-bqO{u*+1nB7A}exr`-6moBU|8a3i z(|__;h~e_4pGWuVM^83O+;A}&9x!Uf7kRWgmrJzu&#^V2lyGy)<0jd@1ee&OU`-oS z2YfzD=%xRXjb@BYov9fc?_jTUL)}~WOf?IAjTdUEYz2_&)G6dk#tm~*WzN!;6EMuu zqus~{%hahMOjGG5BU-6P&{4oB7H-;Zj0Ec{?^P=p+idR{VG|!y`z`P?9PaURYLsTY z|1*v<Y<F%Qoy8Mepnm@80MjG;4ON%D50u`9qVy0d<$rAe5%ocG45Pw0pdKTP#IDk2 z!T5(kA_X8MAn3#Tfx2TS7F+l0#ZLM<hF(w}6ESYZzYjggCqBP_5zqWKeH$3s2lqm0 zAd7w36S&c_q^22lRFPw!sOce|cXX&Nr-pA+%k&Ko0`0nmr<#iEn4|J)#ovZXO5m-| zMg_cmiU(k72MMw_B8U_7QR9>I;IG`rs-ts#SSA2P7uxSu9<AMWceU?1O<eU+?6r^3 z7+Op3G=XWXDM%=O-cp;iezHEkjSaEj<ZH2zwPLlf<?L`_Y@a~qRJPS7?=G^}k7A-+ z(-oR#V!utYX!#>CH)rIV#uu7Xg%F<{^y?JqSa&%%l2%7`Wq9t-MR!eRd1yGx%1PFg zuS`~wvocvJy|oZ`wT7F?WSYj{J(<3o&QeYM2Vtn*wMg;Mb=Zwz5$D;VRLlg0XVvds zrG|7pw*8U&M~~sBRd!lUGbqboDWKdBAt(zd=zTz6@e#e{bw$|yXKD**U?&$3kS8Rr zMYft<&ZHvinaHxDSl5VA5n$tLfY{-1?9CCO_kd-g-HCVoRJBWNtNUw2+1^MC3o%6} zgRoiMlW}mrQq=ZL@y}m9PBA>S5!n2;bFCGMrzDqBnzXM22;mzI`La2}nwY!w;O8k1 zZUlF)!}bzBe<cY%5c{BOa#K1dEHiq9r4K!)xV7TbO!{ETDIxw$4jI1#g=Ve8Mo>-h zV$xIE(;I+A%hO5AvEoPM(1Dx0@xDTeSK86r`*u6E%!xH?Q@gs;P2;}hA!`idt;!$A ztftFA2K^&Z(|>A2-Ndh!+@yPSaC}dy0o}8wy+$AElo8og8R5yNsZx5~dsDxZhC+HO zL5$C{_?pw*PJ`1@XEPH<evH~8X|j?k*VAEBQg3Ox>+1(_D(T&Kb_Xd0)0c!&vw4y} zrFI=EGA)3Ey311MNH!loPgRm`hP!Vv7_#D82Fn)nEyJ?+`LfWoi(2ZervH$r%_Mwr zp*f^vp^!(G>X^HfrS|b+7kj+@x;IGG+3N>AVAOTA#J8HeLZPU(Lyy4}h|fe#;;C5v zRp>hCCtk*)-i+)fBmtfrgmZTcn_Igi_~4+8-DNhhBIw8Emx_p0W2GbF7HkKffp3QY z5O?nP2A*0D;W#+~UbW)?rW~utVUNy~w3B2Fo3hK4(nhljy{kKX`}AS_shsA)qB9M~ zTBOXTXpnN}i)gLDG&zv`|EDkOjmgS!J~GyIpp(SUlfpW;o*c+&UFy%CquZa~x`Whq zlKWql7=I%|&h*W*-$IM}bHZVlc*vi%?82LvEi^kxOSSPQV_yT*G+zweYV0O^W9nZu zr24{=$|vy1$H;vQ)q`l+{Z+xoNop9)y%lTFXb-VbQxQa`2@Vrjd}<(wkfqAHe>bft zMQ^m`F%FCbTUDhiGVpyuJ8l6@7~(VA_KDpZazBOpS+Sn=JuH<jT--**)is-G0?Uvf z9#p78*Wz(K++D;daeqIQ!4uc^(BkOyFrWW9VI<xG6LZ}%2c9fBR-35ri5z6Q2aIOm zTdpIv>D4m#6f8p6wvMQJUafdc8h&$R2q)##ai>;cx%-X=7GIko5VD?9`;cQ}6$H}> zq(v&g5TK*E{k_Kv6IX@gD)(j>Sz3v2Wr?ZUcviOj^!6>-kXUN+DQPp`a<GA47S`fA zu;Q=5z@E8?a8{*<W$0<L?6BhN$bfOUK7@S;+bzVVeE(!EnBCshJ?+o!JxGIFb{*Wa z^LuNfPk3fafS$-hm6{tEG~d8^kBC+c2~aar1H<r|9i;ZKh6CnC7tx7jsb$cmP0Eo1 zpQu8!v}|e}r7@LI0YrnuZ($%3G=xrA@r&t&04U#D6>L(lsjC#Bs*wdHndwlBnp7n+ zrW%yEPP39;MV-n;bN1;lvu5h?E6DCH%r^c#ns;nT7y10uzC}R5kiG$~?bT+8VY)I< z1XgeEP0<VDT@)8tYhQ_OVgu%8Z@R%@1nb*dJi1%UCcvBQHD>Z?-TNHqWN&~TEY!0G z6#Ka}$9rDgV?Vd#Sass^p2&ODF3oIuXaehcaD&#@>x{1k4K71vAk_2(<TQzjQL}Mb z)#@flUYGuw(X#jiku|$lK|*FvJ<dVsQLP`>5LUwxP_A+(Nhiy~C<|22*NGtjm@0@s zj%xcAljxgCV^Dc05Swq+23i1#9jPUBiLOGusejAFd!%Q9CfS7Yb*anISH{H7GPO-_ zLy7bdPO30RyBLXYk;Gq$#EVLzRv*b1aRUa=g9SYl!y5C9M)(dI0RW9Xx6xfHHFZQP zqRhJg2dKN~AR<JnS@^z}7m+w%%*BIJ-+;hozSFwouAXWsoexqfLz7cR`6`lT%yfWV zg<q!Yi9y5hr`|+t@RDBLV@|gPYGXbH{d^+^jDLf`{fwQ7$=vVmOe{h_C5oFgCgK5W zE<^_yC#m~e+)C<6gA~r*htOemTdD-{Y;V>?W*bF33qws>-<Kq?_m0175Wm~`1?CcC z6989Am-q0&%&?ykC}uRUR-6j`+6Rx8@zvZucnrT;)AWeBD7Fqb>SR4FJ#6OcOrPmb zP8?2sL%JRhWo<U|;<W%Y!vN}f_*1<fFb8}ByQaR#Y6<aPSSPTuhU2<a2VM$a_)COR z2J}wMB20}-v%1;65BsFIi+=`j=wfSy;w}w95zQ)OyNxLWm{@a-m@>Pst^2=BwXwU4 zbNuUT$V#56sR=T5qnuS~HO&Sh!A%W0Db1+b@@lhCda9Q1bo1!cOfrIp*Wb^ni1eI@ zk{STh1B$UORS!E7y2N$?)$9%tK!l*{r$&B?4YHzD^?KkNf%3sm{ffGR%2Pk)Mc`Xa z`>Bty^?t=0X28A67dEk>xx66*fkwZ-5EDuZ>J_n`;WU|4HnX7`)D4uVBmEQXg-11D z`1V5TtFV7Yn&MvbhTy4x;l*gL`!9!avdFyN5P1(E;{y};KWygwW%Kd-fQ(G#v()XM z2UX<UhF?gF7}pgM!G9#bcB_^6J#Z#&DvrH2Lb4N%CC2@L;$iQqDra=LaSc~?+Qc1# z9k7NS_E&_7-FtV3Tl=bYuMUA@x~K3b0#}hw&Z~FMv{QKVW9!2^UbmhoEFaKrPdx5S zIIa@&4~$X(Bl!eQ;)V}n2aYGE4GrU}$fZDKN99iT8xZ`4|92C|4Di!f6d~@v$d9Fo zWc(?~My77?qo364zo|{$xf_qP!ztT1rIR?N=XVP9?yaFCvHizMl56@G#LC*n-t^8d znp~8aTAV2Te(g@Y^plIZW^Qw25H=L^`+=MYSO|2n|IgmLz*$vYhyMp16cuHRs2EWX zhJhKw3<ILk5pV_=oza0AX9humT<*-d!(6#D_j(^NsHr4q;)KxfZ_?JZ>8~UvscqAg zG$u7k)8He~v}sFX9yX7Lq<LUSB6*X<$p5?6-uv8h@7y~;oBlul&;Q>GYtGqczt?`P zwf5R;AMme#ZaembemdhHJ~QQ6XIBVq)K81O-$yUQqA-SQbF71?d`~IN*?pN<QhLU) zxyPR~A-MYz8vx&zkewVk<q(sS5O10)@!2Zq*?pN9k|ovwJ{*4zdrQ1OA9?rpV$S~~ ze@+k8II_6!soA!t=2H@3TnuN4C12v1<RzzCTRNsQ(V95&`eM{0<@Zad+|m?BqE2~= z?Jq7E5W~3D3bjk_6>$6-_CXI2#b>xQAO41P-j~n1zh!sLhj(fP^Vwa?q^hUwt{tDL z-wL<VyTm@TR@mJjLzB%uvIzW-|5#b!=l*j~&7ZN|<?T9jj7lE<A@c&5zRadJo~apM zKP~^^(mOeKnOl%-67M?7`3};VuIZqa{QaF`HS6D=`1R>eym<PQU%&p>K9k<|-{1Ak zV^f|OKUYGdPp#EwQemI2Vb{GiXWid~ww>te$Vo9<m6;Dp<;G{5#|8OI6(e^42;{tw zrnHuRDzB&sO2@YR(Ass2J|kO>DpvuC9lKj=_5KdQ5?E>7vtIbuRpVdhgB;o6!G}G< zw9cIIx6l7Fm|HvLD^rf1|Lbu+BIkNy3YW~z9{<w)Um5>3VOr1nN&Ye@li4@)O?%yy zyvX!4dp!S!nJg%5?X0NX^|ZTsSNUsIBW06kilF^+D$b~UD*qLhT`7%}E?ju!gRHx< z{4(T}|I%;7e2kdP5Up6JeoPs2TVJt{XC*;T=<>vg2i8RzlE(1Hdl>!f6-V(S*y&=f z-^?Tu?A~6xdsFT8|M5DE(27bwGxUq&pW0J%^$j=6^1o!ppC3S@@AR8hJhfRf;PZ7e z9+)cYx=4OoXY!$b&-91J{|TCB>GcP5mr#JEu0KCRDP-NNx&F!RKizY)1a96_v!92* zr+wz0=@0WZ7r_~F)!a7vE3}L5F3#OO%w`{}r<{t+i+(ao#4JgR=WKb7|3<3CEQKl9 z<-Z(!Y0(d-96SH}rxS|Z(%FlC$Slf+qR#|78>G%+8r}YRusLh|4DzU#OK#@UvJ1BF zk!m2mdo|CcyYG03{ZF47Ea4uRL#H9bd-lk*-CcWMVj7#u)=S~1B({Wf#PHdY@ebJ$ zy>8djT}}<wo_D9GsD(6cm^pO%j0Z)2@C5ovKW7-M*}ZHt14kH@&+-|Q9OFMPg!=KH z`%S)a_iH#beC_xz#ahRUN?aiDmUFmtolobp<A@i2e)tg<sn7kU@Eq-HFP7B#Sf|6o z?-Q*ON#!;>#tI*#m&i0Y{>#wnxv@7`^Wa8kEfy*8s!K2pQgisjq%OJ5c(9!r4`hb9 zXnEME|B&enpB_Imf5<fQk++%58zggE$NZJH00{m_$QB|j!V51`E7yOgDEYum)|Woh zI#UjR+D`n4pvz|Q!Dpt5OWGeZxkEA=pIc%;#NdA^eOpY>^zUYu^fyy?udSK#{GN<# zHO=Kv#r2>5J&fO)VPv*$KW(;d@2BL{n!Y*Xfj=P&_WqGQ{r)F--81`PBVRdC^GxeY zl0Rmse?szX@9tUp26{pNu0vOhKasy%mwkF&55(jGHtb~fpu<t3`b7u!sy*7>i|Mwq z#D5nJXO2gQ3;Z|fc%oCVK*~RUI!Z~<Q|&(?bsr7x@k}jkfA}v2zw*W2zeYk32(nyr z+uTdrK40qIe&`4jPI%2W_RxiX5UqT!kGs9L;b39Wp6P!m725UG%sn&D+0%92%p>Q9 z@`3B0%bmaL1+)Qbb}zbqasKEf2X;L>MGS*m{5gDcRUC=-@4mMdUZUZd84nIJLBLQ* z!h3F=xu@p*J^dHWJTmS2CuZy##)|||GT439_4Vv$zoAV6e?-EH+BwtR&tWgLCFUZ- zdteIQ<73k)F*m5~dF{+SNik|XOVGNf=1t(b79|3i&=-(7X4PwUNgEzHN9Ye`3mifb z&)W5=n%%2k!V1e*nUDB58xyHU839EERs&QKFhq2Hib>-M!q;Mi`k%%-UfTX~cvD)D zPYbSpc3T(LhGkCql<5yo)a-5}O^gP!V$7|T`AE)MerpOv`V!4qd;Px%5%pz>{c0%) zad#b_3N5uKHI)M-h1mqEH<Qh$#t$>anAs-(bJD3NmK=GhH>wwNU6WHWJO7J3-<vW1 zDOnz#|0H<wP)zys3m?X<<zsM3h{NweYGDwX|A-`N#}*?^yyZ)ncFFp(cHJj^0?48v z>t;QOSg<EElXYv)>^JW2duh+smu7t8$z4aUXn1DVv9rgozkm5hVS2ssFWZb8o_Ov> zuCHJdUM7x3$FKiUZtCuPk3IL|o{kHj`_@^%9>?xl4S7S#VS#sOFaB$G9X^L3`R<QO z&S5&^|AIB`Z;iiTw)8>H^zmO~FZXkxZ~9sPgq!;$k6r(z+|9fDex{ampLp(jXMOp| z1*A6qMB$Z-j)xIz#+ODjeePQ}k7$r1UnRHi9r>c2&j}&8wX4yR!)p<PLO*RE|LGGy zn)!OPSJ65635O#-<8c@r9R#G%Gur<hGpn&hzkuNVB_#igvd#4eB%;+C|9ZoZpZm`E zkI#A$%hF>^Gvn)L&G^HoW_;wU@TnXtT3?%AL2lRWdHY5G!n`<sF^;7lyN2iuKN-K6 z>Db~6C26zNlgmFpcjUp(@44F_Uq4fczQRAEDe`cwB=h<o$w90q{&VX1Ya}6~G;)PY zh61ReA{j3nMWUT+_S}X9;j9Nf^U$<>Eiw;O>*U;oxC=+Q+A91>#}Lczs~G)VOqLJa z0G>#M4Y3&y+$is7JcA^X9zp+~@sZOpeWr$T;5+-LY%8#<zW~nhVH2Q+oO{NF2LHCw z;9_;RmyjK(@V-LQf<Sr(dQF;w=X4?7A&P`jk#)F-Z#62xkR*PlNz4*q?-PXE_4E?e zFJSJHpzsR)6o<~!IwZFzF448ic%s*c0wrwW(@Xfk$$-X+8I$QADn;hgj=bK@hvgxq zs8YnRXtt>1B}L3%so5XdvzI*e>Is+L;|%2EFNh-c;U6QddB(en1RuwF{Dn>Yp$ZS3 zVZyAzIfOmvMW3fhnx!1*7&p;0T|*3xCRs?1zH28e)$Z#K&l4ezDM`nJU;WrLx!6r^ zapy4Gs;@|eh`ve~Qr>G0&!P;w%#BI#!yl_5v>_sqNz?4AI48*;Bp=Q#i$sK(Li2j? z7rX0?{kPp0i7@eXlwK$wSr_Of!;8KOr?{E<biw$~$6uyv4j(yx_gZhtQ*8E4d6GM^ z*LvI9D2!OhsG)cytkV!rX>oB+A3xUcJkM!|GfI-&|H&JWk>}2#h0lDZoqVM2yWIU8 zyoR@F2>r-Sd|%~M5o**ZSRXlS@9vAHJT>LX@ry{jo?^`erfJ@~za8dz*xXlp|G{F? zX8q!}5cElxNODaE+Z*9Qnh!rlzvP=FunLTOg7G{YM~H5b!z#MzQ%&P6f$xR{Gd(aI zY`h5V&JHrk^gl>11v7=&L(8}neiU@}JTyi75rqoXFi}UO?=2NH@SJ6zdathZNpX{k zEN&Z_i+L6N_DE4(=RSU6UJW4oj7Bk4ycDYxe|C5f0cE5&YL?(r^*u$;vzh3Z(mR$g zDg6B}P~>)f@2{8}sk$g~)90kh(+<la@Lh)6tU}L0UmVUzOv-9g5*+MqmRVJZ!w0{L z^|Dv%9bxOu9pci*<X(sImofPCN=NTKHRTy3s$Tw{U7tD){mAv(HjxetoGA&nGI>%k z>GmQzLd^UxpP+D*&RwZK<*A+b)m-J}<8)DtYAZ40@6Uib)0pc_%r72!dM|eo{8kD& z-ds#U-M`)S!zog3>76cV;eR3*l<(Pk{DlX|JKFx>f7+r0v^Atde(un&>%GDSM`ji2 zfuUVX+r0c)%+=RFS@_9MpOSyk_{ZxGiYe&5$LpT8&!_G4fPFr0pO4w+qxQMaJ|DKv zx7+7l`+SRiK4hN{*ym3Byw5(z>@#nl8T(Ax=dgVS_PNnM*V|{mefHRAmwk5F=PLVb zwa=yYd7XVOvCrA|Im<q0+GnkOPPfl#_E}?}o_)T=pb$JBv(KN|=TZCofqfpf&u`o3 zA^ZHAeIB&W$L;e```l-r58LNM_IaN^#a6Zad)IVklF0o!^sSmVP1TP||FIT`?A?ce zIq<;d;P{1)8R?dc{V(xhT-Kq-`S!7W?-ujqEV(G7GZ*=f923hRh+mE$ipUR)ykSC8 zFO(#;H<HvNKhtDpA3vn!0bjU_{q=aA_!oPq5}NONiEmPB=8w6{Hb1f<$Y0C|l^b_` zB^4zxL#9%%m&)t)iU*_hIz;raUN(_OBm<k0O~}&I4qxDLF3kE04A+T)D(pRp?ueLu zG7mLoXRcA^qbQf~m}MTb&BK>R;qv1bN((;Yv5(^Eb;p9!kbeUIhlMU-Ze4{;?}FV3 zi2D$~PQ&OG*Yk{Xvc9Kwysvh5&rEE(?e3X1-ZyJ^&+PF&m=}M1CFs!W!$N+|<hI*8 z@(!~e>3&NQy?YIQJ#OO+@q6GsljGM1ohAL|+7kS>zPAE?C4>Lh;CC}b*#A@beOE2x zakm$?uZ$PF%+ghbU_C6<sC?r9k0;G9au2x(nF(Dj@1sL5@*;?H_#tgCVs=Cufy!_( zuB7o=(-ga}ks*8>b16bHU-n2%5&e%hzi&ej{UFh@5{=6#OoT_I%=s@p?i2DzNI01D z%g5^^tzri{UiW@G|82I<=k2`o1^Zl2NzC0(GCyG>>|HZSo*i?w3;f^#-qz<E{{5d= z$y!Bw8;~uhTHLF67n^7^IrW5mn+pS-8ElqCPzrs)xU6|Z5_~~eDNX;QJE;xdThXQe zJ{B0JZa;JP^gn#(8_~9G)zrV<TB{kgPUBH42kKyQ1Pyxy4N#DJq3SMkG3u+3t_bN* ze)4<aH*YnHQg(hIA3^c77y9Ho_nnp9-+H|60mTCnXmY4MP`@$YIsHrKIZZl%<jf7p z!rA_S&xbp|`P1Wv-;Th;#<_3aCXMr<EA$!0xnC%*nz`%weE33%v$+`O(LXbBK4qR^ zoXbo;U*YrNZyqAf0^+EJqgm4R{?9jm1&LEY4gAPr`orPh!@cu5Z|ueVnT8>mEnmm@ z%C^h4ABbZEjv4>hIt4{iGm*)iK5A3)%VH%pMYA2=^3t!4-|)cPx08APYC*#qQ|;-Q z-^RE{mM_z`nlDO!QYlmwy~9U8{4;Fy@ivYvh&&oKGf0Q_nYsIcxo?rrv>wZV$bF{s z=^^<<QoKH3UTb*WDX&!Rf{ibWz~d=yU3p-x@|Tc!CT~KRJzFK$B=x=Wg>oMLn_mh- zV8o@7TIDOYkRH0^=g@yC$3obZ*Q~$TE86tJ{JVbOh%}k=Yq=MisGhvb^M8N;-@?E* zzhK&T`xiF^OTKR2T@8cpZV2`PUjS;pw;@;xq=0t<UjS+jZwRgf^1wdedBDY$=d~|v z2s(gGKnl1Y*aN&1cntU~@Drf+`x}DS0R2ET{xI%$0tbPg0ke*52wH&vct3CmSo(tv z!K1*eA8rU90&0G=A=n8V1ZKauAs7Z81HKK+JW6?h`+!G*uK_cEydhWx+y}f9cp5ki zEcprP05v})4`2+~4;%%S{A@#z0p1UM8<_p`4Z(WgVc=`P%wJF!U?1=Up#GPX8Q2dT z2Id~y5Nre<0G<VA|BCp)dw_2POMXqcfqlS1p!PR>1M<Mrz)QfYmna|bS>PqWg>C*V z-+{+~9{_V-rf$Gvz%iiyIBwt&;CmZ`^}s{G*MPZGHU{?r(@)zNYy>_Fd=vNuaN6k` zgI5CA0IPvJfh|BD_ygcCfPVzO2>cMJso5C30=NQb0eXQ!AP>9^ct7x2;0RDNmAru# z;8x(ZKmm9Q@E+hG;GMBCSO9DW-VPi9egMoob7Qa+7zQ2&J_{TJ>ZkDycocXZs5xt6 zunNcke+GOM_$=@pz&m?ma0##kSPcvVJAt<W?*;x5_#E(kVCp#=gUf;IfnHz)co29P z_$%Nk;A_B3z?|vS30M!@2mCqkIPhiQ=Robb8-uHWHeel)0rmoa1AG>cv2gf&^So)M zdH%yi=6PuL#^C7>(Vs7)ZiEw%U)SZd9WV@tyNBn_Uvvcfe%hh#f0(y1X!SeweQ#T5 zux~l<?VZ71o<4ANS!Zydr877L90VkdXB$mg@*e%w;1H1C^UWsA*X;8!&*n^LkO7XS zO*$rI@$aErXRtrp8MN}ujCKY+ydS-rZ@lj$P7lxuGy^_RjA`B$+(18g%*+{cm)kPl zVxH4^ioEi-Yt8eV+s*ec@Z5RhEt=N*H=A$o8!*pH66WdhnNsoRd@=d-#D?JWPj3ih zlR$nQPi_d-eA-;tCGK+n9{jr}@n4UBPsIOG(*Ggpqavuk&G_Gjziw^vrQClQ|2yz^ zZBp)^!G9C}h@SNK5a~Zn`a;ObZw&t+lKw&bmw#$QfUckZcH*DHU-Yo#H;n&#i65qi z|9z4CGx)zh;=dRFo%loh>95@XVf=SR{C5)n6Os7)@PA_@{c`_D@qaV^Q*HX?{`>KN zYb5>{>3@jyMM+D3v+(~{>T6sR>-RYRZ;O<#y#5F9|D%ZiX42nB`mQ|B;{Oi(rC-Xg z-2Wi{e}cd3Pv!V|9{=}7(l7Tvg#V+H_#ejquP5<8ivI^D@jr(D2P6L8Q>-hv&okAT zfWJf3|4#5JX6)owj^A?sX{7fg>AC)1i~HYjSBpOj|Nn@DFHhgc{|NrNXHy~ndi;Nk zzvvRluRMM;{?nf+_SbU%>+qj}ziZ!e|5p5G;_vEH?%#p`oJst9@NdFj7z+87$A2FD z-U5Ezc-&0;MCXTc|MK~v+`l~i_2l11{x1D;|IPT{hJUs8AI3j6N&F1{Y5c3<=OFcq z&Ohb(j}iYq;#X_mo%p{2e>WeN$A1X_H%{We7yma;lK#W^@5SHEf92`#!~c&bN#CQr zK0^CdE8nBU|5M_-`Mx~;{rEqE|M{kSOz0nv<Np}`)$n@&|0gC%|5^M$gMYRDcM$)t zO_KgJ>i03~SFQZd6aNL`yZNrXeuwb?8UEGqa~S_)_*YB+DE{8F#r3N^{bTq~$Dh+k z`YZSMn7c2>zgqpL;lBv~YU95a|7-ED)<0(9zibkJAOBVOSHn*|{@wUj>;KL8uf@OG z`gR@uG5jy7QvX)`$MCP#zm73J-%tBiOTUBoTt{5B{d(}<gTJE(%JIJ*|GoHEn}7C` z|E~$7Y9G|0eEuu<&(I&E^iR3}X42Xh$*<hMeEyu^PyGGFcjK+xKZE}#@OSi7x&Ijc zpTVE=qWUXeAIs}k?q6QM3I1i}v)TOb<0LU4bh6Av0y5?VWbP4&`r*`{pMlo^=l}cs zUp)M8KbSZUn(g>-<E8xBl8NVsTSgN3;dIcF%g6JDTuZ!wE1S&kXvqx@C-6&b$z}!{ zM-sVQe2aNEA@y@6z9W^62aN;CQFSLq2h#!X>WB{xCNlZPl5e?0c3UFbC`shPSo!#t zh$9;xOo-QDdNiLH%{S(EWD@S(rBx~EB*C+z@l=>$V>WSjA(6{#VM5<rKAVV-ObAq< zWR28tl<Md5se#6PdTYW|DxVxlqzjr%)Ao2W9~(+%V<Zynkd&LE-Xrlbd^FdXMOkcM zM?R6$kj6KcNss0drQQqGKQ+*_ZBbJf2wf3R#YYDd*@gB+zBMmeoD3)*ZL{T`WF|-q zrQ-QSJ{wP_64_illSw59<N0KIR1@pz?(1LN+`OcD$#6cO5zsQ++}_`_wtwNm<Y<r> zYZ}gvq!u?XS=@Z>)y+$mG&f(<+-xyBI2_OB5_!pJfp4?2UX*N00ZdtE7H1-79P&4p zYn0Z?rc;gaR4To_k>0c=IVusvY5UhbTGGKdear=SZ5$-QP%bGoai3h4p_`V;4~MR_ zskd`$i3Zc@t;s|Hh7xqI#29@j&);M=ksHdUN0LL0Bk}y;usrFpLj-Ni(dQC;7)_5R zLSIdckA>0FaH)7MA4a9S4AN_)*QS!ATT`|`w09$YWqUju<TBax*p5c2y)+>OP87d@ zA%hRiESnfgWD{8)lyx{u3lndMzHP=1twLr}IeKz(knuq*FqX|X<`RPi8M^v~M8ZzK zEuP)6Eg9dweS1j>Tz6Vv8#r`F`qu(^4?S!^{b**B+TS-ay;(eEjXs2}5&>Vf@xDHy zPqw!1m(ZKOu`$^90y5$6Yzz)<?h1~^x`NGjcLlBauAqmf2Q;U<f&-(xzrHKjzq2dY z2T0tV_Ss{ft$VwITEGMLJwlv6Cmle-ZvMXf^*mK%Gq0Y|z_tI}6&wT(0L`B#>}R_I zpZCrGQheX{b>6>8T3<71dFO5lYQIPL@8Skp<!OJx1)BnY#_FJF_UgbtZ*}1D+<eyR zAanleVBgsQ&*n=v1=j(suU#D+-9#9E>#y1rJl(WO-yd4EDHy(SQ*fZoxLw-v3`TP; z3l}boekytY`;JY)J9|vL>9=hPI#Qd0k8dUIyUe$@<6becDYzXN2F8H@102q83NrU@ z3LXXex0$d3?;UU46g&h>-)X-6Uk`2y_Fd8)>;+~$v?-W1zA0D&JpL~BiMDkI8J>p$ z*}H6hbGPy#HIWjw{(ZOlxla;q4i0(BFZx~FJD=L5;miG8xbmmS`J8Mu^K@^}_3cf; zIzYn7cgOb}z%S1Cl=YME&d>i;Z?KK;Z?=9?epiRhpY9F*i0|*Ue!_=3zrFbVE#IH8 zenP7{x#I!+{*~`vv3|mzx;pJ8zi;vVN7hehTNf{b-%t4dvh_nbR%u@z?B@3dXMJZ= zFdI-ee_WapzuLR!7yTrj3n%Z&*M4MOaOlJ9G|fEUG9O$Q^Z?Dk!z6s@1M7kVz&=3Y zM1LO!iISfDn!U{v{9V0To7M-(h`(zyZ{hkN&-XXjL|vQ6_xt(&di%Y`Wy<$A^Zfzq zc5(p;|HpjaWxs2^ct1$K@8$br_Pdi4$oI$i{&)7flW#~mPw@Rg`+aBQ`U!QiUiy%F z%Zt?0y{m`)Q|VjO|G)}xHuugT^XfapeD*iq8T9Zi8m`*=td$dSesIyr#g#OreC~%j zbjh#zugtiXkFLF3fL7u@^~vMM58PPnyCS2MGoIcf@aXT}5Qrk4D2rv@$DYl1TR;B6 zOFp@ZApgJmrIG_%2JdQIbZt|RN_nwcw#9lATar1J@|BPexkL_Z2;m3GXg<d>sRFc8 zeR4FJUsk7-7mIv)2k#ADE<3nzFr7^-B-w?zLUsr`89FYRZyFpVo!Dq$WFV1^rH5=P zIe*SFe|6jXSWnm5n>*L^d6H#T$SQwGXvUz$ugiHi_x7xe_4l@|Y&S)b1nak@lR<-V z=Y|XUAiaImev|fVrloIGf^{%Gl7UFck!CD08Xq9hSUj~w_=n+<Tx=kjhgvapY%+9r z?Bt>ZxqK`cjQPu!`MfqRr*5%$c1x~u9ZE0*<vKc=NG-Hajiwl~<$#2V7gG6>f`nx* z3sa%Yk)U4q?l1Kfk1M-Z_w=^+^~Kt{Ztm{w?C)6J7hBoAc1^!GF>GIdZ+qKnysJhr z4G=|Gm|<)*K9Z;poeTVV@~&SSq}iLj{wyS|pHKUc)6y_P#7n*XNP2#lfIq)3H^0g6 zA5Qq`Od_kqxj!7w`2&f>sGr<2O1}%5r17=CPKK8g7p;2POuGNABK8fZ3#q^#O~7XQ zFlmFs{xIaUmc1_Ls?y>o^ZrO7m#2b$oEpMAZb@XlDj}9H^Xr0Yo=cslFqV0cE@(@q zQ~p39@6-RK5$XcJp5a#*fj9Q^*+RmMt|r{ck$5TwKRmeA6CN}M%M$mO`}M+s`Bya< zpNd1bbVexe_Zrc3{Q3g*%jC1Md_#RPkH*qG8f36(>$;JnDa3NgdlL0S$&@f43w-m! z;3<se8$26Q`i1q7ekmPr&DyT6%7c}#la5!D>p&ry3KCf<zkOvAkhCeJrX79_*`Ls> zwEQ-pl(GC*jA}ccOn%9D%5r0NnygmdG}8<`We~IZNm;Xr!EG^{3LJhuF0E-~1;)<_ z1yp?CF>T6lOd(~VF@)onu7KZ2gIBd9M<RI{=@@}OAgrwPv#>^<%$AMIlew5Ms#RJd zkxGm-E;lVF*qdjXKdhMX@dks&<zd1hmdPL{BPceIVChMvLXUjd{xIYQMdgUM?xWXt z1P6f{2q>TDq3b$=13(S_`<HeEdwJgpcwa8+3`CO}*^;G-BFXR>gzD0cS*5y_`yI<g zkQ<I~HJwcpVNKf>R!6^#CdTsNm#c=6{fG-Mufs+6MGk}-O(E}T6jLrjHG6aPgIh__ zdvI~GF&6QB8U}y)w!F^LlMbDV<7Q%FI_Pav7T4!+u8(Czv{PI>memCdd>LC4sf@^4 z0qGH@B^fx8fM-Plp2!JkoD;7PlV(5JnkQnn6!UtjUjI_=25;@?)={XFk|jfZnR1&v z^R}EOs5pV1xU7}3^gP;lpfJ>ggl5w2R@UE&_*>{^0f$pT=sl2iK4PDA)~}bEiMz!g zP3KvqQ!G#!RucvkYe*vS7BwwyTC~W^N-w-K)_tqzB}cb0aRnua2%B71FMbYL6_!~m z1U3On`&p#iCSsIy(!Ms7D&&TxD9!$T_xYjg&RE|aYgWc?>RQ{^QRZ<|=bFyGj>@f4 zKHpB7e@wca6k<;OV1A6rOk|=`l;o&+oj1>~kCez{++fffMYqPjC)X6;25lUpg|$AO zXAmO}rSQtAw$AP~v77Jg><P&@spm;XS=H`nKi8a6msrJW=;$i*asv;7JdXb1X6DOS zM^JlbM{wc-bgpV&)8E;D$0?ROj20<-#gTPtZRq9_X~%;D%=y3}>U0qB7I^nUd0okW z_!XRf=-R*=Up9HK^ENH;2@xCEnkUqT;u`Vn3f|#TEB|Vf9f5yWN6@^rBWO)^1U(}i z!RFD9Ad{vH8Sr^Gc+GYM`*W;IdCF5TI-V}I&EJ8?{T8~uhv0X=VV==<`4)wJ|1ohL zYbCJ*k|1kfE3gwd0Ehsq71#+J06c^vt)YNKBH#vg+NZpq2#lO#%4w&aUQ^>_CpIfj z)?AT~$lm(Jz<i(;IKfXeI7v?uoO;F?XPkNFnbW47b=KMEoHKp;x#ymD-gz@-)YhJV z{wprHVCKvVFTCiYi!YuvYt|*Ny!6u9voE{s^2@Kd!uRLQx$;%7np;;lZ{Ga*_4N%6 zS6%h$1q&LRnie)UFIu#C@zqyPUIJHsL5<Ww>Lv0Ysf*NCWN4y4aSkAQ0V1ameFxD= znF+{AyIFwfs9g@s0p<cy|5pPdeU&0y2P^|t03E;@U@fo_2!Ih_8?Y1D4g4|i9zbMF zPXM0-z6JaYkc%_qvhXFqYG4bn3wSs16!2X@>=j%C$n~mwfu{huz2F)ung<?t6(+sv zKN?5dhL)jSq*-Vc+C-X!7NJ3AU82oFYtR^TuDtS9bLZAcOVAL~4vpFlw8D~WuDSL# z*IjpgOUn%<*-=!FVoCQ@{0r^{?}Bg9D-;}aO^;qhw1DUJKqv58U<dH0z%zgd(&Rd@ zM}SL6a6fQ2i4NC*M;i4y8gv<r`FRrdN%&5bhMuJ1-hTz>_3AzEOEgl?3eWo@y!IPY zJl{;(SlzqkKRxd+ubkq2F*n6~|5vAYZ`gdAclX(+dtdy|)4d=4s>a*D=?w3m=T7rp zzUyr7(|zZ9yQiP;#sBR>?~lHFsrQ->zRLUBqmAAL$rkV5AHT)>#2>}HM8`ee@aQ|e z4_@{xCHAEHll@A^haDZ^@Q~4AhX<pB!9in`4-VTR42=mRV~I2ht#W<K4L2-Zw*1B$ zTie=JtX#ROz5S+}Z|>;m?7ZdHTf4eeuj%gYxvjUaf9=}a*R5ZF$DMa>*tl`iYhN3S zZH~tW1_mc9zNuieeNQyLWd4vbCT%a{Omv%MtkGQB7ex0)#+=MCGVVk-O8SS4zuAC{ zK_9phm<!AUXkImCA^k@fc?3}2VqghyEg)mF1(5w7ne6EXUOUhM+zQB8y$zsic<X>W z0qK7Ozz}d3FbZS=8N>GgzX$9B9s>3Ne*nmsekbs5;8EZMz+=G2fCGT^<9`Ld2z(9r zHt+-BXTVE<@HyuK7XeoQ4ZzjFGC=x%FR%#^n@4$IC-4^F9l-m5$ABk+gTOa{9|11| z=bc7+Kr^rc=m)j{_W-{Syc_s?;9r3M1Y{nO>zW&Y6~G3d0PF?+8h8fyHlPEV$0R>H z{YU42rvI}`dN`9!xBxKWXeXCmE-Qe}I!rre4TvrRX7*`X7_I}hx635NEab{W^-Ja- z>7Ps$I`7LIbRHmmQ2N~~0UwwT$h<Cd(JG)97yt^uTY$d+q%D60%qD|A;O)S-fE&Tx z-vG_v=d-{YnV&>KQ7&5j3o^c(IqGXHI7g>LlQRf5yn<~|GCzmRr!rUllums*9XUnk z%`B%M-a^{zxppMUJcY%Rzy3qdTlshN*DrY9H|aFZjZ?gj4NdV@{Ph&vQ@o2`dz$x+ z&z<HyEsaJ4bsCX{FJc-$J>;{$Y^6BDHpH`tW&J@Xn1X|luZUQ(d17~@xBDaU(H%Za z)o4B^p)~+(ER2t@!n53toWzM`(ulD6tx+kn<fM8HyvS~~N*YVTZ$}24m=GR$*p?B^ z>(t`q5aqEqzfEKv6j!8ru3#cbnUGJeYPoFivU;4jTrOUp#j|DMN(<J}-`}%1B7`X^ zmtmd|L28SMpippxii?lL)$d=~qwZ3ixj5TVN=f)u+s5CHgz@C#BDh1$sFKODjEZeJ zgl2|tm!h`e7c!zYQ9X-dzp=tA*-}8~1zj6|JDtHtsbg>}^-GDG0s>FzOmTnZZFJ6f z9<g#jYpRZn^c(uC==!K+RC=1H-Ob6+q+5H^_hP1xB1_8`vZIN>%MWH^+R0Qx8F41l z+lrs0*~(nn^EAAAsxuZw5>1)Kv0P#_2sL!H43Y1yY_M5Iz6V-OQM^bf$Kw}0qrS+~ zlBkLxLYp)ZX_vt~qc6<CD1pQV@6I82R5VA&<X|ev=wdPm%t+3KW1nG@A5P|cv`$1v zC({2-il-K5V#C`xCX%i#i<ORsB`FybuDpeT3c(_2*)moLRP4jjOQg5ii6Q6LC$!^; z%GLs3UKjX@{9pr99@v=#AE`tlQ<6}{2-G8-KV8<_5hE5db`;QNbbOHsYF-RqgL=O{ zJ(}9#8*z=!vl4xgkDAnQ9)ZvH29hqOEn-DdWXQ+05>hggPh=ErXTwco7Hnl8P-LFe zpiC?O)x2a_=0x5eRxO=HMC!-4i&`8xXLPTFdJH6}LqduqB`ai3BFhkOk-CkVMQAAS z*`d%q6e)tO=r#oH%pqnT2}`8NK8frq<C57fP$e^3BAZm<>+e423GIl$klm>XEy*ra zj!n0m=%Gn>*=oC>#erZpk17~5XIxNn<H^)IIxiSRGye1GE!p^p%(z*UJ7v+|E)xcc zrwd!yLXc*cwV)nVHk8I#7vtH%;RcqT{BUGE>ckrvX+kaBT}aZWCACIB!7yYB9m#E} zGTb6*X|;-jwn9>}t1?Mak+e)b<7|iwZlx<qSE18}8<~y}s@JJ-kkJC-MK^FX$C%M^ zS2~|CUxuTYMNZIDl5`Zux(UNjjZ!KT34&t!WY2z&Znd5uQZbIpLze0|>yS)$;Mvj? zDG@#Dl2oZ&<#Fr+RWct}OW!S5#SA7blSM&=Vny1jLS8Ojv1lh3eq!+=@z{dRgQ%Q8 zM9-&vKp4btvHYfuWX3msGXC5uIWe5}{0I>zb9H%IHVl-7C`SvC!_FLCCozVCrcPvN zp!yMwT^WB2?p*b>lyVxP#dE`?mrEq1=|^PZ)&1hpM8f7nhnDOiE31}E(^5iB7dF{I zk<=)m&f{PqpM*;&rcUvT$@=x%g|^7BjE*Ho3L}PUHT(ww9a*k8U_@2HjiI502o4Gf z!Owh0RcXZeCm&Clnb>GzyWKg3xjX4Rqh#JG$8!aCWA0SSEaau@v>^#d2~MHxsu*kt zRq4AD`K0SDQ$cdHkceroKec?fq*;P?NXGe7$}`JWv0-OUEx*AOtWQjIwqx;3^3>wm z{VJiN*|bvb=9J1z6B*U&Sa}jBk8AB?ZVozyJ~9wwVyJkd9>R>F4RvaDkCr%A7-g8S z76zO~py_l%JcY7UPs{L%l<cJYUS!&HwL0mzLKd;hxy^LkQ^QB)wk%@iRO%qZ22RwR z<Tw>Prn7^ISjk8@Vcmtamu=u-oukuENDztF)3)+fmRi&xm`<S}Q$dlQh_;J{OCgrY z##1Oou`*?g0e#IUqzeh5DUxYP+x{2RfH6TFV6)zu*b(JFJ5D0a(R8FZr&y;*+=<0F z)wD#dtg(ohQ^k#{rG@b;6em)if=ESFy;4?u&Uy%e5)zlm(Mq(~aA9Z&iJq_Lq)rqq zl9!|QC(9*T*J|NizLahto=aT2gl4N$PSfUPeO3vx@_y|)jq9%x=)cofCyzg|MNYmv zk$zUX7FX=w#d1XAP0T*hMwQ1&B%M?4o7Li0C`P0l75k+oRk^LJ^~niQB6-mB>0+>M z9HrVyZ>C>Dxfcm@bUKnuqiAs^Msh~>s8lwxZW~jWxnkRyaB`wCD6k6p@hxyq#CM@J zA0fXZaiF$k7StS09J82LX__L4E^+~!G!t>T;kcFJkHizvd`aX}t9UeeL!=&6YY>eP zBA{3v$4d_?pK2IY-5wAQSOrp|+zM9=(xXX5aac?vS~n49*;EnaM#Bq-gZ@qy?NY>E zzR-RJ)>(fd{!93&`YmX&TP6yoKb?x!Ka-YYq^NZwtU@d3ca}r6+!YFHg?=H=SH=UD z_BAWqG2*TWcd0WS!zx<aXucM|O!$tqR5`r1PJoD61mzRM!@$WQTZRFvvND25*2GO2 zm96kID0B(ELDQNhC}&}dGBs&?EAcE!_3K4%4c$*UHJnX?c(-mfIAN%f=uVK2N!O6d zI-#`4qD1!O=Mj62`kagi^zbC1(rJGvv0W4{p>6q0acu!|C48q&A@!W1l$QqNqX??Z z@lsXr)&4~<X5@(?Zn&3W<dJ4>Y4SS|&WgwuW>wkbVmXGzN0<xgWTaCesZzdvlJevV zdVrP=Um=x}0!7BR=>wt^t<9cEXEHRUNQ2p=E3ei3Tr?Sd2j8LWPd8aioi#CO#>7Y_ zzr!<<`k1zM%nAEVE0ulJtqH^#F!y0BlvFvB!Inko_gqo#A9}eo%cD5Kg2?nd=MdSx zCtsL~Vq25w&_^AxJ615R+n0%Kxvwq*B_CsE2*!qjik}C!m3~I`G-k%G7YbKnB0!DF z-WOW|#ggiNs4KTfdvpuRNE2=GiujSutr9N{k+VBUY4JqkI}!OXsIxS>1G;}j2$t7i zf+~8McSO!s8gGJZq8O2pJW<8H%)3&$8n0Tqjz2crXs%i+olr@GP2ULC&^X^x7%lx2 zuCk?{ouDJIpV2**mB3}g+-T};WI6eS-BCm)70ahX>}j?q2wN_OlKFkIw6%FA;Hh#s zDmUdxq(2eela{GWq%>(*hgl;+n!GF#k<p}S78&Eo(<>DTO&+#_2x!tWR2CDQAP*U8 zt_z=_-6x85CQrM%=*4Dug8Zt-H=>&p_0w{3&56R7ifAUUTV-4qMKUMKt3(WQB0Q9d zUTi1GWw4l#F68Wt;HH)gBrXCTo#|Ar;tdx+!IBOKS!Rbpjwn|3h;6Ij#d=yfj`64* zXIr*P9Q7!T6J^e#`CBF|`pNL{6Th&w2<L7+?A#MYf_|!mgoz$u;i6t8NSNqRIZhM_ zC2>lTpk5V_px;Z8pr1;R5c%Se;P^4t^TDk-yCNuMWBE+$5i%$-Ww$)9EMn1L*-9I# zEKqR~QyrKxU$-_uRY7vgAq-`as}!I#jF3ly_MsgyIX-4+h0-AABh0bqIc6eOEOic} zKpe>xX1J1fDvdz2sxM1vE|D54Mzlm$u|{Ez%D%)L>k@tzeneD%L=50r3Nhq14E@RY zw;n=&3C}<T)iTP(G*$3+H(Er-!S0Ll1029gri2Bk=o!-Ev}Z|Nwgp7d2C6JmOhKlr zlAkYIiwhSuHJ^Jn{8BF8;(NTUG^gU=6<U<LO7IO`athzrCiaI~RDZ8ghzE%7h0PkB zsF?2YJu&O!OA^9vH1=Z}DRgwHQ5+6QqzWdNFi4A!>6`q*ObUijyt>z{X<tb)x;@Tj zXvHHOC5M2dFbi#o<dnuudVt*4k6NhKkwv!`^$l4vVIW0Hfa>9vL_VkIyf{IXOBX~W zes>|Ak8?hWy?7}k{7ZPO%`s`7AhQJ|wAAJJZ=8Y->z2}i$B`M>-@dmakkD4hEjyJ6 zpGOlu+6mYV((_et%!9gVT6#)LE2<~d^z148=_KidNs#ZFw8%Lzq$RAIMzZM8oW)z& z*ovO*u;K7(T11$Ajg6dHj@4ViFZ#^Jf{`SzdY%$Uy4C^>&fB5|KB^P?d2v&7_2Z+M z2$BPukSvwkow`W(lI=lSL3atXWH~*HmMdh$)DT`f<YYhkv&mp|ex7Xy>M*}$zQ}uR zBqOr+BtOniL$iDJqDd!*kjWe+5quiN%b>e)IqsO?08;`12mPd}iq)RqF+bwyk2-py zj)hUjqNt-O;&9jtQ3n1Z$@`I@5cb$bgOLsrQdz}<2$4APW@XY!N-P2w%a$!K>fRP7 zXk`uR8~hD*nN2$4nQu62i95H+96?(~f96**<dSJljV>&iqh;jzy3;O4q5Q_>av;k0 z+t;_RT-)Ed=4QWh_3HLjoo)T?U3c*PwzchR`8r9t(ivAQDT^oPUR7CAT4hn??%^Bl zPLa0gtSaU9t;B!{T6HtQ5#v6GwSgOop$)HHQrw$*yH{%|+s#a9@uG(y1tl(BBY|KJ zj;?!Pu*Jy*r8MQsn+hd`hZa<e<`}hWOpKudC86zVr`k7_(luM86A~pY>N{yU(&%@Y z)On;*wgi*MnXK%kF};;7RL886mRzXZZ!C2nUB<+52Z9aJU{+T4)kVmSd~T4M-GFRN zE2w!?46osQIa1E)TTh<;Jio7>9v54?rn|SNqis$5s>&Tl6GiSpZm~dYm!;+SkGCb0 zjm7gLP$!UFS=M*v0F-9x=Lx~pxLihGLQNAin`#&dlC4u|az3aROA2{Lmxw(p)jMQc z1p#uP(u(fTo*@#8g82&RfO$WW0hpmKej;a+FD0mB!ZNtf>W##Aa2no3fzV3$qk_-D z@Ibr<Dv7_LE?`cOQ0iwVmXeB8H3Z-_{}pE!fm*-=Hd}C{VT)~D!G-@G&N>2P+;0*3 zCr40EO@gqLwngiEIR^<m90?<FQ=+;d8!@aKoojAy>*`z;>+4>5YkPm?rmirLF{NkH zSfSwXc@kx5R*UrZoODjQV^HrhSm4*wF$#ldFq2(82*d)$Jb5nAX)irgFOCMaabijk zYwzvt<^YGZLt-?NQeQW=Z-msD7+44p(pMWQCzG|7KvtxQNkRHlLk(w*`r0h9SMS12 zRzs<p<g!35Tul6Hhe2*zwpx}B%Poc?^Fp_wjHNB3KPKAIv{>#)=(_7!SxGWb>P&}H zA?Gp8z&?1iQ)0}E=)&tX?d5YxRyx*3XME5_LxQ?J7mt}xLRLACRB{BNZF-R9o`WN? z00tc9!N}OE_Vr3#O3upb{MP(I`Ymwvex5)Nuo=hzJAu8xK43p^05}L70*(S6@vyAP z`9?WN7athpShe8D{}AH}@PKCECx1s=0ObWw_W>|`kQ>Y<Ga~f&(m7jEL*B-uDMicP z%6k>Z2B}WumyK^XmO&MR220Ws(kVT|uf#Aiz;0pATlpAu0yYB~U?;E_*az$f4gd#% zL%>nM`*25a6-ibeozRkMWq@^r^8iDb?!dxlmR$o`7Y)(o->c`X<&Rv#JV|(lv<+OB zl%O8jHZGTiK@cLx=HbTj{*92{;^FLQK$rAi7h{0>Em0rlm(a)SHai$22^0~To>rP| zNcht^bG$2|r?pg9dRLZ&!yN{^(qkE*4t1T^E(x0Iny(M8^xOu7F|vsQZeSWt=`T&u zuZR~)4+()6#(r{My<oSYw4TL+Pw*|N*5vq%;2k1LbM?~c5r_a$78dTjU@TsE-F*fF z9D;`$%z3RNX~>B5XmYT{YxP>8b_SEVgr1Wd;Vz>cz`a1%rKNZ9NSn#G8lD_)^H%fD z@islfySzeJyuzRGk8~R4>y2>&bNC=6eWm>;u>@3UP}>Dq#<g3Fz1n|b?fU1A;70CZ z;#A`*Z*IQR6yg9T>AunSuD5RE`QnX+5bo}6kqu-TOTtviL)36350z_pBEIm7v7OjM zyMkDB<xp197s-Jzv(Z5Hb-4z!Ln?HGP~~BGS>T~lG55;aRv3Wv$>fJ2CmPB_SUYQF zpDnRqYHJ+nth&CyI0xkZDW9i+ytB63ZOj-`m5=$0G^}I_F)n?lBBNgsN6EAtuPQFn zq3w`CO#Yy}T+D{E3Okyxi4x`_jXsZ!_H^U&;z#V$Ns^wGsCX+ytFwb`+f<_7c(G@@ zR!zvMq#!`$i6z=t&ytwh$6+ueb(@yg)!ue1<YryY?_O~W5)BC>&0e9+m79_V&!*FP zWAv_VMR#w13<DmLOrPL%U7Q0UOoGBK)D?V<<EIDi;`E8^H;WRqrCh-!KPv^n2UER? ziBas)7-#s0$nijWQwyR3nbes2;#<wJ%T#i!A;K)XNiC}wts&oP^@}!GcEB6Llp9*$ z6~haS4WXJ!2u>(H+mS3a%yDAsi<1x)drGms5*?mDl@Rt`r}>p#-F<6&+hc3G`(qfk zTXlz6LMiuDkIHFRsFQF2f>?9(PYTK}H3W|u@=L<D(&`z_2`W0mUVAsK^84JN;(WK0 zekxan{6h5|Ifw(#D;og%S(r7(s%XE1I#DSw`HA?{wPHzjpv>~_S}qBvoI`oJJSS^w zTyBMKO?IO?<P9ofykgtgX%{hx*aEkBvB^$IU-qTKJiuS4wG*W5U1>_l=C)u6Fi^eP z!l;U6^jwr!L~jwXPm9_KtknNRl9xg+*AhO_p2#{TaYZtu7Tm<tpa%&qL1mhNpSC(C ztdo<h78P+(DnYck2tSIkyT;|Lga{Q!prkhF@P)rXg?LkOaT*b8cG%o&_Jnyy_7T@F zm3Y%3P7n@DE$in^$YluocqXQ`!PvXjcfCfYrAX%9Kw=cDinK@XZ8~YOhC6AvxV6Y= zehY0m=*6)}zJns=kT<7OvAQwhRppy26w5LW<b|9?4vmT=*4il7$xiSjqsWz3*j*iY zlHW3=pS)fxtCjP4*)U|J{2VL;i<+{pQBd{a81W5$_HNYo8OD;B3ax}5qY9C@7^xh@ zN;<K1_(TrFne;-@awLvzR&z8!4#-NuA~~Hz8DtQY3!w$K6F*a7J-NpcAcyzFUL@po z*e)eV*9I!KtHnrgLlLDBEEK~DjvyT>2lGmD5JGx8GtK1vx*S)gKe?qFnr7!Q_=PFl zL-|Yi3f{e1?xlP)cUJywr?4+k(L7k$iD`|UNE3IyM%qq(5{5yK%~yu9Ofn@OmWUOt z%9A~DE6n$f=Z_VbfmJwg!aT0kJal?t*ftBfqmHHiwbxv8^|g=&b#;rcsVg9Qb^?W= z_y`JVN`VzdlVb#t-Gq?7u~df%MRUlsrE{fAAjZ^1R~7>bp*=N2sZ0__76y%z%xqiY z@kh*-c>CsW3@)gjNRNx(f9E%=B+a6o_3|{epPLF}$`QdCq-E<XxhwQi`T$Qu#JSn| zlxcaJa)gQm*XHB0<}oJ3BE4s}_Bgh@iiyDNkF}4vaR!e_3(X-N6S;A@rNVUM4^nK7 zDJaK0IVi8owjnl=zw~L-Q1J@=O_Z#Rpd`9n5tewJX^!33_jPv1*l~)rukUYPgJVtX zrnPHU_RC98H!N&>Z-WZ3Sixim%x&$pj|m$L5y_BHt8pr$f;3vwUU@te2`gK9?<)8O zhj3MsP%9foVjv#Pp23B%@M3*a%6y`_GCe}1N9)>#x?v`N%Ej&5nl#b^_L9xTAMO;N zR$H5^=vDm2D3DU8Gbj}bel#G%DU*<kThR9{ewDT{<(1K?J190Q+DCEP)qQiU^Clzy ztG_ZD;!1>tV&TL_&<*lLQ194Dd@~pT%w>=+o7-rXTeek3XwJ|9VwhEpmqyAYqDm`g z6#7M~qS6|jab)_D@l|X}C`(AFqAIKDiF2^Z8sa84I3QEjm1>EYNmM5<F}e%~LPV*A z3T3pISK7Q;c(m*$y<&bYzA~p8gK#0~7tPZvFN8;-N^qb(tlF4~3}~@hVx)#j5ol?} zTDaG4wls_Wp1x|CrOyhbQ4B4emw_vtxEG}x!J`?{N<qj;$<dq+0O|U4jmG6FE=1EZ ziHb3D7_(Vek%SHhv-X;s7`rPvyJ`NgFV=VV+<tBB_G`P>blqXiGM6oW<S0e*#Bj4W z6i3+<`Jms_L@gj%gu`!Kj{OpNd&A#}kVpueN^_3Tp)4VsZAcCZxmub|i|i?K?oU*1 z4P#O2-?-dt{kWW%0W*H1*$A{{l5QYd6<NdKxRA1x!Kg~|CQm~M=F=G)+65Haj}yT> zy#CJB?Y+>2E&ffNz3rsHSqrtV$z3u+r8*HvwyYL(W7R<xBxw1;r<fi$1!eqIK^r-{ zAg%;j5s~d{kI}A$eXFosedt7(^2$T@+bFK=vwCeDfd-3GXCw2o)wE;F5ZlhuGi{~i zRNNujk@87`$|Fw1xS)uwUW_a2DU_I^+wy^$j<69Xk!ZIlMd`}6H7nb@9G|JNO}$oj zv~!-X@7B&9G5;zJ;Y%tulYpK5$k4I1Le5NeJ>{OX>scI`v{tlZ|36GjWUyrC=h4R| zVM%{WDm`G|rJqO3(Y|IC;xq!?fIh!Qln{&s?a11R%sbz%c<{(=k6-@98}FU@ft$a1 z&jZkl$m%ee^(XI;-$!p;e(cb$8Ox`&B0+M!&K`V6Lq$)(>n>dNal_Fz?s8JW-6$u| zO*apdpyFGsHg=+ltg9~*$5?PQo+n!4zBz9~gChZAel-ST-GX82XY?Pm!g6(jSdCzx z3Kl@l&D-MB+q|5Zk5R6QF(OTejFi0*tc|dash?z)@+Du2DLINVhNQ{i2W{q{g^0$V zH=RpMid;=HRAIgm5?6PNnC_rJbGSy+X|<Ru^lNg=57HxO+*oOw5k^rbzo_Ve63RLw z2$Xgg{!Ex^m17!8q~f$&QkJ`N+)5^YR61fBu<BNi=l#`Poxy=*XK+5x+qd%0^XI_Y zGWZr@=JD-2TRMYthdYBMz+J$bfj<Wx1HJ&f0K5!bK=`YH4qy}TI^edU&fs0dm*>gA z#i?SrW0XzYCxVkn_kTLfGnDmY^Z57)!v1X)|3|8Pmwc1>Mb=NHStscNrE@^B|Cs$L zE9Y5pcV{552=D<9IGE`ScJhRH$|qE(NRHbHH75pB7~2(lEAttubkd!bO1PyD3cszl zw@sy(6TOVM*|T|=GR3%HfqOvgH?`Nz&OdhPo5zN9M^Q#k>2G7f+c@BD9P&1fdK<Ie zMp3AmIo28cWIOc$HURGd-T+kGqxAoKztYl7bTP;3-fm8+v7|EQO2)a;V+#kaU1A!j zC~Hg?GEM$!ci%={1m7&_i;aY+$tz|=3oHp`lo{4zp??GJN06HqnpE0MbBc`4&=g+u zZVTN}#<$UWHqag>SPX+MBF0Bnp*z?`IVdK@I19(5Zv<i46tbrwvGSv*m+J<@!W0AY z(flyBx(ZXP9oShFE33xHDmGT{xYO(-Zy8SBwKX*|n$FzK(T2jd?PELcDYj!{Y$C=> zzx?;of3=vnob>1Jb2^FVa>Cqb_Q+eXHH+(hz?*_8>8aQj#<cKs3=7waSz!#>&bkCo zey_yH=jCEn7z5Aquqlj5VKFGocDs6?^!PXZ3K`#^jAeHTsC2Ts!!g^})w!}g2DuXJ z>F=#a^i*XN1B_IQbd}~KBBche*iNPusv+_lS`+<qf5kAHkDvbX@#Aj-ke!wOSoWnS zqZ*kUJ?YV<Wi;c<Na&ix0#JAv0i(olLz1%aRQ#gh^oGg`flL_IbxCYupd7c0s=jAQ zICld=NqQ#e!8bDx15TcJfcO2oi|+lnGZFV@aYw@E2AI6#9J*kO1D4#h%p}(>RG5cM z9HT@b2pg4YOwzUNqGl0_{z<_32<k?Sl)?0>uJ$!I_jlB5f+|cO_4HaQi)kh;`V1E| zi1v=GTwy}^h@@6mgQBNaL*)$E8`d+Wlka>~ts4@r;h0_=BK5PJDK=weP*mL@fM1q& zllyzBtc6wcQ?d7`cD@S9NA^a-JQnzi(D6ky;=*US;$|?OtDhGQvcPYa^ZM)Bde@+^ zidd)+8jTR~0&9RhVJsV_5Y1-eSH(xQAEaOHFZQbg@{as^FR&BHB{G6|Ekl*+meLy9 z$O}#1u`By<BE{TeB+@Di<}iQ`+87G7gLf~Gjk7AqEJdZgw2jMsvm<5*d)PFpuB$C$ zx6-X|A{MdQL6VH>&FkuBq*W}KvOmw#$Cb7$pK_y=>}eP815w5{Av~1nf3oY>bi%wM z)VmSP2s0pq%JgqtS*ziAWml)ycYCi0&O|}d+<7I6)gs=jR7YXvrE)%8l(zIr;qH}} z7rpo)J%NDULF5W0siRSpLD!73jc}P63`><;<EVKO)W}WD)@YuU*kNZXyi2+0Nn1>8 zdy2#~MGvss%i0mDE^AUH5jvvY4lA9FhlxXF$qpo=w%ICMiM=b|h$nflP6%CzGM-TZ zkyh0cz@FFomCoRU&q4e06sQG!pxMF&&odVO9bO9Xzl2=>i||Rn<}Y*xy?j%wYFZAZ z?JBxvbII6S){=;XHi~MnD&CaC$l%Pbw|t#=HrV=sKV*B>hBHhv`%vZ(i(Ags8iAlV zytddX*f;r|asi!Gy2Kl;lOi1#+7Pxa9}WQeO4#qs{x#{z_8qOQ638&7juY$;M30YY z9ugl?Qdxtt3t%eT^jD!wzr(^r%i`{jnOKMgA=wJSgrW%yz7^Dm*mk`>#EHc*HFk9S zWT-5eI2glyX24afscH>~)YslcC^re(v7oU+iY{kG_K@k=DU(ho@@ti=Pnv%Hgub*) z^K6iDDJmWeAyq&S(-P)ZN;z<2P?A9H8&gZdX<#$hd<(lE`||VIs~Vdx>yyJv<w{0p zQq&dQ1RU*u6%b+Y5Eh^+0xG9hUos$&JBxC~f1%czO!cZ~bJ^Gc8)CYhz_n8{%&j7; z8{Ou<IT*I^)V%9pc5+*)caio9fzEbXZ(D42dw<)iw*EGELne2f=$&<wq@fd}!5G3< zyXiK^M3cQ1j>O58ch<vOiCtG#7-rf*nLOYDGn_(ED;-v$fVQ_5B77TIdlHwuMFP8Y zDtP%-)2WcDt)Er=5yc!XOJyR$HoI7CrgCb;LpFrE#X___={0}w?)f@5&aV=4KC)(~ zoPb6`qomS=s_We{Kei!^H|8<OPsX5Av2b_Jf&y7LtwmhcT)WJ%R&f#=O0iy!Cp36- zplZwZU8UFP9xQ)EJ(VjAQ>cq@Z>@|tHXAupAu*jR)Lo@q<#E}T<iw^~<upg##AC@r z^o)LTQP&#Lby@l@d56JB+N8%mpe}F4!lg4LN+IFPc}W$New$cqo$gn*b#=KT28JUj zeqq{Gg|=AR%9ZUs{b(ZcD~lC|F&B?b9)`0O-J;M~p2mu{{*@iE{_gJBiq4xS__`Ar zH+8k$+*j3iHP_O%-P}HjzZs1a0*FFiwStKsk}_yJt`n;m6W_k}-rL(bp)nCR65aUf zJ!D<&y0b3F)+Uy-r|pie?zUC2{yTcwW2-y+Rtrulq$yZh-L~eASa(l*Z<{1I5ht>4 zMl*}`b*$}Q)xB;_qzZDU-qESI1l}391hs$<Gy|<b53m`(46qZ}3+w~-0|$VEz#$;A zPUw1P&j>{NCz37bSaYtte$Wh;Dm1^0Ep`|+yyYE=W5}gr2WT-VuYNR%HLSBy(p~16 zHG7$-lQ1{%^>?;)h10P4YP*S#Fq08szKLpQdrS`Nxt0d+nueVGTH9y5OhZ~aRW_Au znU+xm6cie~-u9KZ)00Ybbs4E=S>`5&%_Hn)A!kVW!rU@pZWP+YGo=pupJfctpqF}a z2g_Ns74SLWD6skLTY@~$!~0%<xnV<HL6l258g6V6Mc0;!Y))l9#zdAT<Br0+-G;nT zRSIY3l9j+p1GryT+T5LZgJv>GNv+wlvKQN0vRw-*9iquz^c;&9IF5|fp&cHZefA3H z(tD3dNT_P<k4?E;3Q>X_&ej{8W1_o_;R(5qBpTnQ?u$-nxR%J$l1rn&VK&3C4{XwO zMTraqm~n3Kv^sXq-w>J*3gH!_E?D(+LZbe}X+?sX^r9L4PVX&u>zZjORTVQhmFt|v z1Qwkyx*(Q?cWbgPs*xxQ?AdZ%`vmh77eO-@*nCZwfiyGM%0o^|Pbx{!kW2cVGI2jf zkvNKt#B-dQ9b4d31>v`i)dUS$mTHVV(c)LHP=`RIJ+ft)W0Tas*UxjTI59{U70pkU zTQs<h8wcuT*jkZ27W@PMb!CftNxj19ErQII=G|Xq&Xgh@^5$$YA_h*ISJ?-yHpg20 ziFSYt*l0S8gOakyaj6oF4&JReKm=gX6d{35ke{R_`Awi?Do!(|7?ng&GA|oau;Tsa zlg&>;df9f6l9(kuwvq$AYudY<vv2JR_r<N-r2)FyR=1Z&T7~Y&%Kq>xW!yWL^%B?* z>;!TEpC|m{a{f1s^iF36Yn;!L$tNefv;sF7?<TtG$5O*d5H)x=H(uK~j2$`V-{elN zMfRKKRR}jhmtDg+y=on9(nIM>)y_R@1gFNR_V_qkq>K;!deTTP7hzS^UI}t0u}>oA z!&8O9t)T{-_Rq5Js;YN7tpxBLW;F8>V?|I04Ut9ng7*fm8)>Lvql^>|?G4-MT`JzK zqE+F1SwfBd6xqEo>NK+Br}kp%4HosQtEcJUWo>5HLD)-WnV8Lr0c7@2KEWMmuphug z<+Kbw%24n>Fni5$BU<GFCFUiy2vHREw)d~?T@!1+9a>scm~=(=RLRI(`yg%6RDD38 zw}VMcz0Zx^2!^w<i8%=Zpot(rIE`d)a)3Lmlg?Q=ii`jV7}GVZrrWaL-9%5mE5jDG z1|@XRMSD?szt%E2JsmAsS(~~J2@83`Ze69`ZdjSR%iyYvpKx&!6g8MLyt)X|8rG$4 zP6CnNW_hoNXIKiKv5<LiK72+C{KmCrPLwm58-dI`_zl7wB<xY%TNfDr=0%m~PDyqO zk@vsI`C#DaPdFQWlrzG-H}jNqtNBUXqs+-Yb(9I%-#~c)kN2X%Bjh!C=*NKqhdj8y z-rB2S>uizGww3(YDKM<<ZLyVWdwc2UF*rlftFAnoS6;8ePGYB$A-3;1Oeb@Cak#BY z48=v|@FwHwdH1d}diKX2+YrFp8LI)Rg`)gsOmyD5*Y<nH6*7d~=4x-aMQoIKOmmpu z@PsFj-&JWeQIQH^=oSeMl(xz*5~13+T`P<1WyR&Z3T===A=*l^q-x@XR#HPtmX@^g zB&UX0bjtB-DWCS!NIKjYr$nfoO6v`2s*}Es6PDS)%%jF>MSKKk@Di!S2-mA8MPMb% z(Y#{f=A)Ld(TUz9dvAX`Jl2X^f_mOFJoh$pW}W9W+=o`;=6y5pqxF@~Kxh`B7!m6r z+&dzqS-rmMD6718R2oOnXK+#a-I*bYCMU%Xe=<En2~^zGfEf(NnneFQXj02glW*Zx zE~nYx(ej;aULjZK7)ft+(roj!6upq=wMe17KGg${>ds1+wf9I?sTrySh<Arlam3*v zv89sPu%}s(D{k#-+FQb2A35v*CQHuLqM~bhAYw@NwCaL|Q2fSn2h)e>>PC;)hI;TN z3a<udu4bYPt6IUb5E&9SJT{6Ja($LgYh|=@I3&x(i5rrel+b8gqzp9;Y?2HST0Db- zY}9mUU5jlKkqaiuY3?3m*<xSGeiyz>gu2eHCg{XnmD21s77lFr{3IHpC3%2-mxt-U zrl28T7a@zyTv%@cL>EFwfSA!zVU68Boa8oDmVVhPVN*o4-P|<222s8E4d{JSMb6LH z>j+J5jYUGNQOUT-G^``omfA3-^}=k*`goNcljU_{jABJCS`+g{r>T(l)$S>$h?=h( zQ+hX=lPjm}uZl%B`!LcDh@MfYDm_irrRk$V!R+^97F{`JN8B=u>T<1SvY#ydq&-t> z#*8UcNrTa4viV|_LK?!>-BB1Z28BJ_Tnr3{9Azxc2?e@w1r3B~8SOr}3Xp`#D<;_B zOlioT2worrf0^{6@f|f|ifHFrolQ_~QCmBVST}<*PUx#b(}!L*KhrjrZNc=qHST0m zW#rl6tJ6(`92uYEyuy@9%Vh_P5om;k14&du`@Iu8N<Xt&{^35m9T>3zw%fUYD_s<S zP%`0@bQ@m`%p>y9z=pA*7E#=|GPr)`<SUWlWJfY4vtqH#*%19&v0NOBB3Be6?DYI! zFRUpCdO&MfV;6M<Pt&%CI?Vd(Z@4As!hHb0=5^4N_>XPgh@Old4s)c1bcf1o)&#W) zUB0~4R*6E)LFnxcc8uMV$fi;ERAYV>!|2#BCoNjMPE4F^32!How8}r}F00qbSu8E0 zS5&_{URD2&kUP=8JJZA{{=KFN<C={@VjEg1s0MSu+W29kSr70#5rAwIn^Vv}LMHnb z@RH&dYz}CohE@+SM{bX)uewTcrw5qinApM+^Us1gwPCDFN=(L34}-E#7MPY61mC@~ zsZ^P0bY+wh$sJ*Oi!wSda(OE2s5!GubzC@O?b&e8%9Us+PV`6!DY&_4OcC&hUz&IL zoTl@advkw=&f>ExyqAyPBpyag3&~r^=9n8r*;%w~8kdXR1PX3dl7uEkouzWYOKAEC zUPPnGBxm}Q{}8kxaNv#bA3*J!a07dJ-wen`g4emKtKFG1m6h1omtb?5!<xcf+|<_D zg;5GGB<HIx#nswtB6V+y=QZz!2Lq128NP^TE#L!=AQAPJkT38#5{Ci}*2vb$wiVPw zhLr_FugJ|=UM76!y0*fASeIgv(kY3<U~F1U2&cL^Nar`uBCL;_B7r#>6=p*SJy%7* zh{;JQf@erKI-aih5z?(<ud7Pvk$*`4P2hUi=Igxaj$&!Bh!??);hEgluu)*6uT|6q z6ea{2QmHav**sP3Q!M*>8LGBeRnggqQuwM5DSDq(%wD2HvJJXx$f|BiIM{ZzIG}1n zU{I(DB`oXh+8G-{lgN?KNc|y~M*^vWRyjFXKY|q?@3hmsIg0$%t2+B64NTyvsEsp) z_*ZNP8H-V!xruc)d)`uW-TXG(in2``;9E9@v@S=mF$J-mNux*vIlPsZON-8;iGqeM z>o*$7j7%hIE5w&$6RJ!giwP$)Wef}@w^S>u4Fwe|p`@(j4869}#1b1bD^Qih%=+k- zo-{{2cR)1iiCY`fhW8fM<@oPWF-L~bNz_zyHSB>v`Sta$^{nQ;`B3_|t9!MovtJ^L z?I^g<>+46|-JA02xpilp*0K2dS)$#3<|{?NU6k96Zu_Oil$>bEui-?%@*7*N8h__` zx7@lmvRs9)XwR4C>s-@n&Z;@P=9k_v?^oWhz2A82&UmZ0*K72eyvL_}bjru3{B-K( zGva5w=k)iU{=U=y{j{%~_SUH{P5tfEi%<LNX}iw+-kG;f+cNWQ7yk0X4Htd#qIXU$ zobjrQ-*oYji@RriXx7D-+<VD4E?N1?zj)<2m!>a$?$X!HUU=c3&OSbS@Umwvd-dgS zz5J(_ue;*oS6tzD)O6O|Qgds~F8_P}t#kf%&IMO)zw)bB-uS9VUUlZ&t#emS`M0@O z*S+fuSK1Rj$GsnUFP<pSDfyps)^EMDFa5}D@4R0T?-kQt_PleapEG$9|LT3?GtWNr z>1Vw9`Sa@LzUs<3{uP&BHhcD^ue@Z|#TQ*T^8$faoL@WRymP0YC@F9A6B~kkPj3jO z+AN20zZbV7G%~o~A90W2{t#~0+&gi9BI5rL?x%5!{WbaR#r<jA(~Z-6829IKyDIL( z{dL^6*8fr5Kg4~mb??XhYuq!f`*GaoeQHB+p>-d?{VLop{Ij^5ai3@X58_^q+vWc} z?ptuX{0`y16ZZ@o{xI$&?#r$FDDF4muCwlAxZjW4)!%z^L+}yYHP(L`?vLRX`H=i- zaX*RM<v$Dezv4E&oY}SR3+#t_+~16ZZ^r#Y+^#&=;Xdcn8-gor_*UFk;ht;V9k|!v z7TKu$dT@6~-0N}oMBJNk--g?jcNq5_xLtiRxHsW;{b3Au5DC8%cM7+|=R>&fi^SiH zdnfMGO>w-3aqo(__u+nHB>bbe-;CS!$Njk98u5P|_uC@z58(czi2GUG@4)Tqe-QVd z;CB7(dED=fgg=D)(TMvn?!S(>kK+D7#C;6+2P1CpsSUwnxLtpnhWkm}u0Ph|{x{sN zf6c=E9}#~a_YvG~3aZEbW89Zod^O{q{!9^n*WsRl+u^4b_e|U_zYg4UBJLjCO}JhE zT93O8w`;G>xNpPl%0G-d7V*#EPUCjzkKw)#w=3^X+;70``pZMO-xzW4#r@_;_=j=t z#qIjjKHPsC3I8bWKgI3(<9^(a;6C5t<8j=N;dbRYfcuF^_-Ao{2Dhv4LEK-9gnu6Q z3%Ff>IE4FWxLx@V<35Jl<$n~n_iS<e9>YBy_bY69Jm#j$al8Dc;a-H>wNEYXYjL~! z&ceMc;`VW`!tKgakGmVU!*4V0wYc4Ua~<v&?n`X`t+>Z<JN$Iu9>?wK(}Q~tZa4nc z<KBxqY=7MQBJN?_`*Az`W^jK3x0}DlaDN83n|}{}5Ir%Vl`||p;N0%aloV5NDeHl= z$?4uDO{uqYN1qN~*FJtra9$ZaS>|^Bk5&2Z{C`)^rR4L+ljL<5enMA@aH^7?afx5K z9K|XlA0>^W9|gCZClgy%3w*Cc{|#j^Cyc><zENc>S4_Ltd!6yHN@*=oiDL@_4fdN& z0NBmWF1XK7lkQ&l&<d(<=Bv}g)F2b0dd4b**t}WU-PI*}6QcjtC%aCbCpvK5dUr?X z?VbI1sFzW<xVgPW<V`KY5W)zaRM-fU>A`x~lqGA`?Yp_VZC%?P#@TOGT*(m@do`sI zF>X^+Q-imnQ%+n`Rv69_2b!JzCZ!%>&AWTxJ&9<ywZ$~GJ^NUh#VO%$g2X^!%R;!E zLA6&2%c8b$#4yYtVn{E(jUJ<>3hkE`?=0%!__febm-?awiRB@+LI|Fsay`*JS2Na$ zm>8^HtR}mPf>W&fVdo6=B5lNSwI~r|N5=7C?2bzb&3*9;2Q`6(MykdG2039}E(;Sx z*q$|Nqa=W7;chz2s-QHL<Q{LMm~G;^vp{NVsNQ71OgT>KP_(0EWb6c%{9GJ8>?KiL z22RRfmuvF0vyeum-wLEjT;VLI$@Cny;rB$WszN~7%&}*u=hqGD)gSiQw4MiR(rI^c z{1g#}Ko4oMY(N^D-qrKwoTcnjXu}yC!t6>xZG5hdVSCBS93`YEkeBRo#QhQWhLflS ziT4sM=;ZmCt%H`c>vB>lt_^6i2R=pc;iM-MP9Rg#stmlOVUEpJPeT1+wI?szWVkR| z^+x<U30@4wM73BDvPh5RgOzIe+Pd3h>#&iBT_8*-C*&9bw~xyy8@Y1_dn38zfM8iq z$GRq|3rM@P{!TNX6osz-Xfnw1HsRNL^1tN-jhtV%5v!kHHvy`jUqAVr{|7^YR_T1A zg(w##s1&Ibg9h={I^n5|O+BGx$0n!AD))KYV76S7l!tShg}jU*IXyaAIHY6Me{;Mu zyiMMj-fMvvuo;L01Hd2<0103S*a8d#N#HJEE06+4fKea~WPrPYEbtPPSB~dzd7kb~ z^<G6@H9Y6?oXWpCp7VhDfPBdlwgA-QY5=YR&gA>6d2Zuv0ncf;&jK2G-_Ex&U<Ysy za4+EDHw8EixP&mT1TF<;1D64p16KgQIrAKE7SI1_`w*hmJyBFEgil2NSaIDe&g*uD z4nN3xw<?i}?_hZo%aWMX=1yfqh{@4Lbda~OUyXQIFUwVLWBg5)J$J+~a=4kZbt;l> zqCAbuF<G2V%azmY$GJnD*n>qyBj*lF+bN6QTg8S_KbGU!{-bbK`Gp0t#b-wb1I8;> z_4u+~6Yi;)tt;IeLQ%x*4e{bNEeuCiDmf6L3QD$GnueukPqP1m@vc>CyVwD8<Z3wT zR(E!Fb@p+X;wB7IqBYp=q1wRyrAU@#M+UXe4MLt6V#^)9?pW39_4jspa`_c@r6BF( zKf3?|QkGtGUmlf5o(tMU)rY+UtjvzcmC|On!E7&y88SU{Hc`=7H)YoKa?WGT&7OU} zdUZF2wC9BEfuMCzgOa>%e#wiNu`^o~l%+qrLs$ShhV6l9jQB!SEovIGgpJ2(KiMVD zq0!MKO1gp{-P4bH=&I&CEWKwtrA5{V7Wd@rdi^}&6~9?+)P6_PK?mWPrsH~g_}}zW zIa({*Ut8Ed#M(xg4{N)eO0?#|1ji--_!U~OViHxuOh}C4T04kNB}J#wmD0eAV}km2 z%Ohx;6w4-<WnW3Ic=ycZyr7gFJA3_*Br0BDo+rc8eF!gi#Z(z~u!A%WgqA<^I1Con zE>oOi)C+;-3OC!ZIzZ`Rfsg*N*i4gmj<y(!sfIuXFZB#yQyCrhf#?vbi3se}n=h&! zz^A0Pb2D+GBw(@KME4)_+$C+vVM2+hO{zV_(~hS$0w|d=`Och?Dqx6BnpFA~<<xma z5A081H4Ux^UF=)rp*AqU9Yj7F26hgK1d(}4y_gV{$qjWAq}W_47fq0`6?M-Hn;WL; zg4x{4e8H0oa1wdSWMI{B6U7M+T$;ndS~GLf+f_TCPIF*nl;hfX<~+kT3hS;%{pnu$ znCW7X^Z#+*1~Yaj)Zl=S{(k!!&J$q9=Z@~Ry)jN&u2wxUW&eyB3uY*W4YR_PrTJb- zHR-Ra<}YfK=^P9Yvta_`m2A{A(PSvo5R)SFn5ed??$8p<-*K`OmQL0Yc|^vO;iKEN zaP$ZnRC1KqFnG*L=12h}iE9>&#*kP@FbTM}#K5b;e{s=bagrUwN-L5!cJ)T`253lO zb(*%R%@^qaMh(->XW^o!_Cf53FkwCAZH*0y;;ZYRl(C2YN&^}Ma4itMldfpjW|Nez z*Pzv#d_d6Or0-8skBWmN?EgBfn~L*^%rG(Z6lAoQeP-gR;6rn8!<4c<62Pc8X>4W6 zn_x}MBt^BjcEhGz>c@r9oJW@E(pcap8sA#uL<1|oJ;CV|?fFuWiQ#m4*CPwC%q3|` z_)uYA&8f(|V=(PGX_U_4Y*V&zQ^}h4byogj#41jbG|6esiSi{58T2AJQZreyJ|p#E zonG4>6Cn*JWmV`S{{3EWp9r5s-owHjo&as@!H$c5josAMy-oyD{k`2?5Edw1^vI1W zC7(4XBtb$9^a*~VzT6o|)ev*7imi}BX{brVtnI;KK)cu0(}T4yJ>9DX_ik-(@8Mdy z+f6+rpUUMa=IBX<W4-N^c}-utcT;yS(@vzywKH!GJmAm;w+2Un+6!?5N97xE5I6wr z2lfGbft^4G*bMXltw1y2i~AzJ0~uf^uou_|><1122Z2MtQNX*H`~V+l23mn0-~jnA z!oL-8w&$gTF|*||X^zxc5={uYRBEi)z0B0Cgx_Kz_OOsAW7M~6KhvpRK47ofT4Amo z)2qQs<6!q2y-B&bLMC{~LRFOGKp!ShxfnrhR?FonOtPjUo3W+(4j5uUy+Td&*E1j* zbnzD2509n(qGlF!HF;iv8<e4G(};2Nx+))33oA4Wq>LUYbb+gdHMyHm)xx+%H8X^s zX|+JMP=>Gu`)&4m4I#4<+kLHS3C$_Xk?=fvR}{0lqiOog+S<8_1!-(Jj=@BzO|Hh| zwjie-6%#dK8!pQ=LReXVQB^7{RKbbp@pQ$-cCty<QdaRHA?&3CNZ&C-zNDSw11O@x zTiIx)l#D6Jfa0`l$aa>XD9u?Mha$FakF9GnY(P;DO>IUSg}M@+NheB8vs@33Nh0Kg zjES=e%#JnjE?xTu%w{;fXl!bLXd!<Fv4J6nG=wmt%M}&dy?nZHAkhdi#6ApUFVuz8 zf6*%^X$QF{I)|ZVkY?^K>@QLQ!oh-nZ9!DRo1=E8b%;$!)MDSX2o`@07c4CGgt(4; ztQI9wcDLG|xbPM7nHafRj$%08olT4o8J?Ufh~QmJ7V9M`OcQcZloAupG`{ExNyn4X zvT(6w1R`v{VF@B1bm^5vo3U+qAX-sq_ng<$+v#6rlah<l&po?uwfwcoVp~l0T1(b= zN6P1f-NkN648`SvL>88S%Lvok#Xt}OVulUccg$oAgu0UW!&oKc#Io!+DBsv*Wn)nq z!H|K*_MkC28X+J=41lO&AYo#N;_pcE9-T|=5q!!LG3pYRkqF8>a+E6wkWY-F429wA zbYaUdQfAte2&x)uObppe0@<<1<q8=2=3Xa_J72<CUH{^yiK(HPprjwV-(EIiKk$}~ zLFPryoqd-*HK6u;oD1XWe-ph&o|&(spZNpyG;!CmP9DS^sp<q=SsA~nxiqR9Z4<C0 zo+`bW;3IZ~V{912xfe2$S1O&}8W%Z$y;#$`dAGUCP&BQiPCV`x-G*b-$-0Z*@tD15 zqwYPIgy;L!e6KO_k9)0}j-IVs&3D;rmNexjPdRfJ@LlAVl8)?UYrcFRqIY3MN$(5i zGryg9{ac%PpZHg6FA{l?PS`t@#4LlPBNBHgTNJ0|DqY>?&})@K$<qnsa*~D&C?pzc zX0H<ySlUr4W$Na@k}S1Q6i!u*o6hb>=wDwLZDedD*l-yta2I%@!Ie(~Z+BLT%+*XK zdom^q4pWg39n=IZ<ly$?c4}5a=nJtQMv+ymHa)rk3mE3UDR8jGXV4mMWgwg0ior(} zg7`_{(nM!eM;CqH>`rV?rpT!;L6ODyQDO`U7uVjYfGO9qaN!n+|H42MC|NklRp2}9 zUrt&T61j!fUbDCvk)tO)RCzW-z9Y((OF*w)tQVUqiIvy$YS8`CNR>A_tIE;5Q<5Xn zmqI)HoV?RMW$f<1aO1<){yt$^DK>u30=|S1xA)Rt{`m8&2YPPgb)~pH?*RSs8*M$z z)GT^Mxfebs-M>VDsLYc{d_DAgix%ZoV^+EF7OZ2}H7_3X?0hK~hCvP1FY=cz^%pOx zvT?D3HAScns8%vDCzfnFW?c{yzM+b%9(dCw$4n=o++>1>JHls-e@4@Q(2BEc(9M?n zM2k#Ittn{pt<dSC(Cok;q;d27_{gmRi=_=|G<uz7UWg_UUpdj6tp$g-a~N#N`}Hh3 z+M|TfJvDqAf?hCQFC#9NZ>SeKzftZ-6l>Te{gaBQWJT@;IOV>1_t>q$gTOn0zXARc z_&o4k;Mc%8J8lgkq`bADYx0x!pHP}5lyb==JOJ~00@B~@Jqx`kcL&SC5<U8Fq&nJ} zP7P<0l3>i8W~{6;?DEBsw<SKR<$kJdR!s54rHIJTioB{hJYzTjm7>)JQRclmPU+#3 zZBd_M-($B(2yA<Cn;4?gYiwXN%y)=>OhV|04W)x}&yUe1(B>0bD-5ndq2Fw5b>>3C ztaJ~bdo9e65xURghIH9$P<yjx83<EREXmk&`5K}LgTonVccXFvx#!6>G90KtRwkpK z5h?40qa5v`D~F}FB$zZc6Stp&#M4y*!qMFYWWy9qnOYL97!(1yEsUtwA9&NP!54w= z0lxueJalXDD!^nNGsk%<kJ?jgw~`cfvUa$!)iilk@9rTkOTwG>5Mh5fvKXzx>R<bs z*SzNHMb}m?{K<}8Ls(kMTS|?2LfPtJK^{qSmWUNMF=lOStCyqJMG6sqFsCt?DK}J% zUMC^3LT-tD37y+ya{9lCdlSI8uIg_5%62xh#H?Wr&q)-^iM80-9A}d(jcvtRCX$@Q zNu05y8OutvMI(8ErkJ%YPzV%gC;`mU63AETQlNZ=2D20h(AMk}0x=;hAps18lEvWv z?|05U@7*`^MpB^vuXFWu-*WfmZ1>!AnVdXJ9s=pQJ91sQ?t(1L;b^#?Tt@>#=-zoD zVo`fNmk_dQ7B@-cV&+78B4I14f~YNV6o=!t8n*f}Y|d@fY}M{|nd=}FQev~>EbLB; zH5(vx;vhMDtk0Wj^u~6fO)v>v4y?tNc8u;RVaa4C&yE({r(B^=2y?YmhM7tHax|X` z^G(pHA`8A^RV3}ImRjUUA8b4-Zd(=IsQb?*<lU->wt{KQMIMn3W~u0nsB~LMMp<+8 zy-bM-Mw9N71a9@X9^wh%yjha;uS4{S{s+o6r;Zo6XRq|7W0L%>DoTW-qJN;b5B3+i z=Z9^d@d?YhI%>ELHskwTQ7LWdY|oxi;LFJrq0cD^=UOG#{s?zsgSMOUZ8&mDr%Vi+ z0V=ZuN@!yC8kK#F7eUNO>W&-zB3zze=$(TwZK_+MS3%wgrW!P!r~1TZ9L4*Qjx70f z-v40wKqo#;&_ApU+2?qVDcN`|-e4&QD^D0$uA8UssRq+-TGH7AyGEFz%6=)Z7Y<?& zZze|YK~Yq9+ttxP+xo6t)Zcjx%!Dv0=QRzgc!C+8odo&^yu}n${5(k*7mCX}P`QgW z>uN8vBag$MfV}w5&BZqOH{p6Gt}o+S?njT`PsVLzkjl!&TA#kmDAWNmJ--eqW|7&E z6(N*DKbJ=iFEA{qdHhDO6f6fWRFa&SwHOAX{|V;Nk4z;CI4rS-JOY5AG|iwNRv43$ zIFU`ZZIkJb*G;7K7>P<8FyAAKAtyfp^7W5{CjSa(@qdB5{mZz%sQ26PZvW>Xi}!vQ zX8RYCFz&M&hJF~P^{yn$_RnY-`iK7!a{G!On5c#Rs?S$xMbz5*X_{_r{j`PV`@b5l z#iiY9mv;8m-mY=#2BGCe$M5{cw|oW>0DZ3#bi78P&owDu`Gs%!rVK5uu)>i`yLxDK zg^uZ2nwGAm&GaE%M2a&=rCxUBHM?`%x$Zo7zPrG!br-rzDqI^_@6a*6rJ?CCC8ota zeocto2EDc+=&|j9{@PCHtBpff4M!S4(~R|4=hAMyOS@*r60uAy70bnvv1}}zmXGBr zNG{BWIWaHh#{8Hg^JK2fmpRWO*Yyw-bT}-Vxs7g<>vWg9&92LJyB^o;^6m=P=lb1% z+v2WtSGldwx4RK~b-SSRwg>udFO2)(OlZ)B?ks4{g>DtJ=0bOoOS`LG+Fj$)Zn<0T zPJ?TJTM2g=+zM#q{fRHZ>Coy6-K8$=Y&xF-tv|X}@2+*~a%h3jZ9sd34z`+8ZWG!n zbe(9q&|Qvp4Bck5YUsMq#-Zy*i-)cU?H{^c^hW6N=$p`8fu0IoANnnH{piKe4WLg$ zw*@^Mx+~G&p}PvbAG)m=3!%FKBO`P-Vw{BTCXAZU?ZOxe-ENGi(Cxwa3f*3ew$Qy0 zV=r_z_H4}AShG=PqsvAWM-xZVWq$muz-S8H*%(`)`xA_`(AikCQO5CQ<BB6{8{D75 zU5~vdoZlC_wA=2|?nTfV4ISfzzw2N*E_9!EX?Mt_-9D%8rB2<;oVs^8bsu%=KIPOM zcIxhR>fYks;@%1OUbz1QcL44m;r<Ek%W&U<`!Bd3!2J;JM{qB3FL$qSuXKOz-r)Ym z-RAbYcf0qv_qq4Gzjq&WA9nxO{fqmU`&W0T`;7anyU+c^-5<k`I!N3@_h&Bc{=%i* zt6bW>+NIrVT-yDmOS{*(wEHWUc5iZN_hy%Nf9=xlR+n~fb!qoDmv(P=Y4^7-?f%ZC z-R&;zKH$>sA6(jf$fey!T-yD!OS_M|wEKihyMJ?O_hXlKzrcR*(47SBXu8*WcZ*Z^ zdZ+G<PTf14x;vb@|8VNQ>C}DSse90=`<YYsIrlmDpKw2gdjRgB`=tB4yUTsS{k!{$ z`?~wK`wsS~A925Ozjntk%D(8*?n^H1zUtEMYcB1+;nMEAF73YO((WFYcE5CK_mE4w z-?+5<Z<ltzb!qo7ED40}QCJlS-D9vZ5W1t#f)CyApba0o-@CM11kH82#ojG(>ZmVI zM@@OU6TCYS8u4^b@a~CD-IJZVlbyO{PTf<Sx~DpIPjl*??$kZQsXN7~dlt0h>7MP~ zbD&XA_gwFu=hQtP+Vym&diMfo+0(t)yStsbM_`A6ZmD~cdnT6p2(JxhE8HgJz8O$^ zJK*xMW7h%R9*Ut=2$}WX;H~)vcg;8WYrer@^9>%GZ*bXsgU{w0oHn2E+F-W9ZG+tg zzYT^P95+~Q@Z4a!!F7Y}2HzFN6Ur0L6Vemb6WSBr6XFx*6Y3N06Y>-G6Z#YW69W(j z5DO3w5EBp=5E~F55F-#L5G&jdT<~Xr_^$#~e+?k_>j0hK1PJ`sfU<7|Bz-%e<=+7! zegIJKLx61m4CwU<K&T%B237YB-xxeH-{6w@2A|9~IAy-UEAtI*nQ!pRe1l`=8$2`L z;F|dc-^@2SXFlPb!90U|2KyBL5dsnh5(*Ly5)u*?5*iX75+V{N5-Jid5;6*G1Z4aY zpx@U3;l2wfb`K!cLx4vA4T$rw*eW>+Nb&m`?P{%U@WOn98|EAQFyG*a`36tSH@ITH z!58xl&X{lT#(aZ2<{SJm-{6q>29L})xMaS;C-V(XnQ!pQe1lu&8~ifg;F$Ra&&)Tt zX1>8U^9|0KZ}851gL~#1{4?L+p!o(5&0i{zk+6}_(bctsOAK8Hc*f9??+o1#c-_#E z9}OLO)6kJm4IO#b(2;))9eLT%k*^IMdEC&E-whpk-_RNNZCtn2)#_-xq49*q4H^$< zyr1!W#_Ji6XS|*9bjHgW4`;la@odJc8INYXnek-Ciy04QyqED@#%mdmWxSQ~RK`mg z4@Lfoyc78*@=WBH$Sc|WCjT8e^5UT*UmiO0=%FLO9y;T-jK?zGihLD$Dsoe;!bkn7 zl;L`CQlTSm4xMpV##I?FW#u>C$+#xtmWZ#3qluS^i-~`UbBSk(Tge5H10wfB&WBtN zIi4TIEu%TS1l&*Ph$BNsd>K08&d?E$hK@Kjbi}WrBd!e{@owmdgF{Dr96I9W&=F6E zjyOAX#NVMKE)N~?dgzGbLq~icI^zD&kq!tQX@by^J_sFYh0u|12pwsN&>3%OT%~c7 z#zh+UXk4Rli^e4ycW7Lpaf8MM8uw>hpK*J}<r#NpT%B=q#>E-;W?Y+bYsRG+cV=9f zabw1X8SiC07wH(%E~HmTqmV8kEkgQ(GzaMn(iY^R$Uz;faHJ(dN4g?(q%lHAdLwkC zJwiu1By^-nLPz=}bfi^6N4h0+q+vowdM0$FZ9)egFy)LJG%nD%KjZq0+cPfDxI5$O zjGHqq&bT+@+KgK>9?f_&<H?K{Gak&iFXOpLCmEkb8pwDn(l?}ONXL+NA-zHxg>(sN z5z-%|IgD2_9*J~=@kPcD5%&|{6M_-nhwe$>i$X^_Aap5V4JH@m+@Yh)J9Ly^hmNxB z&{3`(I?A|1M|pSXDEkf_<=~;COgwb9-eA71JD6|l1Lkv$Aaq<S2p!i9LTB=S^SK5P zy2!6j*qVg3m9>$zjkSrjg|&gz-Rf+0wL04Rgsn*!EoL;B(OyP#8LeeBmeE#5QyDE~ zG?dX!Ml+FKBCSL^i8K=FBhp5si%1iZ9wIG7I*2q7=^xTQq<cv7klrD!Lpp~v4(S`x zHl%Av(~zDaEkinnGz{q%(k`T1NVAYyA*Dhph2z&~6QfCt7BL#cXb;jIq&Y}$kkVjW z{%n1~d|M|l-_{Gvw{-*aO@3fLWeA}&+Qn!V(krA@NT)D=(kG-%NSBZzAvHougj5K> z8-H&;dHm3k*AE?e{?L*44;^Iyp`$Dybd(8%j<SK!QAQ9t$_he9nL+3%I|!Z8N=73Y zZDcf&(LzQ88SP^<kI_0t;}~sYG>y?RM#C8GVl<1<Dn_FiZDKTu(IQ5J80}#+htV2F zW01ZeZ9%$%GzIAi(h{U2NJEf*Anic9fiwf@1=0$n6G$VFJ|JyCx_~qR=>gILqytC; z5dRbR6Ymq}6W>$1N-R$dPwY<2POQ%HQu#Caf%%jngpRU=&{3ukI-?JaCNNsSXaK|g zhVu>A8;&>JZaCd=x#4ib-G;LbTN6(cM-x92Hxn-tClenN7ZVQ?2NVAi_Y&_C=Mvu% z*AmYX#}dC%nn|omsU;<q#H7Tc#Gu5U#GI5cQmRO7d8)__i6ayIXgJYuVT=cH6Q)mV zZzlnxGM6V+<pZ8NBd<u-I8O)XQxEvILe{6w0<2mkYsk%h4cykHovi*|2snHZV96zb zWtV|tY75qLp;;!7c&-)Qs{w1T0iSgpq@UM=gWrxd_93j47lHkBrFv8#v94E7f~UR- zd^Fd}X9X(jD)5T{O>YLgdof_wO9Xo9O3<Hyr%9xEuf;szczpxr!W(0G-dn)eycN6* z=fOMBF8cx3-X#)5&WQJ7K2VBy2cX&CV_rDS3-V$g1ho1PI1tW`kBUt3W0)b7Cw@ZK z0zL&;`WeiX&w|3$bpei}f5$BOPe9l&gBIm@`Z`9_H-)F8bnI@7D<|XXFlN%dfM@p! zr}tx#Ns>zD?4sq{BN%m*pCxj#x_MGxgi%LXvyHgQ=fxP4v;<SjUxM*8*M)*t{f-Oj zZgHyu`4=aNJhyg#RhG-rGrv~4eE&pn!WOR5pDW%%zS+#JOqb94dnRVuwH33vdZty@ zFUgz7o1Bfgo$kNN@LBm=8909{<2QjCrpC(}(doEQ+9%0#;diE?QX2{o23$T*f}KL8 zW$Sz>gs7~qJzK)|Y`(RJe&?xY{MCjrmGLZoEnm~i`cJyC8d}v#hwt?_H$1ECzq!&2 zzZsmXtY292TOnn#@0Gs7#`o0xZh3|2>Ak{JgQi)q^zlGa%O}exl&yRpmWPnl>J^4# z7+rBV9DmOW_kF<O%6MV=gw&MC%>}2!_;w$r5#HO{hgxda)sOId^*z{!x<!kZ)Ga#h z__`BLtXsVJq@_=&tE+or-J&PK3x129TzB%ax~J5gyy%3*PkkCcJU#h(@}fm2JfrTJ z_5zRmo${<_^9}Bvvv~1ymp)HFFIxQkrKeg*^<Us0B^Lfgb#*5%uRHDZlg{uT>ect( zpL5cg{=H;`#8>!ddK&12#fuj=ELw@@v(B!oTg4B)RQS-?B*9K!y!ffji%vK$^*es) ziK*X7Pni4n#3fehKg?fjc6zJ(=Ksl?y6B%^;{p1q`#%Of-v0|7Rrq;a2XWs5-{HCi z_lFT?`@dpuEuN2jB+)Y!EqmE1Ml*UdLu1%NfYT+gSF)I`3XW<$zWo)V|IFPL$>DNH zW6KmYm`h$aSJmA`TUs>sRY^bG%RWAMqXkxd>UzJw4OTfz6A}|UKJ8_V^aD+7pM!I% zwqBv94Lhf^!zFK}Oty$ptr)u*XaE53hxYn{>-K>N$8FGL#URZ+t#s@32nx3`H{kNU z{R2+V(SxK#wBwt0&Ww+_bu?lyUebNMG)_^*E48h&26imgw496Ue0L7~bMbsG{PW<e z38hBrc2oJ@KgO!qBQG4qkySVno%_4(D~`VynZ>!g_Kdv-BPHzC8y+rAX%gi!4q%gQ zyp2%rpWNMuGv7yWI+8@<3+K-T)D7ltco2oRC}QFZyJH)%vlhDmVgF!qB7PT_jOjB_ zT$uQUp6e7pVn=c+1u1Qu9#59T!{m*lCC35ea6Ze3Q=?$?Mq$Rpal?n>F>h{kM<eWu z4DXa17@(y^+(szg4?~%EM<e!^m6Gq85nj(ujHiS0fWk(52dlvoK=f8jjGRVn>)Jgy zT`W6n$ltTKk!^*l@(8d}@Ct3}n@@AXaDv4X$hS%`oKoHie`XqyX;=fhSa^~aH?yFX zrLq`lqr)?e@kSAto4|eqoEJ)s`iU}<YK+?&lXtoieFtl7uv5I(?HV0)yLazS7pww2 zeev_x6~BS&pYFP@_%U4cKY{BrxW3^1FTwv7uEXB{A^Zn${o4D#_5NetKj!_#U(j$T zc>f9TPsYXkPKDou>tg@h<^5~CKj{6Nz5f#L|C#sS<o$Ph|DV18dGG(1_kZI3N4$T+ z7d8K<d;huKkGx;+{Z-yS*ZUWG|5ER7^!`@wk9dE|`!DzY8@&J5-rw*2zxVz@?|;qv z-}e5!-v6oh|J(b&^Zton(t4cc{d2v4nfE)qzsdU*-R?H!+B$N51=)L2;NBCL>)}3> zLVipCCWmb)w9aHF?W)nH{=~Et40pqRlSE_C4Sj7myFGsNX~WDUtUxho{A61R>@^|U zKp$*I!S;6>tVwm}2HIejiQCE3zwQ44I}6M79c4?rtHU*o_w@OrZ`YsVy@jK1@82Zv zB{=0&V#8rE9^c3GTXBO6@8fhn%J-TqJb5ku4(WTo)0f^4r7(+eh>ZOnegO`Y!Na$3 zwA?B1?>%<x<mbWvf%ot8{tvzXBk%v%`#<siPf@mKA>Pqr$1dYpB=;xpCB5JI_Ye5@ z4|@M+-v7Dxf8qTj-v6cdf8~9gaVP2j+CM+!{oi>1zrFuk??3GQN4)>2_aE~<&y6`A z*TZOR+P!|n`;X#44xT^oh;JXBXCUF=lQVks1U;MJQ6K&>i|@ZbX5alYC0mToHm1+E zqR-!PxHt~zFY-RmZ{YXmc%SEe@R@x>|M}i$Tk{#k6rUU=vWA3D%X#$04zfJwB3umj zn6KAStEaEua{qlBe8#`t`vvcB_x_;whrB=ReGW#(D|vs1_eZ?H)BB^|zrp)AdVkFO z<KCa}{-pQ0A(ZLg<o#*yABE5UpkX?G|DAt+%-8D(jzoMK-W~PNM=x`bH96>LXnXwb z#o9h-4r%|>{re^U`3(QezTs8xpU?FE3h%RR`JHxZSdLlmH^ApN+Bu+qmiHNk;m`KZ zyWsQPD*wzn@%u^MZ}jhX!)G{dK%>9c`!DqVi@g7PU$3JG#4|L0=j;8u7wCM)Je7I* zqhlvS!t2~uj$KBLCii3i{1fkg)xZCm_rLD_|MKwS8~*v*{`ouJzuWuY_5Sy~kNGcS z{~rGgI3Uk}1LA+vr+3(Y2V9W%-}le=djALBzt8)3AA14h)P!SNk01K?|K*>5<ez`+ zeZUz>_uKyacYXZ(eZ9Zq-{0;1pZIw9d;fbr{7?P!cYV0;c^~jg(!a-tyT`wOz=wa( z`-lDa?|c8S4|lJB{+SQ=egFRF{`nW)|EVwUz5e?TynmnfkN9vu^v^%?{xALe!^e&- zCXD&M_aE@-{nF2yAN%mX^5K8tpV4o1gi*j35+C?NeBcZ5zlXC(3A66;KJbUU2RxT{ zL4Qm9U-^7~;Oh(gBH>UjiH~xL4}2r<k)J#RA4od)`FKC{KJbx*1O5>oc*pRW#6$VS zM|s45(AO9E#FtCw!;gG=_xt+(I8I;3*{|dF*YWm%4~Ow8^}_fPANWbq1%47Acv8ys zkdKe~AkV0`FONQ>edImrE$>k;@lh}Fk&gI?FFx?1)D!(8&xkKR$|F9?BR<BZy_fVs zQwTmqS7rWad#aGO>jyrH#`DN$mcUw+B5z<*Y*m5_^;U5g&WC$zX=;~YWCDx`%u&=Z zDk!IafP<qM4R2rBVK=SDp*b6DxWzu&(sZo^rquwrn&BW9b5TV8DaxqmXi==L)F_F3 zP4do&FP494Bt#2}qfl`|Dwr->U#8`T`l9O|gr#q9xsV6SdQ*H5Zs3=Zq--A^CS!~s zW!S2uWfyEHrVTpSkP=gUSyj<J$j-NPG{7CvI8~;xcVcXB{MJl=n7Oj}gKR-YMzJ9? z;5nG`8HY*a)b8eT()(tcq#WBQ%CtE{t0J`14!iAXL+zc`r$d8~bEpCC!1^1wQ5|Mz z%DF5WiZMf28=8%Fm7AjaS)$>`6<3T#vV^cIAC@rA-`b{zRl=+SJg&H~W>?z+AndZJ ztuSvrFB%^$i$Gx=1`-XCW30)!HL$m|QcM#hPml(Q;Q)+6S`N5a3<tQJMKgo8y6-$1 zEYkvNv||*eeDsx?I?!G16nm&mfH-~%C`hR42(*fY-yCtoBu&OVsBc-jN7JkE5eEjv zEl^z)9E+N=xf74u8u`ViD}~jS(r*xBKOz;Z$GnEgy20uAkQj>XG=>jQ+tk7K-$4HP z|KoM|*O0p+{T5uUxQ;vo87ur{xFTFFzrsDj9DWqCSzJesA{_j;;63k;JOUXmt_atG zhhd`!vK<<Z5UXaivH;;A>@UzRVPMuWc&Sj%?H&}n`*IRJWNH|BI6Po@Z|#P`_*kes zSF<R{c?m=&`<HYT58!IYmB+Om*Ay<ZpF~TaW)L4o25-w2DAP((aT_fqt)r<VvCsl- zwu-1>s3{oS(1RqP4-lW<P)rVRD2wSOOH?h~#xa<(H}@j;y1gkbG3pAjpn^MC{Dx@{ zh}WV^qZ-FKKkjzJ84-elA-^Oh66-lI)562<uhmzL(dumg6g;wC%s8QMs;3_;<xlDP z1h|1coYLOlNCG!_a#!&>Tvy=Qfa@Y$Ex2G-r+&&%A!d>vITU5r<G_p^!|S|FR-j~@ zQ^(_+^^khJFHMUHLYQXaM_NV44J}2kqlt5QS;oOxV>5&Lnmq18#}vmohBq4~eYD3+ zq4Cn2VEhzDPOP=E#}Cf=)>A+@j9{#>5vQ$9%&em2+?AIAF0UeJ9-Np!GQ%ZQz`+<Y zP1mUDV(V|i$x%ZJcMCpaSZM)R_Ki_=Vrw24N{#nmj?$v6SyrZbe@J%Aq^8t-ZIeG8 z!&~?t9)g5di(yzUP99AtALp`xPg6;G(kEzpISl7oIj+U16_PH59Kdjy;bIbl_!0w> z;c0xS*o;Q15r<7zLQ{_H6ruq}ng*w6@=RpvO6W0}BswZM1ItZvjEp4g$8;mGhugWv zjbglS%=Z=A`uf^nza3J-hS<ns0n{T~uUx~1<J@CxaBOO#ng3+ceeK@sir>Y>b`5{a zflde!$^}xX*&{5K&yLYCNa)MWgdNRFc*;Evj2J~-F)a99^3<f&))YogJWgVgjguS8 zK|ChVF9*pRptZu(;9eeHE+)SOn2%t&hn-?pg$E}<nu(<(fe}qp)1%`M_H*TKx}d`U zcG#AiC}CY{dSrH-{lEhYvupxKngo^<CMSv&iKsy~TC*#&aE-&wfENuklC2kJNT1P) zQWc|Eg*w+IEn4(KqgRCU>s_hvq~@{y74>c=go0gn2g_kNwq4eQnpuF5@UTTAA&>Ml z#y-z}fKotnz>I9v&c!OR!9-iHLf~Vqj`ovCPQ(_Bo1$m~Ff0bIoW(;lB#U>flV>o( zabx$b7jzYGS-q*a4+6%+Ex2#lRNTL^t4P`AA@~PyP2u}Xepo&Bm<E&g9f*E2OYs5d zu#9T>K}fJEBjD3!c8+5XOGQf)taou;R7PhE^QazHi_2bV_?#Nkm1StId=U<D5Avcv zv=|GSejW!V(6kU&v@ikVtqrtER-}RU7~Uo!Rz+trv;-tDZ})*pMX}8Y#zhyum3{FK z4fRcHcGTBL<-uKqiHz44x2;Sf-?Fkc3`1q3<kmT~(7aZRrl@m*=S-3`#RQmj!~yIA zK_|XZVLJ?V{IvYpXok}OM(8hz>^u)!D&aX4xm*v**6HnE#*A*<4#|+v(@JSw`NoOK z-4iQOI?n+%J+An`XuC!yXUnjt3^|1iugtWp6^Q)e?wYF*s0XTwBdsc1$lH<6!oi3W zww(>sAujo{$@G{e#iQ2X`q2|R+832HfU|_G63D04FWRW{zZLU;s!ivAD}1g$M6F%L zWw<#1XYc3y-v=r2=hug6O~EWRs|*~xE1v!;Z2;NB!!(nl2pA6pg&Jeeh#)j^Mflpd zOV^kccj<jFu@^EgX+qh{J#Z!q1s*u`O;68bjqD^L9|rmjUN52>Ca@X6$HgMKDMM7j zdexkOA_dw9hW5c4`y+LtE4JkNwuUMt0Y9377OZ?mZ&gY)<n#fLb8DQK)g&#hHfERm zu_ees8!znC;QrusIzAdOKB8_N9}YeqU2AVw@kp1BkGDUNjUW2;7~X_-fKI?H*dJ+b zk5}V9=1GAplKcZbqQ?Y-i=mZvnmnHr!ekSqi{+irsDU|03^l4-_yj{Uz&zQPXF5^T zM-$mV`@ok3a<K3xCt2X!<Qb?`h@L~cp5%wGAXKP<GKk}G5o|n~p2SNAmGpwVcMP&X zkg8>sfw{9PQj78!M5IE?WYnl2@k<Sm$dn*Toq^l}*%p{>L9$&HQ5OV=pgf$|&Fs%% zQJV)~_ioN6`j|P0mc2i_t{4q=$$12F3=~R$bd!^i1^eK1u<$@<v|FlAOjn~>MkWq< zwijYOA6E8BE_Ro2Sd@r3l#+y=N)gB2LV(DAAnBv|Q@zCES>`MCd-$oKe48BDi~)d& zi6c*NqZo5$kDNU1)6IxiE`(|<#Rjyi#E^2N!&}OupnC_=qZwi2+$~H2(xaJ%Q68&? zBXN*I<E1jlY+_{!GpqCFF@09GQ6ABms^2OZxHyAtr4vk09iM$Ue>(-~xV*1zJSR9I zc7V5}&^cnmfB*npjy|2QPcqucM=kJpHES~;EG`6W-VTn<f|EU~=`0*0E)NAWVm?L* zY;`@E-Z01mfZh4i6?&&SjcKR~!m=oA`%3lV(a;o*hM1P{5=)Wyf&UN&pmiAZ@OT#v zZS6|&VWi2ZI9B4knVB9QpVHIGVcr;W&sA#37AN_2725l99XMC4v#qPYFt9a`gX?>{ zL8ar6N}1U;4rHw{7n3=RdFe}#+=X*oxH+4H7F1_r00|5b@l|;>+Q);0HF68YO{FeK zRWRc1Atq8ZPRtm}<C^#p?E=%zqX6O4Qmk0$PwUHKUV01=lG$1m{~?Idc&R_}&rh-1 zAwWqJBI95huVR*94@(~9@$k4hR}iz+WvQyLjIX%aWAM)8z^U>K`?xv7oU~QrEUH^p z(+#3nYVq)8Gf5}Zg3(D4nuFq`#())|cH*h_v9@1G%hrT^O<|Hg<2k3B!U0d(1vP;g zZ$FchrhvSjYjwoM*8b5jg=RqAG8jN9tG;0Z-fE^#s476ggldF2JXD#u!RHAiZSO8g zU`=&|=tUL~#13YZutU6!ZdRn%R9!(#7dN%Lt9bBFAp3-$=d}m47yJz%dj?Ek*KazM zI=7p4;A1@Mn{0i<pQluIy{yz4@Pc_BA=n09au!E6vyDjeZ0zmb2)()RT)_ZbL29;Z zbb4|^<S@|693|@n#6CZ48kwAgooL8cg`^6HWI+}@M~68yN3b?ITWk&}Xp13}(T|s= z8_H15tuHr=JVyEgk|y9R9IXQR5`K@nJn7=4GDERETL89LbiAX>`+IwmaWgtxDnJdH z0^Y(6yD@06@>-UOZ-dYS0i3!rIj&=hH7G#n?I~84S;mi7qb<zv<esn?)k&m+2I(}A zxdPSdImeaJ**I@l&ThpUQCv(8#S?r}V`Tu8+#uykjT^=WcTG;ajnacIj|1e;%F&IZ z!#4&E<L8$K3MZh}t9JYPiZ$$-#Hqw=hq*@}xLPe%lP1}uhVuu<up_K?CT>bgUD!Q2 zO<l62LpkO-g8b0Z^%b0SBmw<s4f`R%9m%}$b=T};t|3U3r0)XT!G{~g(d9t`)<`le zKnmhGGfZNN$@XHVQ=fm5hxV=lgBjrGh0FtF)LfAnC!(ceqbQrZkmAHGQeC9@QzzCF z_B67A8j+c(aHH_5NZu%^WPG043-xfV8{1D80cUt>g^uv-GA&^4W0E$@1eBav-G*5V zqp6u`9us8wH2Q30j%bb~P@O*$Bt}|HsmYPXgNSB&R{#yb5{&L534)1^!z!JZttWRp zONlCt0SuPopFo5I)_~QSD3`~g^_{&OK*@N+F;pdh-Z7qq=Cj}eT2q*x>+4^0-udy0 zbS%6A3ELDT<%e!}N1=V-YS%G}Efq7JSUmLbq{+YX`&^V?M`1MJ1{^#$7Bz4Rm7!e& zK{wQVl!jj!Cy)-Cgd^27J5x#mwu2|(stcr#Jhg0W6o(`8L<F=1mJ&wCXU8FelO;Xn z7MdK6Kx3oN4q;;l&Q=+OEqyG<psMcjs|MI3?nbmV<TP%52}iO{lYIAs)bC+P+SIge zB1A>XcFqN55k@nFNUK@K5P*F!Nj+_4a?DYYoAR(6giXO1X>^Dy+~vE0tsZZ^<y0(` zsl2kuU3@tPpKoe5l%S`kOH%{kVn8>@C`!dkJ#48MrE}w~2E$YWUZiWVbgo@<$;cFD z4Em@HB@&Q0GrLH3fUJQa8%N>pDgYhx5f8xYJSh^BgwN5<6_9FS;D$3L`?m{>_v|>= zlx6u3t8sY4(L$*XPM`PhYe0;Jz)9<GkeA$lqf2A1D&I?LWNd>1;wQugy+ygbpQC;K z=d3*!_vfu%69W}Jd!osa(vV)|#1JgrB)Ud~O?uEVq*)XTU{a&L90L^jfX)>{SSM^s z9#$kQvEoSbG2d@#CbD#Y1O^B3&?vO+X2+Y{mY&T$y;t?fyyM*B+`C~0)_wf^n;6>R zZrFWexqyv5BK+bpf<c~GxRElJF)uU}h6JT*XkxCFO7kLoGB+t7i33wWLC6U02k`Ja zMn{@l5wz>2kpR;|agyiLsiXwwGLMeO%p`$=$^Ia2K>WQWh&TLOKo0D>V&k;U7O@06 zT*}gtLia)H=p`j8T68%AaU_fb5vRGNxYAe-<$(}klBYsPfKxXBQEL!6TV-?x_-#j% z1MDvIm=p|KoP5JG69Knnt<R=(wCB8*3q}0MeinvC8f9vB2+N8D{%n@3lR#*{K$I-f z6+ImgijT|=cta&=jK_YEG(gui3H&77yb-&y`uf|DPP~*YfjEh?vB-3JkRh62O0wik zK8_@!pqMiHIRq>FR}|7X%6(<%k<R4ULva9pr0D_OahnleM~*JBN*c0qi<nZ@anY3# z`B^fqJo3w3nJ*{;Y;wF;<aQ-T;@%W4gbrH8=SsZD!IYr5RFPubX+zwIBZ@GHAp(g8 zrj!oB;N9?$g+Q+ea<djjlPFMWa*%IYD3OfJ>}kAI7bvP;S4<8|j19&ifzzD*(neF< zl^EmvrZFWmhy?tEwe)dz5Q4EEJ<yd7^s_^zC~P;N192()=9-&!m&V2#WkIi5XErxw zVrI`m5KA<PfQVr*E3U4>Q0@uzyujepD9+r&Nu@YZcygwB*J>>KDznhc`Qt`B=JU)N zgE|P#*SB>*Wn*Jc+rXB-oIGvl?dxtEklVH`9i6$J_MF3MVuilkKwoF>%C@e8uuyKG z6C1^#H;5f&ZJfCq+B&<K#>QMvuCKG*hr(d}n<d+dZ^Ly5u8-jQG_G&r`qHuMiobwg zgV(a+SMxfada`(|>*xfe3V>UnSA+`1`Lo01Nz2W~bPM)&lfwUpgo}v;+Wqd<0n)N5 zm4!Wx+<A$qINmrr4M@d<qA2`~DO$|QGyMZ_J~n~!MT$e^ixG${^g#McQr|NA&^2p0 zn|GblT&vs=0qLgGQC&KYhlrBoDBt{aoX@4YQAo`Z)WsAd=m=`1Se><+_5^sDu2G^U zLZB0)Ye2p%JdI^xEISIsQdS)_5-Eg`R8K??u@WFM@l*iLOQjTNh-U)}QlAuLBio}P zi_jL7|3ZY3Q069M=!3=cRZewO#ONg$5}q@jDGJQCxgCT}5)DFTgiCTv!U3jZVy8)R z>4^deOzd}dIgwjT4udCS`*4%Id?9?%E>muSg^Oje;3^8(jy*b23J1Bd(5N+OqZ$%y z#o5VHB1sdZZLlYy>3wf&_Sw|^#TJXhQ3HYmcQ0Bhn3yRq1uPYHt5ImT1dlql)<p^F zz7!)!#=3T8>eJ1>?x_%2RTok|6$+EGf)e*>g(Dy<sqp(HNii!DOV}>ddunVJeG(?7 z3Uv_B4g&$OOKo|)p8NRbpSzl3b9KVPiEUKf?L^~V6bm%4u}sN~la7|rPlnw9uS)DR z4vOURQU@ydVmNxJlVl)d7Kmqm!ki^CN8OVOuVZr9Bac?_*{N6EUSS*!1Hb{&A3%3@ z8jE-3y%WPbA)^)bmIdV<?S|gI?}ieXH3dPEC;*D4i~3fi{5Z-NC-L~pw$3+4&0^FX zS6S_ZdIqXLag`NzSbv30&U+3Bk=$yHDPMiO5Tv@Tbe=UqzT*Y+vZP($L6Xy0F;~V( z%9U2F^z)PPP&5-;`eHVuRR&~s^A%`mQ6hkpd=zp*EI_2{u#mZi44W%5<t(#w=9Uxo zmm%e<DoEp{fqX2XA2Y&H0fLKbKt;B+9<+n>hAt`EN|x`n(w+si2p7_@Fbx4hs-f_D zY?h)60nve)2<Q$`<B@$|)&jB^S5@|e`>d{i`P$KKRCqNJVNkc~bQm_X83>lJ?v*TS zsfG->S0Td%>S-M!Vp^~YRPCiYE%qm5%DG}S9j_UzOBR7jFnHudLttS!EkqRy^dw{$ z(19E;76zxM2lqC~h8S4%5ep8%s(GwE*xtLPXTXUz98dSn&~SI{(tlcao8ksk1k$1X zdM2Y4%_}@#k5RT`b_}Y4H_bv!Kw~Qe@ziRea)*QZa<g(Iqzg!hgG=GzsKI;`&J{@C zFLny&%DRDR(i(C-0)sW^@|eb;nh%HpNdiSl><z_;rpYQCt9p5DhB!IxZ;`Xh_}Km% z)!+I&o?0Kk9v5Ce>nd{pxO)(5jCiJg-_%pKrF0r3GX9aaY8o5TRmBoP6%ZB0YWN0q zM@WE4O756Mw~eU20|A0s$>`fy$oI;LzS-ip`Nkl!4YLs3o`0mP*ovzK7t7cO`yW_M z6(l}idLXVqO@cx!PEA72&h%vZ5Ys^yQ2BI+6O*U+PKi>P3=&Ct%f#;KK~r0ES3&bC zXSwDkGQwXKgf2ljXsonjh7cYaJ~Jh<s`Kp$VcqyUa9nqBSzUM0;X2~Fi-&RDa(s93 z5d4F<4&bV&mqzsewE>0nkH<(2Qg>dMAo)~j<7p0Y;xJH<Ywy^UYlQfxu`SoXdd=F# zjqTly{hQjbEU_;24KM5)1)(x(`um|K)0y7{qb~hh(9Heb=1NCyL)(@v7-GTqzTVz} z{=$Y%nt5p(*aT}v*l7SL1#?9y&AGTx&Na`Lr<*Ai1~P;3sgmg8LtHQkwLV00n-;87 zcyX>fKd_bbJlEo(tB2hbwkd(yZa6F)$33r(<!qSwiJqbIV2B&Y=t6-USMViCj=Cnd zp>1<6;XzcGN3j@FRH>dt#?~A}Rbxt1lR%nrX9+8N5r>0uC1A*O>!+Vx#0a{wq6*HB zCu~!clhj0B0}(e0*R|fDANDZJ0;GYIgz!<eheD1Jtr#k;UNux&gX^4CO-)S~jSa0{ zH8!+{_pS@t#Yn&pD$!L>X{g0zr-V?pOsvNd)|k>Lw7+{ikpY!eNn~ef_(o~?sId_$ z5rDy!c$GLR2upA-ikY<|2<)_k5+$U#A5@-7p|T)l^tcdzXR{~c{&N&yA@cY*^acbC z$qO%2#zq04bS%K(sA>Jm@kshgg}jJJNQ0Hr)ec0QCT4M~66NgS&_Y`ZPfe<U<)%6y z3N*K_VdPa;0pvi&LI<i+YtyS7ke1}OCM2ll=%`&YGdVn|>!D#Avo6>%<mnj;AGLMm zu{7dqC~}pcUo?(!XcE+OXA9N^PP(=@SyGi@kx@s0Js23Wz9Kz=c50i5P$3)eFe*SL zwn4u@p>k^*kBlO+ltd2A1=L!)#;U*@z@>ThjZv1cguW;gr*r87g+kY|0My-HgljRb zCAjvV*j=1@W_NKr{0*X*&DA8Oq?3sNoiwj?jVKGp6-hMW+n_q-owGAVY~@Hu*f^+1 z#e#YBRN%(=o5o6JBAs!9M<EiyC<5sx)FSAP8VZzgu7=}xLO32*2Sk0SHsjnirRhls zqNkvvBfGabK1I<&+axFjaKJnvlB`1-BYCT<{+{$eyB=!jF77`a_<p7Ot!H!>TW}q~ zyQs0d*t#0`E%@$#D7&l%7O>6%no;Qdgw{=VGZ2U-t2u-?*hUj<q5<e#K%a8xSMvmY zCX0+SR*r!p4WqNkHxMZJWtuo7+Lk&~3~K8n3t<>S$P{CFotg>lD^0W(^b+XX0X*zG z2lv?D)(W5WZ!5m#aZmbp?0MPrui;EIn86`X=n3%2ra5P^^F<X+c*lY7ae*{oz%JN( zMK%GBm?@7I1P{m%gf1Kf?};cxWRr2;2;3}zWBx5hAI#h8Fph@C&Ppu9$4j}oXSu+= zS)N_ObYvmpNbx)Y6C%-*HDYWiDFN@0Nz#O|28uygo*^|2j8DaNyorO6qG5<~RKylO zxra;!(rqNcZ<=%RU8tWb;>l{07*1${FoJ8p97MH&fS)iG-r>tYM|WUeT@L!Xr@OfC zQouo62l4(;7v><|Z*RriYeyKoYgvzbJoo4Nt^|py4cCQ*BCG-7p?_1Z!})LV^E;lu zt@y1|w-xWh^$@PG2nj9#J)ueq*p#;e_ArGk;4mP<)KL%vqCiiDea{ftUB5-Q%f-{s zoi#h*QxRJXU`7;pg4MPa=uGxNz%Uf>(N(|=u*pywnS`1%w)PR_fJUJ30g$mN8rX>r z#vfENXQxPta&5hRa(a4JnW|!mz?3gJh)K=|kTJCqLe+q?lF~{WaF0Y*q5FXb*#B{G z54%xV;%9{|nmV`88wmvRNyTq5oz&vEn4U?qCw(P~PkvROXkFK3f}u(@8?19Pyi!}b z?*fy<lmb*rlW+)#na(GS2MCG{M;TG(jWbxDSe+Fy$;;!|Xm)1DS`8_2bk{}GLMg{2 zJ=S?4X;o3MuD`7(>dZ%N#Uij9<kKKPF}pGHjH>I*SJW4wwVXl0Co#xC?r?6@AU8R3 z+m*WIfSrKorzz^!^|Xl+fFM}8DJYyYIVj>`$ItE<MJ2pcKn|jKMZ<3dXCaR#XfT0< z(t~O%hZCSUSxCSvsZXJNgqh`-QUPeyJT*YbAS6I3y#fymWk4_ZH5r;s?4)nVJe8(s zz<C;aeB{YheIrhC6d$LdiC3OcM$|r}l@2|#T@6Ai$8a)7;@xx*uTe#d6D27ZmRFMf zc0L5*4X3c@LsIjDj6aCmy;YGCB!$I{A{qxYB<BvZi&5Lm<kT3td5m*WwTHCb=LeAr zw?f*j5^&iDU2tA4%rk&vutEm?M+NCwO&7F>LPqG0Qx!DQox~h4lC#t$X}fe-)C((* z7|XD9QJw^ZGJ^rWU@TJ-S8IZXhV682X;j72gh~y;=MHFwkNK4%8gvk>zNV#VO-ngy zjOx#6X*vgYygjdJbqm)}IR!;V$e}$1b{*EI!sXqjrLL>DH}5vJ^>jc?v^f{`5480S z1kWA4J%JpAFrNIP!ctW`MLB>`D9NY3VHsLsEzTGwTRBMTYrIWrSYdr$_(&O4eqL7& zS59lUeimbj$cAu5CP@mvXx#(?I5#>z1(WmwfUMYJfXMH7gW}f~o1Q^`aDGbS7DsbI z2gS3%W+cFrP86~w1O+IfeG3p0`}@GI?&7;~MYG+-eel1E3-WK}ZB-YLj6nd>w0C_w z+Ag4&-sVV5b`%II*GGH^o~~*GaYQ+7<vS6hR=y<mEnqlo-jWYK^>6Lx2D;$QHMzcC zs^x6y>j~aUUeL?w$+ZtuzHV!8&*jMngulC2Y%4y1>k(W}YS>mh4c8^OdU2I-{Ryt^ zW1t0Z03CP@+HNa&uRQK|C=YgIC)#oZS08A`UVRs)zs2iJ4)k|&t1dnN$~1}arn3i{ zMV%cmBC~NzH%Lhdme2KdclP&p_VyI8XRs4=B_ntCaLZs<ZXj2XJv@9z<)d6jA>Wrn z%{w{=5XEQI$)HRzjy;g;>q)ej5Sgh!lc}$7OWs2D^n#eh@`~n|@9Q1tZSU=hb)1-G zJXKL3WZb*4FV~L)3Gt<O%Rr%b1A3;vcS~P8#J7Ce*1xr<J#3cv{=}8riYMb*j_Z6} zUAVU6+Joy=xZZ~A0IoZ6eHGWwa4kA(TM=Zhq(QO#6i5S`<C(-OLZ*17YFZgPRtI4- zQI&gJUj~^wt|?rtFGru^I*9x2@LTwd-w`|?c`5iw_y#8vCRXuCoF_=D<~Yx0wU#N$ zTBT|K1b&TN7r8arA%-O_6OUxp$nWl!^(!Dvp_5cM!P~f;nIx2kc@TV>90QXE3`DUo zAS8Jtxt}SGa~a3c$RmULgh~)#iJC*rq^@e~>*?&-D76H%W8+tBFCr{mA-eBm5rAL) zdf2*HQWh}5F=wsNhl?~8jNmruyUcdf6))A*rwW{`@%Zfg>NuMfznWz-87-l!Uqp?K zP@(-mIZ(FZ)0Fj7-5hOu_hzB*tQ|<zXD)@!KOUvOEqKPt88i#g#9^|aaN}f?+~QY$ zr3VG5d`0SuqB7VKf{@#0O1Kxw@S!wb&|SiVYLhCm6^Z+XDj8wizp<?*@c1YRaAeZ= zvGk0cI_%}Vpjt3MtZ79nN7Uy00sxDyvgpi?4Yp%y1W|lI`|H9!`wr8phQ?R07c5<W zzh>?W1-$t>%zs>m=)V!`ZMJsK@u;G%vMreVNSM~BU<s-ko-^JBaX5$JZrXOiTaX3V z<N}etPz%ltU^4}TCa|~TEg(wMTWp|q0SnSlI0+@iq@W35E(Y{EiD{AB$C<OkQ$<iK zfek)@Xg`1|mcgL~g=T~7#amE15eYgL8^r^SIinVucEWNf*(pdIA#>I>c%R`aF*qcH z2xB0Xhc%1}64+cBWu=X?!sL+ls(u$$j3OjX&?76=+?PUYfAelk8NNvyWDttx*yOIo zyQwf#qW0P(Huc|xBnC%nSaTzUss3>+&SRb}4c}^wC$Ed5!%6`f)=$P8FVzSH>d>;K zk&RSHZxhF~Ree85-I^*xsy&lLk2~FWpmEjS3B}B)l@8EU_j(NzwnB}#1dX;PI0!5x zdpNZ;2}omn(<9Zl5uw_G@(seL^HTW$B!z+wt1QPznbEj}6|gtvH3)6~aX9)J2pSx6 zE4K95kek9*ShO%~-nvL8)ksOFk7Gk?T9A_&5}xJ_cIbNk2f#|J4n+s3g^UiX^$&?l z*ntYvMhq+g6*FR_Ew+`2>Y0mZDPd+}DOFQOp=IuYq1YwXzA#C-iyj8CCrYpwhjWd< zEf@*FHBBJnVFGZdK2w;hHBJ&_AIJO0J^V~^JFUKaTGFlD8HuKZVt-h-7!#p$v0{mB z+}E~j<I5G-wX8_@N8D@He(4swgxOJ{mA#*2Ca+n}xG!cWpahHkGb2%)0Qx%!K&nej zc*)9CDsJji+@mb##_AsSygE#b*$~2R2CGG3gcj`Dbt=;gnGXXZ4eXe(pV}cTsCHja zL~r_O^o9INp;X-J4o`)#p|dR?mMy7!SmP8nF_X0jz|a`Nz|NwL6-Oa-ku5a#B{b73 zlRy-)AWX)X0JS7i_&f_J7#-{B=~}s@(m@#oo#><id0?u+OkTx$aYdne6V@$=2P~;3 z*d!M4Qd|Z0b9P=}AjbBxtbX*63dB&AHBhue(uP4klDx;_m}Y71)-fD;H9J)Rb-<<h zG!0M?JXeAt2@Xo&lgUZQzsI2))OcxN`fTMKDBk+O4}?TzxzcW&@5Oog>SEEcyQ&R* zW6#FI`nG}gP2k!XX~X1nAMM6FZ(kh)7{tN=RE%e4sI~2|J9mIvc45YtULTb}f;I*m zweAoBpo~i_h+!%$m+FJdVF0W|=#XWa_|cjYwGF6hJ_W@CwSSK>wF72Vus_AdbkH9Z zP_YZ^VZzO?1o#mtOiIlrV7$4~(<ZG@7SG5ZYg{;0fF;n8t7IJkyrhuo+ZgU;q{G#0 zrlR>$@)?uXVy{O=aYj6_D3Aj&`xN%aP#zxwU4*?W9tH+&2J4U*x{}i>?1=O-Ee@I_ znie1Hbzllf(0Oy%m?~Kcm*~58MlW(hH`Cr*G4BnU&A~wg<0mL9`w0nB0Hz#6(k=lq z&5m0Y!&)+onbkhNFRI5B%aIhol9M@uJ`i)aDWHha4Fk5$&&L|`HsQ-M%2Ejr{eTu4 z%)mWy5{L_zC&2U(0Lw976q?6arjV392J9Un7Rqi%D5`*2;UE*}XY;Hw`^@=S0WT{y z6!-$husWV0TK1$ecB06F@{9u|gU9cbpe#JQj&U5@xPa3rL8NMx5ydTkJivW-YTmDO z%khGS;~adC2V@t$+9!|uLPW8tsQi>p%oEr=Nt1jgi<bFo{S0JQp90?srJt4$L9X=< ztZ9F+yLcNyx4g5vco@$uxVB!BUYEASgv?9>73d`hBjC1w4RTLhx8Ra+W;KP{8DgTu zlYm^F1~CheE~1Eds{=CG6szGthtewqErh?O0L(bsWbsS{Xi}8acV!CPob+_2n5{Y~ z-BVk3JPR&9Uj++BgE-GrHg5C85}tTN3AEowtI|NOw<vRq;Y0u;5+Ks$INvgoXduq_ z(4M_B2{zh?$?1C=lAPyi0YG#@>O~&8@0*ZU^7=md1lQDmbr+=#BrfNXtZnF4LRBOM zQNJPyvVs<#paqJ9(-z$Rk~Vo!CgYrFYpNk|K^F1)KUp`e!<N2I*J}IzXw4DGU3N;; z(A?s_OD-J&(0LPuNjkF=qk9~Yl3JkE4-_G8!3RuRs)Rr;0qsz)DLOGpRl_|z63xxV z+w9A*&po4>oEVG1P}8ur$z(-b#<_3t{8A5c5KVm%W3194o;BR^a+)d?pJIzQ>(&pJ zv1=baTzh1xegDcjNsg#bx-2S5sqDonJ6#xSs1wbHr-p$af#?&ptS*|bspiDqoqM4p zg=;%5J(cKUV-iacY;eIX;XpIz(89)34Eqhbc$saSc;lsF8J?iKkhTP<f}{#w*gc3c z{{k|*p98)TpU`3nWdO9!Sh1j`wmWfL3={>%3X?kuP*npTr93&za$*OLt$k_G8WNy| z%o|H~FG$`IEU#lpT7=Uhl*|u7yAIh~7-Y?oa|=wqx2v<g6Lk5gx0O9Qwd-8#2-DhL zNd5u<tjm}+cry<9Xat&EP$0nImZZHse*l+MjtuIvW3b?Co)vtCb$-m6aoD`1)I&xm z2QIf<PzRa!*;_$^OwO;UR_c=&{)xD0Rua!F{Q15RVad;zN+u;gpD;i**FjdY?B{2c zT_8-mtYj$Q^uSH0oeM?nHHQ9zV5t!usUabj51fOh9M(~2A_1+pn|Q;A)+vkb(!!__ z5!)oe)weF{r(sQSL+8~rEK=yo^=us2MB@;rnaZ(c4B%Ya0hq}XHO3|<Mox2Llmu(& za|Q=6LD`_)k9DM(y{9>uXBg6%Q!E}B;Uu#Hq^Fn$g#b2~6LCnJ5mrU)4_Q{%Q*6N% z;c|<6uurC^DB^N2&tPA}$|#d9&cYNSk3r)`Akn9QY9)$1xi_XcvwLzOb1NaMbxt=- zj*+w7QI5`pMnhjO*lTnLI-`H{N@myM;sElr9EIfO5wy_Y^f<Qo13KV97%U7>(GCZ( z`8N|}bH}mscNB{vIPszkcDnJ>M5F?uzdvRh)AFShnICXrN||tYd4iG~MUg$wAI@wQ zWsQ{FDXA)Xd}?$Mrvbzc&cJjv*F6Ty4QJA{tELPVKZ&v`YFP#2VH$cRLac-+QAi_{ zyxkW?3uhmI703X_U-eOPMFVpm0s0yotnfPXcC|^f{6L7iUMi|pp>#DVu>nj+bd+A- z^Dk-(YC|X?5;~94;#`w#FiwRofP$kODug*HvJu}p1?tXB?$}Wn_w)ny;-Rr?e#J2? zwZ9q{ni&FiOWwlYU6-l<$Yt)-p5nph^%M_0AM*?TAzb@U>nXn6U%Wqni~f9<#aW1N zX)!GCElzlE@BUx;|J!-<$U}^(CTd@;a6}X<7KCRI2m8Rms0f=>U%p-z4Pi`=C_5p_ zajfIaPKOnQ>Aem*w<9$9N?eEYtoSY-x0!(QOm~TBVM$Qt26LA9KcgC1+=~KGr=nzn zWw5aVi{rPMi6UGk{Iz92*tya5zu*K25A8|6+gCaA3H%MU&xJ++Hpuwi;S<Bowqfj{ z0o1`SPNU>sa*4#GbwGrWR-2%bN20(YDOXm&p~^z9DF~;+iR8^y>~@g(ucxyBGx=H> zClZ%}CDPx4mLA#PKnXy84eqhOA;LR;-M_l0IJF8F_BZr&XY==m&e8b!KQKN(Ja{G8 z%ZjBJ**%!*zbaiA6)>1Cj0b3X*aI>E^(ZTaaTY{(J`fR9#gifsP)4ypAxy)DAKrnc zfV>Ql+w3W$4Q@HFr`UP{+7JGIT<j08oI@l4Jw~sHK#p$>ScK^roYzL(9f)ROoE7K* zQs0&7@fv4Pq5ETrd0il&FeXak0oWAsnQU75k4YN^E|2a}^2B5UUOws(zpmI+>0m6V z|Kj@iv;y@T8Q0oSVjfW1)xry%CfX7r+-*={(c{tO$Q*P5eWOC-^rEyod@*ntE_Vs~ z9M>P#-hS*_T@uX?$un$l*bu^QCv<G^vvY89z^%g(vaYiS+H~zaNmg}hO?FhH{WVEg z0AtF@9uRi0taTbpg1vDJDSZ`>MlPeFkT7^)L~xP<zj?|yOrt6SXlEQ5s40PQwwYuv z;?K;UBu6SShVn%ZzOCbZ)_ba>XT2YW(3>J;!g5_R0#Pc(8XiIxHF7CW@4__G?+ijr zgl)GHah+t9dcy|+HYpg6)Mar<=4%=a1PBPtBFj^a<HbfE_w11ZCt!j%)`_u5X!*ki zjOHA+CO2)hYZ0ROeUk=EUbum{10;!J+=p=-Ruw0yfYBdMx(nJZ+7J$8KMrz2Xen^K zwur-j<b&Vo<)4g(wB3A8*M+KM>-#uz_Ue&NB&R?kE~9oxT)?pS=}#bo66bP;Gfa^$ zMg}?VC5?R1W6K&$H~S0i*JyJk`6)+)&JQ}-r`TwX(TEX<Gq;20o;yC<*LKp)6*rx0 zNMj%?;U8p+lpo1@P)%^Q5Zj(R#H9~>kDzs_fFUO~roTYL5et1j*s6%<TT+;S!-!@l zAdiExOD5!X&Qg|fhjk-S%ZI2XU3wo%t6LQ(Y+WsONK#ej5r#)=a&O{vItJI4(J<hq zVZww53Su*)TJ<RGERCU`wf(FM!EjMq4}b+0j4>k`k|UbVl>L_DSivW?jNP}gyS-8i z*7wKbN>8@7)=ZC#uP<vwTh<(Z9D>*jk;DrIEeBm=Rm>1Z0at}_=jgwA^ReCzlMmAl z%Ej)+Op<M-DUdl=c!4_;Bb88gj`AC%s)!;rN!L3lo3vRH(+*3hQL7NFXAC})0#&br z%xX4-0xK&<1{|yURGm+{Gc7_zV=SP2NzAOqXd6>V$ado%J{*_~)%5Y=eB}v2n*dx@ zIW&M?nVfc7Ra>U(ST)pRAU#h%EM%h0lXrD}*09X!=CP*ypK6~VJ!znM%4kzgnq|JR zDQ#jg!r`CQmg#=5VpWW_Ir>mnOVz#x#FTPmH1=msQ12J(so4}(?euoSAfQD;Tg&1Y z7yV!vJf(pRN;G?%VqZTtpoxtQl3LuefGP%mRneTD2H6~*`l!@zBcYnd6`meWb5JQ3 zQ?=Xu=|R;??wWv{YNl)OK1I}4kNLKfsf?8N1eawj3Pk>!b9ci~$VazfPfiZ<zZ=0X zUDi|Fp2yV-erbJA@o*3Lr&e4wepqwIG9j3C+K`z?%9G-8YUn}R+Spz(;50U5diT^X zgtU|VIL1RD2ST}0Ww=&wH2-z2FL?6@*lsw`zpY7^#bW`1YEq>WuBzoNH>v#OVthF~ zt@4*V-Z5Yc{8n6)zx>Pf+42|cR+%o0pjJYauz{p}?bu+|lj|z<Z`v}@L7V$E$gH$1 zV4-bB=6h^NqyWfW=^-U)E&pI!AM}dTVIV!PrgQqe#<V8A0v564++WO8@L00lnX0ON zeO?2M6GcLBFUaf^R&`~?)r2~+`u{A>HRlRG_S{jcsa+T*SqM<Q7i`z|N+Z&S_JFw* z4-`<gASO5{sDxCGg-Er+;K1Y{Os8LOl{L~8^~DttcQ=59-h;y~W~msh(}xUWU`{1j zTg29MGy)dM&W#|FT7AAA(X0!kSjJgMY8*?bj_6o|(xloyI&Bi7*-|{CmP?m(cXaks zbkktLS7H;osXU|cxx7o|yr`jNPyHTl^w>SDYUX|)ovn?<>87IlSQbYaHW@#GwM$1O zW~k~)aV1CJtDydqr4H30!zgHw!GW?tfFf4RF*I<#Nh)7pNy`(akV^%cgT|(LQ13Qb zQ~jOvh$<-Pvr3?40cW(h2ODpxyMQSV1K#-AeuGrOx!!`YV++!<)Jg*ve#O&Q(ahzN zACg*t@6&}M=7ZT1W)zM~sI$s;Xj#`GpXFDEN=a*0zd>2$>;YoEK2eJ4n}mv|&8r6P zT$$#3oFI$$tlI`)7uiz>tS-v!gBmjxkwYVCxJc)u7j9snbN4*-5w!MZNtg3E?l$JU zDjMCv{rIa8QPfCb@n>RIPV&JFU;{Np8)oISAkDzT2HJ*0%S)ue8SYEeqsUp{k|?=b zHr#-n*ZHhNXmE&|rZB}CM5%CPl<#cctPqEMPZE~GAq$&_s<VdSJYXBOOI9%SNhnpT zS<T*!(Xc2oWXP(E<>{b{A}?eVh4&aCp_!ndi_sQcQnh#s8JxGH^9Q7hy}IZdImbLT z2LJ#l5{oBDztB&FQc0iMys-Se0Uidr7Qk(r$sWblDaV^eP&FvE@rFFu_QYZsA?W`2 zP<FIwpVdqB1H#zpfCgj3=Cm@Y%0>uT6+iMc)!xmVU96_<qT^UsIUuJlONKEA6=#{o zeyo`$0al;|4HDj@aRJ-TqnA10i|8`O?HkT(Z6^61?q~^vSohdUw7Wu<);I~{()#kD z7qGC9lqq>eRr#R%^$<X}ion?D5GWxmz(MiG3w7dR5;iLa0s2)8!aV)_6Oi2$b<wIu zGIV!~3JQ<KlcB@uHVRxvsDeR(evaEQoM1Ky0U|gL!^+QrHxSzIR{}`$>DtssI!!bR z!;y%djVTRNL>BZeb6Hn_Xb=J6Fsf|a(!Orcsw-)55<hsTF0>uIGA=F6!GtGDP+uGe zz^U~;(agYh;Gq3|{Q}A{?g#7dWYA*&BFo_87}@`Lw)Q#qHqhp`f#!t29T)u{<GBwb z04H^#xdarX+9DkM{UFt5{p?6u%Vr=<;^=omu2oS7Sp3m3kVt|Jp~u0rWf+?Icyu>0 zp7xL6G)2ADZ_yfPwiw63Zlu6su^@$l_>sWP2UIlj>ZF{~pkkm02&h141}F#QB9KSd zYMFC^il0nbYy`^5(GAg=@&aO5$S>nuVVwiPAZijtzb5~HojKF9IHQhsM3`P$y-?ox zX^xd~av1Rxn^VhJmeDJ>x?RO85KvK-D<WeGbm+&dY@Fc~72qh7TE=W@ybYVuWLyX- zApfC#WvuxvJX9Ug`uLAA4H5*<PjR)i8w8v|ly+kYMzEW)-eDAzrxY+-$Y;q!&{qX- zFpn@t=q%PDZfjFCVl1H&HCIe>PkW?s#KAkT9$N;_`JSHQhi*)GsY5TsyS+WdWp9SR z2mWqcZwH_HCiuHB7jSLA9egU{9>lc|7uv2`zlD=9<A=r3B8>Eab=G#2=eU`(xw1cq zkG0NH#H056N@UUafuk?%274E`riKbeq=XO|wc)!a+^DHYf8rrdc9l>Db67PXah_f6 zTmuekD*>~>@SrjXnl@>J3ZnWF$YOjLu~G<lBNO?5ux$jA+8)&c4trv|Obkv;P7SFg zA;2G$d1?rXrqqdVI1@+;HkNe31-upk0-A8w>H=}wdfn~X=W(PQOeUwH$n^56d1E`F zws&SUy%Ptt?Su%!tJ;y`z`OW4W5}dl)jgx`*i-zQMavfbeu=+d{LH#zIEq<*OP19g zqfOSVUmXyv*lM5LR$P3_i4Q*ufufs|@t+kZd{>8jTK$Vfr=0M}<BpF!w<G>O<i7~_ z4Y+T`y-#vpug;hG@D$=NJMm$u3t}w}?vD@dPYCW$^mX5kxV18>yVAE00)**@;n@cJ z!WY4P-6?g)UV`VBvwWu<|L9JBn<Kv<s@&EE<z2LF$x-Xy%5b%w|Je9og&HS!H0nrq zqmw!x98c)RK3wj!*@2T&otT0X^<IG65|zHkfwm`y4XHXLKtdsoAXXNWN9_B91xKh^ zf+_;l2b!8z7;)m=3ro%vv_&=FznLkG07)kqTA1B9drEDfLn#cv22>~*uW<>9ldNER zT8@7RGgj20XJ?8nbK)~0?<q9}#`kCjB-~B2Jjqdy#EXliF`>&aJUu!Enm64OQ=b7| z`806HA;{^z3><;$&?liwjO)OE0Ds`e=X9*($(NtUMkK9owGCUOsu~z(-$0)JYKOlM z*GzET;_quzP+JOnaHSit#Ot-y;`R}do?1$-2m(3Gcp3a0&k-j0=bmpX^xW;0)Licl zezm9AimT;oz_VWm-o+K&jkfy^+U$GUZhWqcXU_}6Q=nwkvOz5FTL_Ld%qO;S)j+Pj zA_7^CRdDXcGbKIlOU^`EF}@U)F)fHOhD5Qf%fauXFHzst!>B*5!!z58`|zB<7Z?2f zxDMj|p?lCy2y6AP5Nke8c`jKVwLj6E+_G-%o_~$C9^xCW^sD@&LLQn~bt&Ek8n_@~ z<`sfyyH&PmtNr#^TAB__`>#WsbdW-U!lMzxK>R1N8H#k{#IwSC3-J{ZWz2+(LoHf# zYDb}h6kQ-KT2T{`PlxnqjvF34o$8WYM9u-3Q>tFZM^%Z`65<VmVR`&i!H<l>;;qsv z0=fPu-YDoa9(WX!vB*DNX5DRPE3L8N{Z#)&gE*031OvlM@|vP8(oWcUN8`@;`DaUp zLdxmM5llhwn&4=r*i32!m7IM?yuDZxY^o>|$WsUdQ!-=>Nhai*PK?BW4vg82xJiMu zsyhoi=>#Sx{3pwtZijF^!T_bOCkM4P49L&oMOuA%9dEv%c}#q1ryVAK;gW$a9yIV) zjI^!1NEmE69{ZvwHL(oHRFz8<`NWQi6`^8^RMaB~AD4|{84L*83`zPmkv#JgxcJJ? z<cBR!k&+R0)HFwB?FW_sy$4GY73H#&(xrz?!M1~-kT8V-+2yF%q6tMkD#y%D!M2T{ z%~i=w4)P+s06BR0(U6~XyN<=uo}Gg@wFD#0Ge%{QO9hxk#l|6psyIC>ZbjRe^7a4j zDZcr)dcE~GJ;jx{evfy)8IuSq3+dthQmZ7#9eHQ0lcuaURB`ncgHtC2U~!BEK&w0k zT=N6qpGSL&#TRWW9{CaIiXQ^!;CcUjz{~h{@DbeOI)rZrapmt<J?E?qF9aD$Wkr5$ zqcRg=ECesd%q-5|i5DuudtxyBt`*tgwg?-?W!Zwr8dM&&>XI@=4HQUX9S#!;>kncf zOu_`C8d}>}u;Za_ahj%5AErb(Ym%^-X~p;h+_&XEF=#SVqFE0sn?lMOCBxvYUf`=} zP0T_|3siZMy&SmgE6b%+ojIy8N~$+#pCpo%Ioi^Lon~y3#!CrkcsM!sP^7a)&w6V| zSWCk>9C0~1bVpnolv&cQjAPm;f-4AhTe%h2>Jp@pv7CZc&!FBF<-(^Zqx4t<rS&)M zTkVpIqw3-5r4w;gAs4VRnN_bKognLYj6@Cn?b7e<;;(dJ1!QA*Fmaa$DX4HH-Kds# zzi(<_$KBYK9v9D=)pt=`R-U~+7xhFjA@|kD3iLc_hhrsOj<9B4+Nxb+^dp1I;GhnG z-NT%N-4|-THyShizF@iyk(36AMTl{`#K?V4S)#@cDK_hec8s42DnfvoCnY#plFli+ z6rq<CO9{QO9psHKb?x>ZL*Ag642>l@>6)7CAh9({$h5HrGd4I3OawzZK*ZpveFB&~ z$Q*zVa}YZOL2*H`etfXJbHQ|^wMPKkGMXlnzydtPQbJO88^TRdyI*(-%;f=8`mW?! z1Pe=S1<-;<O4@U%1Uin&_mx57em6=&lJ;0zh`*#9GG~)VD;Ca?oi6QCEf+v;He~WZ z_~C~&7Gfg8wu%%gpd>>HUri){DHG3xvnvZ9jE<~tapysTFgP+YR+<jGv>H~E7*ljW z5-j_>sCb2>juIPHHDX#;ZCT;S3^7{7(U!~%{UkZ_#`*yrh^MLy`I7N~CE^^aYhT^U z<RQ@)I=l-8JSvLCd9{50E{ey@6qNjk#7H0{N!e738btho8NZVJ!H&UQU?oULKqn>s z!aiX#B~G@uMkt2}4*m#Sv|)A(+FGK!XwZNY1Ns#d(9J{_b9-ToCA3iSqYdqVG~puf zf@sKq<YIdo9I(l+yICrrVCB$W9!#4!g#p<u&J|ZyBuqPxX8<uwZmU^;TotKVObO#@ zC0ZYbt3$GjbvyFR-r};OSkr<3`d1|K;KOyj#e>K777v`#Tg)E=E&F?1i+hW=;JF3i zBV4zf(5v=|k_I)V&p`&HG9iMbOp3O~-qSRx-fV)U=Hf)TS<mC+Ehdgiu1M1286X|c zVgnB&PHdVr$O@*cKd+Q^49ca%3_!3Z?QAzbhbll&YWIKgEm@I<@<pY{jOl7|Sl2A+ z7uq>C-2^=Z>NBy-ShR#fA1R;MqK`kNT68fwdir74Kn+e{RfcQlZi`GjeULP)9oPsQ z8~c{`77stWw>TB`7LUMx%Aap5MyK``w?7|!_k!NyAzTbsxevXvd>LgUw&V&bU_BM- zv9%e$h43X-#%5bPj&D-kxT;3mE=ZP0OCu~#>k8EUG>qx`-r_#`f3dBo7FCjOE%>${ z-&Wz<5!~nbd?wlk7t`R+R$)cA*xQ@p`^@?V8VMKzw(B(gHc*}I>I+n)y=K2R@k_9( z;$>M|tJvV8dZ?9Kn=@xuI&+ph{fo}Rc!2)wb$Fd`z&-Xi??>A$;q%#eW;^10^r{3V zgefS^iABFypC#6{kVQezPZPs??WkyI1q+FVSDa{OUc;}eh7l-}06kVC0&VdYXNMJi zX4X5^Kf^GgISUiwswGWO!P5uzz#k&uBIhDdF^o?`NO0q>afiIi)NcVVp2LX{9XS30 z=3aPM1S)TDHsQ<-*nr`tEvP%H<uXYWVUQHI5e;H1m}N82wy_Yz@Qs*SU$eEy*CcC^ zhhMv`xWv}@a38ik?^E%EwYtTtleNGl7o7NT9%1+Y<+kE+xaS&S3+|5}*(7V92azAs z%KFtzKgeszDNBw%9g!oH@3<YwdSO<2mG8KAc+9_C6x>&atMzQ_pV8|o)<2(~)IW?H zulJ(<;rm+mbwN6dg8N$GE8nNqAA|T@YmN|jJIb+Sdv=@Ep@g=c8>U<9eHg~>>z<OV znJ&6u$x){F5b|8?@9&<c9qNKL*F`YuXysWP+*@8*e$DZNF~ha;?HOY_OefWTL0Q5u zbKU>Z@q<1K`+srpe#z64Hm)p-fNzCAs^CJyyB-jUYL}QbumB36@QNf^8pn7Trs*Ys ztSWt4fviYh600nje<rIp-{~${uvGF@JS3!7yw;)RY*dgAdFh3UUs{ph;foc&EW4<; zNPUc{b-l$17xByMZ`oG#QI+!Z<=f6U_|Ev-5s&!kAmUWU{}ST+C@GKSY|?~b+-P<T z8pxotydtnH&kAmk^^}_RoEn?O5d|VOC3j2qZfF)XH>|GUTt^--b<P@Y+oeKFWdP!r zObnIXzu^6+VVe*}s=yUt-|OI%Wb2lXV57!JQ&MoKz(b`DyK#V}l+qRAHmeTfj0vPi zt_z~t!uSx-)#{cOXx>#NDx8^cz)n}Txq3T33Y~GWFgL{AB8`{o8Ifeq*w~ti>>QBq z!ag;rrE)u;jkMqFG>)RZc6zk9Egmfku7kyAJ>>jgJ(eu$^Xba*DNU|p7S<+t?p^u= zXjSyE9oFe}F%p#r(jsv}SVNnc#1Wy~BSE`xJoT@HaYNk*o`mY_VXLyz=R&_q_4rz> zx?uwaY`)=C#fopP<_9-g<gSSzJoTe2ziZiSNZi}@$x0;^xhggEC#f92y1-)d8RA@? zuUY+;qa3FfLZL&196|Wxy{%MW446LK0M3yvwJUsr;ykp)NXiBS6k)T*C?p+vhynMp z>5!+fg(NN0eXB^T)9)V&!zM?XYpUFVGIzN0)Zhf<DjdueKNHkqtb^AnL#<~|gndEj zI@rE2d@SH&v-bm1AL2JwPfTFgSAt%e7WU8HC`Hy+k@zH$`Dklps$$4U0Q&xnSe7BN zVOITVMA|wwa+VGtiBpSJf6D-S34i$%U9a#rKhj%#A^>nS3?6fv!tYPNN#U>ZlmGWJ z_xocTz=d80s`J>fWB0WA<f=TB-0KN;>u&V*RD5EaU_y#IW$Hax!-_MJVaiWbq0pGp zISn{yYZvy>)ayYZsj(LKlV&B9d9&YGA`d~2p``s(pz@!=w$#o?kPQ2PyUER(gFk@~ z>BOJCszPOm3KLbCFj3MVQcaHEaDD*IeU3?3y{gv7*-JMner>?FgQFh5?nM9Mxpe}( zFz$(;m*1L=UnA#_>f-)|K@om64NpTuLDhZ$zQ{+p<ST3zRejAUm%Uncla?>Si>WCs zUn_im&%@u2i{*Q7jq(Xh)xCSL(Ro#G-{!VH9=%uS?8ru-NH=rLBsC~EC-()OKVJ6m zYRBw^oY7ovQsuwG4q+e#VrO=0oYC0mP_vi)G>hIKQ%sTr@S!qcm|pTx@NSS3%1<#r z?ZLhf!gb<&IbkWgy4gj5>foSO3LTgoF>I%>_^@(a*o{?>$=%W{*VdP}t*b9O8eC$h zb+}HKtF6$GSsYKkNH2m5U*Fr`Ik44r<koN52zyQ&dY$a1b?&OcX`WHO4(MEsh|%PB zY^<5oN@UHZTLG}l$}-iDL*iGzX<dEyy83>U6vRS(%Z0NzU=?y&Dfl*cOJn<+P*)g& za^R>~T^TGkoOu%jib!2dl*D#7`L;YWJCxmgnH3$MDi7bpc1Kk10wKPSlYyO3-6IGh z!49;<$&-CsaYSTC?&|DplCd225e5kK+DOWA@JL6utX^}@x#yjK!P*N4hlWA9IJXx) z&pjG$HJZp>bKAD!^|*#{ZHaArQ!+Y=qi|JLMP*a8f80)k!#5!lHc)97+X7^nG*JzL zII~H3@(T+HRU+(jG=c-iBx5mwWa{#9EWxuT=*i4EhO*a8I2@=5huS>8G-h@d!z2)& zJ$4n2dMWg-zZ?eY3s_0gAEpyaDZ04~gx%rsb9SbgrRFXYHb)qp$!*N{6$U!HbN%_Y z9yhZSvvwzJ-v)V91!A$znCU$FzF&T&dnkVy76nSBDXa(6>MdbM%Sw`b>DS32_BHJi z)hu<`P{_LB#tDeh_FaZE?WVD234pb?c?k9tpz&57YaX873svIgp;5V-hF!$sX8jft zANY10Y5233LE6J!lBHF*#JRKIv8~whh2CQ8=M=9Tfq&@pxQ9PQe~#bW`A;+tfo+^4 zIs|x&7A?kaiT@o}@jHH=-wA)@@5KM*ANlx$`?m={&wKu05+nZ2*S?^7A*%();2Iq# zTQwYmEOyQ@Hql%h-6fs0>{<EZZ=R7a9`HWzd9|LR{&u`S@ccaN^y+owIr(CExl{8+ zUi0Nw-Z{F1C7wIn?2cw~p%^`LhAWPaK;;2-peNOc+m1Km#dBSE2Mo#A_?`92O|Sgz zlNK$ZV6U|!U-Zw%@i~v@v!A?p(Q_F0IOn$GdHX9j)s+@6SyXotW^eGk2+y|!&x`TA zKX_h(=P5jQcbtbZo#${4`D$0*Ik=j4Yu230dwP62?|gZJho^Ja$~Ss=I&bwFexrw! z8u4Z|lWUZeI{MrA#udwhSB=i><gI_TI(WC*m4*?bkt?y9Kp*1yaxoqra}xrANV)Q( zWWy|KeoksoJ4jrunn9Af)(ny~Ky{F;F0R9*V!xj8F0B9I0=ScYJ%IZU;cCS*`}L!^ z|5se^#^hr^eG2z?;o6U9_VXd!e-qa`@yvey9`1jL>s@$eKR<~3U*jTRJ%Hy&aliQ8 z$}=$iC*uC;!Sf4n-w-^X>+ca=%GZJCuHgG1?r-qVEZ;udzuG^ueDB8n2mCY3_gUP3 z**~*<_v8K{|I9q>$MT-xAEFJI*Ex)FT&;Nbaa^n)@A+%pm@l^AT83*Mp1*~Q?GYn+ zyg!084&k!zY`+NM_&bRA2XNhjs};{vxY*v$gU{bSyr06A55BkJJ=a$FTZZ=sST<k2 z?RdxjT!xFk7QByeIsct&dhCDuegy4s7}r5ut@y_8bHbL=a5J_ZLX*83t{|%XdfITl zbw1a_v+BhL0}kW^_bz*%OdmKVx<Qnf1eOc%*j9`qF}R%u#M>09H<$u}H4p681wjC@ z6ihleOVlri#v7=R`(Is)w#Ic3*8yDnae>T*1OO&FaQ5cpgxoq=NL^RovUU%RzE+kN z?;Mm=yh+&lB5sx<SKUv9<faE<le?j1C9J!uIMBay<-O2i9*4S%1aU*yA&tYo!2&~> z7PK<}NAl1yieoWLjhjkiW8)B1#DS(}haj(vxLF{6m!eaW*ONmx$o??dLyE+345?+6 z&vhpc0C~y7)lKKMTo~cxQJ9ccxo8}zt-q&fbt0mR-vguKbjDeT{zSA49f~A5%7S_5 z<LHo5Xvr5;47<Nj6_~0(&&H`?TqF<cJA0Fd{O0!l3(}8klgF!B?kmqpUckB*jvS(` z7o6e(m1P{dN8uzEV>fp8<dSf`?fv=WX-j8v-`?9De95(^8VZk_lAxQq+uD<-4#BN4 z?}+20MyGHbbns%+=8g@);}!^Nu$f21zrkxiWm4W%@7-3s5!Z`wy$aXg;Ce5vPvH70 zuAkyM?)GiPr{a16u64Nja82O)b6opz{XMRK!F3m|Z{fNhSKa%z6`z9Z1-Q<}bs?@z zxUR%i#5IfSmAKx7D^;M1hq>Xyt|?D=lri`PNF1I7jGUT>1}Y&QE<_j{8=(=kov?6R zoCg+ZoWk%7%xkCPRTMe(IB)r<3LpjwgXM|UnLrNa=^SXH|5&>Ofb;~cXT21#^Cf_@ ze~N1#;5>ZGa0>T%T!(K)8@wDa>1Dtb!FLN6`U@yu2@G%;C3Sx*ij{vQ%7Lo|SN_j& z|7R$}E0S_C!U23cgfgWf<6%Mh*KQui{MkO2EYkMb|5~)mU!v}>0bG7H%JV9;7cS=8 z0{_Tg;5)8caJAxEhO4qn;qwB@H(dsE9mWaokH^E|TYy*JiZ*#2+6ecDZ$(?Y8SV5& zl;;h=_pjG7EW53`EDOuOb^|egrK#)cNHgbeN89`@@_jGz!nOT9Xd_&$xLR;6!xfg_ zRX(Ra&ewl?WD@~fr#;s<(7B<ry=@>D_2sVElItIEJ-Mr*toH(Y+hHu7C@kOCc_kxl z&TZA_E$eYqmOSQ@Tf)*Xq&&CvwRPtPpf=-j?dh+ZqI~j^`ZRr8^8>jK*WKCP*xr?E z>yx|Qp02HKeOpK4z}9@u<za!naR7^O>!Nd4xuuZ*ZEozu(RJ%0w`!htm@17o<HEWm z<R)Q4uCM)EB-G#7zP?@jTu1I4d1%AS)oa!!_ZO~-@4=wReItMCbHG25ll!IW<$5|I zZ=g=Zk*=+0YpVWng;Q_C_N#39$_A`xZtbz8i^J}&+09v9KhU?O9~}`63nz$L{zs=@ z029?4dk~<bZJ>=qG2yq{*0<w$EWVp_&RAc-8au~jWz&R>kljoROn*wr*2me9AOgaX znVL5^KcKpC!bZ%ub@s9T;g5~C7RQ8jURl5lf~XeaYCuY*$v^1%G5DnM_y6OzqE|d~ zEIyE<_zou9u+4Xt3uCo@OYq?k;_n%_K87FE)%h0QoqI6B@m$wAjCWtU;`-vNePZMf zeu#I6f^ht_{b&U&^5H{o?!LZpxV*M`ivMdt=r<v;{r7AsZtnm*e)1I}2f79CS`Vk+ zy#eozd_Dc{ok2nJbyvsr4qm(ME3PQ!aV^7j<jgB@7Tpy^hilGq1EVxgVRtKLZ>@4$ z9`mL%Cw5Z)?WrwM%M*`3(L^uDxh2bl=RCP(dCN)1A15Lhyc9N&{NmGE8e5)p{7EK? zS%PoRBcJ)Smet|=I=qj_pFXXnEquQS?_0>%KCR`7@cm-EZ?$?Y)L%&bYh%ZG<}&*M zS78)~{LIl2oKJtqkGOfh->uEBTL1cv3vT+)#}0n@Z@=^5`>*}fl^6c<DZkwMo|j(s zhOb}$ygP1v{|Vo!yY^*Iz4H~T&-nDsPuw!I?at}n|Ks=ez4!RL-#YWlw|?@Iqi?<M zl^gH;#b@94$&<hI&L^HRx$6GL_rHAR^1I)6;JR=B`6IjfuDJBp@z1Wl{qrjpANbsh zw|?T+PdNP9jjw<2*RL4<!to<3S3dm}OaFPr+U3t}Iy%0p`)N;F+doiVTKd@18+J9_ z^{JP<V%78;-uaVHyleB0=iEN^>dl{e_Z4HGd-hM>@Z~d(f6F&sao&?3n%aNEvS)ts zJ<mRI?1EFfc5hno;g26U_n)5lybCXX|F?R2zi`{Nzn*N``SX{)Zf0`$Z}&WX&*xu$ z;-b&J=Fww!-txd${yo2a_ak@yYR^rdJ?#Sx-((y7d+8UavmKf*>VA-I@$v8c#Y@;8 zYd^f{*KCt#A3E+MY?rt8KKmcoHqUy=__x_U>lZD4H{0mW$*COM=`|m`uZL}Q?}v_k zo$WRG7ccr1+w33T{LG8kZs$GqbM<VyH=a5ApKQOcT>i_qvkiYx-@BIW_~Ea==GAP= z(ry1|H`{Y|(b-$srZ2ni?<Ux;Uwf?WU)i=F?tjY5*uHn%v*YJ%<7I0;)W~+eZ24oi zvaRoX@-OaWdw=S6w_n0GuYd2-zhb*jzI5?nw*Az^lb5pnk2Zg01N-32yUx6h{qVE1 zK64HG;+}tc)7#h|-y8miSF=xU|KRS6*)Ko(z|S_aZ!S9TrB7%76c_)pi+xnrvi{@j zr`P}W!-v>cEq4wa&;EK=-!HzwK3n#_(iZmHS<y{bvF|?m<&Ujl|9$?@S3b%<?7yS! z3ijh$9(e6N?91CXz4iO-&*5wC`ZxCJ7hl!(1NLkA2gAGBx9|Sw2fxAoJ^I04Y-1m9 zZ$71+{XBigk$1AMAH1;m9QJp^sl%tU&+q@&mwu1^{*1k!{UH1P?EdK=u>WrxJoBgj zap{ULobaiG%Rl$gSAO}_2M+)HH*Ws+PxpLz;^!~!z4<r)GI`4M`$vu(|97{3{$2le z^YGFSJn4};m)v^UQ=Yr=c~3j<2{%3W<u@-m{WrV6)9_bke6ICHcYI;Z$M3xB8B6bc z`^8;PT6WuKMxNjPk@c5;@y@UPTi02CS~_~$$`@~a@X>FqyJPZ;g;TEHc=>Cd-7$v! zh*-#i{hhs#L-b-R4+RQbIV;l+DtC>~J%g{i3UZ&ZtKD^5>RZmG@2;zFSp)w%x6YmJ zPIJ-O5s1mNK|`*J9P9(Y@SeNGMNBn|wt+HB{Bv>#y8f74$CexeP_6han&-F2)lv0g z*|KHs+0VxR;CIqV%T8LxFExHbN6hsd=`M==4?BWHd?ex#suqH5mWDu}r4}fkNTb4V zOC1CBgT;p(L)c+&Go~GBL>s#YSY>Pmsb7Ot^p-UcpxM9rrnB(6SYLMQvG&fjOB$-f zl5%Ef4cX|ThMv-hY;#%Z+7rpuIxR*A3=`tEer@?m)zOFABbMoDI(cl*N)02$Elu+n zgdUL>t#eqwmtgf}3%Im?^%^YovlaH#V};TGI?H943SAexxso=FM`!jXX)`D-46K)J zm1u>y1?@}Q4#+MewvYe$_Gh}4?;_vqn;`@gh6c4m(So;OgR`yiHCcn_3VV=*G>ujw z!a?0IxfXSHu(Q{eZ4893$vNyg2gZ%CPlK8|q%h~i>3a~Nd8R-QC>e9+^1%tWp)};W zakP2c)HM9P?(*3QTw|_nb_7~fQ?7S-24+KcxsFmLqyEy5Lk@-ORk&V@>kYWxjO%Z3 zy&c!PaQz*w_v88iE{?U-ul}s^05oQ)p9-;CdEHXHz=TG@a0BQOer!VHoK@~CaVDg~ zYtYmO4cj(0I!GfU5D6oU^bpQQ2I#<WA{aqVxaSB$!_D7rY_$T8?^R-Ef#Jty5xl22 zVpkP<z*4jR3yce)vF4Qp%NCf%u5&brRI}Ryq@05|<PUtxaQOmP9>*MqCf&${!!kbf z9l2RnZcQKD;+eni&Wt|AN9*XBPe9ID5oQU#^CI|VIt=sL1%!D^MHteJgxFy^@2LpG z?~5zK;Bmpfg|#ttaM8&0E=eaXo!-{9u@_Pl{#e$hSMX_vQU6$wigC!cvEPXZOa3oO z2Wvw3NS<#W-W$duuh@X+I2|m=*b<DTHJ_hH{D;6-8a>W(T!VMyHEYGyat#dhb*|qs zfRSxwbDvDgMxON`($N)=S}8gApwB<m00`dT(_(qHXQV4Q2`6#QsFqO^_f}$ywfw^N z=|J4DE^M=&igy|-`M-evhejm18)*qj-QqTgK7}<@By}BpymnteUI+_4{t+BuJwjhG za+2MgcSjI^AJVcwY>$WVE|d?jPDk-B@^S?B2it#HYoElkQmP~)DeGaR3-P!c`}DTr zD)>`)Hd)4~pj0t0vPDc-$?k4{3)=ycRNhKqASB>_HkSB!8`2Er8@0;+9)w%_Z%I8_ z{yXsQy33QX$?^XY|L!;@jvpE9PvYHsPzTB-_~Ra>yYTK$KBMW`c$m7ZuW0MG5)l6m zb@UYv;k~p`U+&7@%@AqgXJh&>(q(`0$8_I_XTU{}DN3ba(Q?-$HZK4TgUay(P(tg! zg9u+)|9{6j*30U^{tL@1WyxJVfE8M7UQA%f)xJKKe1zwm5dnC~wzXduzOnx4w32!q z#5b!K+j<Poey+ki9To+#B&>9wrI_vCig=aq;~jYSa6W+_tl#Z;ce@{-3z=UYx=Qi? zKl0uMJgVyIA3l@&Jri<I2$_(CB;+>9<bFMKBSdl;G6@h7hrk3#xdaGEkRl)=AR-_l zQba(ch=^z@FQt@<^`(?j3KS77rGV6;Qi~QXwJ7udt$og(IWq*L{XgIHeb4g^?3}aL zTKl&4+H0?UIeYW|lgdXjz<;f>ykyJIQw=Tl>2QSCSn(XLkbjB<4FFTyP5K5Y2GYx~ zDrAnJ)8TJ|N~d=vKeqsW3eK4!8|~w)H%ql6>G-ca;`#;rE%*|g;^Hz$?|%b4?$@4i zwL4{QEO4Bj${PT`TsQYqC6t8oSA?)sKO8`1ssyZ80pmFSyr25PBDgeJ%NT-H1zKys zkGC7mQK<|=@g(^=fizh^B_Jf0&uNDOPw!sOe<7Sw*HQj&1IBe7533$2)iwE9mat$# z?>s+;kq?shZ}B9aj>Qv)qhkNVgzo=ZIU}BBh)44qm)@fMtpQA#XOjO7MCYNO0cJm* zUr+r!7V%PiZ{n%JQ;jFr&p5V$EMnp&ak9_ZW-4bD!YK6*=}Qw}N?l8OtpTt<fv<di zne?O;Fh0M`<#DXd#b=Q8`D5k5ngby@|24;4GEMxrgt#SnkaofK84-X12&d#F@goc{ zu1op~cR%vmD~*LHtIj-LLcAm+{eL^gJ_*ki@Y6Po{~IBB9dT44KAum?|Nj7{EEDnL zmw<W7$LbD+{xV`20(6|8hY@EG{L7A`F7edD@01N?|0H+hP#kPPOo!w!!6B)UaBcXk zLWa`oT{?B7!GCM`3!bBpu2R0Jd}BReynM<slTMflI;9+vyv_ow!E3COUnH;dJ?KbY zmjFicx*YGs6Oz~EfDsP~M)InGTPwrJHlVsqgL?@uPul=sA(Q^#$K;n5iEPs95a;<N z@S3*+D$^GD@sZe^j+u5c12DBA_5Vu#{0=m$QMUx6c!)pm$uL(s`nFLrp6RCFVgCsH z^rP|zz)xS8&O$1z?ogK<JpyVFpTDsik{PM<4-ZR#B7`OVzf#6h`V}&a@<Tr=i=JRs zm#szhQwJEeGYZRj&<L2a9)Y^!r*CT=+T4QgJ!tt162-%6PPp3~mk^g!2w6xa!%Cp~ z<G&DuQRad2-w&`UA4qji^+EZM2aL-hhEo{$8!cAnBmmpogV`T^h(+^IgL|51PVAW0 z^(eF3oK%uUhwWxqou&y!(3yMb+tjXEnpQLmCn5jHbogx41a0f0xthT}mTu6_#XElA ztAifV<v*gcjmL3W_~u5)VI6ygkVAG)1x^!XA0<@?T^+^UGqIw`Vy<^?BNI?K0bjz* zl*)uQD`k^%DIkEeY&fQq3N4iko1nO9*MuEmP7ks!PnKZr#aSjypENbM)}tNJ3Nf$4 zOTTw-13TfD(wNo_zTfe)0p9@mqk5wsJx>8fb=78tF~*W`#Xt6>d;9_LOY!5%HYz85 zYszA}`yVdXM4?6apCUaDWAYCe<;l{FT@mfW+w=`=iPu@i!yb892LJRKRM+-968$M~ z%)UYbWKR+S(SHJ`B-Wgg$~6j4g5x`n>9`=X3olfUQW50<uP6fg;N1sdCZTO^_kf22 z9))!5dG1Pp!dQT#aj#THkMaSh)MHcNmm~}YWaT88?yEKx8IWI}Ls%+5*Ey8-Ccs`m zz7*^1EF0WfCO*ZTcIVG02t#4{kNmxG+^>8xLlb~+?}As-Y948^UxHJ@sI8)vvsp(p z^eS_srM0~#NNVxeGKvbp$8Upsa2^>Zqp3m4bC5WSjV?iwKp?=Et+Znm^U+W@Ee)D_ zX&zeAFw>^YrP<Ay8pV9LG$q+gD5L&PL_O|gWETn`vLJzxS-UX-&yztRkP?II`SyZ4 zV{w+}es$1H`szra<N8Vapp%ixDSM<6B1f{4?ndrOWCeOL>e)lD$L?Dx?=%}im>y(Y z+R)o`SMBCjDK3u}I%<-IDQEhwe@^-4>K6Oq<*vG|w_0(oL!Av5KBDVx#$eB-SGFK7 zzIIIZ!zlRexVU9{H#RG?43h~h#jNbVmx1nY@44&@%GWRdfIXZT-*P*H`k$i;7}*)r ze_jTR+anZ?`u4L5I%+f2zdwsKC_b=Gk#{z1WIE*`qz^LZFAjdtnvi|A#RPK?7Agj{ zSW1WgOrZNAT%Y^^obpLO%GY%GnFoKqul%pe<s!R)_rE^{jQV6(TGF&P*E8Z-N#{($ zlX&wdq(=gl=M+2UbCW%uAJ6C0GJwh&fcPlgr|?cXo?tP6(fAs#&fldcB{^x6TK6!l z+Zem2;@k*aB+*Hxl)^_%(}gqY6&^jdgv0n^+pOuB0Xpfs!v*6Y>+I=d4cdXlC&K*I zNT0B?pv@C#T~ykxE#QC+3EVuv1ym>v%}}hSg37rcocS#?yB@(l?}?on`l!S{vje9U z;}c5><^t*6%A!}6#mSq#UVaE3z62djJY9_UXW^(Wx8V5(9Ldf>JWs+A&p*QRb2yUe zf8iPazSQ2*@GOR-c}6py?Qqmyrr`M~9Pcv$a{k(7!OT?1q!X!lIkggXs%ZZlHBo-~ zZ^JL#&|+UAyVZEEgQF+Gro+vKJA5DRYtRTklAITwK5+CT*q6ZFfU7e%nOpP?tg%Qf zUa}*GLZ*3n=otck9os-Zr3uZ3b<V_h{wo8X+JQ1Y!twT}`EZOqP$nk+KLlFYZlL&J zhRmEWzO1lN_Sl=O@>_3_R;!mTg9DMI<GW|hm9d@nE(?7JDtl*7>%xF&Dvp6*2gfK3 zR(oET#TCuW&WTW7=pXDD9^CO;CPS!v%aG63KVm%z@4S6K2N>By1f%j1-BtyR#D`$J z0DA?t$!gh8umgb6n3KYitP<=PV1EIB2u6Jb!9GyLN3u(>uK=U52+;+|FahDn{xO^C zu?exYozGQLUP-TNkau1O6y`n9PXojCIAdWVzK5VC8<~B;N<ZcJM?m;A#7{6@{!kg# z+&YwIGuh%IPj8_|dPCu-Q*h{{l)feprvp#<Cmzv{%GnE;a?OMx6o2m1u8?-_D#G#C zOa5c+hr`C&{{^QFA8Vfkw*~G4IJJ5#&gMsd2%1ZmamTvvSo;fb0{mP0jkSx=NgD65 z_Oa*i9UQ`sC0H=<SI5{dMSuqG(j|oZGw>JSu7Dmi8uYQJ5RV4opn0X!kuaVZKV>#) z>H8h8;c%R3G+yH-Bt3<C3)YkEdHjDqe*r{DA0^;&dyr^k>944gzf-D#y=igg#LRQT z=BbUC_HS*`!-655;H=v}xyw=#{LZpqqX4drf@0uhasoKpolokw`L6+S{0xp@T)rNb zVO*D3+YGHOX0tON0{AMcXlCcU3VJ%12)9m6>zX=yDxCzwo;;CzJl{iD(py~SN&Y?r zjK+st=BeFWmSGgtkK_iW1&sW6{k;rb`(rqd-xT!Qv*|z}{O(hhr;o?|dUv&B>GDdP zZ6y!Wg-M;g6$0!84CH4DG+wP>@?rs%rlE7%L_CZTBOG)DqYcvqn1iM>!aAh^h%}3! zX^=CioLW%KLU<I(&AVRa&o9sh+z@?v_JKb?ap#exrFm4ljZJ{jz|m&rOHl~VWl^~3 zE{j``*7WgIM5%<X0>Uck?wu=@O3DDm!G9kh9G|x#7}fuEz{(K6ln-eHOE{kPLXWgF z;g`m*oN2r!DAc`wtq4o{kLQWf9}n2Q=9lU4BaG8D&dDLUaP`wB;bNy*8o34=JEl*^ zs`P&#W0G!>?`-3-%aM0UkxM=v_1&h8B%aya)rgaSTc976ebPAim0aR&kzmQdDcd6P zr&xw5!zka^$jt2Zh*wFY-QQwg2&aTO-$|)9Dfen&lumxOLkkVULfi7&tok~$&0=n; zZ#KDPV+;BWW!d!bV{%2>^+mH`EDmQ%eZDBmKONyOwYYQ<mH$y0)@NV<G3;c&R?x|> zcYQ28a3>G$S0~}1!F$ae%0kenx6sw@vT;fF_H!S(=W8PTR4)D_|IgsuBXIFpK%c7Q z@vESfCI?L2Q=!vjiIvwB++aKj=kq;;rS``Gl#i<(FplHTYjWbfpyM#l=cS)Rz7F2W zTSf=@s)E^yll9CqXLir5p<cX-1PtT0>9}yQ)6PJynIXs@CXBFOj7{y}>0Bd6NSaC# zq`6@!7x!C#vuDbi$~-b(2R~I;8{9}Zn(ulHj@lLJcIy9#2Y-X3t+lQ#Tk;zLF++nD z3EIaczcu0L%kdr4J2eXIv>q4Un%{`SXf$M&lGb9|!pI}Y2pkMZC%j;?LBh#?0W%TK zK-lTRg6OBs#rDRT)4O35V9T!{?M&^Q0&7L+9^Zp6aoKAt?Jl*>>X<s+83S!N#i>I$ zRf&@B`*)xG?ZK!Xoi=Tpb&rRC@Y9!$7tdn85Y9b>hYyuL0)u+60@aRVCfP>TQCR}b zC_adj(nuI`*yJBu47lI?_TmIKWY{{Y$;?y;@9)O`)xEtX!_U|Hy6kKy=#fE}*92P9 z-_)+?N6!YpR>QG`6zemG0fR`fAK6^X;C~dwVJi(X-1G4|XgvGxw*c#lw><1Byih(e zLC0ZzJum&K#lGd-opsSWEjL$ba8ua(<nioTv~3F?g_(sR`Ub06IxVYRm@BknD+e8) zh0DJov`xY^tbU-sxU0>FH1B_ZCY_JOHdkU22kEodJN8+&C51~|$ZTqEGG__&>84<@ z4inm%hBY;hY!a9~UXPC+hnj7KyQHz&7s9QEqxYBPC%uz9?BVBd{yYV|4qsB*@CBuf zzNW+nls0@o>3qjWlg@X7*BKib4Z-Q%I8=}Sg<4FuHnbP$w8cVegViS3M%K3u#e+(t zO|{xBa3(l<A1goUog9aAzvt7F-V^`-bwA~w4ijXD+~^w`h$nr^s#8YTK?S4-Fz9Nk zYaNP@T!-k}8d~{b76R2-W<g0=7F9+jDn@!it*{r=j1x%j433#e{4dnzqH~_hstQYh zoq~ZKtR-DFOecT{>A8iv9?dXZ43}HhqtVaCv#3Xdvvu%N-lJ*kpqC=7W8kMLvD(#e z)?%xj-Ve)9dM9_v!_VRTdFgxbobGPVFa9sX-!0zzg$pPn1pbkNd~~Ug=;*8?>1ZU^ zDM)%;H$bd%`+ab2jQs*!*=Lw{lArWW?i&2;m<zWM?w-s~FsJc1i9QGKJS=;{ZyJh^ zxAEt0KMFrq4nJOg@;L5@PtF&|mmw@gE@>d?P0FwIPWtLF;`}X~7PRl<3BCwl;7MgB z7?pW4DX__iN0@9zRwuL2c+gXrOtEwjMTZo32LXtfXeCmKl9~dw0yF}8K-B3$PN|>B zN<#gxx|06p6$(S^>xK$L>amdS`TOQmX<nLa<%{$OKceyZT$&G;Aktrg2Lew0rYAh? zE^y*~U-Xfnr+(2ho`k!=sqXrsPXRsk-=6Ud0-RuES6q~lconi`xH3-!CmAC$Pk5nB zuS}chO95BXQdojl-UVI@xH1k-Z@vqh<d*X8nSYX5Dz7pwN_QCIp*ZPBVdzP4ivmuH zjKfDN;IuBs;SVd|0~GLa3OKDPa{4X>TvWiR-4hM{F2Yfs=tpgXVD!5P$Kljo2*!WJ zTl!J^;V^nqx#>4kk?uvAfHpn#-Ua?xA8>EbKiLPI;$LwWxO^CcPU_=WV`Q&ru(@c& zxl;S&ShP`3EC;y=<%TRH$aiOC9#91>v;|KTW(`YC1`!bl$*Dn65Cz2s2ocB-I@!%5 zRRygA;}M2*K2Kf|fP?#@=7v-*H>7xun6ArZN{~lM+SCI~QM$k$ESG3ypgW~!yujWi zYT|`kL{PZyd2~;}Memk|f*n$9POJx4?nvv7kc#wVoGZ;f>R*bm4=He^bVnt)@#1b+ zit<hzHJ7{ozCiziw(L#qoSa5}()+0|*uG9Dj?>Wd0&w|?aHJ17{uAJIz;PIV68;u& z#fosGFL*e=FLBP4BAgNz4_uWZ9L33925|W7$(c_I$8p8LVcOFzFB~@vI9!D1#3{pd z0Ee}GZ?4NJ4A18*;IKyF#3}Q+6u1|G<Fpi>9EINi+$IH%*5r8nyMTKMIG&C&+!5e5 zD{#ti7lBhn3f>&14EImqyc9T2L-`H;2i8p#I8n|ErJoI4;9<dA$q!y018_kKoU-ig zz(vY9qUU9y_i4aIDR9bgi-Aj3#7W_}+XP&i0!QJv+YelZB2FHLo+p9JRN#0RdR_%C zTM?&{XTCS^{gDEv<XI|k`HDD|;c9`?Dsakhqk$`yag;vgkMnaDa3u;H;W=(4aIgMO zst1CJaFiy6-wE7K8ApB*j^mC3_qvRu_>?$!-G28T|KX%lcFK-h5I4_eWGq&&<dV9k zpIC{pbcNL}R^wS_wNGE!W)~_f_T$K89Oy_f-iz*cpo<4xabdwd>3#~^AW0ZiSX^8H zl>xh@6l41;%r(Gi@y^p_ktqI%z<+@}ZbAMmc&<kNG{~QV#O?Lo{E?QGPY<)&$wf3+ z?O);f7~Dk}_5q%s!~GSGhTP2V&y($cSpJf~KpqcBV*`^kIFKHokq?d(G{~82o`;{a z?v~v<J<{T+mr8p2(0(@j)MQ)X7vLj3HO$w?pL>^|Hu*?1oA;)}ht)JgNz+~R#$o1G zO>1+rra|9QXYM0OH;{Dmu%=`D_|EBydzaYOB|%1F9h`11(Ks(RlCW$(dRpg1>^hcq zI?>8z&m?@f-7_1}_4Lqouepp0_Z7%=otp7%&Z9>fr)lP3moi{%f(%#m;apOUUPfU@ zA)=D*8RVEgP>Rh`eFg>pG*~BR8@ND#ACm%&GJ0hkv?NEDRQHt)na?;Xfo_-TlLU8B z;{=AjN~cUjkq<Wx+>u!+uQH8mTbKrO!d(;QD$8?M8iT9MGL6IwsUkEz)A7;2G8tzz z@=`EP$qc+R5X0UPX2O)&J(D!Jp1VWI?z`8s8^&<gFh;kWdI*QI5bn%YV(wtETa?Oh zo{}JO?=CXHk+c$nOYWHvxXYScL}d!@9F`iv-SQ{ZLLW4W`ju$<5))E(1(M85ZAlg& zR~h;7x$GVY0sB$vTQvf{M4|`y*E~!k=!P`3S%(U`k;b7my`XEc$`7OD8)hb;u|@Kk z=rPjBa3i6Vm~Vsx9APss943%;BZt)EkYa>0lCOpPq^OY)C|mF_f>KIvq*aR3D#eKh zi;N{Z(#n!WWGoX>vMokR)`VC_=xKs|WRpg~hdgZQYXT&6in9ku5mHj5d!FbTIy5j~ z@Erm>j)LC`gloF&VC4AjnYf0y1GgG?^0hMg>MLxjW=Q8z$aFOpwx3Emni1iY7OYiG zv*XP2$(>Hfv~J}|z$_hwuple)6*SPWO1R=3`I5fYR>DvK>|k))RjT1#9<GzXSuV=+ zoVgfaw>NbPJv}%mcUl*MvkSiDn?!h_<wKv50#;IyIBim9U$f9g5S&}pJ%tn%yI}}- zzF__t-`CKkP3-y?9NB{HFxVN0BdO(xx~5?t#msJWd-%Q@e3>$39Bx8kYf?CedfNC- zI*A%=a`h*)M5$y9cHl?{r6@PiqPX4TaA6C(7X{>0L0I{G6pW<(d88kyQk6`jRxrDV zio`Ctx&u!ujq+hRoMRXrYP#5GJ1CekE_stjpEl552hLBq4|n)JXegdDa38^a^*!`H z!o&BKZUX3X;40yU!HtKT1GfThGu&HnzkvHK+&Q@KE6d0CK|^u;3v_|1?~gC}E;M-_ zaI=U1Zuzv{C!HO1kHW2mdll|Ca97~|1xND4fA_ZA<S$d9UNu&;l}-Rq9&dT+=U7{T zI}Eq_Ana~93*LF$^t^lgvkK(%RGm#ilRg_e2Icmlseljbj-5TTr%EgRWFu>^a735h z;Y=d7OwSIKqI6VVZ0Jm{Za)>9WyPHXA0Urck;lIyzc*ZYJp4zz1Frrn#st@__E<Ue zo7XXh_#AM!OP^ZpsXW$?5&mz8=btG1XI6Wt3>Uw)+86#F^ogx@5jbBNu0~pyzOvfi z{0qiJc+SGa2>r$)taujdQt#pU2dllG1Qreh{^p=o`=t{Yr(8jNGJN`JyniI6d+Hqc z4CaWS5s>FCcxsTg1@B=LH^DChei5)gBOJ;Y%;Wh7()$8=f;)`&Oc}oVyp(?`7v(=! zhHJl+;A20O;Dcqj1~gRO>6CxGXUp&{@4Ls7Bg4Ny-iV&ZUx$eo`f0#t#y2@0nggew z`V8PG$JkS-H#~8{O@PYB+t)Wh<?HR|7ohU<_EKT2sDu-gU`ZH}(i}Mb?je6udJ1&5 zaq>B`r!rdYE8!Nwjg_4?v(>JKdlP<=y@EVljzR!g{7$%RJsDlb%?M@!Gpf7)afX*| z#s4(?_mxk|76xAUJz!|HXTiN$(`wJwx7vRyw%Y55wc5MzywcQazg^pEABFenc+LUc z-E)2anD5IUcJ3f^uqlPEM<`ZfLp=_&unpBWnJ|ky%xuHf;~_YA+GaHyTd)-cpK0O> zx4Yxz@a~~-jg}nl4!D#5NE@B0tZOvWdnRkf;WIMW%9J+&TWF=RBjr&+H?@O49Uyyw zF8{(0_5nV;mByRcR7)0x6Dye^AipCNh3xw$i^aX7?K_|hmBsSE4$p@$PGiucP;&e( zW6=YD&-#bSI%`rleej2djB^-*9=2EcVE?P)o#rbzoaQX}I~9+=i{l}ya2B{z9nhU{ zU%<&M@TNJAvG8w!8#|@lei+VTYqzhS*lySSpxwT(r`>*OR=a&Hp4#c{_BS7Cx2qAC zdQ`i83!J*W-F^yA`yl8?!vUwI^u{3#a`*V*mW%>h1KT@cYpl06>RXLN1$<&}lkOZe z=uNgdbE}P!$#=dPX`YA>vVSPnaLg@&q0xd}81zkHz123dr5P_$yn><0)=+N{49(3r z`n>5*blZ?2Xfl{`u_1lLjjgz?=25LSeD927KI&WR@zJprM-7?G#%Aokk#c4-Td;A) zJj!UsjvV0X>u}_|4b76BLro{Dv+&k7i>0}R&R)l9+pf?o4k}qIWteW36U?J5xY3Th z$RjJSmCliGGJ2rsT%0<T*Nt9cg%W0yi|YpC3E^96+@a^mcEl(lTJ?1-^U|K=HX~(! zNWHniL{(%(7U63_X`9*_8QY|pDybeM0JtyIH#C^*@VS(szE!T6A<ZqQU>8EF5T_qY zGc9@~hNIYcSdS1xaStO$)i=6w>jKKm;Y3ZS6tl^O0^t;SSC-h7p-viX`LT`AH(;L` z2g&SodM&Lm?NAh)rtYF)K&!1864h!3Bk*Z*15WaH5>TQ@TN#G<&y$jJ%J{6e8tdzA zysR>U<dHF!5Vi)!(I#ZG-b5U=$t)%2q9TWYs~qWU2eSBc1VpsnMb_AC!hHphBaTL8 z8Wdi+aWSc7tdpa+n&|-d)@D~gRw!rYr5v_3)uS7-V%wh7Bt5dy);a`7EmLC^(6n0R zCM64(B>d)PtH1%~W~1{R{aiB|nVefrAyr?aoEkM;XAT4om2?7X1t<11sbGyvYRyWB zoH1<dvq9c$3aO-c-Rg<}=BDPhx}i39V1H9HuBnFxL%|TP83!`h*xd>wZ+GY&nZtKP z+HB&*vo#N4$y?DqD@v_sb6iE-(UzSEieA}{od^h(6`HjP`pZfbLvRR?6=#7!FW|x- zwxdnoNClx7Txv{aF_TV`Nrj(<7D#!p>R{PqJ9n6b+)++v6i#KS%%>BGv;7;PgGZP# z^&{y#G%At^XAR3)@KpQqR!rWmxEGgrvab=i#-_6$u?Mn|Z{4)f4Gj9$widIEoeSxP zBk5^ta&m(jw+&nVz%aDRcB!(Jc<BlcXP4j>mPv*rl%8ZRQI+55f)48PhS2R=Hnd%M zTX6nelg&~O6d2b;*P%+nEOjoZT-KX3;Z`VTBgc|LTO$le0Ps<USr}$Ub8aB!5*dks zA|6Qd&}M5Z`^wFV&WZGe30rNkg%nca2C=qbif>4L1L7f3ci!<JSlgkV(D}AC=?x8N z4M?NK3@vH1Hq$}};Jk-@5OFJ6hpSD7;%kwSs2mm!!O-R7$`Yu*W&s5$v^AhPw$$ku zXPk<P*wli|;)^6$3W5Q($-60%SEeu(eLXsS)E(OeYaSu-whgnS=+H6A*=~E#+=Ba$ zN8#F6N*r2Oj};o^fJMsMe0`IpO|lhQ%%(OYO2IX1i@pg9I8EpTNqo7=V(q|Y#Ze|L zK%#9a835)YG&CpfW05X~kz|MW1%idt2!*0%VHT($jU<F%60|Zqg3t-09;vxSj~k3f z=v(TE|7^D%ixJY%X0Z*?qsmN-e=u(7k{I?*pX|sQ+t`YO4p=VHyO~LJK+k}XL@C8P z(8Lx7Y{X93dITdqW@tc#^H`llW?7cS*2PFCTER@zs<r+>^saJ0q{t%&L1RPVx=}eZ zDWE!;!eNVQU^4^+U*wVsB#AcFLu8134A9)xN_C2cp~tiiY6L!}*IY5U-jp)SGpU40 z#bUWqf+_!Z02L)r(vnJLw30TUDR!7uN`|st)TnQwnlg~6!Hng7qp_jc3brtTvl(Dv zQM=<vn3#x*R35QGA|)EqwjM1O*BQ|$lei>sfx<wO#8I|sBx{{Ml2_UX@_~a;TGX)I zYk>>7)PGa>;flDZAy8^Ovre^QMXN%qm2yOa%)(oFV@Lgw$Vu(b*xcM=0>@fWlWqu8 zVZF_4v<!2_%Gv`IKQ<HD>Tr#{g{1&3z*HbL7D6&iVV~ioK*+8%j;Sw1Pt|t{^%xB_ zS|I+U6(vgmR<A7E#^xcggB2zg(YB!9LYbwrQe2c0f+QE3%^8DJ8*)NszB|!mtvNkX zrokkI^~dW4QtINqOCdp4nix||He(wm9PpK&i;IO)gq&S0!!|wXIS4M@EH6Q1J%)&+ zD6mA;Y8yg=+lKqrr7l(as+l;!dv6xE(<fzGY85ONSI=Wb&jEdJlSpuXAXj#BepsJx zCS}euO48@-`z6h+(0LFhQ*)!N#4&PXQci4_b*NL*FwN(*5YRO@LP0}TQ92hCwl~I{ zG?PPmfGh#(aX8GyOXcXT39`h<sZ!iVe=xKOp#<7+Ll}cO$1p80iJch$pG;^Jb&@H; zg+w-qJdAZ2%FGo`iPWegb;?j<-H-xXqpR!dGkS~FYQvDA74gIHfMLLRA}e6&y9p>_ z8b^~Z0tMI3jV5CuXC9%NFb1MQkt8?(xR@{Na~B6Ch3?i@xwt@)v<`(NA~9AzDIyYX zRF|?F;_~NdsVRBtG8g3zMA=EO&w?oDtcNwAV<{<u=}2<|vi)L`3~v%cbXGL%fI@@E zqPJQ{LX2V6-~$D@-=fw-ZAG&6V7Eb6GILMaa;Xrw#*JEDGZSd21^Fg8LXm|ek54f5 z(TXE6q#Q6y3mlP$1M>WevZPWb&<tIyl%pnf%`%O9xe5xUQIW#WHM(31x%ZGqLiHvz z2x(BtvdPU^Dbw87(jtvqSZU>WSap*$8k<|FBX{zQ<P2@q*~Uqz$S)bnl8NcjG<j!( zD@p~Y0i)n5*#kDZb_{o9OAnhuDA?=_J5P}bw{!MKrX-0l!RCe)D-Ai_%sjUVCPk7M zV=Cs3xG1{BjYFK(A_<$!oIB~{M#h7o7KXajr7~$(XsSj&dqM9*>PMkJl4pIC<|7(E zOlMf_#^yE*HHelpl&eh&lI=n*j+?XE0-C1tY<03lgDP!?<k(nsNR}_tZANzNCvHKs z!d4@xMdiZMZo+r2t+Gjg%93S5U}h<F4@*U|doUb<SwdE+gmpDoM(p%5Z9}rdtgt?C zvT@^zMVd);QZlbcEYgf2rGeoD!*M-Md?r?)S=Zt7NAwcNXo0}azEcRBJPX&1DKk=5 zuz{dmsJu9f91|P}25rdZ5S;7)S~^wRX>+qsHa;kpRX;B(GuEV{H0Uu;<DOI_uIqyV zh@lO7cTBCq*E$lTLmHXDLc<%oz!H<B7JMWLNnm3`gBe=aESs-#V-u8>VzCVun)POj zq#db~l3FVp`ynDK5oqM9mQ}66a}t;LK*phFj638`np&Y}v{n)cH!22^Wv-nE<&DMJ z9{6BiYHK_>){8J})Hzow*&$BLf{%glsXtSXq)wd6IfA~GMs2LZTg(`tqYBx&GEun< z1XMB2P_w3`Z-C}!Z|E{G;B<~`Fk)w5CWKfUYHN{aDQE)SfMI}y9SUa3)lMzd-3DN7 z9-DFKfDuLxbCw;}M+j%GX}paNiV+MoH#9T@AYFk<WQxcwZ1ACkkjTqj2Mca(X|>oI zht(@a0Stt`s#PAL;gx0@&{x4wpaih|&gLE%?+GBy8KB55xZf1h8cY?#&XClOv(G?3 zE3Xs?lK4QK$qj)`>&k=@TLoDcL5rbQAnll%Bc>SjHWSttJXSCyDAOM_=|Fp<z#}u1 z6WX@E1^2Eh4&1asx781EN*X)N#b}VFp84*G9;|ONV@gr7D=oCUn6fFuT(ZWsf?O2z zoTThw3F=2+G(!VCc|}pGHmPuOW095$B?OiMN!}oLG(SXUZ;SZ>ywPNU3&s>WXSNaA z0R}UINp~a2<zdn&m&eH;x%W_*(|15%$lIuHB~inq2Yp-3HH_5Y<XD}RN_c6wNp&C# zwp&X#;ZyCp7Azk@DUf)fIJD7@O92ZE<t&)mXsv;!t(?VCz?im#xklqgsi`oDBjb{4 z0vZge8>TPjj_6tgmwtBL%*zGH$q~t}lZ|v&q7oRoz$r~~&9cTIVW|?C*5sVWxWGtS z1d5vLdDf31+7?JJ&DJ1B86^y9(bv&Dk83%u4qXwZUYWs&j)>;UXdvy%l}i!GV=0;{ z<15vq4}_tutrja8oH(qA>jr{3Js6-{fJWazOv3m6l7`~r4Sj<JMi+EIv$46sIqHzd zR!Tn`CX*a7hVbCLY}}9R!<>*siKz{avBG$C3rfmG*1^tnq)pmng3#Iv`|jJbg<{T= z&AiDLu2f5k6%A+IaC6foL>xk@QK2QA<M7r-bR0vO0mMlOL?1`VK(fo&^em=!<PlAa zG{wn=&&Wn=o1$yS3?)u>2H#<};hZ{K6L?KSR$@9|E0M<C=+hNBBAq7nD%9C45LhH3 z!AEQIfXkyZnHx5j5+XV_AqOErU^%1=ahqwD<z1R!p<ozaqq<!x&)GpU6NJy4kVv@2 zBXPnVCXWZ)=t#FJ$DVGsv7(q5%*$*<QdDjdbIdC89+g1Yu|WW-2nvAAT$(v2aWl4# zl1wG?$a#{v(u_4&ZV||wAbsns2PNLpGDOn$kP?YqN~}B*W17ktT+;utvd8SyP?!3& zn9*WPa)%=Yu(``8qmWdPa$u;G3)a-oL^&r&=$RFXIZHAyF&dJZIQ7idp>3_Cpy^x< z^mI^3bWFXW9<xIj`qR+DrJ~$Oh$BOQH?fc;BhscBqk#kD-7WyIu`aDoNgB;UH3lG= zGh8P-*~j&Tb28qo&TXXQ6|@R*kj8JaC5zaVC`AZaUbuwIOYNBV!;%fm2I@j&W6-IB z0duKgPDzt<p41HBBDET=BS`;A7Rkt=Fo6}>LWd=B$gT6|i9-ft`;!(~<^2(~dcz4C z^%&iv4p6DmVh>PqUD`$tCDRSv4FweXYPGHcp}44HOutH*5tt!}iboru=+Q@Dg$KO_ zgoX@4tdf%P$PIN8C3lOFw!!NtdL%9ld!&fjv7Eq-&>>FPbj;3Bh%JS4!^wg`Hi#0X z2!d23QMwzRUte`Myj%+R_}N50iVkDZ4MFn;u6ba&4|b!tqlb3G@;O2@f1FT?uF(xk z4G3Jp#0+uU4W(F-<z1|@KzC6C6a^_c(oU#J*k0_+6sG(51QC(+nQ3PmP>7+^YJ%n( zQ6N{M-bh9dB5$HqOC^Tb<=n^PfuQLzg&EohR<>i67#iS0Y|#F&r$JgEQKIi++qjch zF@VLc9Flk}vb50@l3S)d2JXthV4<S%qW4iEof?&MR*94anI>0;G&GNN3&`6MJ|s{E zp^G4F7z-I;*E#u0hPgsUq;7{9<#Je00<wj%76guAY5<F!QVPl_c=y={s;#Nn(25US z*ziRP$uq0$2jq}#O;k#l;ZRZ1Ip;ixV)D{yjsb^r3f;Oo%A&kNtjr*@5{X<fghdK{ z4@F2q**dK>hr?}bt7`$5y23UKjB)5OC-q2u3k@G6iI(BC(rz7AZ?RCHKtoAslGU|b zhouu>$QpFEXDg=nq!j}S<SeWL$eXVM<g^^2ttAUZfs`c2xez1iP1e2hs!;OE9U-l} zI*krz0156!OI*R|1)2a88*Ugb*Ul`E#^5r}qhv!an%dM4p)q@%-blj_W%r9S@JWo^ zw;m|9sneXKX!vxl4Z>d!MS;;CTmDj_6d7~Tb0C}MlSjrVo4iJK2dm^2Ee}R1*16<> za;-_6@tkL3?2>^B-bfIcQ+!hbyWWWQX|NX{C2h~FX0}rR1pu2Gv4LP16tB~0p>|D^ zYNbxr6NE)VT{6pp+gb;o)zCxFNkegY)IvOfoJ+H~kT^C^(JIYQU<(4rn9L2WdOF8Y zIcY+xvh^m+8*xLI_wUlOelw<lI7HgU$a;JZqGc&XOW|M~JO_i6?x}z_aK=mmNu_d! zutu-2{u-L~Y;}zl3Yic%K<?@=G@&aFo&6RTvPrATTP>Im!vhSs8Ed7nl+?`KJ7Zdl zFgCQ&22>e=&V!6!EcVe#yUZkpY=NqBqo&lPJ%5Vz3%9;e0e4%0z(y}J!q9@jS>Dz- zXPf{_TZ@Hu9$-?M(=eVAKoY`+=H_8oWS6A`({UCXW<1a-NDE)mvJkBcAXkNWu)ziS zQ8Ko9Pu>gb5-MUE(|<#72sT!eo21?tRlpc7ML_pn$g9AzywSMSHOKQHO)?{s(pUzz zF4_ZIZ6XARLQomZrA;Mrh^_*}_VhyM>Zwy_h6NKnCk1Gc87pRJ_$-+sp9&xqi;ZYp zFyxtKfQsx?G>V9%jz}soH}It1#~Funt19ht#QYfBK;T?LV>d3@tnE#$`cbrl*4c*m zMrvu_ofGVgR^FTHL^xN`*ae%seKAHjJv8=JY)(VwX{briJLy=-oUuzX>{^Pxb1{)8 z(#%XdXF&PLT*ay*Cxo)YJe7=>`RocNiM7+ux5V(k62rLSaBEL&(@JwoogT)BwDXDW z3}B5=o~@v5n5?Cf)}(eTD<DM|p@3r664SWST8mU&iqaskR1l_x<kB>tCvBs{nB^@N z6q&1;lMg4z)66aiq`2L;qcSP63a$lr5<ec7^O6I(L3*a?QsQiT2R4GxrCw0Jm}rpa z(e4B(RKHs&HfWU!=q!|MG_p~J6cg>7mD-)N3ArpK`m#XgFE4GMNT@c262ry^S;Acs z%N3ln4LDVv6Cw#RCzNGTX*h5Y8Q9LAfj*s>k8if__A3i03~5<b7}61-3z@M@7qT#* zC}hL3qLA$Y#Ua01RvhwPKuO3)%SuB25l|Z9SXLSm9#|HVu)Hip8(1DvySzNa8dwox zURDwEnNS&G4k%RbT3e{zAE{HHTB}oEi7ZmDc&11lA5yIT=h|X*a8!wUz;h+)>Znrn zi04YxlcUPi%bzP#zYtZf{^@h&>XT6w>OVhMq5gMNr8;_Dr8+0NO8wcwDs^>qwR-rv zYW4K!8ufy8HR|W1Yt=i~)v7-W7S+F4C#wG#tyh1(POtWlF{opoH>k5?jB5S!Ms<6P zNj>d(llt)(v--K`&FWjeL)5j)hp2bP)Ts|YU#C7BGgN)$`Jw6)!G%%hR}@Bl7Oac< zc7-nLb)hKgvxP-bi-p3t%g+?Xy)NkDZa$-n3l1-e13XR>UL04psyMDOyd<t;RY}~E z@Y1-At4ibcgqOv=y{as3WKenB$yMcXe+jRM``4<9xb%?9IN#Nkak1*ExPhyy;tJK( zamLlvajoi_xCyIk;#R3^<6d1|8+TYO#+`XmjJv8X)Z9=PrY%`snC2UyOY65rmzEq+ zlvc2&C{2tgP8+kPIPC`!C275DO46Q;C{25AO=;Suh_bZT)|90kiYQMD4Jph_f4VRe z<;g62T9+9gQk41n!lKO2gyPJ%vI=wF-dUJ)I!l*xWv4FZW>!&7;A=%WX@iS%N?t3@ zsUKXDle@SiXT;#roJp^h=FA&hmh<duWjR|0m*>3sT6xZ|23O>~|5`=P)xniHe!D7j z60)muw7aTu>a(kJChV%tnUh_Uvt(CI&Zg|zoPE1$bAFXA=3HGZ=A6ma=lpe-KIgF7 zkaKgFAxGnH%=y=AMtr_lsEuA&s7)4h+OmZ@?E^xQ*1oVvJ6R~!E?!uyeNHIRzP_+T zdq61F{$^pR_A{YOdvjr#Hb_;jO<z>5tx#2Hn-*1Q$Ehl{J&P)}Pphi5I~P@H_p7S4 z#}`#=&#P**UoEQ9`gql9V;`^84)PMUg^!EcIxoF;<l}nnG%tg8-s1-CGhRmRrpJxi zpLm(HXC60c|LSGde)G6l+s}K5Hh1w5?E~I*+VP9)v@^ViY9C)bRJ+EzUb}N~z4oB@ z1KN{|AJG2Ydze=B#4v4$PlGn;i3V+!PouW>iAHUsPm^~16HVILKF!*tPc&<P<YUq9 ze!`;trO$Bf@1Gd1{i{!l_SO?E+DKokHe-oZTkG4Z9krxYJHxk4`^=Iy?FQcw+P9XB z(7xk4Qu~J`Befs<j?&&*GD_>?*RG9!vR#|w_n@}&$p^Kg{YGnl@Z@Oi3crW6JDz+< zyVq}w_RN!GwAcL})(T4>*2ehTw3?+hZC!9-(dZS0MZLkgq7^H2ML!BID%!uIs0gxN zHSX!cs(B&0s^_29RqYKas=DxWQPsafimL{!EUqdIEvaf=SyDANw6tp4%F?QNp=DL8 zR+d$zhm==sTUlPUKeVFCv8<x%XlP~CM=L9<z6!0X3VNohDk`kHD)X7@s*<pps?pEX zR5gXvR+*lut$JM$t3F#OR{cIiUlqDiU-j>pLQ%cGP^^j7i9^@xL|bf;IDdVSxH7g_ z+`PV6d_A^A{Mq^v@kDH?cyWEH_*rb3`0e^KaYb0U81h27m>gFjiZ4`%!{aK&ju$FL zyHF)AURWi*6IU&sd!btVYg~=^%?mYRWPGidvY}Qii5JBOHi+WHc)j@e2EDj3-XOlQ z!65!B-YEWYgHil4-Xy-h&?NdLn8mmsnZ>GvA>u<n8Y2E6p-x=$qdM{T2}8xJKN>3D zPN)~-Hr9*zi4Ta48y^rm6NiaE+&D~pHnBl`Wn+VQB(YJvy0KBbmDnT(yx1fb_iq*- zez95H(BC5Ne$gWSrvGs9gBOR3*Za4Kk(*k?>?EsLv&kx2lUl_`HnoaRB(;fKH?@gx zB#jV{ZW<w8Od2WvW79~{f50d)@1;@Vm;vqLQ!llPFAaE5eB-4D#a|B?EuMR6wD{S8 zhs5B`4~cQfW5oQ;W5lV+4~y%bdRTlW*(Pq>Y!i1Tj}?z^9xH}xI>fpy9pb~9abowD zapFSFcyZm9@#5<myZFHtyLdy>DF$ur6bGhE5F55m5a*;!6kpgnQQVa>N&MZ`N#gC4 zE-~ljF0pao55%c2|3LgYb+Q=u%49JwZHl=1$5X_&2Tc{P{&=bwoiR<U-!V;`l+i8D z-_b3u&X_Ll-Z5Pi0%nMB@0cO}A!DX^ZO2T}JF`cey0%A*&736`ygExXWX={xygFO7 zXFejnw&oFWdFC8(*Q;~HUuX7;j#qodn5?;C&d#}FS=OWCu$_;JW3%RoGk4AtmuCG? zT)p#$;?<P-;<Oj%i{~>R6Kh_2OnfY1fw=UA1){nCLh;8xS}3ZL7KzC(E)s=|$Hl2H zJTAr$SS%jevRM3i!V}^nFFhgN8n8sXv3ZHuocyG??8PU=+>E7S+Loo_YjMj&P3l+r zpQL`H-#+lRe$gwp^)u5Q`tnq7!|2oi!}@IjhUEhT4X3vS8ZHeCG8}$6$RMN!8|H2c zHawFaVrY6L#4sr>)Uf%LP{V<=eulR6Si`MXVhu^@{S6<aB^$P<rx?o82N`A!$~FxA zakk;1K{<xY+j9(u({l~_ALknU2jv;E{R>SMOAAdy{B@?*r8?6@{~}ZG(jwCW|6<ef zrNyQf{Yy+gSz2QHU;k3m>7}KnOa5i1PnMRMgn)8W*s^j{N<f9_y@<kwzpN>2xEY~q zh<#SqfWEH*eOyCozv701XNwye`;|0|eYT{byI*O;{AWuWp6yrG@Y1to4ZrMH-tft@ z<qfLHiiU)>6%Dt1D;socD;vy_RSm6cs~V<8RyX``ZFR%)$eM=0oI*?7>xGuo9Gyk? zy3W#&Q)HR&dXZ&TPO;^w*NZJL=9E}|@_LEocuuM1&##wS{+Ux|@!wr$>7QE;Wm#^q z<W^WF?5?mpmRo6Ay}Q!#dTy2F-Q87|Kjl_i{;|8-;>fMBM88pE$;hj<JifTrQjsTG z9(Y5v*z@$3o;UQCm3aosYi}4VKhHB-e*1>e@?oCIQu~C-@_C-w61>N38IV83QnY7? zWk`OVW%Qmp%cA_DmQ{O(T3*htx9s0jZ#j|wfaSuT2Q1&^53{J>9A?pJ8!R1fHduPJ zjh5AKHd=ORn=D7)Y_fc)ZMJ;zX0yeiwOFn{X|ePx7;ZThRyb-!Sm7k}$CJuJbdxqb zqnordtY{K=JZWNB;goMz6i%5LrkfHRR5)vTU|}!%{N6Qzy57YLb-h~xi+cAhFY0|S zu(<c1%Zq!1gGzc+o+{}r2rBJ0JyqH}GN`P#>#4HdM}o?G*F9C<`&v*%@6Vp9=>1ht zW$*h>RrY=!RMqRXqN+DOxVkrQMRo5JK{dVas|$aqv<3VAewdwT)1BYZGp!)M!-jiq zaIg#eiuf+y`@7TI3%hI+<m)c(Cw}{EiTHkKJEzT_N;$b7+O9(Tf0Pd#M#Bo3k(rg9 zlbe@cQC)jq=}a9bu?N>f2)Guj2M5bk)4f>I%l+lGdmP>NjpW&`+$wo6SR*v*t-~sC z<PA$hm_E6ySC~C(LK)q<ibHrNbj+SI>%Q`c98T+!z64iRzd+|};D|v%g!7XRtDrM3 zXvm;+bX@__ErjEA>ONo*GE7v^(b*fGX=r8GLOdxRN{db;Bsx0II7ZG3oqFgAD^<XF zULX>Tjxxw$^x-&#Rl?}7A5U193={F>WyTq!EFY8?I{1;`yWu>;zM-JwVV8o4=qM~N z+g1R`Pd^?XNbald=$;fv1`c8@)Cz3giWZ!uI}L@y6pQOe=?#Ctbq39)&G?pnYpY!Y zr-t*U=ayFc{j{Iiv&PS&#+I%vwD;v6L|Vl65V&MGI@_gEb_An$`VlY4_4T`td_W1w zC)xB7L8g5AQkFoUbn<W3<#|2&SWhF*GO?|v+`}4~JUu8qG&tDW*n&BEd@DjjZp`;J z(BeLJ$YX+tzDU9xX%#VFQ&3PNC_X@zfw~%wE^@vV*I@cU{sy0>2w6<^Mma~=34*CH z%!<qY){+AGZ3Jdvu=qSm_SWl*<+rw0Oh%yUrO!tiXh}-)x9BZHoe__yx6)@pau}JG z$Kd{9wVda|@*3Cq2X0*c!LWzz)8HO~dkk(l-1Bf7;a-OODcm8rU%{P#I|ug>+~45- z2`4l>Y!8GBg-e9XhAW0M!8O5+fSUj}3+{2a)o@$jUW22I<O*7?@KBKATu!~gi1{L( z$?un+S?I-VIJ^vkjNhrBx7t_3jfK;|k^hSWt@guk^v)gOb2P2EO|x1U($zTy2Ovux z#PO^DZM8=nX|=cg8g1!lt9|dgIHN*_@qG39^Z}HV1piTE^>i8!nA~!x{ZLSf0_unb z6GXf$6a)<(BHThaMow|cL<2uS-r!E1Yqf8OBY!8J)8%*alOz1tKepOGfm;Z-|2&>> z7PvAv;ZHdC190^PoNuGRY4QHmCy4JV9G==wK?8S5hBe?h7XB@8^iGa&1fy^qrwm81 zOP{sc&nes~ykC|5_gUxDI_F4re)w;#_LR?Y9uM3lybE|vmtllE^>>^ph37-EBOJk$ zIAu7(F*S@f&5mavzT-!_-3NDjOFrrE2h9(&dlEQ|{B+-{99~imibyDqp&oI>!B6$h zf8=+@A#JIbTDOfpe3Ph@^b7)dcnINGx<k00lxX|X&8s<W>%D0y>@PU2JLw%dpUU<L zXq~HSvQDD2y!>znlJZ9)90fjMtp%rI;A0T%9ws_Vrjkl(2O{UEQ=>|KV{Em1$tccA zoYtwBrT7Tv`FoDj(h(f;?^~3Czw_r|PAB&$1oz`e#q$$R$GRU0L1ps%sc{D(t0(7? zG!g~fN8$M^<Fp>98F0G({6+D!^Dyom1*1q%(DBz7IK5}LBNOnmz&JfUf5XG@E=xv| zjo|tFmeaa-Rg5grlNkO?+y~A0<LVe0RZJhWqd2XrcV$#`=ZEL-2~O*jBUwOY!br~m z@W08!C@caZBm2km_ZLp<S^;1r-kyZ;t6SwVD$EZe<L9?2gH&-^ZuZDXWmm)LCvjS( z-jI=Z=nTN01O0vKTj{<vo{;>cHqU;S_>22f0j>e2wy3zIw5+_MvZ@+B(x`OuppUPg ze?VYRa7buaxH_U=WK?uaY+Sq)Q9@$>qyfpAl!2*f>4PwG8_b4obc{E{OV&c&(E104 zH8eIgTZZG@p|%ktN3}mFo$ozyQr8bAPnkNcd-{x-J+o#%GN*U$qpmZ+vvCE(y?=D| zFHT79!6lK?XLZlKgV+ZR{8HP)_ETXvr=1*rWAU_vwAr=f!X?-p0cAi(w$LHW%ogU* z^}>_7X4-A+67l?T-7|4>Bi$n=kG;orb>~xN(B)-h2^l#V!i4VWozpTi@Re7CSu?$x z9kqH#GG3_k#UmcJTcX?S3!|jGXz@IyMjqj|z}*o@0dVn3;wPcLH=j7)b=s^6taI+^ zrjxW45qiA(f`6Kk;9vhX`&c-R7L&j`_$>omFpg6`zc(*Z25izTm6E-1?=aKyJM7Xx z`upg{O|#Jq3XAmnXvfd$y)QaC<8B&`(3Or{zrXxW9DjfLo!UKZ*2M0qoiphwP5JkI z`9@W;!6~Qre0t&FIbXqF2*yl9gb;}_ViLxR=|Yx}jmy%DF-EKwi~{xs2+g<$wH?CV zDNGb53sZ#|!UAEjuv}OntP|D?n}lt`4vfI}3j2h&g?EG_!cpOja8bA-d@Ot_To=9+ zZV4)tzbaG}u8LO0s}fb|DxIoSRj#U54O0zQjaH3Ob*Lt)x>d7P^Hd8|OH?aWYg8Ll z+f>_CdsJ_!_Nxx6-ccP>olu=rol#v>T~%FE-B8_BeWwca3ie9!O7+V1(s`A8ReI^Y zhItM58tK*UW%KIv>hhZGHOFg_*J7`wUMs!Udad)?>b2c#m)BmeLtaO`PI{g5y5M!i z>#Emvudltn@ltvFdPjOEd1rZNdl!3`dRKZ^d)IlldAECy_O^LX^`7C~<2}cFh4(7& z_1;^(cY5#k-s^q9`>6ME@6+Dryf1ox?ER(p*WS0hzw`F@3G@l~iT6qLN%zU{$@QuA zG5VN&>V2Ah+I+_NjQ8pCS>UtCXNAvNpG`j7e0KW0<#WjA9iO8<Cwxx&ob|cvbIs>F z9|z9+4D=25jqr{3jrC3R&G60g&G#MdJJNTIZ>R4Z-$lNweAoJ}^WEUP*>{KUF5lh0 zdwt*bJ?4Ad_oVM>-?P5weXsi7@V({h?-%M9;TP+d?3e17?U(OY?Wgyv^Q-r3^t1Z4 z`HlAL^qcFqz;ChN62DD;Tm82A?e;t1chK*M-wD4nejoZ>^!w89rr#~U@B9M&BmI;8 zGyF^a&HlsuoBfCTxA~9s@9>}M-{U{me}(@_|4sgz{rCAF^ncg?nEwg?lm2J?&--8Y zzvlnB|4o12fbf9mfRupLfQ*2w09`<BfIeV&fHj~!U`&85petZTz~X?70h<H12kZ_w z6!3Pyy8*`o&IeowxE%0l!1aKy1HK9H4fGF83QP@556lkC4=fHe2G$2Q1~vz_1-1v; z0w)K~2%HnRByf4)s=$qb+X8n6?hZT}_+j9cz-xim1HTTu8TegbWKeQYN>D*ic~Esw zebC6Dj-c^D6N9>gW(Um+S`f4-Xi3nDptV8kgEj<h4%!*CD`;QPp`dqyP6mA#^l{MD zpwEN847w5I9UKuH9h?}P8k`lJ8(bS)7d$+8Wbl~a&fxCgdBMwrR|c;Q-VnSocz^JL z;CF+M2cHbS5PUiK)8MazZw32@1cyX~q=)2(6olwQMu*r!Izpy~^n}a_Ssb!FWKGDr zkWC?bL-vIn2ss#XG~`Oi$0653z6`k;aw|j?>Kz&$8X1}#ni85Fnj2ajS{vFN+7{Xs zIyZDt=#tQ-p({dHhHeYp6}mt4Q0URnW1%NP&xD>0Js<jU=+)30q2Gl%LIcBM!;->M z!ZO10!-~Ty!-j>83~LV?6E-<)M%e7I`C&`LR)wt#+Zgs%*#58sVef{W4m%rmKJ4?b z>tWx7`G*IGhla<7r-x^S7la$b>%tquo5QW)?ct-tCx%ZBUl6`7d~5i&@Ezg1!}o^o z3qKfsI{ZxdhvA=wUk|?({$04YI$WKsPEn_;v(@G5YIUu8xVlT-qn@jtr(U97s$QdB ztKOvErrxgJqkc<$Q2mbjnEI;vOZ5%)cWU2=;E3pmjELNb@(6Q8T||3?En<8`S44Nj zqKL&2D<d{WY>n6+u_Izv#JdqkB2Gt~i?|wbJ>u(#TM?oClKLh0OYN7{FS}nsztVpC zes%q<{cQba^y}$2x8MAJtNN|)x2NCUe*5|z==XNNclw>^ce>xje&6-;j|`2BkIab7 zjVz5cMw%n*Bby^fMvjS`7}*s$HF93$qR6F@D<aoKu8rIjxjAxA<iW^yBhN;D7<n=B zTIA=EHzL1@bVMdbr9|aN>7pv5%u$U|?NO7Xx}#=9&5l|bwIOPA)YhoCqV`7}iaH*3 zHtI^$)hOTS;OL0x*y!Zw^ysYU?C8?y>S%qmF}gn57Tp;=F?w?J{OASIi=$UXuZdnC zy)k-U^ug$NqK`zMh&~s6Gul5UFeW@EGA24EJ|;0HJw_K(9#b7-j%ki*i|LA)8q*y! zJ7#Un`k2izJ7f05?29=R^KQ(^m@_dS#+;A29P@F^wV2OiZpM5Q6BrvFn;M%DtBcjg zj)@%~J12Ht?8?}6u^VGI$8L|^8+#!3?bu_n$79dNUXJ}V_D1a2v5r{(xX8GqxZ=3d zxXL(VTzy<)TwC14xEXPC;^xOKh+7i3DsE%krnnt(yW{r89f*4;?r7ZUxN~tI#$Am2 zIPO~9*Kyy)MaL(`7sTu0&GGf|!{bNC&y8Oczczk-{D$~#@jK&p#lIE5FaBu!$@uf} zpT~a}@15YA5Rnj@kdly^keiU7P@GVk(3mhhp(|l>!n}m}2}=`}C#+4_k+3Uacfwl< z2NI4YoJ=^Ia4z9W!i|Jm362Ec#MH#}#Qem9#L~pdM15jiVsm0!VtZm|;^f4h#080q z6W1heO5Bn7cH)u5(~0L2KTN!ycr!7ue`Npo{u%wV`{(x8^{?)4?mw)5bN{yfJ^dH; zU(tVM{|)`O_21rqU;q96kM+OY|3?3B`UfT@CZ!~$CKV@@C)FnDlZGW(lg1>CPwGmV zku*DLUef%erAf<^)+KF7+MKjKX-CrDr2R=plFlWaPr97+b<#IUssa83f(Jwnh#inV zAbUXmfa(GD0~!Z3512Y&#(?DmRt;D;VC#V00}c*&XTXsGM+Y1qaACle0oMoI9Pr%$ zRdQ%@cyeNLd2)U7u;k&%6O(5r&r4pCye4^l@`mJ1$=j3nB=1W;n0zMra`M&WYsoi~ z9mx@zL`{+=LzAV+)#x;JnnulVjZHIN)2Zpw%+bu(EZ1z+?9#lYIiPu0b3}7Rb5--X z=DOyV#-RyKiA*U@(Wlg>G^ezuj83to^rXyBS(36YWqr!llszeXQ}(62lX5iWT*`%% zk5fKP`7-6}lv^p@0|N(!4@?}GGBAB$_P~OH<pYNeY#um%;KYGF17{ChFmTDhr32Rt z+%$0Wz-<Hf4?HyR{J_ftKOXq`z?%cTQv*|jQ!`StQu9-Fsl}=0)ZwYt)b`ZzsgqL| zr>;s}m%1Z$cj{ZIZ>JtfJ(hYl^+M{E)a$7?Qol*{O$$zoO^Z*<N~=!Ory0{4(`;!I z(<Z0QO`D&#AZ<z7#<Z<zd(!r$9ZWltc0BDw+PSn3(=Mc4O#3?RX4<VZRl0wAWO{sh zMtVVdb-FQqSbB4MPx_+tmFa8K*Qakv-<-ZH{jKyv=_k@prhk}zIsIn(H|f5Ef(L~U ziXN0PC~HvhpvpnDgN6;V4r(9NIjCz;_n>)$77bcFXw{&NgEkM^J!tQscLyCCbbQd+ zK^F#HAN2L0*o^p$;*8Ra#tdslTZS!Ta>mq*o{Tve3o_PaY|Pk{u_I$o#@>tr8Si8q z$vB;HCF6RAccy=4Xl7()VrFt?N@hW3b!Kg5edh4Y(V1g1J2EF`&dywvxju7q=E2NE zneSwt&HOO)eCEZ>&oggkdT04&MP#L9rDoM;)n$#z>dflO>du;-wK!{O)~c+HSzEJq zWbMj&JL}!7vsve|u4H|h^?BBfEY;x1!AXPD2j>rN9^5wAHn?-}<iS%1_Y7V<c=_NJ zgVzt<H2A>agM*I@J~8;h;46c#4gPZQt-+Dm8QBHdy6o!g+U#N3&Dm|)UD;E!yR+wI zugqSby&-#B_V(<Z*@v=EWM9p`mVG1po9yqh19QT2Vslb+@^gxF%5(HNBXinwx^m{^ zEXrA$vo>dQ&hDJOIs0>t=bX$rpL03qO3tS_*K-^>{<%rH$+?xe#@zbc#@vqF&fFQf z%X2s7Zq419yEk`V?vdQ1xo2`O=Bo0%^ZfHd^WyW8^V0Kj^K^NodF6Svc_Z^i=XK}J z&0CPSByVlr`n*kf+w!*Oy_L5=@14AN^G@WQ$-A0&EzdVUFh4jyB0nQPD_@^)&L5WF zm_Iy!WPW%4?ELxpi}DxeZ_nSAzc>Hg{FC{o^UvpB$iJHZdH&b=-{h;bq1se!mbO$| zscqA?Ye#D*YG-KYYUgX0XxC`hX}4*2Y7c1N)*jU!*Phm%(_Ykmti7(irTtFpT@Y9h zUyxFeQIK0uUSKRR7Yr*HQ_xW`v0!RJPr-tMH3b_AHW%zHc&p&uf};gz3(gmOUU0L( zQ4m-dT^L)KRG3v*T-aVXrf_`W<ihU4*@bfo=M}Cj+)%i=a7W?p!o7w23y&2ZFFaXz zy71G&&kJu9epBeLOV?%V@^!^Jy{=9-T4&Qu)J@j)=;rDc=oag?>bB{2>kjDN(H+;F z(OuJhsryc+Dhe-(EQ&8mEGjKB7qu0QEE-?bRW!9|QPGN`HAU--HWh6z+Ea9}=vdL2 zqRT~J7CDLni(`wEigSx~#g)bS;^D=e#ofg-isuy1E1qAxsCZ@Zs^SgB8;iFV?=L=7 z{C4rX#b=8z6kjdAUhG@qUlLK0T2fGgsfm)xlE#we5^G6&Nk_@#lBp#tN>-KZF4<FZ zpyXi5iIUSLS4uuDxmltr^)B@<O)RY~HJ8?xHkXbm?I@jHx}bDr>9*3HrMpUxm7XoV zSo&q@jnbQ?zGcB>DP_8{;xc_%UD>cQYuU&$TUlpWciD`x`DLrhHk9os+h2C1>{!{! zva@C9$}W^$F1u3ZC{vXum8X`cmuHpdmsgkT%Nxr_mrpLATRy*haruh!HRbEdH<oWL z-%-A&d~f-|^0&)RlwT<SxcplA_3~Tg-W8D*(G|%R85P+T1r@_8hF6TP7+*25Vrs?Q zilr6XD|S}wuQ*Y0w&HTd#}(HqZd80%;awR~nOK=pnOd1!Szc+bv{trP+A3#M&Z}Hh zxx8{?<>t!ml{+eTSMIMoQ2B1<@ygSc=PEB(Ua9=L(ow0Z3ayH$imghn%Bm`^GFCNL zS*u1@byiKTno+f+YI)WAsvTAPs@|?TT6MbWLe<5pFRN}=c~^&4$5$s-Cs(Ib=T_^g zORH<Ejn&=NJ=L?T=T^_FUQ)fLdVTe#>Rr`)s`phNtbV8ZSoO*38`Zuwfi>YZ5j9CQ zsWn+O`8B#4ea*<4@im<_b7~gVEUnpEbD-u>&D%Ba)*PuhR&%cAe9h&Wt2Nha95unU zp|z#8m9^Ei`r7tdTWx3U#M-&F^J`bsuBqK!`*!V#+B3BmYCo;LR{Le`ceROPikL2D ziv?n>XcW!j7_mc~C{7iZifhDe;!g1`ald#-JTG1puZcIsZ^S@-us%W`txwVG^u_v0 zeXYJ-->ILhpQE3rU#s7x->*NUe_MZCe^q~7e?$L`-q+x7h&Ln~QVm&#e1p+oHMAK< z8#)X<hWUoYh9!pOhBb!uhE0Zjh9idKhBJl>hAW0I4gSV(W3n;bm|@fzOO55mX5&a> zmvM!0rE#rsyK$#+k8z*zknyPTr17%xs_~lfbK{rBZ;XMaU{kCq)s$tbG}Yo;kYT3b zCabC4)M@HAEjFz(Z8dE-?K15)9WuRbI%Ya&I&b>Mbj##xjxa}>v&{u&y}90OHMf~N z%yZ21%?r${%-hVn&3nuT%}34OH-9h_2j6$I9Ub2{Z!|5xXU0rvg9auU?isIiNm+ge zE|8;{jQgRLf=KfoJukP}$z{N4;HGbr+|2Ps*mKd7JANG9`qY!#Y46lAj}AVe0}#3? zm$39sx7_k~2A?(41()9m-Z_4p6Hf2$zb$WI4(`pnyD#=&4(widgx7&)2HX)i&$!gU z-w%H}Z737iqX|)~HOHhmw}n3eUyiidS09)B>U-eC5RGQ~VTsOyaHkF--@lOj+I!$A zJ>fSJorco;X`B7c{jT)xhT~jZg2{DS1=7ILocwA`ia$x4S@0YCKZuL+@>ZMu(rzhE z3FG?vIs)_XY>fyWOqsHu<|xX3mvB6W*FaC<G#mgw{<9y27k2fXE+>CVk$;{(Uo)cc zmtMbj_+5(hd3e4qK;hNj6aH~IeOlxBZ}|6PIeq6E(SKO}<%;xq{{NHm?@*-A!~ZAc zUm&MXVgH-*zap2H!t?b16Zv^r&OZxFLh&E+Z<!+hJpKQKf7=x4^YH%(|L#w>;Bra) zFVs%&o-(&Ur!98PKU0zUk95JpKS=U!!E^d4$nVK}%Rk+l<lHZT_k{}niSI!NoxT6? z6c2^x<)`pp!14U`^~?c~!jb%YhQD;?`@<*6;V3Nq7Q!J5?Dr<Zul}C&X<rtF<!&L~ zdHyN<SU7<0`aAZgHv5ZkPs9BXZaUmVxUp~>&bQgm;rYiuw%LD*=Rvsrc>fiiui*It zTsmT=v`Kd8`2?In&Vc66C_iWc5>8#{J0IhKqi`g%|4sN0d%yYL_zU|!&;0bexesjl zVAHQ3D_xxZi1nFq4fbWG6}MiF{ZaeZOZPTMc9^HG3|ut7@X#vp+LQa|1%I(FW#B`T zn;vg{zjN*H$Nr>$&xpfOJD&dXPyJ^9Ho5Ybe>rWaeowot>VF1xza93+Azl6>GyajZ z@fXh-z5f+)^q;G**Ie~`_iX-eCJZ<i@X2R?UfA;Yn@_wp^Y!A!9}Ipz;SVz&jIN(G zZ1bsyed1pE+pjL^r-ctc{=2j_dn{YOnqI!)hZRdwfA-Tyzx65^o!+*-Aa~5aU%2wr zvv2rb%u-LB^7CV7gukA={L-sA<6~5{qdr=`GqkKIahJ~V=E0#MwgYdS$UAc5eBH;} zUz`*4W6h-73*OmHd?R_``Xj(c5JdRd?^2un@WsCQ&PndC{bC(bC$-rqA&M=ne{l`A z#wS=){1`Ixk(5S}(4XN}d*Cd{he=3dIBg%eA{lq;Gxs<t-2LTm))cZ`c;3|CqTl=) zy5k>cKYw%2+ncxCaoT^j*>eJ<d|Nzl#3PGZ)Y9{df4hexn5foj=()NNoU^<hI7+Wb zE%D;iH+ROVmE)Y=2afYe?SZ2>)8shc{MVgvQXcR2yElKkr%lMm?a;K8%Qqv_Cg>?$ zxc*j{$=j}b+-g}CxkS2SJ$<0^5`~2X_7c2AJn+LC|EGd<d;Vh-jF70Dq&&!dJOx2R z;k^WvDERyr|5#WGPYv(?*Z&M`p90R-Ab$Qo@LN*(wCd28X^wxTzpEPir&3{mLyhBI zL$y%Y@QUj4D-Di@>TQnMHOa#8HKOAYeVFia&-)I)r}Bg!{`D(I&{L~~qJ&=wKl`dd zShOlj^~<j!9rIp$)G=<6Ntk<ftuUf<fMe^#jl$FIM#uG!f2lGC?-PFg#q!&KH~+$6 zT>p0=a_|(#$89rIg{GyBh#v$Bg%ec{i|SQX>I(xL>Q@h_%Gy71bpGL6A?x3D!tY*d zc7)|!cUT&)3y0nx=7?DNjWEd4;P_?RY+=M-UK3vY;FRj!ldm|QH#9i*Tvj_)TE?jw z&i_OB^~*Dbyg$AmY|Q@h_Qoxf9J+(s1+R!bf}wSb>So0NAyr>|+x)k;h1@5<R&ASi zLC{Q#aumgG7k>VJo$%?KV}*ZQFHx1ZKZUjRR>!g}cHyCCdT&qq;V*@KZ`C;doz*71 z@c3ZW*l+(StY2Sy`}&d^K~wgkkh|lM<C!IURf|WQ5f1Ks{`S9L3v>KoTa%Dpv|bqB zm>~T9#j}pHhfk~O^IC-{eU_@^_sznw#n0Y;tvk-~R!ZURU4xE0nr_Y#PG8s{ELr#y zRYgv`a4e%zbtv*%q2S{`sAeCWE$rL-GnFv&yr6w}t?+eLnJ_=}celUVJx9p7pt;@p zS(Nb2mS3y>_Sk2R{PC~ee(j?TjtP4|5I$P@sN+$?hTH%1^^?Mtzr?HFFTdvaV0W2g z-_<_|a~5uLEV3<gOnXcxc<tQp@PB;VZS$KCJ7)P@QGNK2HICozPF8iPG8}n(%)(#t zD;(!8nQxygGdt9`S2$u%zUTOD)MF0Y*|CnmH&cY)_?~opIe6ji)Re=He|`MFsznjK z!mWwx9sWhr9Z#1T9GM?|?f7s=`t8@>4|EJQKB;>4@cWLOLDL1(&xSdE|KKfQ-L;j% zzSk;*Szlcj9@^w3OxQh6_;mSL)q;ZKg73!XgxKc-9cLa55e7b);5h%gWx|sIS&mEA z?AvYeH-)JSgxfopX@$SfIq$f-`>gQ$ez$K2{M_I1SfIbEd+<=9yXbGX$JVYC*1o;q z_KBv$j<6qmt~z+WLD+NS;O(yV-9lS@yXxf|&k0_SoW7m%QlPM6Tb^UgkW699;Ad`k zfBTGM<Hgm2?&BSf`foQn9-bBAcwx&Q9WVYp-Ldzxla3?8UdNAKSt(rp-$_DHYW(ff z@BPEk@!g+q|E%+4;m`dRs9ssN)G^@X)3=}PxFIY$oN)VCYl@>gsL8Q*_)i=@K5@d< zzn^pXtxOS$&xJX%_MLKEU9m~nd;EgKabSjU=%d#iGYs!Lep{34m>>o?n%+>~UNYO{ z_<yVYem0}Zk?tsWn1Av=w-=t;D?E}g|F*aP`;IRQ8y#)Ok2uaO{kJ1tYj+$x`_tPI zqq+p^>6cW#J>vwQH>z&$DxK!|a9@NY>KCsG&%QX}_Q?0&aLjykqw3R~*MtQD*H!<A zxa)qz`fJ12NmfHe85IqZw9FPMN>mhSpvY)aq9Q^fqopMyQj%FBDis<k(lj!@WM?HI zm7+TL`}`O0Kk)o;o-?j_e=55=ks<sM>Q0ME#Gr(RIJuB{rxaB=KmEVm8(HFi`8Jnw zNC+q6bI)~}7#Yj9Ul>OG$_j2Y&;m;Z4J=<2M^9vTF@FPpdaAL3#O|CV<-u1tU>1jC zZEo<j41@LZm-uIL1rx~wZi5^KtLLDtW+qxabJ)e@GjZIfo8>we(0c8D(mcrjZ}-)5 zw{cXTqeBLw-<Y9@F*aV_!{;YkVXxLlKJvB<y_n@hJ>f=_aN3uy-eS<4(T?+aQ*d&h z4SOh<oN?~J9N0&WCfSzpP_J%=+v-l9e`y3|tJ#sn$niM(e1IF~>mYENIrnwaMP+X) zOZa4f|JOZvR<92JR+TjWlrUdD_6bS6&0>nrt1(yeJyY&a#QO;%{K_UJRBK%zU+*f~ zpgW0fjub`BPfPw+Q5W+o<0xqR0yIvR;$cfWG5&l!+wb9v-+u?O-S!0)hBk9e)og@} z5a)Z-%BZ008T+Om4YkX2>C&?KR3j+CuDW{%H3mk^@~|Vy?|q~#s_oQ+X#6z2PqyYa zm}JF&xM^bqE!*FajJ(DRN)0Ie$0#1Jb|31CdwI6abG&R3VMW4Y=)~-=wCCbbSg-v` z)0dc%_PSzrM%sh6cSy1=<Cj6W$daa{oTTt3V+<*sK(l_Pu-dO<Na4e79@<@pqh>$( zJ}!a!t&drQ_%~cIDW^T}cF_{|OE_n!2E~?rcseDYTq_^*15uHX*<lIIRlm{v@+^NF zznx0#AF-diB+=HdKr$B%;bN)9o9|gs$y{r`|C$+1IrtlQqBfD?xlCr+J)Ra#c4JJ? z%+c}EqNr{QXo=;cefnp5IrSv!m*2wXg?+rX%#WUm_VY-^Ts-ee#6Fw%DE}42qJv5) zrhOQeu2II}fo)7d%AWK#53t`srYKmF!VeBxhX-A5y!_2GTD<KqR}y|rhc;g#|F!bi zx$`FfTD6b<(>6p;uMD1r*O78lJv!(v_gEK13rjQEsg59AxjlzJ6YOcrU#)E7&L^m= z&*0%-W+Adgj@Rtoi8C9@5bpn&D)eo+dvGJID|AO}T`jI}S3<%5Y1oyP#D`}Kx@E?B zWS=*h3`K_FW!QNV6F<Q8D>JD2Rw>N<lJKi_C{MocL)H`D@(i6`8b0GU+oPgM=Q5x3 zh`}Q`xmlli>ekcG{2s_xKBA*T<X{#Z57Sy_*7<G~%}d%z2aUziVmp@<isVSK(ux+} zK1~+Q*J*V?8jdQD!PXN|RONG(t+f&4lh?)a=K+66<+Ta@Insz&M?GFF+C+BCpW}2+ zEFF_-C&5z=t&fZOjyJ{#6&+4F2^E-h_z;5n&ZFdS2W_s%rn5r_`9RewBr5D<H^m#! z>OGZh2^deNF|*n8Qxi$2aSe`-`Gq}Rld*R25!rqE%ay<BK`-5xV)oh4u(tQizCeWp zEj_M3I1-Y7BB*w6840H+@mc<l@I^6<ru_;f<IthB)0yzgdMLDKsbYviFNW$Yf#n({ zxFz4kW21a}c_o1siKW4G$_VH$5yB<YDU`-{u$H=^v`K-p3o|y-$+taxPv{uR?F&I! zi655Fmf$Px^kA+lOE*N6NN8X@6f5>Z+J7F6Q*5Hn#S3UrwFu7oSfcBQ0ZNtc)6{Me zN<Y5?TctnX#i&bs&iW2=pL&6{53ZsK!Q0rD+~;(o&=sB&RZ+TP8RX3;K|W<0OT85b zXGM4D+3Aq^2tyXq^O$P?O5%F$B06y*k1TfVg`J2AI_t~mVfs6!d!>R#eyc>9|7qCl z>ci8^e=yTs0Zryt;MY-u=813cc|s()&lILUiMcdotO!p0nZ+ke`bqaIeYuKPIC2EP zVI}rS(9HvX6VilN>2DBb^Z=4xGq|nr8Z=h+3eLq{{0V7i*H4zCY~Ucb^v{Kqm^#;! zI7e4aKA=)_9rn7n@SP2BX!YMwEZV4+WJYdgp(%EBFFOc>n)A`wS<W+-T*35SEq3LR z5>=>dV3Y6uBB>qY*?L)fG8|Wri>D4#ZN(SX@rK~FFbtnWqoFMw#*A4L)&;9^3*A^c zZ=8y$J9|+0c`go04W$Q8;&k8N0!p{r*wmfI_!u9IpQ=|dIoysX&N_$JJ;uB$LKvzB zN-VG{0~^yf()fbQq}~z2cV@4{zoWO=rL4pFIXDbmvROFc6bKdh8PHIOBA?yLXnV36 zXJ_8PtYc$o)<_xpN-^x}-fiT1PnLGo?!o*I$KW`kf}$eNQ@8L{*vE)r${uqtp`Fm% zJCz1w?qaghb5dS$o?YGg6NatZ+3|_JSlcLvH7;KCJH-dNM}J{R*cZNbcpz3R8o};~ zU8l7tf@s=};S~CP1Kn<~qPGzV)KewE*_$qNvFnzUHnjr=vv$ygc{6yI<0hKnoyxQX zd3N_;6~qLOM|<&Rt{A8+SYKbR^eKougxpAeqz|I(Rx!&9?<x67EsvM9r0i`nnB=Yn z^Epmz#1K&!n!RGB{b?AX7RnkwSmI#wRUCE*fPPmeYibs!;%0AVRjC8l5KCtL;|-|~ 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	*w%DLlic%gF;Mg}NAs1=xn0kXBGOGNKropg(3} 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%0D% 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 KwBv>K)&B#P`DSYX diff --git a/grpc_c.64.ruby b/grpc_c.64.ruby deleted file mode 100644 index 9a3875dccc53a384a8fd8b854caaaaec6f8dd955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2190421 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≻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�G2Iz=tdLKxB*ym$-ge)FLVJOX$S<Uf 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	Vc;sdj-f zbEXTFn}`ckm@)<G?<|Hws;d%b5-iJ0oXSsmUSb$OoIL%i)SY5I-C%ib#zg;M+3Hck z%%L!f%-3j5A9?!t10MlOGN#b>FR>ceZ|hLH%e1{`r$0A|UR>bK1A1D{m=`{<vCldg zCjH>u->Z?t<IZVZ%fwB*-baitf^ZJ1<`tVM+%Or8TRQQV*!TP-<F0aX#f(H58@I`7 z7&@b2PW-hShyStZ7n5F%KxL(Z{=hJ(DB3jD>8T3%+k+M|v8y4sI-DO#H@$gx<=}iJ zTfvz#p#>8cK9d)-if>XczG4A%$Fy|BCG!P5jdV<Q)q}-Ffrw|j%ujg9jlQil1+Kgk z@w?2r-`PGlQKaI4B3HR0Sf?+>Vt8JaCS8)jUbEb?fW(8E^OvJ#>Gy@F^WDNVQ@uyp z$~1tNGRx|1tcJI@vq$p4agKe^*(<v3|IWTu%+W{o>Z9<Ej(R%VNJsM%C&=eYced3H zfHfAQ2WR#|CfRTZI+$s>rjmm7U-$jmZ{YN}52I~X(Y1zt6y5UfGmko7+ehcM5)<Po zNQcEE{rVmwMbsrk71{l;PIIY?8lmJX^i&r!=5!ELWQL=@keQ_<A8$13t;Nukm<U%J zGYs%q-xp`nWa=2~{M&{SqYO6@*L7adih+08=R${M&2WhTx2rFFhuvWTsRrN|n+vsm zbc<?rx}fSBN0QYV%;VHyk>c)8j;zdNm^=tCSKiK|%o-OJ&C7HC%{r=!OZbYozeGCh z8NGU2ZD^f&mW&pGtvokC%9W(3^ZneBc{w%%&1DvvYk|R?xYwSmgJz)Zkxty#f1)03 zVenL_3m!NA!4(u13~U3|ZDYNegLwkno@5_@VcE?V%{ue6WfZcuUdCR_%EVQQ{F&n( zrvS^+n;mu^0|sy29Tp}B%XH3cTFi_Vxn${;5iQ$f+i7;o?{~~&bh_hlC-05a+K%6L z!5h#QcW;0(cc=vaD#36O$AH{vn~8*gJ8aKntTXUVKI^pJ{wBcn07_%`J76>)V$W4A z<3FVqX#!*IxX;WouXW}xpV?Ypc2K^ZwZ~nWV_}&DK&Icv!H}`I8zylL%~$oH`GVf| zKx>0td$E455LurZM1EaGbh}$9{D5xs)x-#9!D#r5SeXIfoXJrcM7O)>!9nihgXmXW zba4>fKZyRVi!KYI{|yUK-7+dscX<%~wvA5QL6q+27obaA)b&JF1yO%<Q5Un{x+#FY z!R{23{b}BehhoExmmwE~;U8{sE!|?jGiD>~RBUzYy^?G?Vl+vp4-6i*N?7)SAlK_Q zm!{}nK7=rqGpLu}=qT<@K<_c1QQ!x%OC8zN@sBS0(SZMpjFc;(oHy@AK63mebf;E! zHb~>yYOY|)2{U&y7!q0Q^|G%b^j4*r4~5$aS{)BJ<k2PbL)beDEc2Ut#7KFp0_P_D z9yN{K^WhRDPC#X(%ANV9=qlX6c0QJjn@cBTq_t-GMGf?!@z;`TG=@6ml+LDjaYw~h z1o7gq_B(*EaW)Y!#<&g_pNed=ARH~C0^iN|Sw>&O>TodEJuuBiC3}~mtJw2gyUcH3 zQfiHE$VbAwzc=Xji9}d7_OjG9^NZerrFTKNVI2|KL$<6E(N9B`z3b(8yO_+F<SyHZ zM#*CaVfI8fcrCW1V_}Y6T!hLc4eW~dki)x>!x}p6*-+|wO1Yu7Yj<MC1oaH2cRh%} z^rN24%akYAH-lWq*j%|9)`wwo{WNH$AIap-v#oeEnYqD1``HZ++IbdQrDQd<CsqDp z*UF+G*UkfT#r@6ZPGvlajE=wkXa3K_!<s6;W?ot13b_B(ivJS#zntc>T^5caK<`i( zrY)u{+`kbdc60w6eV~hbxjR<GQIqH5X`+ose~sCM4K~ZW?7>I~+qdjG-0(i_z;H$4 z>#&2F?`(DiBL|zf*4nxZVT(TKO5zDAJ#6>8M2U`YgWj80;$=bNOqa;kH;F5Q#504$ z+gxI?O<Wix9up*9>JqV9Q&JpS)#e3>l`hfU;cG2%Bz`c*0W`!Vvc*ctmxGe6L84q| z=t`AMd@)G;W03g15*s^)7hXKof#xQA^t-$jzB$GV1`cZ9j{X&MDOt`bdOA5<Yv zZZ0!%sM3Cw5^I7)`|uz)o!G|v2Z_Ui#IM-zjQKP$3+bXeof?T_0WxRcgwN%Q;reEQ zD4P&|ZTAtGotv0-nC1)3t5#BCgtYlCp*#5hjf2+BAUwr0mlG02#no79;FfDeXt^T& z&jYMTpT6KJD#&u}7W3wI3LgxcxPGQts_=0N+x4{hyS|5Ye?P5nz0n?|Kd$eQe4C#r zbU7h$tKPPsiQ!KArc6SK+CDKiD)hQS6BLRO63kZubLJd%rAE=`5e=sst|VOvM|VoT z)SY+xvqwXw%t@5X=9UodSdrz&|6TuB`F>XaFobgSkDptKYxR#mUvmHk1<ns>z+6ky zqS=43X!_6k$0;A%S`W}avgd1KjZID)nmS68w>X|Wl;h5-apR8sK$)EIZ`x44R?e&9 zr;VFQ*xdBC8a_igw~#ZgbJ<o+w3}`%T!otRb$xLERh4VQZX`LK>)&n(czmF9{qA#d zd3G4xov%NW!%)3@RzNLn2Sax2GaK0@pa1{;Im$x0&fLea2E93{t2e*=S66S2{|~+4 zeewTge@c7yXSEfvUHxh0DuyiR>d%S)wLkK&D(B)<wuF(`W!e`jHfK2O43U+Kks{vw zdmDh;PcAb0<cmTEL8_2FW|O<0_aE!K0dWGhbL)E&G22z&qq+5Uul*FV@&^TUjd^(L zzWv|Mt73Djg*z;h2b<|c)bA{ra&!Hj5<BgtoWQL4`gfcNyp9>)^YqFSY;juBg>t&~ z&ndBMf-6yLOHAW$R%qUuTf)tM@-GhZkGJ{NPB#D9U(WCRO==3vVL;3J+<KPe%D0~T z<zuZ=`clrsbM)3+0PVAQsQfJaz=t%0s#GAo+I#}DK+GQ2JrTP$pUvZsGxUv2qJ@bK zQs17Q%{NNePk(8DW$T_{gIFJ|AIt7SjA_{NTd}c8IgaNAX0|72(wf<{RN@|-75wD8 z7c7D=w(lidg0GM>+kv4!T<tLWOG<e2e$3x2hK}iL$G|=p9ycfd%E9&kFvHj49k=Mb z-}i#j@)Y*wVXN;d{cazX&QJ&Dga#5UpR6Q*WTo4ewt9t_mevX8Ir6LTZLaU;INFIc z**>*^LU;i>pv6M$dZ$DV1RH`R^IOuj9~Z?3WRcooPriv?Tg3dVRReI(MeZtKDUxHR zTWvLQHrjK6+&O>yLn~fqNXMm9v#xR|d74je-fjHNqNJbelr95j{ZIGaA=JfhzTCd{ zBPu9w&xKk0BkdC>W!J_PD_~Atj8qv5roLQ*;7u$dxsqfweG%0J+}$RkT$^!iPVcyl zw0N?5qKt~V6DL_+WR2eTi4ePsZRT*VsWgbVtp==Fgl5dn`>Z55Sa&qoiJ9q7mq5ag zuXITG8vu4)lG&RNI|iYHtaNjiEoaBKOaGHyL;QRhzSQh&n^V^_H@FXO+myS+;Xd5~ zOA^^*JRa<5at;+klk53`LiLp&ZoG#dVMH{oF_no#S8AlqciS|k;fG!)#_s4~J$zr( zQ)4}b!*<13!#xwPQGH&=xGsM1@_5%PkN6(+%KGjby@7Hkv))Q8%~IJz9tcWEz3MSP zD6uDBgb764e|e39on|V1JD`#t^zr4sT%Wdm`SEFtOoWR%y3cpedSTG|Ikt6=&IF`L z>vz+7<~Μ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¸kb5Wr+>nP)~?S_<nt-&RH5xU?k;H338rcZAL5CYfZz&$yDP7YQb ztb3n2l~-vW<mR~^%f7<sGB7fJhwj!3_IYYOMXUZpJGZJdF(vKxXKx<D_L+}pJz8Ww zv0nW-e+sTh`)BhDa?a<<?ws%m1UrO7{-!>LmLTP<+TdR*7^D${JwRJi=|-;h|62io z>e^D{%k_q6*SX0L7T+^iY_Y#*Q1Jdr^X}vpm;P!0=^VqqcuZdNHkkPlC$BdLW8W-v zJREYIH8w9OO2oiTV~Xn*YjfsL#Nw|R-Zf@Hc+i;Ry}xW3)7Sgs<qhk@)5i=5PYcXy zZmY>J`I?{A27hG#r1|iaq4YCb4Kb#2oq+H)pcXt;%e<ySY*r$Q|H$NVu!Ym-IEGJa zU{=SXnjt00CtUnfGx$`xX@Ba4{>btN&8~?Z>yI4l=UsdbJROW(QW%)kO8;M*%jJ7x z`?F`3{NAT?BX-4@KHhr=kx6S!!K&qT3BUJ+vH9@_>x&R9dM=39OkNk+-_Lt*5_<6E zl3suwz%36CxLGdgJw6^B%W0}FTvC|*xzE`6w6Ptv!00<J{;&b4mwx{EjOiWT#m@sy z@BRJpIUUvYhe6~|P7SvVh|lLs7hitL7Y<Z6g?(LP<2Q}(@a?7kf!>CQGS`29;MeNz z<byX5|2`kJvP?(a;;o5~@9@{}2gK*f7fBX5-i<({H8(i~pU_RY0|TbFKCbZBAL=vr zoKO{~`Lxx&pFAziPqVk++Gx@d3--<}hgct?d(z{e)wkEzrAu)Ojw4$z{uQrs*MD(^ z_0y2Ib~E44g&nm;crwkr!oxC0Gc?KtmkJ19d*jw?ztwCr7;3l}f(#sC|L`wF((&=( z(?$6_^mqwe-MU$03zH8szY?`v0myQ0Kg{bu2wC>%E;EBQ%-#(@-7B7xm;ppHK6=W_ z7&6*3{}_ZxVGU^2#;p#2q_fX$qg;NY=GoMoYX9b*?KiU+N?zirjbCJn&V4zuKW~0J z-!1~&<$OEXXKoX(SLFHQS9a*_Pm%ov^Z&q?{P?XMk;8rF{>=Nr_Y2~4&2v1mzxVt_ z-WP7^6~DP7a)`d02lABvW^aG|rZVT#b$p7@uZvB?UidaF_Z@0dZq2*N{p~)r@j5<< zqcq*GiO<1*^8LPi@dTmcWbfiBkcOP!?~CZ14wYb#Pb&P8u0Fc%WyajEDXm}X+uY-2 z#?IjU$fx-?SLakt2j*uMLrHpIGRH(Z!zErbwj;izqc@Y${l1!b{Y^YYb+Jy=87h;S zITUVcN8~_%@BNRUWo5Vim|sSX+w;K*9lSiP>=WYCYV`6KQ#R6h{Dk<7T1MHgFiBT= zA8hsa+3b%T80P(z^K|e$Jr!>DHjV=#4wmU-y!Th~SlhTa{5`W<ul~X-yp1RF$<H#G z75~aro6yybLzI1o2Y&ql-7QsU&Dwz0WkxxJqXAf_hZDX-RH4%sRpQ-%H97a6`w zyyqC!hL+|EQNZU@Ci#c7{*iw?CPQIZcywfcark(^_9lzVU~%pZHUliR{sAwSCr)M} zo#IEmpF=$<d7eEV#j-N~vR4ApSD6)gL6-9w*DztoXEva46~wX!C&@V_wa0wyk9<(H zx0Mk&y3C2M+S`hI>}_)GZO!*K^oKk4w&GgdVjl2m>@p7}-i8U7rF&bey$#&WEJq8c znd_mQJZ~xqpG3o+d_4egH4pV4<{QCX_ssylswGq*MS#>l4c@@wHful0TI4b0sCZ4} z7(gcFxZ^dWJ5DCyM3dmy(Yx($ngs9t<KdEw{bq=V`KMJ)d93j<sJ(st&-VvlqCc4f zv3$+}FSNJM&P8Aq%zBkhja#t7&~-f0t0k)Uy#q#L{~yt!@iVxC^p&Lhn~rud+y1J- zEUx*-P|#%$MhuqE^DeG~8gel<T+M@j;T`$8P>!nhZ<L4}Fb*(4`<;GtP{#~*XnJc` z+H*{m-o=$58D#%OrF#Y|(|#W-8C#R*a(;Zf$IK-BOV0(3s{Jf^vwl4EYGBoPYnbuw z9*-lxQZ|iU;=;4RK9*P2e&_O-bEvC1F5Z#vf!Jk5ZeRE?b~OoKO7^|2Tzg%_12O>e zQA56it-YqxF#O^lk*Jm*#N+K}4y%YxX7{`8H!!RLvxvKHMYH!dh-S3k^yXhSie}#X zpMrxElbsyTK^1?K;>T1x=Hys>rjz)0lUVE~-s~nGO`_>W98a9<Y{iP~-!a7ja>GF& zQ|$w$oHM)HZJ+IyV-nH5+~h+0+it<-PQf#~;d_W%8iema;rnZqj?8C`8N;~XR5DW0 zGAa_@|J?7;<qlKDWjJ`ma7w8vG(6sLjZ?fj$J_7*bppa(Z$QLd5OZ7*l@5sN42ZqX zFlqcP<q`_5OUsjV|2!*nsO?l2h(hbsKQ}U7y7kYwgw3me6b}LZ<G>-)KLgzM>O`Q# z-<%w`8;X>=tx2vo6j`jR(rLnpP7~(3wf|+GLxnn01F`XV1Lz=T;6?UV>ztG;9iT6F zIOx9Yf~yfY(7lg=WM+cx-iD1%mBs`vGSAEHFUA$n%uajSJZ=X50dg_G0I09b@h*DM zKwz&w1II47j<KyF#4HOe7f@Sj9EL~H>Y<>mS!B6_HA+OcJ$ns)_xAy2;%WXk<HNsi z3+3;pd~&7y(I%=QgkmUCp~DWZ-#=W17V>9FNCC3(q3eN<RxP3H<ziIc6Pl1eJD8&a z?~`?=<F6L+NSaIC`t3rbC7vQnMxLeZ^$HVQ!jaeQHPN;9Q=h6ti~Yzehn(n#*6`V~ z-{t>kv7a%ipVIBd%e%$iWP%a5MBD5yC}5&v+y%T=<WZ%I>?9%E1gq%=W`=bRQ8O>k zIov(Jv7$2g(K*zcxD=6PQr!3JsL-*urnwQ)6-LUiBWFF!<qws(y-e`^5M+Zouwgef zTJgyq@6*)?<8S2RJY5Cd$DAI%prN_$HY<KB&e=|DB<K9@vaemoqGFr3@jeRG-_ey* zccr^Bo3J0B)yK?OQfrj0OgZD$i}jty%q{gkJ<(I&d4BjGk%V6#it6vkJwN>WOnWpt zN#2)vr))Cm7|n*bo%RkW$U;)xP*od_n)&P-$#z#CL(T-9tG*wBD(p_qt@d5tg>AoX zh}8h*5)ds0aeL1<dtl8mnOYG}^^-f{PtR`_ezZu%<%D1ow~-6MybZ&s(Tbca9a9G7 zybTu!g?M!?965v!L2<ko-Y)nI{)zRo2fU6DU>=4ym?f)V{Iq<s`999H-^9l4uyAnM ze)7`2>_0YcH;uvz>NFb794}9t2*hVM0kLYut*j-RS$=Zup|0f8w7de7Uy1qQ_VuJ# zkvj^7ZXMse4c~<o%!TIU`Vn6YzT81ZZiDrtJ;Hiop?#Su0qtv2Xotw{`&jk^$?`7< z;U(nifv~o$xd>mP>IJNii}4T_<0@hNOv>Jh5B=m72j5atU|f+ZJ^{5uMBjktl@=d5 zi0U0YjZ4J-qXuB)j$+yrQ7^HwN=EX>`EfGZcPkI!Z?U4r4f6?it1dK4MM#I)2Iy&9 zOpy~i_`z#Zm>eScqkQ;4`Ov>o3vsS5<t!IiRpo-WsBH{oGD5xb<wNdGLknLL)1<5; zoOD9%LNdEJ?cAN4V^-j@`|Go{{c`MAm2xp^H|2Or@ndRym&mxD$DH2qBWH@gJde1% zKp`iA+c#V#*&4o0?vDBP$X95%^0kJqja)zr<`piJc*nb3&kw6gY@6B~&1=GNWc{_n zZo(PHSHkszWgN;3JM6F@yg*8|ZZI*vlCe;mzyc?DE9D|cy&ID-_0khg(7<sF&@33~ z_6KnuE1WajHxL_3gWw)4<|~T*v3`-x{BX6eInr4a?z0D4)*Cz;H~6^>ipOw~R1?m# zLKWi10^$=^g^w4QK-6Q9R6MfDuab2g$+xdRB0j9ge6>7wu9jwFSHR?4y}9D~s>SbN zjGXn<%VMt+|He;a*8*SSj{tP!FFaDig46en<1IdP2{~A>)%f%5Qm@PpN#wEMwC`ix zf3yGimIJvXm&fxrc$)oH?R76YY{c0_DzbBxF?o;G4V=#KmOjBx^wVzssPYttxwGS^ ziCi7<6>5gty!ruD<P%f-IzH`Rlg+I^ppM9Xj}tGF{Cf|6OUIMy(6hF1pM|&Q{}gJ6 z`!`k5WX+ZoQvu)Ew@fDjLu}R(e$W2=ANe`wuR$8}R<W@2R}^WI0bRE?a<D5rVBx`I zvDBN+)0bysy_h?B%qmuMWZRhJpWH0RrL+7rc65_gPxdX>3S2n4kS#oinYTrcPJAEP zo*fV4_y;Fjan49HBV&slm<VFAUg$&PjxDwqVWtwlXz!XN_bM1;M{lve89EGQ>qaQt zm-Q418NEFj+GfW~B8698iN92<$Q0dT?=a=UD<z+QIfE2-r(l5~H)>!+e9`twC&wR+ z@6A-W#eUWK_5gGIlH}ry{P#BvF?3ySak{9Lc#W!%8kuxOILE4sGyZ<_p1IG=NiR&N zJN;)W-Lwo^q0-mbk2aeLq5Hnu{t53^{IYpgeBwL@0ec1&Lyc-wOie5>gUNs0Xnd<R z+>3_HsVfi8@=s^(d+ONfb;A`0Gz^c<WcXmR!xD+%2Jz|?hor~1%TJNpiy@&DY54ru zl)}ahb!Qv-9iGG(2EG-XHNHgf$CcEbF8HSqg{;WsVi*2%SBNm|CqN(Xwy(#FPY}d& zO$bb_hlnYuvPPDb`e?k9{-@;IZv8PlP-ht36}zm^J||}6W$!dQUq)3EQ&k1TVyW?F z#d7IWlIaGkIB^<jJ^DxKEO{!uJfU!&FG)wRDZME1F$i}{*LsIpTwi1V5c|-c0iRg2 zrj`hwAj=?_bv@Pt>;$aZ*o?I+=}it=F*&{ez(q9qXi8o>h$VmGz8iW>hf3~%v5%ux zk!-MaxXXSem_0(OFES%!xHCddAcGkpT+S$ByY^L#@NlvJWWt$q?6syycx^W8Z*jgY zHLU-X>7^e04Pmb}goA%vLQZqvjdi>5BMX7z#;9JY)u9s2E6TM7SxNY5{LjvbC&ULV zfhx&Uv*2s#g!P8C8VMLoEfNGDGQ)$%21_z4^#-L@wcfG;(QhIHRGnmO>yp&|Lj}2F zT)&n)(Or!Bk%7o*icoKd`rbaO8`MtwC>QE0qMsWuZw?yHjwhAsJ5G%@_{6M=#11+n zgMZI>U*%`jN<yJRGRN$0IU?TAkP6yx-5d09!H2=J!j7rG9qVA0R&Fabp*i}-!{~&r z@JX8Ct4L)3;qZ9h-p1x?@2`jiLOy=m?R|Vdn$tYF!ZE_-<McP(N|DT*W<P5~$<^+7 z+)Czq$?V%8n|+$eUQhPa1ZWMJ*@0O1b3-B*`eiQki%s@$H|Rg7K;m15Js9sj^ta{T z*P=j;fDUXygRQ_$@;2Nr00hpn8p@@n_}2i-b`LqJ#$1+5V{^m9e0!TJ$rd7>{yIMq z{K=~grz)F>vX?Z`Pb+p~?C}>XHf@(HPz_JD65FDTkGOTQ0zX*Qn1Gp4c0PM!nbnRW zOXERhX=d2c+AKessn4Exg$iK}Ft=>CPg^6tMd4C;p?&|Q23c>T%nu+F5dY`dQg*^o zY(f7%LCgg_4tCt*Asuy!gIJ?TW}@j?F~4oK7+xKF%VK-W<)$&xik<csIH|NnxKW{M ziHrGTTI^e8+6q+r4RRo{XZyO6PhP*ow}I1E%o>2bP(Y)t2_0LVkq_E#tS^STM*hVo zuZSG*c<=ooU%88wW3@NId}F+g^?ax~@7l64%g(2L-rD7foB2X^-(Cvbwl#4zuRY|4 z<Y$TQ*<%6MuaJp6TE8(o!Wkl%hlO_Zn;fHo%&2zs{;_JItXXtswX<Gc&X%=*zAWt9 zlEcjSCJ?>VWB;F3`qpAUdYNdt+rCim$cZ=8<C&h3V6R9t43$AxZN{43%kW}mzxPb9 z>5=|qkN5X`yw@<XaNza9P^d_Zj=JxP_h&a4-|StK5wjX^uXLO2UxS~Ocpoz(gOAk% z-y_q1->p4XVn{c9tVA0Bbp4h+=YOcb;oemJ!qrNI)9ncqB_<f;>gjao$NPsp-g~C^ zHppf2&+YO4Xx6*%i?kHk8~N6qIPUmXefJ1C2OfD7uY;^>7qdUhiVgC|3ZpAe&8<5s z(&-5gjC3L|G$TR&?12MV_+%E6*bQSrZ}%;aVTYzS{AtATn((Zc2g5r&T=M1|DNS)< z;)+Z9WXXGDS`V8FuBr5Mk4!%qLpq&)Z1;4-*%|$j<<GD%&lyMPv0!v9nzP#R07ecF zsri&hA9s)RU@XnlJR3(F>rNJ0wMddI&O(j!I%>C*38Z}u;~lYcmo`0Jg>2(H4#6O6 zXqD}?82EC@Ut3l|n5Q*sPqM<%2S&7YN)Fjm+T@blfmc$MRoIdT2$sPS3LC}TX}_|f zi_rEvR~zUHUs4NFBGa|^nvhUB*`r&MTCxNL6fn3_Epr;<UPvt~fyBhAlw9K4hirW< zA)|fWWH(%+HGF0}9|#?(&ex9><uLH}YR#kBv|U|nezlhq3iP2bx;l6mq>Z+YHJY}M z%zoJ00GoVQ<1d>ZzG}9pQjQI=)yD0S%XXMlzmKI1<F`kDrix&HSDWjs^Q^9I&Scl{ z;}Q0PcEM7G@|Wo0zsx^~{LIU<^BYn-T%X}Dt+%CcIx`rXT){DUMBn$RiCvyw%ib=c zlO>1J`>*_68<0?`W#n>aw~1MdbL~mupHlEn1YV^BZ>R!w3{#eLhfwK2P(W0@>60Gi zaUckv|JUWM|A*xresVUc$QHG?UYzErkQJYUvAo+pSz0|l;MX{`?K_t9EPISy)n~Wo zY1r89>2D?B6YM@Po0FqFJfuB>;536P!)pS0tw6>m8dpkz{g8xRY$6@Likq-2TTL2# zptn=>X1H=&2(D}rS7!Rh^yk7BRbm$%joKDMP9GZnO4-9kq^;G4v8c&gMqUPQk;DF( z`!uY0s0i)4LbgHdu9BqBHJ_)ci3FKr!ivjug0o@I0ve-1;3(i%w3vZa($>N+ir1JZ z-%`<7NXv4+JOBlw&b!<6U!Xg5mW&yOSAQdMFvvEaO#9OQer;Qe-Cp8sDNUAS#w+uM zPWvfS;p{?1%$?&*6FTi`7Yn8W3A>ffGriIlK01Koj2X$yVq6RMDKD7>nq(~6v}4R{ zl08JJ<iE1;v7%Fov-j(W{*Ia`mJ^&^?6_KfQj$5grW}RCry*FNS$&fpUryO$(q$6| zM@va%>@f-_o(ZP)9n;IiX0w>!j6WlvH0Q)^(9Czu3W}^*8L{+>W^G}HyvBga$%@vF ze8h~z$1!5sIJ&}$Uj?skvF})^-ntm4s*PLm5lL$#9H#BvO2A=R5IK}vH=Xkqv8+py z+}y&PEOv2;z2Qa4{=0703ru65K*gG7V#bHxAlisc=NrQ7W0Ui7CUC6XZc_o)nvoCl zn>bxeoE__pe(^{1S&^Q=iBVj*W&aF4lOmn#{Wp8B41a@B-5OtW@;z6cr1_=VYz*6I zp9)&^JMpgGhM#F{5ca1%Myz^SMRvShNY*m{;4X;GMhsvc7TR@=5pLrDi3~)TjneFD z!La1bu$%U{%HF(?eyIY~{L2kgrmiYGQZ>fru@wMCdB9#RE@Y^214D?BiD^@*O5;Pf zUnGsU-M*dtgx2an)QH(l>FgbL<!h=?9))^lsYx}5wF=Xmw^7l$gCf-w_`aXf(&4ch zCHFJqb=ptUA0Y3SHU0Z$zTk}(bSd3MxzXtU?e-%tFw2-kN^1NaLGNdur<hCcb)q-4 zX02}XGHd}2bSQ1lH8XGGip{6pw(gHf<8=TVLN7srLPw<wim==EN@jT%{Z7T)PT|9X z;^gh=@uDRFx~7Vl@A<O~Ot)8lB)rTGA=EcqsBqlic6*e#v|I1|T=j$GEj}SX^hSQj zNC(*+fau-@ve#V-&7xTM#B`Enk_?D%909^`aYo*`^19N*(JDgTi3fbe{vC+Y_=YFc zc=&NPu@$!LQ}4ZxnNK>|7F*7&T$LwJa>oPKV%=;r3@L-=hm2K8K?+~uh{@gdG0)N9 zs@7YlIWsByTY8u8#cT^Hw;v~v849tFT(uTqlGZ)m9pX6#V%=Yr1MB^zO5=-h?VIlJ za$z7IcH4QXC6)Ea_7mi-r950Xo5J&#%8avbAD`09-UjI~W8%f<7PY(Tb+`SZqblti zP%~C+658Mm`w94;4i1l(a9gYdejfr9evWldI!=-6P@4XxZvoSFir61q!ZaN$<3Kdq zbetxszYW;ujo$x+-b`)=&^<1o=?0KL3(&&=%04eF)xTfTzMs|pyY@LlXSe;1QNmm7 zd$oM+wr|a$toHp?3AFENK!MgL|8&~dctraO-1hwii2uHQ-c<Yk=mMH|MEjnb(!G5> z^ow)^^LvhJ$L+vrmiC*rBoxBd39koPHk{bkgLh+dbVc1!2AOOrZ;li(OU+xlrqYqo z71*faGt&iuXs;w^OzgIwL}1IWBB9<Si5ts9E23jEGW|CMdY~SyS-a{&$r&m8lQP;2 z%DDL6Qqn7#Z?)H5U_MlXs}7gNNcez9#=uEIv{Du_bvSd;1;7x14lHiGG`BpVMPdp1 zNg$Fq1!<Y#Z*$y2v@?ag{T$LZxh^|BP@cGf;L;R+#$FGU+yCTSN(*M&-!byf&C35} z@52UX;6<lYcC%liQ|5Jh=cu3TC8lovx`iJ#Y1}n#(9!#BS5;iC_Nr>S>23HW>p?ZK zhs_&P3Gd<$`M~}}OiypayF3RtcY+z}Os=)X2Ygn`-}^C!nYP+Lc}9d=;f;ta%7x|e zp1#Ex!tM6F$%^szHmo2O?@raU0@>F_qyK|X663G=`=G-ywI;BtQ;3n_U)ZTVQQrGm zTxAx0ToA+6+pv@DES2EdoWYZ#5;S7<D@Uh(C+pX{coL<w9<>AmC9*w_duQ*PT#Nm3 zG-1U336HzP6Iq@gNtD!gUgh_W-=On9{8cRr){l=*JC-QdF~|BBvSnNK_XiSAN^ipn zK=yObA{?cdoND9SB&gE<S*bj#wC`N9DoCfAsX`#HmX_fCtmSelrW?%4+j36#Hj3n- zS)6ISm3H{s^3FGQQhch1%Zdu;Uxy`h1{+zqCABSghMz6%pgXW_tY@C?dnKAXU(s;A z7G2a;vuNyL7wh?_JB{Ru*U8K{5`={3=W*AuKVp{<A9>Z>zbfORz6u66jcjATCY?k` zL15N9_8U(*op-k)OifEAPPKI__KiY&6di-Z!P|H`AKUVB5+^H>9ZOa));qmjsn=vy z(??T&NzHlA{bb(w@nqDTiF0_>=<akdCn7onF+)uI!fM2x2xusmcol&Dy)AiAjVHI? z>0Z<C?(a1Bcd~xxpW$ov*RztT$-wf+yLs(34;qF@_3yg~p2_{-7XD55HvS#i>wum9 zW#C{Z!)D(5m679w6mG}Il3$P;@x0`(TIa=gl~y}9vz`Oxn1GcXF9oDy(KO^zP873# zEC}-XC!f;=v7$}l=d=%i7XnbJFOlkR@@D}a3gF})?D-=Mt08j39m`gdE^p~EstOJH z0y|;~LyddeSo96L{r7^LD)tQ*_5q&BA0N8<FB-O6>`N}_lhc-eW{!z<Vu!NvJ<oD| zPcCAC_?)if8jeDfgi!g!ekN4e@<sC}rYB~myX2p667#@pd6c#<OUw*bOFH2z{qW<n zKqII>u-U$xVpW^{(U<0rmE)?vCL~B@f7P2|X0LeWJMD)AS;Az8eO%CN7<t2Zeo~XY zjQo8TY3*#RN~Lw5Z>RiEYqYJd&A#hmBa6bt#9+ZP&_xZn@~T9Qv5~8DvR6C>sb_m= z&Xn%W`N2O@%^~D^PqK)eh9_h->8oy&TFHh?!~A`l9B+4P&XJ8s+s7{c=J*)=?q%GV zZ68lK*>UzD09vy)>U=J^Unje$9W(f9rjNYfvvK|JrY~OUUVg*hzpVThP(HhS%Kl0B zCRFq`Y@#nM)_irc<zhX<Uv~qqs%^o1u4>+Ke8YyiI?duwD<@IjmlfeL!C5SbV5VXZ z33b%-SjIr?iGI#nl?K9J#3SxNu#XC8NG0s0Cz}cwWb1^op<K#hWrB8LPF>Q99-sV| zv0qtXxYz#hZw5Y#CEmts=vb;Lqne&Im?bj%PprEpA5YDX$lCcQC+m+5GUNE0T6!b? zjm(ML4X-%!y>93G==`|(4qX&1w4v@OEo;hUS&c-XJF1~tKShOc?gO`7+BXM@41(V` zO)zZ9M!6a!7H6%KBYd^Ctu_Z(&L@@xZxcK3Jo`5H@4}O1*M7^au%E**TH!~m$OSod zKe3`Ck`FA&0{*>|T-vv00lh{O@KaQ*k9FP%Z^M<eg)V`(mneHSvh}nae6gR>_`WdF z!S|#u!Pnau1Xl9*Q1F?@9SXhzfK+!n#6Eul^h+T9QuKD{SAjdk3{cM8x3^s6j!|aD z*~3&;X5v0aa$f4zpk3<zriJ`X%>=fNS0oE0SN7JF|2ehAJ$$;{8w5Y}u|MUMT3Mo3 zj8D-%v#?{vPCZbabwp<@nRiLP<9yBR`FOC|bcVmsSa~V`=n?+ml)Pku$f=I3Uf^ER z9!mS}8`OoFI)Nbn0Pt~F|J(B$-E<BhLqw4Oi25ksAD=XkjT0F6E!*cZCSqb@RX2ZK zmcN|M_cYjQNA#m|{l(4?Q*XT)$9%gV=bzq6=xGFW!1x5&Cpq*Ff!rK>=3n{PK8_(T zzPS=_RX?FSnDj>S+tnr=!&1o;amaIYpZ#nl21n{hMFolQb*TLZ=c~bi)DpLhsc)!# zuaoLj)IP4lq(<a1TawkD@K@~-2F-~T_N6M3^88!8r1%d;p;$(rBo4CkIm>^Tl7F)4 zWJGg1-kR{Y6$y7Pw<Iu0vQIfyVya!Pwp-kj+6wFs&M{_`6}=!FvZCKe&jcK~MKKd! zVUIWl`+*T(4gkS=;cTJVn*2vv{<C#rYx1!SeumkSPi4}ZNzKBS#Wb@d$=|}ny?`@Z zk}03jXS4yAn?L$0oJ{M8Mq@h?<FBx_?iAg1w^D=SFG5JRu1pj&tTJl0USvne1++d2 zLHzXdBUnuK^gnlXHEgxoYn36VZloKqI%Sx#TWDYSDdTIQ%q5!gPZwWc&<sw^mojyz z)9jxL3H&zp@lTkH-o{%@zw+gIeQ_%yjC+RIEb%9kONaJhF4a9E5SIcXF^1II#`nFA zH@d~a+S@pum&E1#F_bd=W9FbsD?#4A(;<M6F3I|Qo%5M>kLWmr*B1N9FR0X2>TF7v zK;3>8?*C*D`lsy?5sgi^(4fG6hMc0dH$|bmj95@GP*(rO{6qS5=sN8BmGukXt?!Na z;{=1Ke~2T6ocPOq8%n1PapVd4yOn32Tby_lot>VqwhT|4e0M?WUB?w>*B1#4$;F4R z0JwVfCib7!j~Ix}VRi<$*uS8&#UZIh@k&~cw_c$`<@QyNlPKpsIV_Il$JMQP)MQ&W z|E|ui&mC_X=*A)Zy0?MFW4hmwHT~hSs#;{tXM)U-TVNk}%pgE_mxr%nu+SZ5iQy9E z0KxB97dR$J8)u`%LJYO#_P-oP3ZLZo)H>}I0>T1F>%!0wwKK(uNPgB@)Hkg)xoKr! zmR}tG?__MRb!3sT!AQ*-Z<nS=9BslwrUTZ!4V$ThQzZM1B`A1o#bZUdTD*;~@sYE@ z8f7X++an)(9%K92%gT9KvEO(gqEm}wmkp0j9Ui-^Bs#SuHg$+x|B-hOJ(eHkIXba0 z+^2n<5z@X5{Vp5Au@`*jd<tZ`6}wCrpz@ivDgxzIAQL25p5tv;#bbcOCpoLv+i*GQ z$Y)$7RdD56Zv*?xNS#;gB)=?JiZ{fAz#|FeIjF42?E<t6K;3AkU2Ltc`bZqlD5EWC z;2~Hc18NZWOvgBn2slpDNb0AEmL=wkni)CJ<$PLfKB>+4C^#$J+mHje$JpK0mtPu7 zOB2I*)Ns`PESR$KMhd0OStk^zH6(u24wzyqekm^4P_aD>HzWMKNl6ufeJ#v+y28Bz zL`K&w7bTRt+=@?uBrWB3!Z^Ru3~yM(G}E!~pfU)IHVA|xR_sRfAU<aXIu#DR6Tg>z z&ZA(d1XpqeV*NQKYgPDb1kYb7$5?!5m`dz*VpEAR<&E4Wr;QFO^Mg)dw6;*Er!=0% z2M&O$pzBN@g-;j#9#-EP%rlLhQli0cpW>k3@Bx+-rzHcJ4)iu)Hg$<B_M6WWD-x&h zaQzb4O+0feFR_Wk!SUkA{1Pgt<3r>Qo*D^lqf<)~Gx-%FX+HW6m<gA^K?=Gov6~D_ z92{f9E%7u7z)uV&A*GK+3fBkKxRdXRGN5G1KSzGXzE>oRaaUxeC+aV<e}eFh-df~L zfsj<$>#easg>G?*b}*msg0?;6F@nWSH_|=vCRwuO5wfl#Iyn>nt9RB?)91ft%3E>2 zAu#eK(T11MvCjhgnhiJg;ns<wa31Dbw-Sb<RN_HOh<{A`DisTY2*uvmVxPMd=fkX( zS|`V}6H|r<@HaoK@LKE%0A8#Gn>2q00OcmpfBx?BT&87q`=sw=eOs{syPrJDu;~mF zgaSnS9r%=K8o^!zUR5Hx`p<s^c$T=Y(0Rj(S&0q!J6Y^Ee<zl0vBRwWq!NCrgx~#v z$-&c0SeCyW{OtFCYv5SXg71?WE~HHISM(eXvB$IVlfMDjmy)TeKuir03hkq*CDQDi zRw}Ax<Sm3*aGW)36+`GZkKp)-=dYzyjx};6kIP$^L=pwoto1<517hN9!0BGz)j#vh zQihHLiVfKEPlqnpu{6{K4cjXq1C(L^&VU0CtD4i!RBh1%=>4NkQ>ZsrSA~yr`~a1a zg9Tw)!8HAVy=RmO1pfeZ-f}Rb=W13UQeT>9l#LNr&Li|l(Qq0_*b79oR6d8lT>6~l z;wb&tse^1@Ro3=`WB6`rK{J_2fXiQIKExtp%;%b{2yih|;?7fZbCx3SbI{+T><eZv zM^amQq3mOMbo3~>Wt^;2$hyQ}D=tjg2lNl|w#FbFET?+niWB~)cw5&V5<ag8ADr`C zbYHbGjNfFvy*O2WYna2vIndTZe(9U`1WYfcay$?}ZU!M|idLN#_9=Y63_b@myYRnu z1pE?vHTuzkU-I9>k9joHe+2}~?aO};ryrZ52VXR9Uivj6YC1<aYV}<WDYvKa37do0 zTeh@U*PyAgRi`_@GyN;E{obC#=~eZt^@Qy9DKPU4t7=MN_$wmb6g5Ph$04RN6YO1A z@F99tVUK2+E=<v{C%n@+%byMfTy6#&6V!qBZw<5&{|=bzG!*{I!l>1x`y0P99Gux- zk+zOX$RlUrHCC(&w})|w$z3Rd;UOubpyM>GmY0paWRCrn<!L+F^|W2CIvnTW+vj|V z^U#2HO?79-)e-t7<&LmJ=NjYjzxNkr(~s_`NcrnHki3t5^)JE9aoG_shDYAG>>lT9 zmOY$i=6VfW_k12^XZ|KMA+mK%4L*_;s78(^yxzDl?R%Ag0dt0ydE-}i#d53mdxPA8 zur~~~4$9?oa$Eid&aP5Tt}^i|v3xcQVOV6&2PeK#M=S2Oe^bu<WhJxGm4;%;7D-AM zA44FJ5-uaF(ljEHVOQF%s*22<%RxNCMB6yQ@LFW#bvk}ha^Bed(T(1Qr$Nc3oO8~p zB+9Hk_J~JlXw@$7J@U;F?*uy=fAM&Ax#B2ZvJXBCqqO2NZ?BcBJtsV!;P*RaG8M&V zlgZ>i8#wVxJyny7=2z8JCGQ%&Z{yhbs8fll@mQX>k^?jNITHjG;yz{jFu)_Ti#V?} zS@(exJ&<kw(Xw=4NalNds&LcF(Tfz1%`QsZMt`~Tp~w2Gk;|Nc#Wrao>%&(`K+_c` zQ80RdHjOiFavZGFs@fM!_D8<J#F9UjE?+#87F)Akr${Y(pC?nQCN{H(wSnj%Ccb{} zgKhSWICLDTP<MeD`PqxNoDXN<Edm}bY5dr4LeIU8AMgP%_G#(T;pH_^K+jrX`kV6u zs7yRKf|E+>ZcohtvVj}R3-92!e&Tos`+;nC@8Izqnjn*h1FmxtS3@Mu8$FbbN5ecm z#xEt48Yq(9^b4nriK`4vbK-X)E_U0W{~Ru8_r}9~9ce?7_`Jhb{0c7XfjCSLo$$BQ zDIBR*cOI;>6Bc=wbOY{nf%`cmQN&Ad_e~d<X>I4n?LRZ#D-GvrW|!q(eBf+J+uim7 zpBWzbcGFXaEPV+*E`P|O$8<xFEPu1@J;U{7s(_>KQ~oGZ<15_hZB9rD_r-%#H<-y( zc%bQ23YbYM6TSI```TIA%&Dv4Ku{#a#f5%^A1f=Ksm6!AF2ZDIdZg=cc$O|tiOzG5 zI&qY|nfxZ~lgilK-I`pkc#47cPtTx5@rw&_VVC&jqcz~p7-Q6p)5wH6O7g-mLh8s| z#)lQVtxz41uzy>bn-d-HRF(*s?4);ZAH#rH>hKk=PyG@x#}AC?tK*WH5i%RM*jv2J z@mxQ<)9xBh^Q?zsb)xS9Woa{I!Y><7IkzZ`NOq+3v++}mKPELOjJ*~9n@m`id1d1b zK#bNsko>Vj|06(a`UBg)p<KUqM|PHcbN$<hpE=s5w9dCmRI_#Bt*e_)NP(1>9=j7k zL;S))2{aveaFAF56X@vpv(x$#qkWU$ZGgu(CWo*<yW%XD(^|uou?9l{z_DA_Pn1UV z4O8*MpbKE)F74fCia~eL(e5bK%n5#6^&>5Fei!<=K6R~|l);?#g3}qF@u9Dg0YPuf zM8r%dUz1O}^!zvNt^E(}{oD!k0jqx9+neGC&T*~>qm*LSI>Fz?hLFA_dz~Qa=5r&J z5`SinNt-@@z!_s_nlZL8(>D8wuVuy<-2QLyulo=9pOwac;(%`b#W?-1{P~3$e}49I z>k@E32687}{Vqr4GM?}d^wImY1<pGYkWSi`cyMv*eP}}OL!znt11>k|neqXXo+=;J zVUkbl)Am8w^Dey|U5rF~o%KG3ASYZwGolN+!gFx-6y~tL<#_imupjp!N8s)AnC~3! z(ze!#g=+Qyd))(Yn7hF}r4fu?%-A1J!FN^0Ie$BLer~oIECFO@6I$RpFZnzBM!}R- zI}T5oq>Pbw4phyTsJK^vX+)GQe;dNb1XA(&F_y}kqkWk*vkDuC60>XcQF|^Rx-$5r z?Hg9EIcal~ed@r&T`k*2Fv_B>EeDT>KiSH+rU3cit1xG_8u6#VX$F!pd363z+MaXm zK~3d1sv)sKcHlH)lzv5`*xUtVSj4dfzeDT6yH2B$Hnpn%xBQUKdG$M~{w!Ff_i1;f z`g_1qy+3$g>V4?rdLMGH`)>O8A${^3mDRr>6d$mF&qjsVmr~r7N0*_qE<3$|OM?pO zaz<R9{gWTL(rR2$c$}SB;^u7&pH06NNnZW<A(NwSEaG7#P!TcAgzvwHoPcXr31e|P z{Y0kxbf#~cOzyr8y4w}noUeIa_flqDIP=|HjeEtk!>7$eICmC=`=%L;D+z`UHJG>9 z-}z}K7Fm-H^iS6M$o&_KNZssF;G6vsT%Jn9h<yywY4HJ1F+kML)21SGkS%~}5Ot1- z&ptQOndfczBa2)h<!z9p(VnK_6n5PWqH6Fd@L!MjzkPzcnl+(BVB04+>uwXw+E)97 z(F^L;6%%GVaM~x#Q7%f&bbqy2q4#R@n-=LN@Y=qCldyvE36_aF7pvN5Jz;p4eeBCP zDHO<^_NOb|PM%QiZTJIVVv{OjvkRlEBda~puUGgsG=4n4Uu0E*@smYKo70~=oEG0j zapjyooN%Mas=~&tq|NUWSyjY4kC6kOaDHS`MQ#lfd&11->!pN=3hRFx!oFBvUUi1@ z;t2r48D0pv2-+%&etmSfFAtWdWqV<t)eGMh1^8&im^v|TE-AAAX30v``8~_n)M*-V z8jWy2O?N&)v=aO1^k-fxm+8<QHMy%j)#Pe<uovhQpWhhocW(@e*lcuc!v50|G7)Y& z-58Du`+(jxy==4ZAIV9mmxDLw&!Jdq7|`-(FP1<1e9_hWU`u5G72XGz7q0g<F4R|5 z?QOV?$Jm77^)Kf}Ck(e@y)kBW2IWm<qk^%S<=ysIv%#`l)o|D=1=mn~;iTc5+5j68 z&lTOPXu948MdI=P2wY4%eVfWRC=nu}QbjRna0J-jNp&(o9F3wvY|>0brnlkuh9sZb zFF#;NLc}hh48Po3EEsW<zQrEp00^*e1A?^J!GRo9g=`#GV*dt}6O7%;b`)L7aO?es zY~F}=nnOB$dy#K7h+pRS-uq9`cc$;j^&E3J3P<w0R1u8sO-9}K4ZO4TEBUPL_Re^- z`w6b(|Ad*&CE;L^7)u_<K7*<?96_LSiW@gTT<`rqkvLB8-%yPSot~Jo|6&tnONQXy za<+&KfHAb$%-eAB7t|D+R3ep9V86%s<V}i^w-d*kw@Uk_MF^?bq-uMX^Dq<PV^6?V znhKs@Ht6ZSdeKt#LJI2kHoRl3J*V2#I$E}%IAWgW0!d7j2i?Lg?_K-|*fI_i%-_0V zUmu-V!!Po#+x&8-mek?{R$imv%S~(|!D`e(bcG|o3F0@7sbY!y_<-M#4VHNW(XKe3 zf#NM?Nqa#}=4XE>``0;l(a2X9$gOcvPoCkb4(~n9rpaznlSv}3gkYdHds&f*gJ^uj zWZ^&x2z(RQDg>h+hOb~fkFl;(D%ieJqH>JH8_gG-YTxBUq%yzmEfe0(fZq9>G1=D= z6&KD6M9=1QoB1UQpCJGZu{~3>BIjI1tO{W>uPFJjZiv8h#|{QIfFPIb#|)J4GTB=e zhrXA?F)*0vg>E3?1MZsHC&!-mV>Q)n+*U&mZuW`~n5o1&NKCvWt2>pWijkSz=JKEH zyTvHy&p7ZcW#8#N%yDz3e(bwA?@u<Q-iIdiKDwLzwn?8#`=H-}*XKT7exHHY8RNYy z123WXYcue+=>7fqsrm=3`hn6j<(KOH{cx)O0gvmwEK~kxdjGv!-Z`B79)0>@A^2#0 zp<2^7ckkTs_O};93r5^%GdkMG8OJA`Q>_i-aMys#_mctDTWP=e1Cte7uUxEDSvQjA z?T9+2yu@jD_rbOkTvHxUNQLBsh9CVJXAELztK|{#GBJ}5*KuK*<XzV`vSj2%dcIY{ z%Fk@GBtr-YdxP*&v;C4~w-&o;sSq~ar?osX;W9_rz}>r3ApwT(fbICpWhOeChG=hr z=nvC#yTnQ>I^fK!`s8HQpSH)NYnRGGz#_-(Mi7d9>`=@GBe|m5N5^SZ(K*F<#Y^1% z6~=(Xo)Q;j+OyZ=sq2@uUoCMSV6yz5to6^yj_0J+yl4KS16GN@YG$SQrC_PvU%Dm3 zA9~NfJM}*FXL@hAGnL=r&-_ez!=DYQ^2T1hUPY$#f`1UFof;1{Zu!KTXt(viZt|_# zx7D}zc_|EL#z;7`SDIs`&H+Mlw6XMz636}liY`9lh(X=RpuI&2#kN=4H{K+1H1A|j zo8$WHv>#stJYoZ0GIQnXEExiS5pQUBTd#@_l`kVPjS58hY=3Z=;BUoD>WasSMfUDb z&53iga2O@*6DYxVBmWBQ-w&pD@mxHt-}YYgyzEX*3A*>E>wijJEnJ}N#^>+Yp7xvg zhRuh(@M!yV)oA8UMd6cNOLAPXV54W9ALC!dK_Vm9oqzlc{><_O{F;o;xU;{jNMvUk zSYV$aGJ)}qLGD@esq&XoUM_@8!Bni?>6A~otK9i-xBUx|j~H?HmHmwxSv5738EXFk z_!jOB^EJIw+<nJdI&hC^aUC9a=c75Fu)VqjD2@kwcBTtCUe{jg6j1k9bCwCFRWNp1 z#o!^(9jsM~-_eGvcrb=`F#1W_e#q2ZFF;k4@kUOUftErN(N%)QXg4dJLw12y#Z0Qg zzA#fWN6BDGQHC2uG|{LLH%PCJ=c{gsr4X|5V`ynVhO8ycY^c!T#{ZYJe}Rv(xc>O@ z1cC%5Zct+J9u*Z76}+@TL9-HYqe1ZwYLyl*Xsc4)MW_nF-6-4bDk@&9^@g_gX1}e{ zptS-)BDE?AUQnx|Sm$B2m8wX*<@f%ad7j-3+W+hI|NVHq$UbvFbLPyMGiT16VF=v( zUHkBRCOg}z!FrjsI(HlorDAZ)^5w3>I`84rh9W?=-9UG24s3MmjuNG(cp$LuR;p$7 zW6So&49PPB0!PM37cK{kfsPwO{TIxQJ9{k0-F2UAH?U&vScJHzD@T4D`}rzWP18e~ zkV<u9V1KUkE1cyN6%$g-|J}tR5|~y_>uP;v@FW$t;J9cAFg2r6jCYQ!>Q6oHl)IUr z%h4yqv){!e1?;zNYR+9!9lL%UJ&r9Lj|B6d%!--Y7j`yycro^7b_<xY%-FiS?y>;` z)wTB$Q{HT;{Gza1iT}m*gcfF7=|Uy$v%UQ*PBpu!YP~ul;T6z}`}eTU1n%eH>i=%y z4X#%-Eb^$ld~A1pVQU}$jIaPvevm_T?|Zyl^<<#uSR(nAw7KKCQT1<S4s-m%@S6Y) zji%0X@|TVKt!=T=$9<`u6Ki5961n-F=%+lBJ-XiQ6bq+1R~wQq6%(@?Lr0=VV{UQ^ z50}4&YAP5?H8uzgaW+H5Al17mILkmQTOZ2KV-ktnP>v$FWB@9^hxk&<ZIMK7Q1(r{ z9dM<^tXf`=wM`NUR&p<FyjN5vqUmMpIa9{=u<j)E%nZFKlDF}0rqGDj<49V-(OsAv z;m2%c5bfrZyJ_TP7PaNc{oM{xS-k4%X+?E~&Dm17tDix!%%RlRlsljNcEHmoiZ`MJ z>8jVgbqyfE$?r7pT&U81d7W5WoJHGT^w6((*!kyc7L4~7vtM?<`q21h=nNA?2(x(N z=yNvZeQ8QboEOLNm1r&5-Kr6&_$lsUG95`j+BS8Lt)>sS{C!TN!WOfyjW-6E*;|PT z7TTcr{f;DCnPLpAL1w29!A&Y--N&;hlG5MQoO_R+u{8g?&9mAQz(!BmXc?BKwtkh5 zPLp^+mzyE9sLH}`c}||KRyjRH{xPSu>wZ)sw-e1=a4p@Qv)LldYgbe3gvDZauWD?- z4VPM5<k{pbzCg(Ybypvg?E?yEi2cpKN+@ce;4>tMRq?slf7ZJJCx}1Ix+sB(e{yTh zj4t<k$%fQD87I7zU=+&yzCfR>U4x7thJgY19fVcIP9Wk(lyJ-E7<yjFc=TwI^UkTG zmFPj{gRMl<ilSMBfBD6LgCj*Ic<cN%cPGz*iiORU;qKJtp|7T{<cP|ebF*6E0wb5j z(zEG=MZxr#a?6Q_k_$)73wiHjMCkks8WxMBg=%-AC-PWkf1|?J%*miXsCvlCZ*;rq z7Xn_?%!yPXXY#E|>&`UW*BqA`3tMC9>J3~$i~Akj7r%NXBpacm9orm`-Qpfmb@XjA zAhdKIZB&`aqF=G6zD}(O3Py?L@*|^vAt(--uo9Fc!X%ia@G^`96=scUR=A3F#KI=e zeOFO)zO1zUNj9zYQu&z*%g8V+f1$$5u86{QlN4_1As>!Y)CkpACSN^^{Rk>0gsc&X zk^jZEGheeC`CLEp8RJ>b{UW3l9xPDwe}4jzWDjA~QDYTtNQ?-)nAOS{GKhy1-YAK` z^Q3=7#n(gKC>MrYW1X{0xrIh)f7b=o1p_Dg{(!GQ;rUqqhy7iv@S5pSxNe2QrvRPO zy*`>(%(X+17Woy;BNIZBlf=f%xgqw3uqY-2b54ra)BgRH*uhcMB#xw;(((3L{Eg`S zu{t}+IhzdPcmJB^CrpDI)-ROaG!d{AGu!R8?v|ITn2X8#LdJ)rq+;iMq(+lD&4kA0 zIgncS?AUcPMZUyf#m2*BfUy~L%i~28S4aDwPD>`BCb3;bDo9{x-dpt{I3<$%kX`g4 zsHYj!SC>KEJ&@ZYI!bbF)e-`^o?7<{jpaUqKf9ZWw82qiD6Zcge-jLQ&lXV^%j^RS zfIyzZ36Q(JO#ov*h(BcWPqZnyt9#cX5z{}HeZNwTeNGTs+;Sy`YrswbAY?3M$IMKd z`wIY;TjxgGvbIcFEWWjOWp6Tdxti5g5iOpo@OZ^DZVB3s3zlK3IeleqMKVRyfr=Wb zD70sLM1TlwF5MRl5PPOwKhSxBfd>AXukrZ%<u~y66qc5TbT`(Q=Jf7a7KWhSqfF~T zzGl%0s`>I-w-`a8aN~#-JRkpjv_6ODBQ&!o&DepaYrt(@IHrx#3C<O-$=6j{21L-c z?%GR~V-xSyW3r9)P|Te|vx)5YN<Lho^RG>XLiv8m>kmZxY>rnK2T=MIBc7#BZxMh& zSv94lM6eDr&90dv_+E4SolDzBY5BTKh=UA=xlcJxfkcP-B4zvE=)6&WN%a(&6j(a7 z^@8-*>Y1nBaq8(MJF6FVnwn+>Q5O$1k(YkTaM$<sne}CT^(WLt`UJP{m-jbnU+xrX z)b39n;Fd=h13IW*N7_r=_PQFXrZ>1(1(h8Ze@#9kQ{M{f0|Pa()ziZlMi23_`Si#D zPHtc5vEE1R|BwDl3@z*bwq^Y{5Wl_uhd}hvSpUE4KM!Vv?MD5-dDl|^1(okV`M%lz z*}ngFp}W0D|2Y@=|F8ehT6zEfW|Pm4zk&Fz{dc_S@&B>^V%Hw;QUA9u>%XA#{U_fy z`#;O~KVec&kN(HL(f@EgWiK+BvvwJ+ZCI!I#Ze!`9mnB2d%6T_>lMj<uDh4G@R({Z zFHEb>)}lU5zw=T0@737}wUPE)t7(zmEwT_4!{Kb9ww7G&_}q3a*#TO_O_pil>SIfG zyWD_ymaPZpx``aSzDlbi(n*Ow)LV>>*|uUnbDaw*)xC?6m7#3R@S@!fN#c*tLy(zJ zT#rX8Ts1jbe`|&++!UUd!^d`1c-e(f{+fQ^GiWN6@48y)=M>8a3RjiNuT?k`miPM6 z<%;^r$6g*<tNK4d*wuOu<65C`vQ*z9g&&23dU>JlVTBK+K8YpPfBI|3jxR8`XPqP4 z@CHsFQ^%rCs@F*Mai>;lq;RpZ7&%(Tr)!=R&5ZG=^H}rxv0UzUYH{bvYN<1=Z~cqL z5)6W8j;HguLMtkbOdR1J9;=8h047v|-%#vN&r_IxL{0X;#d_WE<k%#iyO(%3?dsBz z2@QF8!nF0IwdBWe3!`Rev(~5A+z(EsXfCJPU7tQwpF1w$?$Sz=J8ptI1gjuECcDFj z*~dh8Bl0aVQ(fXf`<Uj=IZ7YC!<TcKPino}ucBXhcMXb?{-CIj4ZYp0=6+vpKSpge zRAIt>muvsNB!TSmSvzUDt4ri=5R3x($SQoxEl0h$jm=VKhU^>g@7O<)-JktIFmJ?% zg+KA}cC_9?uQN5?YsMGp<3fc`p^Z>}oTTu4)RrNAG%GwXlrP2qMX&Qq<%cRfuvC6W zg-<D!H~L<~*464W`F)e<b;(E2t6%>c5k+04FgBVYN9KD>9n9A}Pd?X=szPRU2{RTU zr8P0Rms^TWfoa5XVrfbMw^%W(u)}RF2htlT&fPZmeoL{2qx3Apa0xosgyn~Jy6g0b zbN@XRf2_s-S(Mu2`f{{?lbDdNJCv#sjK4xiE6a7h*;icU`J?X4#M{U67b&?`Kd-y| z)>>tXH@K09Wv428?31x6i)KZcJvQkH9C}FLn3l-%60B}d*W0VD9K7><30RtnHzRj5 zj>z#ct|=og<D-~^3CY{sFbZxv{_EoTq{81jp%^aH&tRv39RxxGy8;YGIr3lw9n0wX zMP1$E)Jy(Bxv)_4J$h(nDjQK_IqBirjteo|nf#$=!E8kLKeb}$>bBR($%BG<BU<I1 z$-2RKCON~Q0lSZcfpFS;jk1eRTtvb~ocG7B)Eww?w@Kt;x#$~euD#pu@)AY<Zzv2- z1`9+Xf7<$!U<t5ptrkZ=yn?39Xw%uV!63@i;H`9&p>h|R066P?-b;6VzO44Nr|n0! zH#fZ{rHf3)SgzSi*a4aZI7T@;IT=U2iXd3{wGBn#zAfgv*k|8nZLYmRk-n=F*<N;p zB6(T%MO?Mb^y^c`k2NaKCJ#yE=Ge>!dAh6vPn*Z^U&wrO>)G$xBr)!oS{KcC?!UZL zE)PcYcMU3B%||$m&EHeP{WJC1{GDIiKiAp(9T=Xkgy#cAd>+(fy+0L%Tl33hbvP_J zLpxaY^#ozsMk-i0MCUKWom1A2la<kH7)crEhFwHIa@SfnL-(yVU8MXMyuP_jtX9?> zMhN3-t;y7_hG`CXU$E-*JXJLQ4W;o9;e9X?yvyLV^MEpVNBl2%2bIBlmGEAKcaVnv zTi_k1T#~m0FYktfqW=MJ8EVj*Kqid!wvu3~a@E<br4r-@e%X267WwJJ|L^>vJf=Cm z%00p|XJBy|Sv2ka1453=HB5(Uh3Wqj8`#u$5C~mt>(ZUoaDP=~S>gD&CoT>tVJpmI zIW)CX@6vkLqy2+Q?eC%XV_#8L(x3<65CM>z<^kYxF#g;6l>uPm`;GRGh}s`lT?C*^ z{}{?QejXu^g04MfeM5hDg5w-O1J0?6oK2)er$$sqWhOvG{(!@I=*#1((hIO+SszqW z!LQ0IX!L3@tHIWX9e=9zk#m@E{`FIM4SQZ&A32|&Nq8U&ix1ZY3eQJ=lYAx~EvK5g z*n|)3@nEpWe#`f-$S>^PR3Eoc7CWICrL>x|Cv%m8k{zEQ3o@To`}RDXMf;X5&d(BJ zqxqU08d-7v4`cX5?(B(#w^FzgqgGBMS>E8U##AHY2u{T!enjTAcoTB-qrx0t%C=#d zBJWXT_SM3YMfD)v&D|6--;N}YIQ<x3SnQj_0qOK;g+*w^d;CV$l+MP1`sN5vKbZY7 z*CvXrhCCp^n0=kGjEsQ%c>8bO%hBsZv5X9o+?$`G+RL3#ogFh!6fq!7O<wMnk&+!V z2neY7@ky$MnxDVlYL-7G9g?v)2Q9hj6OAP<y~xs1v%vSueK`a~F@HUZ)Ml)@h}w&D zI5$h-&T*bXKxOb>_!8zyqq>uO%{jiILJ}q--*<4L#xl5)y_SSK=11Vhm>Pm2Penyi z&jsJ7;~_Q1+KwVnSOjjLVOqJ43qw%HRmU=XW6ZU_FrXP%FR?Z~Z8|=Cq?EvdvKq+I zI$u7M)mq_+gpFrOXTHQOA~)!47CNQqQG;$xFKo&-(5K|@)Im9X*zEoTg`vV~`yJ>~ zYzy}lpZKvy%S|oxXg5`ruloz<(Q4>Y8VcSJYvwi3Fz!s^LaZ049;~Cw8%4PaH{m|3 z3eA?TEp2r5q$4Mj9J~H+)Djl^z!!6S`0Vl>G-1vR8}`&5B`jm4NSWYf{)Ca{#X&vp zWM{=VWXJFb=;g|EC4X#~Vr{4LS-2$(;LQh0!}bhetULHVe>5K_uy}Lc%&^%h4<{6+ z2XZSxMRuv2zsUCVI3_jPA-7>Fbx8YWTT(xteR+37Rj-Ooy{qurEHl}B-3dsQ?r;sP z&iV6omy+)GQ#hK|zyDa%x{Uvo_8SuPF!aY|u`Xn1MbY{&|Dvo7H+P4c#m?k3KOMXN zTbzz(yEPZ6r_8A_gOW$kg%8;jFL}F4Sn8epDZ*MJdu4U9NjE?e5rKn0FZ=p^it%r8 z^=g0=nS-D%_uJmE`0(~cxSwG`jU2k9WwO8?rzr1@=(d|W#c+blkfC`47Tv*B(5KjD z@n4y|JESG|gNgR=2!`1&x$S(9c;6RPaD=#@!I!Rv(VooE96!iaK#KG^mJvMzQpni# z=v?4dpHCuJgwlUkqI7D3+g(-Kde-6o3_kq?xk~5j3yQ&u6S?hWVELjJKVfuv>SxWl zDlYIZPTp@%RBg|j_vyE5U87N#awHE>4!N-gXaAL)klvOXtmA6kS$>*(Hzb-APf#sF z5f>a=0gPj|@y1r305O_oe{B@Bf%^pTO>i;%hVBQDpS&#fauI*Xk2|Kc9&y+otzQZc z4D}7Lo313`Q+VPoTE7%t!+C`&*<w9u81W%*GozQ38%YU$U}9{3YA=^LPw2!1^&+td zZ-Tl~ak7-{aOZsuHW!c|0}C>Yeo&unI;L#m$j>Uu*BlIBbg@A{P}Uxp5MfWs;}6n3 z#WE`?1G&(nem-M8KlW~Km*gyMf9l-_b0pt!+4bXd?a1#<I+MWbE_PO{^qH?i0UefV zj*VL)(p9-fDOcEs^`0x-E6m#P=!?}6thzdN(7gUkPE-J@|3}ci>c5%#WsHcvm-PX` z=N(0~y-xn*<23V-TGRZXAXnN;>uKE$Vako9G>1<dAk)};j0brbFDb(4q1!>d!a6~8 zx05yebnKd2MP6l_Dswgnb_$nUKQU<z`{`b36;ierIA?tgYs}Ye6T(m<=pK{~uWTHC z<11L8AFeeNaXXJ{0)&Qge+*mD2QR(wn%{+#<SovZtOCsCmUEYJY<_01!b$VAy?}fl zn<6_o%;UJ`_;&bi<p_fk!F8is_?1C<o>jp6QD>k)&7F?ahkKB*{&wmVO+Ov%Q(IqZ z)3NCNWzuDtEK|OpqVN5#fWAKo<+mR2hi{VNDfLw&?GAVM4>hQZH44*WnTz^~B-Xmy zxEvM6PK;#^B$hSq#}t9fgs0twv;2OxwV^SV`3ot2EzU<=8vE=1k{0qcKb_8Y@FiWQ z4%g^y74L0krfCHpsc9rO_7GBu>}Dpw;##oms1<M=n@xzNm$Uk6Ihx>8PE$&H2Iuv1 zf!E6tLtEodr76pgzWFlT?ol5(mVf+EtnCzrRh`g6UAVI(|0i-k4^Q<cRJx~r7w$he zuZv}N@$f&+EOd2c@Jl+;i8we*6za9~u}Pl~1F%jUY`|Q_<0sj^5?};yqZ|7J6JcWM z$4rq&6tWCpe*6<EpGzVg5g{&;I|Bnb$@718?~$wpe;*#mlHl?;r6SlR=sXK)=F=*5 zw&phI$X&*c*#>QSa;ncGPK+qDR@4LYK53B{lsn_ga3S3)mgxtui*``#p*x4A;Rce( z-ZMDQWPxNoEWi`8uc5ip4ExQFb`IFKI~Z+2d8HH3H>Y_O(_WyaXqO>3J#N@$o=k?< z!hBl^13hv@zOGjNo^YA()&7RElWSWKZ;Z8#wm>*2T(NNbag_t`vB-~Qj#6U2=2r}^ zyM|h=zd($Q0FnZYFB0Q*S9}q6u`k93zR06$@C083@i>;bn%qLuWZ6T_81Z2f7F|DX z!PK-c4!@&*EdLDL+$&DxFz7)HsK9tj$ifcI@bXbm!plZ?(;&l3MmGsPFWcyjKSvbI zs=;j~mJ;~E1_pgMu;p%6QaI>bsq=&G-64^snk<XTq9q^`{q?0pbAd3--IizH)U0db z@<X%Udc=wDt3M)xt=zH9k7!sFwCrpnf>;JZrUSF9S%XI-i5b7z==um6_HiRtxH~Vf z(k4!uJS<_h%iSy@)hs>M`X|P;(OsfiWv{`I{&%8U+UO3as^ANFx5+DucG7^n3~oF` z&G_|+wLMNUWb>;_JlRMC*Mn?~uG~kTiY?0cC13ZbaJKu2R1;2EY+Btt4?`OHx<QbG z)~*Um=3$~JkDH|o;w9ud3HaRI0+<MNmvyT!9CJTc1dL%CV3L&&T-?s(TVkCzrDwNT z;unyBdK5s`X8%er)?Ms-@iXg%EMw5Giuipm_ERtNb*oSJ=-HVDgMAoI&p*d!zw(m^ zHeZ450QKD%);E7kthl#6VKw_R6JQ*Ob916&Y4$yjfKX6d5qzO#BVV((GEDXvVi~=R zWT^*{D(aT`;tU2vhJwaOZq<ey2U)Sq&uwe&=bvzV#IJ=yu^b7Gx=Qn?2moF@+07Q! zh%arAfmiS!{zMGnxgYBa?LR?m{ST}gttGU$L39HsYU%45@_`)vEMlTUK(-s{^AE-I zJw!f$^?^sLu@&wTN(KR)Kwi;68k;?)I@rumQrqd2Qj=l=@%D6ClMj9@QW~Qsf8d+c zPmd-iMNLXtuqIn_z1^1-3>ML%^{g3FtypHhO`&o++u>Jzcn=DDEuYJGT#_Q~E&UP7 z>Go>?#%4uCjvc2$j@zCE-mZ;mC-W_2Ru9%&59XBh;9aw(wjSI=CXl9|9zD2C@j_aU z9vrS7yo`3({qc+<&X#b$s5<yAbYTz&3rVN>9m3{6vF4jf&08*a4lo2cveNnkP?#oN zj)NCUzHyNUT)T}PQ`zmOLRU~o{rW4(<o*M>y<5}Z48f4ExhpKc^c&?jY-H%*D|>FL ztOyPgoEmmjR_77?1FOss{6f?rC0F|7qb(VUrXu)bd2(N$yq6_kt7J_RKp7B%(m;lI z`!|qq2Ji&uLF;Pc|9pSmyionIN`9u%%-8&b7-jHAD&htqQ*b+}`~{jT`I?8qTz8P( z6KkJfdKCQF=V}deU1k9NtW=jDl@-dm#?OFL!>qel*6T}I-2=+?0=cvcD)BRbxC4F@ zoN{n+|CCjDO+4B!)y!0QAiOo)KV7Ksd=6OreyipVCQdN0th~bW%gQUfrg)xQ6M)}f z{fMZ1pS22~Tgtye;RRuSC~c9#gG=oN^f6daR$k%3W#tt<x2(Lv>+yyg!rRZ%OXa(! zD!no4UrnI!;8OXu3NHxD`}4u!iQM5}?gtmxM0}1Pu92fvapTQ06G<MiY1Kv(@>`XO z;5Em8)xD{&sY$4i{n}CdP{}Sno$E16)609&-_c4I%fmUa`|@%vd8eaye=)hec?*_; zbU3S15Z}m7g$iCj-=L_WSkDZLDO;vrNF?&R9^iK_H!&pU`NUp0eTGVs#KiNBz3fgf zK%7TdM|*f)`-fPHyPV4G{ei$aTqLq~G)bxQmK=Ybj3#Xzo0UQC?(t04^z8Zyo@qXP zkoGQ5SY}iNb<taWZ@DYT6`qG+3sw&@(Are%!DgIr+>N7&p+N9Cyh!`OW62!tdlJ#A zT&BORdnU}dhiZMvq>d7Om-XNFZhPm%B=ZOSQa?I%ctzX$!qL(GmCH@G<<{jUHyfi& z6Og$3&i%Z%IaMNB+vNwZHOb>Nt7W5ms6{-g%bl$pl7}LI%e5D+%tjVj`FranV~)Yt zG^9|p`GcuGZsSWO^8nrD_W8p@r(%V6>h!Js<Bc9pI99o}KhQe*v`i{LOxBLTY=6{X z2<?DJm`C_;DcezV9-G@<9tq=Cy?bhf4eXB?6g(iDn~(`VLpYbs6RM=kXNGE|R|#9C zdcP>SADU7qYc&E|p_cRA4lXmQ_}-=zM1olNW;NuJdarP^yZ(5S19gcb<<G-_5`F9O zf;fQAhPf}O9C1UIYi3GisviSSW6RLhtuTIcjGwQ5K2Fy8-?Q9XYr@OgS<N}ktNWSe z<bHu4riEyEh-TIB{J374T<-p9z@pRn_@do=U&D@Wv1aLCrBln-U9G|dpF6fhe7YKG z_BFoZ3w*`y4AqnSj-Pt&=dk~1tgOJ6^muxY8(l+2Y+__$RMnCneK<d8pR60tp=NlS z8C{rR+Ji1P21wAYX+})sIN7!ilBtsea!56eIK2r(fgjisH%87NlG_r;23ygevXXeS z%fa+c9L;>D;5=ocy8}}m=5Vc#aevqP&U*!F>H3rS9=SYr%@qi&QMZaTZ3>w!`WM<y znt2`XC(D7BfZWytsY!J#5F%k=`Mx8g^rdH^ryE3@mA*CLH093hue<ch@tV&up_Id6 z1JeYz;0CniX!kjeDdkvBjuyl{VPQKuES8EVA5~vq3B)n$E?i`{!dLpjhn5OwWnz;) zqN1n2=J0&63DCLTJ$rrbxc+S`X8#i~+FqRfvf(!MLT=11q=}yn_SJsHPuweX4yM|| z?<4y|_PS>MxEc>;%-Oxq)(qg7b5rvBI@0-wspcB<eJWayApPm27~+k`DbGf?_CyW8 zizW!}AWo`uRd>OVFsykpydaXXa4A#7-vDhUFiA9-3OkCoOY{gulMx@fs~tS_{xW;f z;{DJ@wx1WPQ`zSj)<x)qDn5P)lhs&e5uYSZBGI<2B%^V;ZAt7V&Jr3{Vf!PyRevKC z{iBR~H?5=#+M#wPFS5q~m}||s0q)3O(2H>AdX|YWm9^@$?LgxIOg=iu+ZyfxWzFpl zaVI*Z=i&U1O3nSXwr{$I7z1f{Ef=!Zx&;#;V2BvfE&?NYfL2My5@rfy8G`gm=!<qf z^?<Kt)>q-{7X;(&7x6a|<xb!scpVhnL_;@M3%V|M1PukVXvpvH)OO+ot2&lJ{Vrg5 zcKa|z<tG?uS-#PjL#o%&+Uw`}*3@{s{ikKEt@{@e++bCauW5r-xK?<efjpK?Nm2>G zGO&{(0%eAG+#k%MW6_gj6T`TRh@-7b!?xNe(1Q|Oina`0!BJ!_r-z>WE1~;~Qg0jI z$_&1jPnS4epe#0S%Qa1QOZa~XZYN3pwS0aV-uzLEsPdtX(dOCBW*{x1g9{x*NL_;N zVvq=4s)r86aefG;xikmXQQ-=j(7tN8mgWr%faT_dRJqS!X1i0P+(OkVt9oL!$5gYu znDz6)2KwFOS=wND>Hkw6U{$QP!RtvdjU!i|V{P9RvQd|aNB->gQZJT~n<n=afbWbo z08QC+pT#$#bP-Y-3N<Btd8pzYtolcG#M1t}%aq8|h|@b!Ej%LTk3Lb#xQpP=>CF|h zpH3asoI3_(+UO6aF!LZk@Wsqawh*;WQCmk*sXLkxAqDK!S_h;|8(W*oK($vx+dAod zn&Xr3RO49sqZhFXGyVKP_5`&J?k3#YYOjAReJ?DF_(@o(PDs!Quv)pPA-%WV2kp?v zAm4~8b!X8Kl=tZmJ(cS<qn;a|FW%KU$9b|8kW8K{^=o6x(S|(hzShD4(qg7@Q5dv! z2*bi(Nl!7nu%0F#gtDmxj#fAlwwt#OU5EV8Lm#gDx9oqwm0k~P2VKa+ZfH|DaJ<l2 zE6U0@;`2iTmuSY~4Iz~qiTc__UlYP7M*(^Aap4$VAmZ@{0ly=zMbA9u!Uk+CxoX+j zf~UmsNceZMAZa`og_l?JqYnf*#$fRl0w>LA<}jx9iWaL2qdifLuH7Q~H$HcTqWhO} z|Jg@>`U9fjsbM8;D-{iT6B@WjKJ`PqKSLbJpZU6()Fj%uZ?ueE0vRTh<j-a#D5gP| zI~je3$m2hZd0|D7zLnlz>4${r+M<`A7fGqF^zFlRX|f90VtFZ=CMx~oQ+)k5kREV2 z81h%|q;hJsFNn^FZkeo$kK)=(jl!-3Xw%8LU#yez=@@B(y2u2r=%<GsWuxL5T9i-B zFFsH{^>zQHVDKTWQ}VmyQ00IB2KkOsu1<1=_#^XL=qvbS&uIVIXNAJaaK8-wEmHW= z;{LVnVTBLH+hDj~T?_t$N6X49d}vvDg_B`<+Uuuqrj);nArGob`2&TUO6{#xcp1*9 z!uGOsE@pQ-S&aK8+^7b;v;DnCi#OjtgWZ_pI7y~1_XNFKb8Bu9TYf@hP#>MA#2 zh4CUC6UQ<)F+d|;f0A+SE*#+ZTy9!I8E{l|ykt`xRHC(7%4={d+(W-LoBgBx0a=&( z*D*HpE?cg=oW@-HjM8Ubr=Yuo0B8OpdeN^I$`bu52O~VpU0#+;`;P!N1D~<$SjE%k zdD?FWu(M$B9udC!tW|iy@F-l9Wo-_sO6fBd&V=d0pTf(+^J?gClEO`gm&&tX1<UHA zaG#k9H<guFI8#<$;i|Aa^-Ep}&Ml>nRCxW!sJ@zq;f=w$rTXtsc>O^>o$^_Q2bapv zRCqyHUh@U&ZpH*SU(>C*xPci~!e?ktX9i#L7kaQ17YCSEvVQKMx9pakd~vghu$?Tg zHozM>6SAma{C_GdyrJsrq5Oo|)0wK{v|Qy8y;2j>o2#!l4kOWX&t;DK*M_Q_r&P7J zR4(p*8~z?_^B!u#<!@G1`0{pDG`P01R}?Pr=3?+rD&im3Sebr5{dx5jJ2S{bs6V^1 zB^y`mb6P5&QSImgvjYITtiJ-SDp#59l^$7r#dolR%hwGMXj7`LNmQ=vep~jlvXG3{ z%V>Xu1x>!@9FwQz@Wed|b7f&p?w-gt*h8{di`caBCcL1hUfa)-f0g2Xq@SMAT9Mjc zkYJE0b6vPsFTeG%p!ox|$~ye}DIZ6-OJu*t3FUUViv4>5BK_MkyeVE)nc7;;1T&gH zT$z2Ly4;_N?12!wuqUdy@6^b@KGp)~YDTvCM^%$sXIIhzT<M=bPh69O7|8(Zpi3^N z+l?j9o4a2}MK(qaj(9ODA{pQc+8ps>;RD<M*EBORU1p5cpUC#vPtEcU4x9hM^(Rwx z;ej%F_2k5y5B^A`u9D)0O;@&u&-f|Yx9zEgy+|Vib~}J1@(3?+lcM77^(r8~@6MxT z4NHF^b<Q%?r0X{|kDcQCYL-(dUS4%K(_tGw7A!2+Yi=fo`-7m2iWz>9TzZ7PKB%7? z{Dw`9S}byz3C4Az{De#PMIpXdyS;#4kZ}dUziG}>J!{=phn2ib8ooJHHXB^o%XY7f z7%@rV`Xr>?NUs==6Pf4nb~ahX{mrGXedR^1p82)EDm?G!m)V1*M<TL4o9bWKL;9bo z=_4=^6f|$43_<f#FzWU66+sZ)fARL)+2>ggPK2A#BQzV{8|NZ{;<kUzMj)2?6CpG5 zU==_l#RiIZE2OvJS7GF`34{2p=eM5UA^Z;E7wViaoL{EZ1P12hMt&RlP4JuGcLKi? z_?^h_M1Ciy6IGR%CuAo~25y$DU=ZDi=pQ@{Wqu274*^iToipqrzK&WO;!D=y9zW#o zVm()WS!wl@bz|h$)zfl*V*0_FQ%{1v@^!io;DR`K>FjePQTiwPDA9wT)+PQM%}4hD zK#M+jI`}vq;o<C#+h$Gp@n2yNW9i-}qS=t-wr<i+upXP9K++BF!tYkKrl;)7?Mr%S zuj*};e<AzQ`0VoWa-ymO2deje{NlMCB~n+g!-*wc#iNESJgcH5`;bQ9Gy5V5%3Ut4 zu#BmeyFqKKDn`20OSt1mU5NLx)Md@tPYTOzKFFEb{&IiDGlT2gzi;HVnCw=30<;)p zcw`%VY7!Xyj5?BdT^U=!bm28v?rg+6x6-$5A<Bw$kQnDBGnz^*DEwYo-ykdXbQf0R zp=1;v;HO9b8*`5izLy@N6Un{;4#x8Par)g@`U^a-yrYC%KkwGwo$_-8$0=`1KQUL{ z-_u`IB~QU~`?>M<X#{cP_OIGh0%~~{X-w2I711)(Gr)-&+`BJ-CB0|^9SxN!=KE59 zKbohkaf3x94EJf#1S`*^_c?Hf_fb=J1DL+!x^TnVk^G5@Yb)O8D2lVyKHxEpf}GF1 zs_1PM%?$pHUz2~GF7);kpMLkNSO$)VlZOpdOs!+0T9@j54F4d|(eC>mtXLa1J{bR+ zy?KDVs2-kV!ZTKAQ9oVxOPW8yk>ri$n|GA9X|%ziyE(DUG?IZ;JA;P8-DR@bx7hPd zl}<cgGaZo_S1;P#9VfTtUO9nJBAv0zq-zG7Y~0fnE^qxQPs(NP1t|He0ozNr76>p3 z?mpn3h>El_OmMxaN4=l|vR0!=9iMgJ44sxcJ!u&BZbo&DUsGa@GNRQxR)j8X#(G7B z+yA}QL2duPv|QT$v*YUqQ|=-q!Q*X5h)AU!;b}raezY(dZv2T(eW&%O=-meZbHA4C z*9Nw|`wCS(7vlUnsxLnAJCFdnsO%bc+}h&9aK=M@?9vw^4N93L4cg~KX@cIbI5WxY zx!ZD+m>P!Bt#Emu8zrB+^N+HqSlccDO7q8u&1)yylLhvt@xq)E|4Q&&azo)Z%Ix&N z$^hTXtJ!5;O5I!9Z`ycgSC5rn_2=CSM}%N}SEQCdrq>97IbcUBM!WtUei+HK3Oj45 zTJvLujJvQz64c3uTXnEZBG<XBYLO*vID(3Mi8z^{^OjKE!{?~JnmhQB3YW@`k)2U) zhxFlnQx7C^N28;un`^0SbF4&DtKD>}PJfM=)nX8m{<=Oj)lTEaV&=PdJl!4hM2_A` zwKZF2_DE;ZVRHtxymDOZFHKi7bJ35jJwLu=arM~PUlzL;Fd%78clS*_L5qj^7Twkq z*I}EN-$<wr6Ye8-P)(f?%jh|-#r13P*>o&l_qcwt$-(tzpt#okP{n^GKD%&iU+&$F zm+bo>nfM+nB!b)opIh<U$ZsEh8~Cl_cR0Vj`5nTqKaClv+GNIVT)spPMR^%1xr5Uk zd@F$KB+b}?%WJxO4)vbE{H>W<ihYmRs9R$4MftVtJg_1CIghOE3Tecy*P(j)^Qz>S z^ygc}+CC$MApH2@{I&>8v!mN%nasU9+7DAI>gBCludF;MmiZ|az?4geRXD+G&J9OE z!F;_fMk+S2(v0lEXUmjv^-V{NsgK<-hgy))V{Njrvc;%WL;CZ|)b#PW`j*_##~aDl z%%rGp&RxvvxYpg-QC(rN;t{NtKO+p&3Bke+O!LAFid(5Uf#<T!8GP88!e-q0B!;@? zk+7eGiEKYeeJKaN{g5qV#^)-=!+zLzZ#^~xA49zg!Ux28)}E_BCsmJpX4XzapGn-F zs9YLv?K&`7)B4ly15*!1`VR!V+lT8aXzC_ddmV*kDZ19Z%aTI(vu`ox?UHPQzwk9r zi5uPWF!4E}3hNNc5bQ8`|7@vF5@T&+Rm<Yw8B$xX?8PheSMdca?QJ8b+Ee6&C)wMh z{tiKQ$<VcJD-27qObhv&bG5z$t%o1zANCvhOss7KDJ@fAVr$*Tg9LW0?G>VEO@=D+ z7o#cXK3w7<d4kA9{&-0L^h)=~u)ssUfP9k8Ydr#o25VDq#W7!s=LQbOS?u-Kk}z~- zV#>-y<py_USm-Cd5C%@&kK3rw$|JN=>_yw*LVS7!Yu{V{{e%34e6}*5=nnQJ8p!h? z8ORs&HdxEhCHO0IBf^?-Tp{@Hq-NefiTqvF<4clTJTI`KwB&zKUD(>scUzEh+q(Iv zxFw!ls^yFQ+<L+-xeCrXkEl&?gHl#wZI2kOV1^rOTfk@ft6s_7o70O;Eq?QtwjYY6 zHy@PR!5()kJb?W4Bns7v!X53yt!N~(mE_s<SCvMTN!&^$@|RYJ0;4R_D?^Z4pao{a zYi>e0Os^VDsohOUpBf}Eq(<)V!MFi1l8+Vg^V&!BY`9zugh{~YYWkfi{l|fkKBTVe z4Cz0(d@21H=|dH+Dy8qJa3)MI;+GACtP5OD=ImM(pLQ#65lUvw*0tq&mPv^ZRRRZ3 zokO&$oWn?o;%+4}k}aNKc)R7?)AMf~g#~W<tyZb~<uCOMgG$e++97p0b*dUXwNOp! zWG*^CZg{3d6(xAxAls3864m|?20L62a>q{<E~^exO`l5!WK*Kz13f7mKh@1Wlr*dw zRvWTpdm`tqo?blL(T>5#mdVF+KG2;w#FWh-NS>JO%F%Ns$Cxnoyp9PwVmB=w+7bKP z>-b=9n`MJ@I1-oyGg$g_6cr}UA|c*>3xA`tx7E)|YB3|im&nB0qn{pnTopF#kPl*@ znid%m4*kbhx>_=4nZPUU8T|efaDS<KNP_im31MomUVrr7l?0Y{s6e?dCF1S35eUAo zNtz%1L)GDR^{S)oF+u*i8BN48pX*S;yzGsRE1#zU9h!Qp<oxJ^6wSd0;9ImEhH(PW zGrH{s<;W-cxbvT^W|8PWm_9agpb4TYmts4u2ZVAY!9!x1sTg*)Od*3ZCQxi8rVL;K z;_=8>+ZZ5fs{DI)040`J)t2o??Y>PQJ{<A~yau9Reeeadu$ED2>J4Gy2Y>=5cAX?l z%pnlqy#jvI;tBSpBc;8E`W{hc$^2ygXreNU*n@q@Y%4#}Yl&8_7fFb>U%}sK%->p3 z9P@Q#V$Ai^W6V|fTgLpbzvIaZC*M`Hqy8g9p0q#0QfJj*>aPesfaa}zZHgPgX_dP_ z4sx|oSRTu42Yz(Ji7iKCZ<Gy*>JYmJ{58bxP;&e)?9PRjBkZ!e3Bhgw1%rElM&n0E z#sIh5y*b>Qbm9h*Lh|q1$k}PUT{ka7Ly+I>i|n`=$Go#nHjoUQ%KwG{-Svb4WY+S- zsX|#=rr=O{Lt+Yid0KT#<wo}_GAW_=a9zXT;>46q%d3W06mHY{))i~3qM*BfsCisV zOZMM~HrWx!+CBtN8k<)@8bfv9=^DYfFgVfr(jRC}tz`$&#~p2r^dH>B*20J~ULD*{ zakm0ofmj&<8Fg`H1e2z=w@-^|3kO^++4#Ti)^`?%{$FGRWBTba^lvIYYtmZzbU&Qy zrh%4$aC`xg^V|iG`x#RXoppiUHta)*9hk`OK)wWo^cVnmlmTeM%7q~!uJI{*Tgr4H z;sjEJ+(dLGm`KmgpHuR3;RzAv0R!OMvKb!{X{hD<C_~FnpDNT?%R*L3KHl;?lO2v; zgEcRD2{l~2v7?WPiV;;!bbmfVU*`^<0IBFQbD}WJ);Ha%iDiaD0prbgba)0om{Uq| zkr5<lcckYIrX8qtfsK(&ylw5-=>DoWX(YMYpzE7&(;&7ksb4`86zXzk&Saw%PAhGC zbh5h9?QK=P8oTyh^4sx`cMN$k@jc+U%R9y7<sM9-y4>BWO~;pPu~B7xjRBkb>3dH6 z1Rwv<zK|U86R6$tPqZ!h{e;}Hqya>P9Vlza5Kt5K?^|}fVcUDqcJLA7#Q5xeisxCM zP-DDZOKZfl_J3N0Yj)cQkcsN`(}QqTI3(OM%kyg}XpZYpK3$+yCF~|ocnIu|pRTG% zzx~zdJ77Gi0~1{MomgS+1@AoBgR(Qojkn)k2Fkt5sPTCKc9>H8LFh<cZ43a$mN2y{ zr>!Lf7I9*lR?wHo_Aa6^crhf=uW14l>`A+!4YZVP#MFk6$WA-nenS}~I|z~{kGc&f zd3d!w>Zu#}sDoU%fh)H^@%ur9tCwv*_yYJGKr^(~PwmUpYOU)`Fx<Hvi~!ZF;>I|$ z##Jr_KiShfNUouAs`!+jux!rCj)Q=4cw6iGFSlYZDj&t3q?p|y7S}}Gh7)f8u^SLv z=PP^C@-lbB8b?xNv=^0_r1yJfhV|`AS|Ht6q{dQ5ActTXSEv1XY@aSb4w?oQ<<CIj z%wAErZmq&qyG8j85kaP`JZ%M4W#tuaDl4z>vR(as*zo)=U$d7H<;&)RlM^CsgJBh~ zx}Dkn+M!*(W)N8vRc%oskF=fZ_0Sjhv=@?dhAhRTiCe-Ev#kTHc1JS!(!=e&jS}+* z>|{UFstfxps<Q!Pxc?(TN=kIoi!5<-zAKpm1$U@JTQ^kfsN?bzjDKMH_`W-EKhKTq zj+^PuQjeHL<PtZ=O7s4CzHT!J6f;@8iwqp-#Ke+R$mO5r^z3TVH>cjy^^eqB4AFNf z!Q`k<15La=#ouVUk6MDZ<+mmN91^CtMY!6s7i|$V=M!#gO85&l`CSu&BwsUvAI~B5 zj1WgwL!``OsTN<w**Y6Bz}}8r?kq|N4Sv4e%RmaMpI9^TGN>L}Y>L%A$hU=lh4JXp z_#YacS5t4G@T1%Z6ir6{Q8e91d!9DOW}gAZ4!$%a&Xk!GUK^65Nd7aC-tn-KChxAE znWL0GO$<bO7V62-WV^$%!MLo3k;-Oidyv-Z>y5W>L$ce|s^Ey2>XvYr7R@7neB5M= zXC@_r`JC{E^W{Q?2M&nlN6jRKPYKVvX`xx+H5_`FzWCH|$2RAKXM`|TBQ#B!!L<;i z->0!QPHV~k&SDC2qb+X^zKWf<Mk2fXajh%bc|E_RvVu3_t1UtswI_){FC1D)y>Nhf z+~vMUNo}b9B%ji1iOq;wkI1g<Ji2T@#X}>SHXFD+X43}qq}iG_vLH?|UkaCL|0<nf z;0{v@;RV^`mEqN`<Yh?ig$^WlxogOF68fh?Z5-z#<gNk&Dvo6Yij2bQcee?OEuK=c z4H6%*z@VeD4|a1j-^g~M02;acvW&OIDL;5Xo`jyPx^-?3V2UOU1oRGMrsLl^B>Usv zioc0oY^nT&M2hOC$5Q!$;=PPlwp5-@L7TWe+79Ktx(mbh?*mS?pCcSxX;Yz5jWmbp zbHa3)q5$8~G}UuGn*8LqG@}|dqYM9t+OzqS<i=yDFIY=O!J3f2>by5T=WTS3Tp4*r z(&q&8G+tSeY?^+sefFwI_Op-P6{+J|a=qdRbj<wmQ>3XI5^RlSMv1@Z@PBcNcegnd zRC|~La8DQT(@;6DKIQAK<ikA{FRejCG?Aw(_MRTG2LBfF<Pg?SJ*t#_d2DtWw%oDI z>-1HRfVKVCqiJU<qP~&*aMfM(&`hn8=}yE})#%BQQ_Owz9%MrE?m!4MyA`3rXf&y* zi@n6>W>Z22kJ5`~#9KMHG|!lLg06ethCXl`8o6iNof_iV{zkWflW?*9v7A@@iDQ`P z!hPTtle4gZqJIjDcJBmp=41dh2k)~g_1bWM`kqoA*8H(0EILPo`@?jZD}n1!j_c;h zaA}5G6o_9Tn*@78Nu}|iwS&XfZlpv|rPMNegfjhe!VtSkS5UG~<3YfE^p@3Y2jJ(5 zE67X@+ZY@+X#Cq&H0407%nR70a(Jcvo%_X?2q<Pbj%wBljTvshEdYPU4LJ8FLbldF zgf4z`qK(&m{P^+GbgFmqp8@O#?8;EBaMRVpY}ZrNSK+#T&z928+c!cD$<gliI$pNj z45kt#h85|PM&RY<Ln>Ooi{~N3R8z5Vs-yelL0c4M#y0|A@-VxB0r$c_+8~w}qsK7S zuQE8L_cD0m>2+1^R5n?K+cjRfG06CsPSdd7C4$we3cYaF7`vqtV1i3D1QC4QvJY5p z3XO2So?fddOh>_ozxxxo)7WEWI|IF2gJ#z<2o;5YZh79+(3D#+_+FCi`UzS-)=9?l z1$PQ-tqp_3aGCY*3GV-Mg5mzq2_fz|Oaaz-dRdhlh?%OLPCZMWv7AL#754W0qwW)8 z`~@AYg4<w?0PS7>t{M$5=)7M~W7>%Q!5}g6J_G=Ccb%J8yD}bkPzf6;L*-ic5Y|Sj z<d>FzqdWgHDv)XYQnxdEa?ReGiNelmHsv6meBE_?kY#+V>1lU?6`wU_tY#Y$w=nLI zj0Kq42a|tDm|tyv<PM_*QX?~It=o~aGqYn?|DpxGc=%x!oTd4M{lU5(^QWZ0=Jweu zBVNR1kmgPm_Gw1t9UMPrmoSueo#k_9*Hz7V@O^dY{XT+h>pj_;5!9CUPPs}fp~~iK zqFrK2mGHDzoa5lly^?3;PHfn;v@$g~o?Y4An-utYW4(Sh>nFMOrlq~wRU*0F#~n*H zRApDD->!r?w-Tj;{&%XA@8{x8>9_mhw`Ir0pOM^$<cyL@=d+BzYrSx~eFKg6NpJ3h zXC|@wB0X=4H&s2Zf?OZ86r<`A{&L4QY+6#4+-lR&jlGgbYppoIcWEwV5_=u(yEHVt z&Rd%$_sAXHw8ZuG5I2z}yDEI^I)V?+kY)Ix#^g52v>ILr<TjpV^2?TCvln9X&3s7? z!aD8OmB|6W?v)xO>eI*sxrgC4`T`GXpLdbm6^fJZ+Dr5i<@^DGdAXw-e(k$AAUQ_e zJMh=lNqnVmI=ZP5kAXINzb@;l_my12pFqFeK>zms3IEO67ssL($JRunu)D17c1k=h zx~S)W^Ij)`#Ls*67=_~a`0^`q%{C0!>cuz38>^CaFwz}bvMbzOHf#LQ?rj5D9Ey$c z+=)$_me!}-;thRc3zt?dwsb0JDmE5M9i{R1?X7OYP*#!}_VY!kUyPt$Y*1qmwI$TH z{;9uZ<(aHuuZ!h<um5*>(F6m!$~^@eHMB5oBKq`0VzPfoeMR@xkhS;sOa<I5N;PP3 zd!=^K0H?2PWIUU)!U42V#Bc7TQJ*b63K&!G&Ur^2ORXxv$5vUk;79=Q1~`w~(E|85 zg3EJli#<P`@rbn3Yu)K~p>B!0=VCc&TTC)A6>c*AJ7pEdd@m2f94oz{U+~YJjmmrA zdn#sx?9FQaPnl3d?QVuuEnE;7?ylb5u-6|`fg$O|{eWs}hqtBqgf2kenh%Znqv5{K z%CxmMyM4qF8|}To>?#)gQI3-%9p9j)8I^j2m88$HeyevsJ&w1x@i*FlKJh0BsfE9V z{6_QuY<0lat~*--u-Yx$iRug-FEy6>)3##99_g;?*}Q<X0xtf~e>36oRm}<cQmb6q zG0&b%`4)TD{9%70tF})s6n0O4!9L-m*<;vu)ay_wy?nTPeSuC)lY48ko~vowzXv?~ zcz8y3T(#^8dg?uYiA{GfIy0G`g-65w<m2F>dU|!h(^=v-vP><%&%TBHn#lj8JNsN* z{)0O?f|AX}bq|9EecUilOY;=8pSv_-5c=N_>FSbq=_WFtf0WIgeXVvRKewwP?2+8@ zgwcbWZ<K2cn~RfIBi+F9V{Lm<UHbj6wWnLGCf=z`ztF2Cd-<T2?3MNXUIAcyU|(6? zl>JdvOLhuN;g}(@%w6P+M!YCa`8Ck!!~FsVp@Ta%XdjW66*hYm7(yv{8b7i}?>Z*B z>+mrd{FcRUs2=&Ffty6}ztJ7c0E|aQCct|g1XzlA&ipzi021IRw;fTC>8OB(za%d) zR%?eEUB@!>s2)k(&1DiuwrLwfP6<!nq2~ZH4M2MCm<|L0O|Y%d9&-dei2U&JLGGak zLWX`fAK=d(5VigSXqHKf3>-{ngy$_9PNQyH<rh=vNFI(_o#rZn(@EC;vS#FFG@40d zHOtXwKY^=5trJ7&wj;Zp%K_qZ<NUnQmZT@B=|@aOlCoM$^C8rK<Z4zAq1t@iDD=<V zc79qek@AOK0?oK)x>e*ywmNkTcLSAg<j1N1V7WP;qWUNHZD#Lf>w8X;L0K3B?m<1| zk6gUIJe-SH^;mzI-wF4tslwP2_tqmaBGzbPcc1Swoa<7uYnEnaARUj}Nu$@Sc&Y!| z`wg!}4xH$S>}|B|!#05Ho!TxZa$AdW;Kl89H0?Y)?-o3U|IwxGyOBs(jLoL&JbOt7 zad%(oIqtzw!=%F{?$JB!YI$w@?j8}ATk8!D@FX5{Ilu57g=G!8(WN+k;pJQ00Go1e zqpKo9DwDU02lkPCFp=`FCz1QRT+G@tF?JcBNCVi*7hWirSIW-k^AF!ESaeK}zrkI( zgn4#@KAU&L<L0{+P>tOoEuC%KdO!w8-c931R;I3WAKolA^0*oD1go`Vqx;2yI+5Th zhiX@Uulk&-N*~|ADW1LKeY&;Cd55n1d4j$yR}E^9u|vh<8*0IGEOS{E&tQ8`u*nAZ z>OJ6k-0;FE@RJ+Y(E5+c>^OsTHh^GpT|9gj{=7e*5vt($hE|&E9H%KnKi9f@c-<Xf zDnnpyV-*(2w{z7c1m+Ox|23v&V=3RiRn73Alpq>Hgge0i!4LCVw=D2(Nr?_?lj*%` zJJ#2hJXHOPUB3@Gw0*_n0fu3{nzG|YC2L{}PpVw<PIXhirP<R)0Z}he@0@LWg>`j~ zYZS=gn!V9|ri*pL7MkL}lR$|o=mn3M6{E$5W0^k4;j=CuEuBFuGl;<G44*=MW6|Px z2`2wi6kO$Xcy7Qz!nFJF@9^EIB{Y`#0~ne0yU~wYV2J_;jn+{Z)|&)IUr)uUKh8P6 zQN*E#<QgkR&rv&f(N1LnkKYxevxJj<M{Cxk+K8?-pPwcEz<r-bw8QGM_CwqqLvG=2 zTi?-SeXf?nv+LiaQQ<DOaJ%ejP4t>&b%~o)6XEIclfrT@b15^d>I@&nt*V53ifF3k zdxHB|mbm)vaGULudA7veeYB=YEJKyiIG!5Tc@2dn#0;ZiYMA=?oq`4+FI24>jd9ar znUj5F*!TsM#md`_vxdh_rilWE=f_W$Cp_1<9VerDJ+4zt5Gxbo9FYucc#aaw{DL&! zdtugQ#pji=g_YT31||E&7M>`&>9=z4*{$5gIR>+^zJQXvYsBm6hRW0}7y{P1wF9V; zao*SFD=}KL2Gfif%Av|4rsDqOvt9O2_30%U<uZYJx#{o~Y)=!c9kw3jju}+ANn-%p zOTArK-FeI)HC?zilt)<ph5=_qVH+>c;l6NKrE2V;3dFTxGWa^iR<w=oKg59&jln1K zV8{Rr`whf53A(~x2GeTSDJCy2()S)Lny`=G+m!DW^r4dT=gAdtEzP|cwhx6h1}K_< z7O*rm8hZs>_XyVqpHsAyUL9;Gg&}5@3tk}#PC>W3gH>OEtK%E$*|1MgSDc->#@e`@ z(_OwFhC4{G&u~m<E{f}^=P!JBj>BMxde%@+D1Apn_2e<?(~R%Yr{FG<JI6KAdPPug z#YWlp2WtMR!NV|Ryx-T{sw}ti9oBXlVF7lj)i(1_!D$rn_z%}Fp3;&x;ZD~dB&NUU zPM)40Bf;^CgZMN146GIN{U!8$^)3tGl644u*ptV(X1H1Fm0!#f-EW^ik8#-X6ROzU zo!pTdh2*N*8~j(q!tst|w`e_MNLPGpLtFTR=+EzWv(LJ;1cGSm`p|#2fY%mVRDmzM z<Bn9mF44#Y`?PubDW9^RNyeVomDcT0+L{z28DdrAZ(6?^Ggf3CT<LNLAsInI$FW#d zL0`5RZWZqKI>v^seP8vY>D9s`CH_>V?+7#1hnaq+{@|eJn&_-jzlq$j)w%702Z74w zi^)p~6Et+K?Vr!U>-;*$dxh*?G;9f^28$e1ojgP$C#TBRBLrYMSebjI7t$uta8Dua z%?DA!GPH8o(2KMFLZ{s~4gH$tM_)zB=IjbuUL@-&IjDFk)+QGh29Z0y2u>`sJ3Jf@ zIru5%BYky6W%4|XvUFK0mU)5_y7853Wb-tGx!;}qiL3lM!t4}YK{x?}ZVYo;OtgXl z3?Vo4h#-vq(f#aaQqU!TDD!Z-Yv!WUIYm~zeiJI&GpS#shU$<KK=*|ia3P^AMUu5# zih+^oqa|6-BM@!#)+{i|8a#a7spX_cNi!}3hQoXx*qqL&4!*~fwEGuBsZ4e2WV|PO zXH#k6VWnL~8p?6}vyAeYli$dE5}AX8sI;6MzM&sQax~R{l19g8mvKXeA>j<*YQnDj zR*uW^H52&;dt6AWJD$(<;!0dFampl&x-W*Hra!qvpSkfYf*7E}!6)<=z1M1aTJA0% zD2tUYD~Uc5E&n<%<33IWnhXcu##HCFsm|$c)sYo7x!-TY2V&)~qj|iA9#Z?OwZIe{ z%C%C_KPu4`3P1XZ53~PRr0^%bqw}7+hZRnK9p$g-0)@dRc;^hu2MQ-k<<~0wXsP@P zg%1tONB+^Zvqn&TselabtzS<P=(;ckg>||GMq#16ENj`-Tl=1^G=Z6Y2ec;nP*>V* zAL7Gh=MfF?4OFVM6Pv%3BN#N<ys^`ieYSdOYAQlta!MQ~7RxkizI@RbyWwO$T5|hv zB@4qk%_eVt+6+x-Q9c*k{r(6~KC6v<e#GC1fVYRY8)!w0+fJS`Gs7}Vtc)lzD)ZKT z-zcN~ANX>~UZ(%mnL$1LK9<p*lm~_Ji}Wfea-VQZSzFdOsE#)3Xd|M1(ffL${hs+s z+JF$(lR;;oztiywmnkf`&fQHAsEZHQmjmBQ9ptU)M_#wSGK6QDeChN4fa}GR&@kf@ zbtLgq%|+vvSZldo<2xqXA(USKdpH5$O+VbDO@dOq{eJ#ND0t)EZ=j$hyH7BOa#o-D zV3#k4cSRoJIor}!bM|VlWe9S{Y65qtwHdr-<;wP-Mf;j(M~IDb<ma;NUNxSB@StS3 z2&6L$cOAiBS(O3!>5(4b`wZY8mjS$g1hARD%!~X3jClPi;KEpKxeSUt2ZgB)DeM#O z057i=dE;V*i&y5l3I7@t01iyNz4zIV`g#(7PUaJw2l_i0+_o-$mf5=xXNg^euv!rw z(fq^3Aqn~g<4ta>Ba9{PoEvS3j-W%IH1s48ove5QIpZF$)3}D>)>LHrZ1|53p;)!C z5{PzY!7V0nA?w)s$mZ>NPT7VdNQ3|kVO`YeOAYyiT^QP)0?*DXATs7g1_+FHCjpvh z_9KGv_A*@a+Ub+OgoCdr)6W;jGwQrM7L$aq)q{Pvr=kc0uNVajYL`Wr3Ss!A@)`^_ zdhicWv-W#EQS%jW7;0#LH0@K?o!7HqX^Ch;CLR+1Y-vR+BJY^yk*i|qM<|bgpIMwd zD9&+79L3qF1CzV?`GMB8k~hOD$(h{Q=ju1=z?2)Cc`^C!h{Yc>+9ahulgu-Pbgrq? zQqy~Jy$VuM*l%q9jHl9z>*K9o>^S|q@rI?TXI0b4qhkxJ`ZZJUF|mcGRCiP2&rJ<0 zlkYa=Cq89)J5^9$SKJv-FRhou8z2sKbsb6R71Aa7&Yx#|*B;e?QTB09&(mUqm4$`= zVj*p$N&1Zfksx@t0%?ERVf6<&V#>x3(<?5K26x|}cQc@$P`-^V#L9d0k8a$as-Dff znA*N@euOV>+b-N5?3@}~`1kHt;5Z*>K$@r^kx%w!wR@A?dqwn=NdLQ%sN{CBh1**0 ze=AhAd|V~2$10NSonAHg><Sg_YaJ?!0eCwf;TT==&V=}9i)~~_jUTz{^7H(74UI2x zjOyDORqkc@@gzODTaWQvtns9+Aq*+0sZYkYy=bd)YMa<Xp8)-h&#rVIU2m6f<}W6` z@UP@6h0c<`ZVUbI#3rujE@s@C(LXfv)}QVwBO9QxpT2dxwSk*ICuj#NIS?07907ma zf~~`d^>Ar3PS%<1`0jZ6-KxT28t?psm93xmn;suUNtT?7Q3u4@w0YhH+S{<Xt4KeK z!U4aD@+vj*tK{g|!mUQ_7t0(9IcArp-+3#&A>R7=j#vDJ0>Z9K4BgBws(0)<d3ROG z^t)1+t8l6#{cfLF+aE}Xr@yR>UB7@YE;O@A=A)&O`>g+I8Tw(%P#l(h$Q7if(Omax z;&R<J50T!ayL!!8T>P=8;a<op*9vpdiZGW{-EJK|K0mfH%oa$F82ay)O74wrwDWJ} zJX<+256bUyRIE)V3GvpeD-VpdO;WsWmW}443D%V#Q@JGQon8mnD5{ghrZ-j!U(lk? zKi^8b_^2JH@0ve)<*0tscWC|mfaCx!leLL=w0=&FpYUOP9rAqEhCO(fDE41e+B~u= zIj(gUEze(y5((kt!&sZlq_eN4->#1LTNZ1R+69k+$!)T)>Oi%!VddpBoBAzDCe!bJ z-JJb2m}(1MBMcMRDjwILLc8Q4{FxjoepW>cU2nqLu0{0G*dj{{_dyqj#;-MT0k1`l z>KfC3uhz9P*<Uoh7U&)sW0cx9j()@FCFs_INY3Gg_YL5^DeFlP+Mei7o^^9OeopX_ zX~nmU?vO3-@ZQsTqOk7lB4|?DPX-qFG#8r32+zsgYzSTeh7l`*pYzjt#D1|h9gGBW zuudrTPxE<P#!o!|U|Y{k%4THYPBEqJbGu2^DV39UC`X)DmFz#_b(`lCbO@9Fd<TD@ z{fN5;%b+;*P9ptR`>IIp*1~y*A``j!<_XT7nA7x3aRLRuFmxMcRODXrRU{vR-QJ&= zvV$a9xATu#F>*eMCld-;X{;0M!kZX`QBO!naQmWRZ(A&5sZp`HvX)Iu;VwJxPO5F~ zids0MF&J3T$dwQ$%XZA#tJEf%B44fh&5wFCXz{KNm;)pxYUb?oTWa<-#_m}hNVoC7 z`3*f;3_$TY>$+!a8TB6InzLNLf4V9AT)G?200~WxZWJf8`Oxvwy_5(wXi}88zU<X( ziDoW!6M<dqd}xJ5KOr*Zw}l^y=p~&{zq!$^`<k~r(R;Oo64Z$9ue*<ENWE>=e<11^ zir^6x+D)|R#@TqiOkyS|@C^4ZbSnXQ7%;`3;!j24A<YlC!REi9%A!qZFNu{^tgVaG z2=1pqM|bvX_rL+_ZbxCXtgE<BeU5@l+?N;d3uUNrYt?*`(kiW+Dh#_;u49~Mt*5>N za4n(P^hwmfD0a^LgDnd^rcUYn7u0ZR#!xc6461T$F4EOD$$86#z#YgHYg?j8G7`v} zvB8+$A5*;6f3)f%Xp=)L^cNH<R6OCc?(W7-PxlhOYXpC+>FvVZ#K7v!^b2Jjo!rPi zHQ`n-G$bVg-H$ENhn?@jnxzVORvH7e=d0{&nCYDvE}I(3u4F(c)PDEb>*VVuy}2q` zZ7y&)1_t-TM~e=w_z)sKbWWFjuhW9tfYFJCR@>}|hiOmG?LGInO5<`(bI0^*ntNRD z!vB@Y55t?MOsh?QU7H+$R&$qlu5q9gTqna*PA-bHh@8w{E=A8eGyQe{**rh`V(X{@ z6{$B{D!JtTcYiM$>ez|?LK*n8qa!xm<LSoQDsflJ$FtK05*}1(DeyWIBun_==$k9Q z`Ku}`3)^eGfW1Ex&!4!m-)jk&{)rO(VhiKl+0~rPhHLK|`3X<8e%|Mbf#h8|Hh=7j zrtIJQy{320X)izF9@1jhG3MQ*zdAO5^21Hp7fFA_((&n3xqOMMo_kv5+^vex_6pca zuz_l<i1sHfBas!f;f6&fw=tyHUQf4LlHW_@&tQ|-f5-9pszI$I8<WQ(N;IZ+E*#Bi zOrf%M)NYNWawVW@_vAsXqjqn^e=BB=?>1+HX068T*f(}&2DdV#`Uh65?%<J4qNfee zTfM~(eT|28-3s)NT8ys%M5;-|#uf^XMe>{9PsG!kF|&R?IlwrrF>Y#P1i89h$yPr3 zK2X1lASrI&GU7$^hV0&kVTey^xf+sM*34t*7heE#B!8`4`(5hphRz9deTQqntVf^1 zjVJNAN4Ntn%xAwliAZ1Je{c<EGi@thWnWIIbsHTZnCpe>fG5JQF?PeST~#XE01nYE z1pBiyg^MNb2_{)nuCYoEgmGfSmb@P|0^;P-^;XW)$gQr-T#A5-_1usi_nBEcmkBhO z<5A%zXW-{wa~@Ecddm(TSoe!fxQF2lbXg9xqb+5LUVCme&oAz0K`f`GQki7_&DgoY z=NlsJ$f{jqtlNig=>z82H%f%R->uyHbVb%{Jiwt$-hoOi^P~cy3ovX44EW1y-Bw@v zVL6fQ*h#~%kw*Dtd%{ckjr1DskMn?m<{C1{{yO>B?rwhq;D{qvf*ai~1S5JuBQ&oE z0TChV@|yqb?{}Q#wfoKRc$z3Y!28F#y^F<RH;!JpvQ;_{cSmdvX+o}BIQ7(^219)o z=4+rE^kwo1{74UiK0=GZy(IDdOMTDhTk})tHf^;8P@eQzN>7IA;r?2htX0X=QM>Fs zqqyDOOZ2o&Z8$K?lROx<*6sY&mw+U*K+PEG`zpiUdjC#wFd8af*x!Et2KxKVh)uG) zY9%Gw&zIUOq<gmai&)S0e*5K??cKPa$L^o0E*iUNKmFnL-_~BjG<B<`IcX3OvCOF~ z*ly()s+zdi!rmh`u`|g$K;o$3yno2T!}{`?+jW3hk7hQIkhr~dRBzV8H~H4x&Kng6 zD`)^~@6DkX`esRYn^iCTYcG(qey9ibZ8FE(b>0^t=XKWzuzq(aMZO=O*upWDi2tJ| z#@dX3r8{`yAOvRewrG%LovTcLlgObRKyX|+{TLAL+A0IP?fasi5X7U)K|Ixi7|To| z$DHG;bU<4I#TR+q9YikrP#^Z;W$VNFr9QY>`SKo!-pIaji0|@KmR$mJq>MX(>;Zb# zvh_aHw|I%yj3{iOOzuBo1-km@5p%pKlHAGGOKFKv`z-uI^I{{o{&{OSAN@L6e2<>P zDFg`0@-CVBmLGi`VA&}Lf{m_@%O0QTE4PS#-A7-jXaps&V!4<3=u@_c{=JVrO3_uN z+_(DZVOvDc_R+l*y;YQ(=d|;qx9S-sm&9HBmP3#nNtEju#R<{qR}{r@sE3m&njhWS zBPvzjsc!g<MPZxHUJ`#I;i6Hy6^86cip1MzkP;4+mQ+3X;_k{Z!n$LU>rK8($p;6~ zPmgOR7bxBYv*;}#_b~-g`rK(;r?egzze#X#hkG@R5Nf?i(&4c{;S9-381NQN2+yyI zZGXIvwXL5XZ5I^Zv+XN<+kavGEZVO$7H7X}KPO}{EIx11$=E_FU_)ORRTH~bM_Iba z)bLd0U}X9|Mh%N)3dCv7CGwY7j;gt0>qP8<&e%2g5}U|=JnHb&>&tsrxSKwVXf>9R zt1e&QxUvFL>eJ-{k4Q=B)VoyGB2q>TOTDjpj`j7#GXJpbxXF53B;Uc=<o|+Uqd93c zd_69xfp2Ln{aq%S`|<;WDwg?x+9XHAt;E)oR43t}<!aVC3C18@)F4k4K%t(x#Zg&t zcD)D;AWPigAs|5C7ED(gw@3LNi`tNB0E=aetc5%HGWbMOr+^sf==s5-w{q5SXjYsg zaDTl@@QC5%>sA)1d}p3i#uQGROcgZv3i4LL)drVeSwEf&=YLXJn#fXkU0;{#i`_%b z*<@G55F&ak8SbwtcCFIRBQ2219IE*Sy_&)@`!e3yX%gA+>U_&dxQkff7F;P=VR160 z$6c1rI-@CnwpiwQG)TCafj&MzaOYBev4wbZMIE1B+B=?oCcQ2eUyQOZwy=LcG=4F( zt5ubAkNvu7?$KX0k9=+U(cOoqo;xl-@JyTq5s>7onPHNaK4>Yum+#sGTXxM>HuuJL zn!k*1!Oy2H^nI+1$YI<LpKtmA97$4*I|jdKiB(Rcy-c6l3{nLzPLkS^+k2a<(WB-@ z557w3R4L!bXWt9g_t?T6Ge~Z_6W030;fZ{l{k!Bj_7*dlKNt2Io8ho&p^y0(RhSe7 zNsK%<#=F;KJ5Wb|7De{6$d}^T&iu)yMBFw%=AKdPRa76_6daUEIabTBMc+p>-w#7Z zOWt9ZznnR?W51<yPwNJvHm#c_Ele!2e-avFmw!8@<ki7X0gzgDmkCM$2f+{{iVPWz zcn9n$;#CjJnB~*L+ofjy3h}y6XM#4UszGH6_m#%qug@=&%-D7A;m7U+3dh^0muhr- ztEQ-Ya5eyt{q``s_Nnpq@`JujZROc@$V~PN!|d-{_IO$Con#NREjT}1FYC+fDezR3 znDVNbA#!~6symnn#QX2W77pA!^CBml(m&2$+HYn0BM>Z^-wZ3t<+~we>IC*I?t;C= zY|NJGcf0759m^88hwMJ`bw7JZG3E#EpnoI#nrt~F;{Vb9C#>=R=!NiN`yUrmy&_KD zxYj;K=V3+jwO$|k9ZX}mgE>iI?=bWIHjIe=L{+I5bvZrVuvLmHV_Zzn24(x2RU2(z z^N4l<r#8w;QJRNz@zkvFG4v6hFMvN6|65hLR*Ei482sY5zIzy6N!gaDcSHYc{l4iz zC4iJp_dS7@uY22UoYuM_3bOAlVz!JQk*(kR=whnKBYDfW-)I7^>`yr$Oip44o7!K* z-AW(D+av+lQKSy6Y_W8gi)nkF-=QU8t?3WlKc+MMI-Edv*v=jS{JxlcG|Ff(g=fn4 zAK%vgscL`U;xGvSNU#Ke`wYe&Raw^dgl}uRJ<1riy@fo%d5X^Axx^Gvg_`S2bM8jp zN<)V)`H7V*$^)o$F^qYk=mG8WlrcKI4N+EG;^9o8uUU(^;1Fe^>PAvQ5DGa0P2k70 zjEZzW`NBVFnkIn$yUC8#ZFf2a>zDLbwaFhtK{~vcJtdaW?nSqwCZI_^Wn@9WGcIhI z@@}k6_V)31&N?gNL*4i(i@|2B?N<cJwVfQh4}CR?y^mPS36i9F*6K}tkCO9`wn#*g zY%V<iLRa2cn?kjLj?6rQqC-w(Pp>Ythx<c+rkR2|9<QQy+8(QmQc*>1AI^R#IFW9L z^WB634uiYgHAz&$!pO1t{`;~e`k}(IZD?lyQhRKE;690=L87wDO;W-*tD-0U$^Z@b z1bJLeYo{sy#yDt`I%eoMM%RwGP4V%YphQgP&+{}J(sglu;&$2;x9F%gI!*<o`{+y_ z;VyZnxcNLVv}J=aRde9u<<VE^x!+hs_!D3WN=4^-mRdF+iuBbOdZl~8?RdFS7R&%e z7>F9lWlZB*%dz?%`i0n5y#%I86TFatCWZi}_7u3kp?K6<B%zh9C;5|+L!L=g25t{+ zmRLu#%iMIzaG5dL*);O~)KYidx?(pU8<(%b)*Ox65?6nn9p5jYPwcfWQzlbwM6HOw zl=@?m0@g^}zU3zUdT2vXb^VQj>~^=jZ_GB9ww;fsp>>MGB7voUJC2{da;7P}s+j|> zbzil1Ay`WS<aqD!)J}!zp8n$56<k>T3eSkcl2cl{4o{wqXSzxRr0UFy)H@?qkb8gb z<#NxNtC<`;3}-41@ml%7-Ee|NHhG*$SYW#QUmmJ!E&|5#Jx|FW8#N~?Gb@r0#<PFt zA*uX?O0|&srQGjiHx_QSSrj2;#EL>&>1f`*iuQ`D@5eKMp-<PX4vgrfOuzDc^4LUr zWJMBx8>`%cIt|tmH%j_`EnywWVWAFjQUKJEEBKfxwWVr_=I2_s`F!+7-r>6vbj5jy z>#e@3B24KCr|!f7{2Sc&@aN(0(VX$Wh+pR_<KCwr2241*HioB}SFhE9KU4u(uw=RY zE)iS9#k`h!VS)yEAL=60z@>tyn$Jb6Utg@e$u;myToo+3m*Ew~cUl$6C*{7t@2R`o zYM=FC#o0*&`JVD|x0J{I*2m2$kGsv{VwnpW*7Eq-KK_=)$R)w?Bu4Vh1aoI^>eIFE z;R^wsF04Z_0I;J$yKB2wqsRMoK23}ApZKI7x{t*;t@))KKM>lgc=<ytQ4;tagS-^C zhHZGfy@sU@xlrsIOpbDAUS)o$M}<7pOW`H@*z*3WoqyOt1Y-H3UsH?gH_iBm_Qw;4 z+ZdG57wzvDwtq93i<=v@Z$i6!?aHzpKxkj<?JqEQj1TWdb$uM;Uw6$tRTb{{>osS$ zNpy~>rh*Fh<Qxf>(k~!(jqzINv^T%->xrj-Umy3^nj742Zt88Qyb1hMb;1Rg0Dtbd zsctw5Pd=u(@6Z$<Gu*cNh-^ESkdN~K)n3AnpFcejvRM^sEKmm@0J^CPceZ_&Xo&K4 zdhf|S=zKr2I3_}czm02BM{>PwdW^wH^*A(j<M`F(e|A9Qh9|dk6?Xu+>K(^c=QDK~ z@cngrWob<AWVh$@11sFv2_X+3mxyIPw5;5#r<3I4cZ~dH@i~#t$^1@E*0}9-={z?^ zIi`|xn&7H&cM0g+m}$gLBX)+5z1GLhAa+I~mzzTav4!bYYv*Q}=O(h(E0Q!F<j=jf z)#7dqlN3jiDJZko`=3Z-3&FTLPp}Kf)`MW&A7-)}UQL##!z_QXEV2y_Y1-w;!c<4M zTgm#YGtZ{-_l?5!V$KJ0w!qTOoU^CSI%1gt#K?T_!ga=}Vi{99=1!xB*J?{=M#7?o z+)t;Xe&>PL8AFgG?j(CN&)spARZ5!A-Hsb{Ys>pz8S$ctwSh~%?<40@(WYy4D9diM z&w+FUlGsH*6pl5mbXRT^!p~+H0{4i%C8odT9z8;%bL%|8fjC*M<a*0`tHGALrqz;Y zH_%7!CbdMa?v=Tp5B`X6Zoy{z51uv4HD4aRfoV^4j&d_TsIr@a7%K}ap`7OVISi&p zEVyqT=!fTG^7_kX<@{uu86iLEQH;v`d~E%jbR1~7Q%pa1_L@EwcJUe?C*se~zt%_l z&iA+XE#$3*P>Ujt;eLOGv~~fvTta(G;bH32RTbvn4|yuwj}6g=XWm=klJj)3iG%e+ zBrk-Ut@o6~Sbradil3?&S4$}rxSzgbrLeD;9t5sGNqMm;UgjTZWb0?9w!S}tx>}Xw z>ninQZ<O_YTeUlQh0k0je;L03Iv!ZbK4T+<ORl=*=YWh=2GgG{)=KKUuRQ<CV*Xo| z|307JVvG3`xjBlUXb4|==8%fy&`ooU<WlvpR9HsqtE!5{<siQCn^KlPH^%@VtxBE& zsL#_^t5s{uLHYgM#GEC{A3Vz0y5V=u5@ie)gkjHrb8%P&UA7nJ(Vf5O&VAEkd3UX9 z*8wXt#@5A<!A9`gst(7E!lAsvru}|sKu3hBS<(E=wcZ<c>qnBu>j{)L<GQU-F9jpW z-zaw?GfvU{M<O+Zw{WeUE~9ZV!D6EujOa(izS4)(oA%$`$a1dW5O)kqR&>bL(c^@z z;|ZYZE__s^_a6S9;G)msDc2!*0(va7P5|by4$_mmaE=#F^rty8g@WnMFn^9nvACEo zO!V{7=r?eC|MP3kXy1W6S!LX9RxUY3J=ysV@r;eS-CV&Zk2yfsvXQ^WXF5_Oy$??- z)4PK`iQ|9x4Nv0t$wayziHyQD&j;*Piqd+g`Csd2=c&+5@jdlgKz6ZYXv|z*R;SZ} zTYvI5DmBh5`d~pq!sARC`L0o?No=n$$g-}o4RnqJX`n^ESnIAjnC@x27s{K!vnb}_ z$r?Ph@Qi3Jm<^{h0wR03AKXH}II$(SVDMt0+n+)-XJ7EPJuO`Enee*NsGa%VO|@D8 z0Bvn3tZi_yDYm0-yPFDv6Uo7R(cU6(pZ?JAwe9=`u<It9IO^|*YXqu%-KoRXsn4JX zW@9tLTjp8n(jzB(DB;a>Occ}@ckpSR$Jop+ai=Z}$A7Kc?^ZApN*j8w#n@Pv`!f_m zG%s;lT;Og}T|~6$NX@HnCYFX6&qy{N;Pb+5(H}1Fd$6X^_J&iP3q?5H|1!O|x2+ok zpNDgOaEr*TtJz!7^ZLX#bgXc1iT<gG8@t8*2Bb;d6WpVeqph!M{Ma36?ZnI4>G%mt z{jFqqjVuv3TU$1X4-q(bkuCT!JtF5Hea;C2oa+}`$PSk&r`$KeRm<Sfed~Sc3kEZO zzc*_Xw6-;7M5!qdT0#=^=^>PNSf&3DbMFEkWpTy-ClDYYy3vBhd#tJAJyhE!in<E{ zHyRWaD_+|2t4e8WTME01mtx{3!1i?!s#fhqsamzQtyrxDtQtTGXsdwQf?A9BcU>=_ z76C8$eZFVjcW+=X&;S4YpFht-_MO|AGc#w-oH=vmjIPd5{Z9Ot1idGKQCCQUjxSGb z`80VLMe2hhw^)(3LJ|MXsR2>O>2YUq9v3k?eofKrVAm(Vu%gq8ir!OP)a4KNOFEiF zP0k5`%&$Yk<*&kNx2<!W_GH92<Y<%^M82j-r{>&toknoIKg}I;Nm+TaX;-;_F1k!_ zMN4?*#R12&4Hif?2S_e7Bt_=ohztsm472VTWYyLx*40+jo`3#8U6H#BcpvQK8vR?# zq=T9e-V)1{ZF3`M>wEiKwtf}3#w2l#apD>i1FkX7|D&l#6GI9cu=W0@%mMa_M^Rxa zsBn<&ii){Li&co&qe^VC54MZHBCMXek;x2=ED54-4Wip!^ljR!PSr}&8e4puOVd8} zn=ZKnQo-^rIl%V&IW8{#xxS5D;Vu(}>o)(ZhG(Q>f~IQb7iJR~&)i?XfQ)f`7cSH< zT;$<%ZB8fd3roX%w)(X}>D?(E>v9LVaE<kT@7EnylCfK`Wm)eJvfPPU^%E@2TKKmh z<1=IoO=(fd;4d{uc+e<gy??wzAkz6;i`e8Jt_aybcb+HQS&#-PhMQo6bSj~pn)ufz zlg#A1^D99EyNM4|Sqh)?Cj=FpZg8{yGv@@{D;Csz^#5^f8BW-AwEhoWOy_OHFu=DC zbQINV6g7_u0*bOpd%^eIq|FW?caeM+$d3~PVPChW=u#9?{@VGPCt3ewj0uh3vSrZL z#lyGwK}i!}%v7lT@~Ru@$4JKk{FTbY_E8-yMdHT4poBWIiZHr;mXl4rdhU!nVB{Om z)I9lFP0gkLPv%h{@mQD<JHcYN`h&qD)D#)}#<>Yrw-+k8XG}HF9ZPX(ljr#!V`%7( zsZP8WC<|`j2@K*ANVHr1CDh|+@ptf}z`y5fn5Sy3kS107hcn^&fsL3y5Sub{Q7U;) zohg2+2}GwKQLRyaRaiJ3ga47tb7}DBfDmxW05@B2)T6`TJgQ8V&mp`$ftUNk<h;Mq zC)k-W-~6{S8if_C>R3GSFqP+9hrZ{JqA;BauR8mhDrW+vLz;s8jF~1*lmPLYVi2{q zsbzZh&6nS^xO|EH2AkRW6jbhr2)Ix6SK~36Zfudh@e&O-@<Eig${{!B!{>=3z3D#( z<uczBS#5km`QR~&jC4F~*su3r<GCD4I*o`=08JupA1QwM83DQVB+gJjJ{aa);dkp3 z<IN_H3X@-EY$fJBC`u5e=>Sl@`!nSNfllYnb5dc=*ZRYlUD{s@Y=2wthZ{F6USN;= zj>d1Rf1vPStI7}6$SJ@9xCqPr766S!01h?)mlqMhHe9Ro4$^~8ekJ=rm)(}>uUPh2 zQT8Xuo|{Xym-`ja+TXH?(S~GoyFtxzBBi<hfXizj<t?IAYcPYnS!^S<@|Vefh}fK@ z$iF()yy>la8T{BWZl-3e|JM6UbQ~u6>aj#pS6?sSePafASnizselqJ{zXmG+mSFbk zJ^ngo4Lg$+Groz4E>}Hoj5cxm4ClCCqjaHFl88aXk>DMGTdmX#Tz_lZne|^@%|Np4 z{H3l6Bx8(1>d_g6!83s^%4E;IQS1*Tpm*;kH!m<_L9un#E}?okJ$(vb-05W-4Gi~} z-n}mW({Ph1{=wvzWor8CQ>1BF?{D5Y1mFr6<fpK{v)SOe%HGW9EmXFB{vVRxRknou zC6%S~076WQ<u$L}VLEPNYdSg!?x(F~5YYIB{sh@n93qj(OHXA1067eQ{r&2=4Kb!F z`JK3zQnc;eHb-mvB=@lWoK&W!doPk#xB4qR@tm#NsYRLW{#}Hf)r%&^He6=t_nYi^ znPw*zU9=D=sI#`OTZ!auB-XWwUJt04Q;ioU2ZB{twU*2tL?|P<6^UtD3ii;648OPB z(-$VwT7LreHhmA)l9N12%=b<JQ_sRaV!pwpTy4mJe+BUE&D_xbVbO$owt!hb^`dQX zq3ccl!C#g9Ta~;oyO~)ch`$74&aDU5->5II+Q>NdL?;0kHCYrvYyJX0VIn2^055Ih zlUh18Tc?vRuVn^C-&3=nBf$9N^)ul(BDCV5`7v|@GyGf9TJr7_02sBM0@1&-)%(&j zrX1uMGb-|`g6;Gx1^7<oPyjyCfKSJ@PY8KI9`Yz~+yPilP<ZXFDOSz1SbKIijjuML zDRR=Xg1pZ56<ML*vnIz3eONn?#dY8xS+pwFRnJHJD*m9?rBgW$Vp(8&>%TY=4Kde; zmb>*W9>YtNcYl2wS>s&)w;#xpGwB}v<sh~?aS&UQNJpE6xNGt(A9zXGQWfc#NC_j~ zI13)2F#fNObgU&dwFTclTlrAVX!1GPE+TSBhjIQ5kgc>CvRfpslBxy+b8`Eqef!$H zxcF`i%+1=-pFFV-b~WfuTGAD{>s%Fek&aso8L&Fk>H@2Wg1V|AojTJ3SVdnRIG`<j zR`NN)CL@<b92Unv9AF{Ei?GQ3&_M^5ZpXP6cJ8O{MY<149b8_D-FqFl7~0uQ&~Sb~ zWf&BSCVt=_T3*;n0YNs``ECsNW3kkwLukw|fmwiJCH#9ID#INZ4Zz4wC39HbzZ)M! z*3bDCUK8}nH)vnbE6-7^0N(#rIppj_I>7DE3nLi2X8RGWQvFRu^%sr!0iTtBU{U@6 zxAnj=+!Bc*yuR`0vbJQqOZvtC`gR$<Ne1E2SOn(AFqcTmRBi$NRSWy??V!Zw2aB3o zTtZwfd)y96d_alZU&?FV<@dzm*Sr*;b-yEaL3!+2#r`<8wNGM5YHL+ucP^YJ`lA1w z+`g?(--`!lUq0y*&hN50ezN`JeB1co0=2}STX`5yrm-RW!M_6i6%(J^jRk%}c#W@^ zfL{|{>h}$@G&3PozP7mhkdky}e_46b`xMHPzSQqu7VcLF8~nQDfYhb6)sD+bN-V73 z*e#dAA6y<Tt8Z`syn~^FBV9VUCb3uQ(wb^^=H01F_o<|oOh>eW1xGb?Rq3NppXJ|0 zIcuu1?V8-LZ{OuX9=Ctc=^47iu)pBNTR$39q|cVKGo2C%P-M0=bzV$2688Rh5O!q2 ztL}yRD8H2QazoihUW(PAmmIp7IFf#=9}G^4#tSRqOusJTalV>Z$@MCNe<GOpb84H8 zc&@dQLuZ5~iAwMt!YBA`7j*qYcx+j?p*URR-(wg%Mvgfm9Z?vG|2bokj~Vx8O?Z{K z$gC6iYiocOE>-|u!nKd;NXINbxD&Tw+n|aE2hh-v-cH)bd_d`bvn?)T`Oy8fN<6$@ z1}2f~d19mAZzvYe47r}c;u_s(KVJEC>PkAeV<_1rUfe#86)tmLU;GxW_xB%PI1tq- zFdZ5L6xMr^YPNn6>85G<#R)-39BQ#B8#ejTqg}$e<ljBazsWx&h;AmQ>A*Mny9ZIj z$@xC08H`PSZvc5O%V{v*a#5G;8njpS_~1Gm^H?20nm`ddFZQ)ye%hjYmk41?p9iJ# zqtAv@L!|Q&xQ^#~t5Z+sxcR?C>K3}{40TY@DV;fz5$pSB-{m9B(MS&SlNo}2Zz~ac z`SQVCT|HYB@m)m(6~CYed$%$#pN2`lQPPRZt3@0nuT;d5M3l*A%$LJh)1sFQg;dzj z_K=Tx&>pW`DgRg)My%2S<G}PFNHhw+d4IX->=w5HH}|T&Zf)oOxphkK(jn<${n4AW z(enLOqxU;=wu-HvIx&|1TlxvPSYJpW1<!;N%UE+V8`kT(JC-FH@Wp)iXl}1`$W0%9 zgCiYv_Q5Qc2bgBAo-Uy5XuU<%p9n6}BURijse(FIlEe*v4~0rc{b~ZO9@k=#FW(uC z;~RIUIJeVrXICeVZ%wZrivqN1W28fv;hez9Go9RSJEs=6=;zdQKHuUEO0MB@`W&Z_ z^dF`_n;uIpx9j_c8DGq{OY@lg#eMZj-ZHjnTco2I#9F-5Yg)XKwQN)PJ-udZ)0?rL zk=0bH8>oJ8oIA4C@}QNevWz_=wYDJuj;z&hw$&tnd@EbiEQ3KC(|M~;5pL*g*6|aV zU91y31ol+D+-Qh(u8wq6^4;vY-e~S@84~FbT{h#HySejf>)uEQrw6^0F~&Qx!g-uA zE+U?h+6MFZ5g+B;dor#HxcGlN1+yF{1@j?>KQUNvXNDLWo;cRJMXE8HtL~@`+pj*t zzlLjn?b!60HDlA?;rCg(z`BCwcGDB;JBmX~BL`={4A>abxkm5Mk}6&$%l}*jur+-u zvM*w*X6s9g4S=ZduS9^l@P9MXAtt8b(r||OmyX}q^jYA38EyD`IE3M#=WYr~)vjf? zdWDhXQe^s5nw;eb4m!My;Fc`PI{Q|IymetNdTa^Irh^pa8p5EC^}a(6-yWa}_*;p- zqy4QLL7WE&<yd7nYOKG=u-+%Gl_zpG@~cU*g<mN*+W4&)@ijIO5b=mB@C^yKFY<X2 znROHq?h<cgc8>4X^y}6nci%kDnJQ)uH5G$(-(&iZA`gsV5t)o*m`Fz_xw(3tTrlE@ z7Bn!Gj}V5^W~!#cTuhb4T%?!-TnwM&L336yBI;sf_`&^q#he@Is3}5$=Gpj-I4&}4 zI$dMuvZIHu9nCYj{CPWum*n&6FXI1{$OA{Vq(8{*V)^CR5}Uij>&;^sH{IfgY;wLX zUdxP@Isc29(NB-4y!h|7__o$hjda`z7OCETu6_uy^M0_3wtaF~q~o`Iv08rXUxQHS zHK(trpOOAWeH)SKKiAJu8r+Z(xSCIyH(!DFsF@s^x~<+7^;2_orVUDcRF9VrS|<a( z%+3>gVcAPJ^ox5VD$Oee%KfeWp)F<y|K!NF5xi>E<FXz>)@C5hP<|OrU*S0fn)y{V z_%{$Dxbdm17E`s`gP?r>htz>$?E^69O$H!D=Uh~O1;{D8A%_Bo_^E0@8*zvtq8<TN z8`LIrX1U#i7JMEjv}%F(BX+)z;Vxi{9Wrh8r^OBLbq?<}4)38<FBT<eLLF=!nrcer z%E$xYqP3unbZ=^P^MUc20}}O94xBi|n>v`Uizbimd|Pc48tTbNXMbvMjx3r|>xM?> zJ~$YObbJl!VZ^KIv*$DEwDxq$wh98uK0<`%s%C~H4Nr>H#DJctF^R|nBP&HN&~xXP z$Z5Mm2B`f}&9V|rT|vGqog&$<QI5)+>nmHZPXJV6Kg^Lvd@V7D3D<cIit&ITtLi(t zlW6*+oO!tlbTT_1@ctmwJvUQVL7kMDz;0v)^d9a%i-5=MN+wl2NEO)wfsMQ^{|_B9 zr^)fcceBA=_1+*e%AZa(v97yH;2$CQwPdIMUj_M2w|pB)^7T_by`?DUCsV5<omvRF z`*$5>>@8kyIF>#Ye4sMW*FJDsJ(*^4Gm<#&<_;W-&oG%;A2b>Z5}s>FywhSX*p5Qw z*0gcv1{XSj5ROE0Yck)*<oNCQ(%1S(61|mE5mTn&Y<OT%CHM%6d$oz(vd^-b<n;w{ z?_4-KWU&=II54HMw=g*51ZJ5o^WT`Nnq8U0e++ae`m>q)+0!cf8+tjUAo+K=2>W6* z9aA);qKsuDUD?Yw8{lS+3xf8;mFg4`k3|+e#_ury*HrF^^kGhB$R;LjSd>hKaLNSJ zrL)_Sej_c6Ips(%2u*H2Zc42k`7}pHugktADiaen?N;_}9sO*c@y$3uG#GJ2I8A_H ze>-GR=h~Ua>xt`eddV)%#TVKUB|`;f&W&i-2sS_xqM>1mc5mg`*DC)7Y&qnks&n(D z_ls*?G`iZ&z7fY=G9<oO3wy9)ER9^XmZP>j{gdJS+&=(X$6Lh}S+4%}+Lcy+X>&Nh ziNl?`j7#e$(64y!lumxDe+fD4Nn(}$iAq02X-N3RcO9t@H4=^)vSu3VH;;#ak0O_f z=%zvT#{}>{SNi_p3^O6bW&}4>IKzBWc1M%cRDDd*N2KF&wgd<Xcmd~QaT~DwT|$(( z;rT};XZB4Yhx4S?$DhD(Hy8K?+o#^Mra=2&N?p$G=qTHz;7v;GztWGVYf;IXbi{A1 z>I+|~bvz2@Ti4q3QL;<NWf#R$pH{|uMq57Y(=Kjd_Y=>IuES$4(6S^mV@9)~9UV>V z?Z!Kv8P^?8N7)*6Lz3gx#haEUbMd9G^Tu)Wmo{Kj^(B(W6|jIVCW&;Xw4yDaqC>Dr z9AzyQnLFERyS32@$vg6)o1%txFc%2R1~E@OgzHq;zwLb>7@Xm&42GU9{NKTxR|Lk2 z0|tL1M#?+Fg;ipET=oEn|M@F)uJ^yA5b4y*-LWp~lErGgM1y7iGR~R8*y=F$e+Tbh zmWT7%g=0qK<$VnnVRv)w`HOit8bBB)%Q}W+pEYnW_wKiBHkFJY>s<)b-+)DiYoQ=A z5B@#Ga`f_WZY+T#YWcUAeI}f7f)kLGHS9mo!Vc+jry?Lr27=3fq)Rm%oQyZ-+w>@> zD<!y;P$V$PX^VwgBcg<8w*zt|K<t%z`43nJy0&Dn;_u1JUM6vI0`QXWL%v#G4`NXL z@7{0c#b)HTKM{-T0q%eAMB}M;v^^O>aW0HaLPvtvh@Emx!6KPx;5I$1X=B{O^~P2| zx+pk$mh#9uW3aNNH_G>2=ku{SL#mRiwH{vvXvbr#T_xNtac;4Al2YoJO(z8Wd=xuP zUC4%aMLLCrkUx$>_<<!-&KEQLvJp#vt-{%}l^>5bhx1JIra7f~cFwy6Dzs52vZS+% zdzwl)&=G^(uCsT`!};t<5wrQNArqhw1QqgWY>j#L_&aQvuVr!Jojt6FpZCwE{c7oW z^#k3SzK?FzD|-Hk#AJ7caUhxRlN|)91*7T@WwJ67XPLM+V8pSB8rIDLS((5i$6{;i zq|9n!tFt+TPF1k+cvrzNRe-GH|C5N^by%#MT5YL+8sY403Uk~Kn6FVYU)eMHmHg+s z#q$#gy5zteO#7Y8^7$=Q8@|ViogEs68Y!L3Pz`N^R<y|M-_kV@OKWE6F*K>={2@PS ztz6sta<KnIll4RD$;)TBEXLu;@!umZQ6HIQ7UHPqiQ4aVqIM-6Be&y+5{PuR0a{wm z*<a-Y)!-gfP|*1X^6nRg085WQv@t}|oIU#*;TsC!RSM(lC`|tq;lQCml>A3*dZP$G zL+^+)h0Et7vvv^z!tRKZ6;or#9nqf(Bb|MOlQdle`M}}RmF&6%YUbfB=dW({cH+qO zLxPgD8s%vX5%CH$UT#fafM2nrf1@*DsVq75b9cf~*a@HSP^uWelN7#yF_V6d^zSMx z%d#N+J%x2KG6<ij@G*t(feP2>!(YhKl)Qf);H_8K8CFJV$X2x8$N%V6n%L0>0TAda z6reXqKBAYHNQX=^2;8J(yeL@xi`C2iJI4krU`1lk62%11RAr^cDmjm!(?-*sG`)jt ztfk%Rg@XKKVs6oSLU}s5;Sz=X=*YTmWI%WUD$)1-<@4;ZzYlRs+27^V`AALQ!ugBB zgLUUBf1bnXYoA0dy7R>6P#&8Oq)QT)og2*Ss^imMDs&h1^7aZ0?^CfAmE#sGgI!5^ ztQ9NwSDS*KSf1dF+HKbBaJGV0eK?)OG<=+GU|_u?={N5|SWL_R5q2hK0o@Q-Ht^yP zE|@#&+enr2eV;G%MT$w>WBt^U-lrb<u%b?hsnFT6bLS8ODC;k0-!D6h7PDa6e~AkF zkNq0zl)Y(+>r&a-G$NQk7Ev@FW%6{q)%#)f@XhK7`XhAvAnnuwz_zCU>U-<+cSV1o z2K@Xv!rlO$=ehSftRrNO)sy(PQs!fCf$fYea%S-<zo+R(6aC1NJR1!Vp0Hr9zq^_g zeygrg=9m1Bm6OiB;04__UGM*y>SVwEXd`}nN@knsS?2-Bm}BmbfxMhvPn7>JVb$3! zNw_g_gWOqm34c0%A-`sZ#~x1z?7c(-kY3Ts3fq{hSuwiei&^<04EoEg6?ib*JUin3 z)hvqmOJ>!Rxv{7;Do_ftA=7e(hDE0%s$vE=-c&`TL%xlO;d0aknZ6a7DFc?ijcG#G zpZOJ|GQ6!vI=H8a1|9fjf3XxW{)bCHHiM=}$0|)(T5%(-Fm*yJ%4fn02!l^NJuG_% zSqk&1guWqb|D%O+K1I*0fS}VSRr^c+o*&R}Y1ke|aB%~=K{xf3wI{KUQlgBN?NRNn z)h2)89%fk=)mUl_H~g6Vw5E}^Y3vqg5cu6f4K{Wm4G-U35>(j>fNga>mRLv++N~|U z)2@Y@wgCqrVXMFI4X!H_*H|ArDb`-8mGK?@I`}?i;HlabS>67er+Jb6J8cfevuHh} z<1Xde!`1a|z-I?3x0-YKWG5;5XXO1S*{2#-%M)K!^$$-1%kx+IPkt%nk1|U;&YTcp z`n%Ns$JbT;%){b0wxpA4d`r5j-XB2yHo=*Fg##{|$tHC8uL~YM_2NArJ9bf)t1zC< z-n=gEosD7G-&E$Z^He4G6}-zicG=0_cJIebv@PndP5!<{Iqo3Yrao6vOZc<(&mKIO z6ZDVSlTAcKFg{2X{>#S%ZRK?l&iCx{J+RmNKRlo>+^&uuGn?;C{(}8rI_8wOa6Suz z{LMQ~PSMOOkyHF{U{z<_5sTD-e+TwMsO0ajZ!^%?1>#`(uPgeG^S{A}($u3x@$*P* z(LEbB;oCq*Q{AS5hERbzzs?!ahS!=J#e&P%n}1uM-rM{i>Rb5#w7&hBy8lCc4akw~ zBmQmsCa1RUkvNpUwTWZ+yJzBr;obc1o9ORedhA-E?#c{pej8DT2Pw^5J@-yt-s>7e zdhW$Sc$UIX=ELpVZeg`f9NNC^2{tc@hW2fL(Qo7M?)Gi>vrkI&;rx<KLdE2CrA>k5 zU3&<^#(>^zY0kZzhu5{IQrG6gdHz+$^MJo*gFF0rJ2sIYQ4#o`heMrBJ(wb!*Q6EE zc<Q67<ZDJ%b-|jO_YvyPA~(y=(?~660E_1-`$rZv*H%rAF-^l68WywpY4ZVU#3b|y z<{P84o9xB&SDv-2shFJlbdSV^{H;y=fWLbtn)u5r(f$5FC5fY%1HaC>IdB7=73+GJ zGNB>uxhDj30P@s*zf8X-VV3S2qGR#-^Jda-0#@$Dp#KQ3QuxW@`O7>IzG4s{+*b%^ z`hC;D@;V@|0~s4)DunMTx$HY`oUsk^I{6OBkwwv};xIl{Rn1U5<ZzJ=6~!uEdJ6NG z%X^eB%8y|EpYz9iC)MWZK`rZ@R96-rmiM}#^vKEr|G_?xXOW}v%=l(*MO@7Or<n%T z=JA)jvZ1G{Uc;DpjeTl*6)tke;LK=H)6$dX45^;>wpUf3dm?NP@P_$!BGtj|Au=|> zwf>evE$Fv#s&>4l183=>i~WFp%<+z{Kn^<%>v#Y4J<TBbJoX>(&eqIeXr$kK#xc?C zY}N2C5yv-{F*VLPdT|1V`!A^zD(3LsD`tZw$)xcNLy(;Ob1~_Z$&1+Qa-(6*Wc(ag z^<A<XH_MuNNtiK1)xDZ=YxYjAYHn(&G7y@)&GcULaU-L8KR|wLQ_JYUrOnv~kCaTg zoxE@TGvI+f`AZUd5VuIaS32cq_@h1yZ$U$hMdRi5%f7I4Mcc1*Ul!l_vGVd>zr{*V zyDQw=r3d!VCJ@(Z`FijsmT(@84QReNy-w*rcj+ATnOSzYzUBdl&on*Gdy*Js^lNQe zmKe*;(7Jfj%Ea#RrY*@`{c{Qxh;uCWTfzvvusy;8mkYe5wjMXCF7b?jZD?s)oy5j_ zlkeXMiag^QZ+bF$tIRlx`wIiK;`d4!zmoS$)t^1>ZBQ@$RpGyV%qRAO<*@8>j>LeZ z{Q+B>CyMf{B9DJN$utBTrtZYVxOYZ8?)`Wj5Jb_R$3CTRVjo@7oyirCQKZcY({{DA zok9w0ICr^!NU9$KBe{C)S~Ea``z-&2@g2_QP%_*ptO~I%Egm7``(_gaz=GbJTU2!a zr{umzv;=Vsm4nCW2dD)v^CzCVd>9+q69BGTUn6ue;8=%o{)+Y3)C^j4k|Y+HS+HQv z(Pf$BI<T9|)>_!DHthahgx#Z!0d@>r)U6|S6Bi#5&D#ItcHNd0j(*qoj*9~I8eKru z8Pf<en;Auj%#lTB@G3yIcU(1DI`!(!=9Ie%er7wa0kuN53Sn<fHw9#=p&hGtMpS3P zx=QF>TTcSEY|bCTwEa@sFu1vj6t(DxRsC4dA{~9nV>3P0bpc6BXpg0T@-w^8e+OH9 zweyeGPI=c0N8yF9?6{pFznk2CMg6gT`$lGsW~5Z(^Er3biXXMl_5;=jjrN2zpRukl zhA8+ya`hh+)Zc0Kf4`{y^ZrBqBFz<7{f-h9*|R~xYrCCK_2q5>LWi!jF6it-xYe5; zZ%I8YVy#Ggl>z=ex*|3F*H&>e(P6`1`Et<ktQE}cd{vNjnPq*sC~H?ft4u-E2|sP` zhwwSeCWR<J)#a*OpEC3+v-mJz_EBHl?*9+WCJ-gH-iD0L>(^)9&J0m(SoUlkY=!+D z=5G%32aL|^x9smh{zHoMvscQlw7eZ^bVbaL@UnlhDC&3otds-5_VkqFQshVf7sK<j z=r<HMQk<ttayW*bUgW4CVzX%A<~9vsr97SBpK^<t5a5u5+Xzlw!3v`OnT7vdZuk$g zNp=XjD2;)LJ=Rq`$-V&-G8Pb&M*d;Uw!Y%>|H}qq8MuUFc2t-@_ayn&1o<{vzL$&g z4an!aV@Le&DDgiUA8?NstlcFXa8GeLw*>BDxaH*qH+%aezmi&_UaCx-%04li1peF` zM2j=OW!>0zBN=4B7)k>$%XtR0=PD~pa?e%D#N>rg(Dy8#=Uugc05a;AJxii|;z2sw zrWgm*aEcIa;x_BM?70wrfqsIllf;pdq~s7UcE00f*QJAP2#UMv1uQom7#T1jf68AT zJ}R1>GY42%V*j=-`9kcI9M(ARK0f5c0vRMa36vWpGVp?oV>pDf-cOC=923-dywzAd zh~EioRPp7oIqZ*z;J&84hH*@7_+;SfIrd4HL%%kD!@D{2?(cetTL_2i?n0ga(%}-K zBn;JYq<?q<!)nxieG*aY<J@X1&qBMOXX|5X%fL&%Kwmuk5@s9e?o-Ym(%xG6crR8Z z<KwpLNiDIlNZioXk5=a9b;;^8m+sP`Qtqm*o%u1-jxJfBn4fKS;m8>4{X026prh)| zd6lVlNvTuHFI`HDUA)a6OBXA4w#6pxM(@vE4o~s7@U0dM(*<6mnoM)FU$!sB^8A5p zjjs6o+#_8Bgvu+%Y~1{B^#)F6>h6s=7pq#*m)@UzJnZ|VWs}n}XLG=NI7@3W#9<H5 zqZ6yLZ(<Qp&@cSE@`0mx$`39o|J#!CUb{Hqz}0E{mHzg_)d$*l5M!fKsL$mu$bZg# zipsABPFP;wLCkjLEnlAgy>?A!mDg`rUf)5?cI7Q!QTb<r^7;+S>pR_UG24~5*nD|z zWmQARd43V-7Z9QF`=Tw`vzyx%0<9)_(D3KScCHF87$tTdn_ekn3GO!^7<eqVa|JHg zu@gwtpAcCz9zjC)g{0d+Y&4NVH#q9-afrl1E!8Jf^u3t3B~0wtL7rVLPv5?mr1JFS zd8ROt1c>zUz*Rh^jV$#?xeHG0y}5k>zla`sgoVU~F7aM|TANmyMN4aB%u3oZHqBw7 zWCR@mO+O&Ed1+O$MW#Z7d9aI6pE;u|lC91LW<N~>o^;Rr2>tXMEFz;h7+lHyoc?@I z=(i<)$S1MP;6r#mi#M>|kN-Ni((6Auy^3rjz2;p$9+__5`QzOE#EfL~zRRbR74d2A zHX9k^7d%2!cL}GYb`_3oi&fh^$Jjt}XH3M5*IIu3=d?2%{;LP%{lx3aVDcZ1VIEVZ zHA^HNtU;U){^rQw%AojlNqsFcM=7bSrcjxipJ9E8()#-SoBEoH>w}JFL>`#a21fCI z!aR<lc#-@peCilUXf1Id_s9Gvei|GuUPX;C8QRW?K$3uKzk)^Q0mbEaj%QkC_|Ij< zW|LyS<cxcsq-Xz89H@z2*ZV*F8pM!EiKsai{quKK%X9t*(^+3Lr_}i8-fZ<Z_@@un z<-${j`7PXA=A+IRQ321Vr2ovl_T6PrhHl1%mmf3Cy>1uvilUBmQJV7TtZHzu;P36C z)(NS9UN6Yr41Hf)2O<F1_iXpQQs0-m?~VGl`w3x}e3OLWzI&r};FIqCdjHaeZr3oM zBDT^mu4RV%KM^3-ADy1xL=xTvIQis>!gOCg`59I1KluwGbZSk{DBZiO=o!^mF-|`d z>-N#lc@?+y;YavZ^rSZMw_;u;UnUR`@OPnVtHZ8dMmmP8p3Km*HWJOd3!H%a-XOYF zXpCxbF4X*i+=X^A!-8{t9QI|-s6)l@=5wrlCL#LwJ*N(5C#&rP?*@Z^wg1kwRuubS zBK$h%XfmEoX~>;RTK_?pg-DG;q(k<P@r<Y8_ak^>>8glYM3f>+YKWbjPU+^ofBNg9 zBRo|Q*Y0UbDQ9HS?ma27U@6i>PRDJv-tG`vWtG8O<xbd=Qcf}mi&~$_=}~(*N1D=% zF;`cucXL%*wOH3y{ubuyC#Ys5{{&gIDJxY$zhJr>d;c13Y5{JZKW4mfVN3jLUb7~2 z952Gnc$4x87Y7MCr41ir3Fdp|jJ^EXm>8%D;*Vfc8(=fSuxTzJ?4JrY+3%4nzn+ji zyUw+5Z_9pLQTF|n{RCyt>j%ldILNOzNn%~vP8Ry(?L#P`TNGjYisn1l5Xj4cz!d*= z+&nU;yA{stTs_6j={jADMo-~?YmO-_>in;}j|Trty}}~bjaMM~Gwrmd_}!xf4mXY; z{@x-tDDtCyY+i2B_cbo_Mt#5H;%jN7|9AH-s`Jl9S_j|)<$1)#ujHFquq!)2f1jV& zl-G>$H_X>}Unn}!A5!WaS4Tl{6#pPq6i)O@fs*fE$JGk`7w(tDL16&zF>U3PHPW%1 zFE{%eRM&MvC7AtFNQx{P!=7lacv(+ML+?xUN{`xwgj#+Fd$wD2v&Nfc0!d0V?#<f3 z-*ie7!aq_SWs`XZlUa3pv(!7xZj>~$)M<Q9@@A>Mb8KD_t?L-f$9bei9+)+c5Lf;% zP)skwDWsGQn9(Cu+oylZYaw@-0)JCU@2Bc$^qKL@%o+aWI7b7DgmF&10A#{>07k;O zeMT0|(xj$gHU6bMbw}2C`abLH?<h!57|i<&WyF9Z!E=M6<Q?;1y%D5lrqsAd$H7Vn z($mK30I*V#lswq`>1sax_e5e=NHpT!XYpn!DV?fQUL*<~1EKD&6;E5M&dS*G(UWQ; zK%NT!B6}Wju2^ooC$)em{Zl<d{cd~oMrbV{F4Cb61+6ynMjp6U9ZAw%E^-c`)XVP@ zu~2zkhozUMUaA@RILL1#d5$Xr=)L^c*sB0a(G;oSCoHn8vU~NLyt<isxhlOTs3!ID z`vV^jyV~(29i1XnQd+!f4BLBV`cuz1&hQ-YO4(Y!gES^i(4k;~zA1H6Q0h`E^*7Kj z@Q1&C0q-9fG9`jcNz1gjB-34F3hubjKP@w|J--n{X(JPpMf=B=+9m34cKwILoqGLQ zX&bu)5`}Hw@Rz%wQa&#aXZ|%7%P+Zyr6nog8^Eh8h4<y{;OS!Jj^Ks!IsIh%@BS^n z*Mam>|E#M5Qd*ukitW4e;QK`&*u6y#ayR)O;4YzyCb)gM^}V%^t~vW@*XvWO)a%-T z1^wq=Q(t85!DzwS!}`4+vQvBlKPU1yq6$7Y>*L<z`?1qZT;vZ3@Oq>@zzfgcdAxqc zi2_`-&fg@g)6?rp&;p-TYaKo_x5KCR!0qsn%*K1Pz(jdHOW)rSSizrP3_o`>EV2au zx>Eel=q%uW((hcq_VOaGP0?cfpS#)cul0vJ_-+@<xEo1>|G)r$8HShk=ZT+%|4)G# z;{RK9npUMX`asif{S)F}INuHTU%Y@2Zozi5W5V!U*v8kkTU@)-b_=G)CM&&6>W9SN zv~@a??G>gr!S+h2tTlrzg-sPNLWbJi1S+6Y;wUv1LPK0~j7P?7w8NhF5*cpr#WVM6 z4;4wh2K8)ShJ%B{2+BrXuJj@gq?L*Z)SR)fA*nsnYa@$VcmH&9x^?KM*|_rL&*RRZ z8n<g}S`m+&q-wC9h;)3OT$r^{mu=>zkB)8brlLEk(G=8Ddqy7ki8gwq^qF%eRq?(? z@91<l`>F~3wXd4c?^AoyzGyyrR-&+XJ5xrTC}DPI@76lh_HNk4AMy^5RHG?h%JwaL zBT(6lsZE7)V=Hh7#ddBB``MjUtWxhKFMYFbdX36lKp9sR_@vKd=Qp80JHHA2KF+o% z$)KgzrpH!L^~cowadtTIh4%yV`|ba4$J@5gI~s5G^JkB@Qva9nc4YNg<E@_ltnpUb z|2E#G<M!W=x7zeSj<>4%jPVw<9gH_qOo9l^wgbWr^o4=4#ZB`*N%!0+yLGLfn!HTy zOl$p-Hhrbdl<xPc)k2r)d_?4dHkJa(P{yQ|2h-cw%EfDgxUfD7N^(=dn<yylxSiEj z=B_sWS$_Uq9(JolVSbf|rJWq!-FDg3J)A$_$fA+cir33P$r1N<&HfPKQT9$V6u5wZ zR?;r*G>g`Mt*7wZ>;Iy=Ya_utxE;ho<cz|f*f+FC0F@~HHC~+)wsD9Z1MDJI5M^CU zu}>`M@6`3~jK;OZYu`Y|Lb`O#74dc~W%!Alv^qV%G`(COxP5-1QUtFeO7FLCvmfAf zRWJey>nAdDwT;^3^!$KGxG(=-<sV<8Dp>!5^J0{6vj1pntVr%`iv|W-)<3@YUR6cY z#!KF0FFh{3(1&os^;ub*e#i|X5H?%4^+^tNRJ22S+!si&bkh=co2!sK$$?J^F+Lll z6zPBH|AtcfXlclv^if~5J#BOx&Nmv<;~NY8N4U&i%7paz3B~CIis3^)T@3)z5q2wz zwuU4Rxu>JFyVaW?51Zeb9@LsX9ZT2rIF~X}Kk1XXP<?tWv6Ecv6c>vj=IK}kND_oL zx2|&X%y*#4Sl6$pE0nK}+PjE0-Fz24Z;#KQR_>&?rX5;oL#x%Ja<01*Ybd4X3#GU> zlKD^N>2{%n_Eso`Bk1t?c7V^N+u?J|Ufbd0il*mJ1q=iN18m>G=U8@E?Mp=+ylxUt zFU!8l=ECMz#{7G^^o_JNNPjd)S1>bQAcFGQ@8I;Zz%N|7ww<J_eD>s$bovK-l@TPv zp?1S`2bF8Fy@ey@!g%N9RYMDs<<uSDV2%F!+<MV2&$$QlKfrTf+`HB)<~@X<$1ZEE zK*kS5JDWd@=OHWIcrLX5<4=A(zkwNyArS0tpznPBq5Cka{Nk|k=`;MxtmZRj;FGMl zTD2>bC>Qm(8kcNW<J+~RHEO?t4aBO%9{%YwFk_&TcGfjx^-;jTbMF<?f4~n=51jv8 zVx+%sP>4NGgGBp=^tz?~{#+G4SfceU7~t!XWb{?Gsd!gmsu&bh0fQ)FCT;YL?Vrs4 zm0=$bX%6%U^_YWI4WITdr#Kj<ib(A0UVka#@AUWL6}mI76W6z`{r3Xa@%DH3p!LDS zFadwl{BasVqa;`54J%5jTz93R?W)`*s50Ou)Yp=)@6)pSuH12bap%)M-^{5}JswzE z=LN-e4$9XlgZuT5h3$*<7l$acFY<5eD{iJ$x$v=)W^S5U)XV`vmDKm`e0_Cg_1&`j zj{0*L=Wo!1Eqog7!2vb7@s(U!@c+*Uw@uVi<p?f{J(Ydt^;3SX(aqi0$*I|<cjt@d zzs>KSAP*0Rb}3I_fcByG|HGEs@ow$|x1P17rP-;5xE=p=hExT6K9^n`mfoX~-_1|$ z1<h~Z3jY+<?Yxi2d$bu2w?N7L)c8H)-n?pYFO~~tR$GO>(|hQh6`d#8#=3aFza9MC zSN<dX+9LQh{{g<u-$tSDr8j`AOu(j8OP9A9eUM`GFTsMa$)7ZU_>^B6KmJqVE~!`C zFS5ZF*YXBu%``>2Xz_FCrD?h2K35vGJWJ7V{rbU>fcuzDXUHE12KhTIf2=6~iIzXN zplJOK*Ovy`sr4lcHwNLd`y5<Scr}iXi3LDy=JzgsIhBj!D58x|UGSL0uP%77;INf* zUTGp7-Gt0HfucvJUu*6AJIfKn!m1K;{~)M~QNwtY^Lwmt@8ouxJTH^juQJy3;l&rR z1$|(j0nLr?C*R6^wK870O-}VA=0TtP4*kszcdf(T%o#zhjjG^!h*~@*xvMPmh1;B6 zUH2BfyQw6Hu8a?ksRV&1Ps&^{xU#wFcDou8nH@#Iv<q8Zkb6b$=OMi#A2a{j*U?>& zXFT0URB20eER9$>FV;hL>smKIkO*!hZ)@64LYL1Ye3uI^<Y#%|eM}M5N<o#C+6sRN zE#y5%?hG93hZLjaL=F0;`&KJsK>w}}f<P&}+5)^s`-Sk{d?SRXWCySAGvR@+Dggg( ze!yS+$Gx?n=?VXt<EyY}Vo-ukZ`(-F`oie5yg$rdW9fz}>6QbFjd#&hh87!+9vu^@ z5q*~Ace-fHug^UFIwoZKZGO6wa$J%8&A<8?9i8Z55KoBtt+05_!|V8M^Tf+)TnDD_ zQ#zf>v3cow_?t)EeB2A}l=pvM!yt2zKEi*#Chr$pCClp{T&TZB_5THyulk2r{c1(N zex>iI{zHQLhwZTbb4%+NeX`$Myiim)1N&P<>}Xe%Kx^crZjP4|Z#kt-`xdI3-XNt; z@)DWp?1$P&akjZ1l!!PzPIHBwkN5f1U}*d;6N8O%2E&1B^e?T0w!||hBS5``9_H~_ z<?8q$t7EARTU61s9)01PKD{Qjtol@MNOg15vQyJT22OiB_d5qm8}>n*%vb1SzR$<G z>x<>3@ZlRCaw%E(_JHu@Hwc0oryp~7*35^aO}C{a?2WH(-zGDb#Dz1z+`jD-I5D>D z;~&OU`U~tLUGO*scW>V&b7oSj6&%CI(R{qWynS0G<-_=Q`S|dmK^0fN&L+{tZzh;r z?e0U6x`rU6>E^$SEy&y6_^KV?vy>u5_}r~v0iPKP3ZL8fD8k3$h0nK$FT!Us!6JNO z1V0lWx|KJ<aEgOSsrgi{Ux2wuB2bnpW!XO6hGlhGp1k~_Vasnu%}=FPxk7)G!~0L+ zfNO{?EK6<pw1{=M{?2n1d6Z=Qjej`%FvmU2J}lrKq?2EP)q&4WyEj@Rq%mN-kw$4| z?4NqMGEu8YFEni&)YJA0QYp!R^jJ=P=ePtWeT(;FmBk+B`tHhZPIXpQ2IhW|=B4W8 zLi@c~^^z*c=y=f{mh=wmLOT851t_9j`-1&L8sFRVl@P~gNz-$QQ;_>~U9;)rYRQhL z&hVGdlhV`~N9-}5?+lN>;fC2Cv{FY&b5+<s^+m06H#<Nk?ZLw0Cb~KW1@PzJSX@8& zl!Z&CWsMgdvZSH`?H3kk_}QFihHFLqw7h-v@64T6;2k!-nk31u{1o*M@@YIK;~rdf z;j#o1ZQ1VW3WzSK**%7x@4|DIf8VJ(TQ^xXGMaqiq^!s6YP-Qdd;e)NXOC)^YvBpw zg7AL<f0*E(@tN?&YO@mx@Gbm75O%hMh5d1P`^&@Od`pjuT7TI5bb&VNarz|eOE`w% zVT-2|C&qc~^TUq^RK$;0`X#3`v@;+@|LISN!ye+We+J9_EJYVz_6p#qE&J_c?-B{e zdn_YgT8sh{i95R75_o>KmOx2Wp-B3|z#@^9kqhKwi33RZJZJNB0b&+*+^P?dJ-Gx~ zcQAjDkS!diww+Ls+}&a0P$-%Yteq2I3?-Naz$|H!>3<eEWHFB~L-wd*WZizo_DfFq zZUY$WNqPZ4{&m8#fRUMN8vU@>--$s|COU9O^cv^`rX8k+n?9gTJw|U1TaJIu+~(r- zP4b`v<>oixHiiMv`LO7zI6S8;ePdbrmeTO}i6#2H^!Q1o;rUxi;CUt(6xSzJXg*wY z|8-)(o9rHOJgujD$EF_}i&Mf>mta;TMl#-Z<I_KL+klFbGZQ9_5=m}h{OB088e9Dl zBya)KZUnFQZ+=xNNmABx7q?==$GvvZcVc*f0{J5|^w$qa_pAy8?7LPZ@z=OFIv(C8 z<%O?t4gS){P4v5uBGXEWG`b=`;|&0Ny8(NAmvxS_NSpJTu!wYAtUUk+&R9M*%X0(w zYhQ9H=PAYObbK=_&){{v^VDXuCic&wQSOaHCodQF>owAUJJVdcv^h`}a@mVe8!ZAr zDL=LRc0<$UAKtCZMf0I7e{hDt;e+La-b(Z9qF?d)i@W*;;oZ}xmSM)4^e#dr@J)Ze zTBtE*(N+(oY~}Fom{i#Zv|m~+*(zBZPc6|l0G}Si5i(aL2H<ynaFy<Vk=1-rU#BKU zxn#a7_b|EFDR*+M#3Op4&>pvck8+Ia-K0vXCUF4H9%Jn<(dX}uPCp)Nf1LQ5_E-2@ z)tr7J78(5<hF;@$;m_HFV~Zt}O>S-)CpRO1yq~L(nJ?YR&*bLFsBwKrm{`T<n2A-x zS8<bdbkmw?d+>MtB@LbXJe6#Q_^PSHQ5P5a;;F6u5<`JJ_(|oR{tU*;7MaY^8(*}1 zlbh4KO&*OWui*J&5*|e;`y!Q6@Vu2<a_b81V}F14eU3l1VHh6k+DtP7W@`HhuPVQv z(7mDZ{*k`Toh`4lGbm&-JBAV|VwJ?o#{(oN!bAQM$T!e~gG9$h9xginfZx<=#KZiA zwHeHZ)AMzGsIYz&^sCxr+12VN5ye+hyVRh2G50lW>?`T1YK)Tob3U?Hz}@@KreW0q zMKGndQPyaS%zlIAOz;eerdv~gH&1Aem2&(V{6%>Kwa>|(hR%-(GmcF_fOPQwuqFlT zPbOaNA7*)WYU5$--8iWm7g_X^-DpvK>B|lAfvW+IQEHKX#Pnf{zTl```tCtwDY{=+ zu3zh_qp@tOlEHmwnGUytTT5h2H`|}|(y^IX!?czbucd)K3c>uAsg*5L3tOhvLmtlz zu4y@hN6WWh`#f!t9tuyryoCqD>6FvFeQKK4oR;2a*J<zQJ<q$UlKaumKS5>D(tufX z^PEA6&e7O0SAPl}HV^uA`Dm(YP7fOGHCKPEn2$@&U;Z0>YYbm3Q2$@Xx8}3(t@&(x z%lRQgJ+*i}Dwh`neSz7onPl&5*X$Fbw*5f+ynv+PJSF+14hZt=GtA$;bVL6leZ?b1 zn~wZ@D8n}gJ5}foc4%CA;c5{YTK#J6_}A`5z&oX($e8RKPb0{1?#I*D4VpCkHtM%$ zR8&7=xEFYLnSLd>mQ%<1GYgTKsNq(Fv%bEX4u??7BUDzAz>ybPBi>Ixit^NY1+{X| z3L4fLx_sW|)EctYB$%|EHyZ5Rvf*#%ZqBbiCf}>-D(>d6e%bzmZg*3>JDJ6+PJy3E zKBu)4W9hXjb2Re2-Q`K(a+5p4+9C0tqIdQrC#*}1m-7=Q17bYRG<#QbWe7<<<Uj1! zV-IRW<aXn+Nb}RV?xOn2$NT^9VNpWydG>$8*H)CG^|w4sN0qFX<zdzL@Alh)eky!! zGI5$j@=I_bs?kGU!=6h44vO9z!wFsH+6|)NjM>49XOD2FAhuLZN{|#N%);?weY^B` zZhgCQkk+?RkXyJ}xCgsUW1yyEvzF`-pEq(v_&lco_<Ymh<7;AMyp8;n<FlH#Hg|we z_HKvIobB-0e|vl!J%==JRseL&z>rMQ-|B&3tUnrhhwig+H)eD*#EbwqEZqk#T;KTZ zZdvZ8M^+hG2l`lYaFC&k&~4%g&0aJr#lr5KhDus*_Qp&Yon9I{U`;bu#dY3eE1u+~ zyhUear1Mv5`f;f_{J0yt@zl&o6^YgAoy6{>sRm3~y?Lsn_p99DOZO!2brsK1oc}$t zb@nEHsTyPL8`=PsM5dkzv)}43xaiYfZ_Kz<ccmRz@X~x_?$xR@y|rh|I6f-;Uy{W{ zV(}OrIO~<@E2?>h-A;BCB3kUjZuMHE^K{9`4%@_awp-uipKy>y2&5w&mzfByE^(OM zH*|*$a8DQ-Z_6I7BH&pI66RGMe%`?~=f8l*=60FRV4udllHTkR{y2FdxQ|w=`)rv0 z$My;)R7kH#DSIKMg_qg(eMDw2Me=C5J!xdo+U&ZO1^c;j_`7TmUxH}}|DlKf3;12Y z4;@mNeLYXsRQ6+GiF9Nbgi8)nxKH9+`l(8u;McM%i5DDxl-$Qrp8knL^wXRCoWJjO zS#3U2B;fykj!jo7F#pEwq6+-qzk9pHlKyk}vl8^>S%jw}9aqqRi%*vOh`#+2pSR!s z$#Z)u<@Lq?!FI6b^;F6)j6Zt2lmK6Y&?mX4dv(iyTiTA2t|)6?PbH?S75;16<qP12 z{oRi>`-wy|{no!aaVR^5_H9+wTnjLH(Z6E{#XB@XD*U^*OY-Mz7ggv#r!Vnf7pBii zZRwvFaQuy+m>jK#K_yf3vaA2EN$%v|o@3easqLR9=wZ(*_|{x})PDCf>H|rq(O{*3 zA7}4${O>f-D}CE@|1AMOR`x)?c9sSg&eq;J`ODmWW$R69tHkp5twNE9KL)PW_OfVw z4)+IIV4gw&l!*G5hSvJa6aPo7;_N4M1Y%Ok+`iI9o`z!bIbR+GX$favcTphk;7d1j z4h~u{#ad9jqI~Vc;;c{}xwqco+AB8!?)ltc{XwO01o?Bf72&J>l+KnpPr&evj>~>W zyrcL&%x?mCKiaPLe{K%@FE76Y_QDfe+PR0+dnNZZd1(|!fR~(wooc;pd*X~|Cwfs< zT)9RY6t8?g-h?Oa#Q7jUg34lcLpVTMb{KQ1*`G#b;(kBo9)l6JX+_jM)d7OD4Z+d; z4Hw)KLIho2`o|b?*6-(7sV(D80Av*#k-MAp?Z$7Ezc{?s5RBhVtMcRbWTnRM8e5YY zLay2bL--nHN`~-)U%Ns1<#wI;vwxLkZ3?p9W?4DZ4x7XHeUHq!JBr57%^#aQdLPz* zftys;vC9*jx5IXMZ^+sz!n&u2o0l7d=@G0C*uUTIP}AM?lCGz|Pd*5ca}z4c>XoOL z;GslF<}2ncp^fsQze@vn4;#E<YP|<&Hgtvk`F}|-XFl*5^fH*rN{|-4JVnj^NGcP( zoU^T*Ue?{_8obgFET)%TLInREy$l3ko?ehQnZ4s=?bHT1WDs{=<f5W^dh%`(kzh-0 z_F$*P{iEMN@s}C$W%fKKS_swCR)Ml+#i%&4QF{8gkevnMkmF~22I#x{X)(Zt<bK-w zYHIGuBKipF**kkiQRNT3zJ29uaf1<7zUK}qcl@34z3EohecRXn)O%L{6GinG-5;Qz zp43a3oZVzb{N8m|JnkPVT)c}(-O3BlPR#nlYs9G|#>9gwm^^j>XU+^hE_qt^$CM4_ z7Zy^z&KT)P5lP@y0?7kg5#tclWe~EYFMlVGNe_<lXF{}3ORBq1E215an5yDUYZB3B zuMg!GP%bg;%7vWSMw71u<%y#_f0elm24w{%*&U7%GlUJMm3*)gL#_w=@`pnEM7aoX zUZLXbRm?{wU(lam`bcF}Ma4sX`9sbT%6?H%_A|&%uOIj;*XsjVcuMaooxMrDp1o9H z*{_bD5nyy|MWRZpQ#^GUPJWyYbzb{ct^bMID|d2hSc13dmbYgmWTduMUh<xmE!uy% z`;7pVKFJ%2Zogalf9*5s&Xu<kZ;&6~Dz^*$69aAGP7E%H9PkT|w@EQiyPruTIeoCn z0!yuU_L?Ty)i%@a{CWd_8KyRbbwzNLVJ4T<W#<pnH-lw6ej^|_Pbl(t)c)22Xh0JZ zKb=Nv@_XoASFcStV1#?5<0H!x<&g~S_q<=!*N}=-%f6=0+(v72PIR>ju~Q$`yP6kK z1UXc~$4c!ZE~=jxS@axU$nZUID!v>L8)~&dYK_T(>6`vGi;HwDGc20xIX1Y?D%Hur zB$?u<s#Z#%2SM>iP3|5QjLiS*Gw|PKW`m<Mq-kR1-k2Gv5yrKoP4PZaZj{tG;VP{H zss*<vp*849w!7cT!xwpcZ~nlJ2+q+maqFAV556ugX*I-JJu*tNdVDp#O`T}2bv$sC znIN&rqIZO0jyX@ic7AC6wcdY%?1pdlF$4+rR)wC}=xVz{&|1Aj{kUf8z<X1*|5J^q z<~w)6-#0*;{M`b4BD191<vAQ|;Xvn!7aSp-ff;M834gCYBUMa)q4na<AN^7b!oP?N zxnk2hANQIwQ_+tbr`_F{bgm;CbE}6k0uj@MFDd)U+hJ=yWNmly)lEU}{Vey#MKwK@ z&y9#cZYbLgGI*z+D(}XPG$-GUw=;=Fo{Q<UR<FYm2!!Iu5cxJpzln54+$eRu|0J<a zW}E<c?pbX{IIZl?o-9E`<dq-As-SvpUMDh?+YjXDgBrd<4LZh|Xb=7Qrwns<w(IiI z&|t5BT@XF+Gw>Y}K+A$j0pI<C*r$abopSS&#=3rv{Gk57iy_Q50<pjkiq6|+s6|mW zvYSk_em4Cco@NDQ9ZwiAn|IR^`obHIiX*c=U|>XjBVvd=2xrsYv$^?o_1Am;5PL%) zy*$~ViqByvp@T<$UQRoopnS1wpfkeRj|T_$Y+Y(bRsTrG@2Eu(J_YsMIpV)p*RK{; zLE2Ghe1yLQku9X{xklSt{V(US{4;sckk+al8`nG1o^edyil!C3bs4~Zf>L02Ksk0? zWc}KI!td<>#+AZv3Had)Wt?6^h-%Ki^A{1NYmX>Hui?12C*9;e@?BA7^77&4XKy39 z%Q_=~2dLYMKmo<L1pVUfOTNw&WQ4jz*&Dz}EKqY#IBauizpxj{^~NR5dcf+9T)#Xw zTcj9wq}a{9S<R8}8y8fxk>Wt^>MHsyLb+d-HgM-stgLNd72LjMeroKN(>K{qY{mxi z8a;HsSxCzE^F|QWCPoX3TSa7*8^s7?9c$1y2*cK<4zj_yIUj@xqlcPMAN6O#95wc6 zi8whVI`Ku!#HrJszz7`TC!|4oPK)C`4_iyjb5Uh?09-qqgKlyR>f6S0Ks(Re&cmM8 znP@tHO(u^D%ic-D#P9O*SLTZPVeoy<sa4lj|2Fffph=VU?|e0!G}@kM($uqfaV+g0 zkBbbs-cB5*eDCr?l{x54FHaml^O#H<e!^J!D=%&cJW@Lu$W`!1E1LX%xZyD0!4+<A zzgp0S=WD%&T9K&h8O7_D4d2|fJQ}%f#Q}dSDw&s;D9E;CGKe5?C|gk`lMetKcd5xv z)p9oh(GY9na{omM*qP>vKHMsZT=h+(qtVD3CL18vq-NAqL^@6;-VXJPV2Aps7S=r| zxvA9~q;uZkt(o!h)~40`L=y*%MV>smHSL@|dV{zWvw@ZcE{X!ny!V$Y*Iun@&d6MP z?!|aI77dE!*2H^aQA%+b5{v6M_ein5gxl}gRRTnu#p0NL{P{pyUY-~y&c09-+tb#? z-<ZB6{}2|dF~2Eo-N9Gy&{fZ&!p(T%Sn1TG{PjKEv^UCTFzr6k`ky-DyMyFX$@8DD zvm0H@s#xIHs1d5OXVHO0`lJRE`4LL|o4FP4U8{N+?z;4vre(3nE!|7A`^TzRCMTqq z^3|~_c}laF60+%~4yQxbVDtMp_LhgBA6^zYZDrb1vgdX47vredA*-7nk3~-HPNx*Z zys^8AZF~o<>M?i<_gEHvxop;-(8kj;IzA1&o9+|rD|h!SW7<MZD`xgj8wd)?Fs!J( zx*xRYSNLsFCo7qqU{QZK`Ps~Y5(E7w$p}BynX0KAqwsa}1A~{4KJ{43vrcV0i~+z8 z&XNWI`XfeLsCh}9LPsj(dGl0NW@y7eT>6}QDw;7br6Fex=^cmk?2O*lu7fJD`c=6V z?pwlyzr=ml>iZAwdyewl>b~bG{-^p*uU}&1wYXUn5jZ}&f|O!<%=?#SkY&OxJYwl* z{0Um&CD9?F)%Hcge&E^#K;~#hKdF~%QX6E)+^LW^swzF2t;(ni=8V2TKNO5~ex6d^ zsKM#cgImuZHJBsjNatxp(IlZulUM3TJ=>`-{7*y|J8qlqR1VfpxMe)`pn9t!G0Bg$ znhuftiivczlg#UUUk0LeC{n>(W$`jDi1MVzKm0T+#N(j?#uk<5fc%rH<%-El`5&D^ zhNczM7Uu^6_KLsKIxR^O5xtZqBH7jBX=gLznF|Yty!Icw58z#^55G0v24#<Q@Qj1X zYUHS(LO<4IeOW1e_`ByzDPyGL4(0Q_It3oEK8~j|3K2PsAKU~Ip)VpD^pnomk9TdO zg|636FlMQj`-CG!ZeNXo^9}XaEDF0@an89?WYMTWvCWTi(lB~ZFo`>DuDaRO*-cK* z7)`oUYyeahGb)-M%|?7w)P^~yx)+VA21qp?SlWb<NNHK5a~|Jwu2+ng>QFXER_RU! zywn{2Vyp@QSnz88raSdF=mlpn>pFz-BSB56rSos(+kYzGA|)lx*N`etx>G-~)T@<= zFVY1YK{+h9g>V0cd^shtR(dJLQ%*l^nFW+a!R;H%vBz%m`ckcDZ~K44zYfd%59T{g z+oamMVw4T{FiAVNC<V|)I(DYq#U6WMJTv{m>7(!B{6{+<k=|12<Q_QV!n^v+*%jAQ zgy_FT&GLcJyz8ggTTNvbg^i4@iD%BJ@eh0ko2^@j#YhBjKl+|?EqCUHco_GZcW1}Z zyesDITPs(_4|x*b1kN?VxfC!IGEs1jXYSL_^b>`M&=VqKk>?pEB^WN9og@&^Mntwj zyNb-%W>9GM7d#CLeHG(b_IT!@IGG$G*9$-yE?`p0nqfZfeh=E|UDM0J^<z-|INMF1 zIyl(Z?<)5P=?Rq|hZQe^Kc%~!p9bPT4dZVizL>uS^3yPmE8}L-nViZJ*Wfqv;xE%a z5iw<lGcIuYiBsT&@A*~Tq-TD*j<&XDW^Ld{EEI<FpvfbnrnFtNfCg1bn5cFyFra8a zE_(vKc^4_RmY7N@p80l-B$>)_VonbHV-LIPcUD3*3HD%8m^xd??Wpn-R5>O723O0< zyl-B({{4*$zci4OfEuq|Gq!KL=4aEgnPcUEO$*a-LG^awOx(39wSf$Nj+Z@&ZS!1n zyx0^qiPO60)E=!GbWZkPTf+Ttuz-g8FP%N~^J397=4!EK{I^==1$!&avz<J{g*g-5 z-rh8CirN7-&VNB&{QQ^}46LM)+Y@`VG<9EsN@jcw5_@ZUmEX8VtDA&(7GYugFD1s) z%X2Tzv-;BW)pjhh^`3m`dam@n)AQ9s>G|FKwXrJTTb^I*e}jyoE;$&Cn&-qWF#m?h zYO5bPg#*|N{X13<s0btA1K-LxKCl!zDEFTD-G2m|u)rTfrr%}c&hrx|Z=|2_@B5o1 zchqlj-gXEKFugXp+ER;aUE{T1wG(+4L~?<3Y4Oa54W54oq(U*eNW{9-UvZ;Ef}jUW z<Q<y(AMMp^_r{*QZ=FP;9oeg|rv7Zz0eO3M3*R1utv@+Xj&U2Kk7gvBl_T+>QgAdg zgeI&61arIoNH4yRzm=nQ+T;2wJa345!_gw(O>~wn81{*D_NA}!Fx92T^GdIOEy^m| z%k<W3y7IaV|4whhkTAHtl@h_56r-JUbdH7bVVE9O<v;KuyoZ-TDG-R&&3|`WEUM6& z5Sg`{zh3k_Cy%xrI}k}#L=~Dod0)j%<yCFOjHrvuma1LPG)Jg1m}zqmle}v*o;@aD z#K_{$MXwe2=Gq9RZ&9LSC0gX{tm}JZ(Afo6?#iTpbj?KLGp4VC`m#TE)YqTlu`ZcQ zg{#oJ&q-ZVR3J(dCU(B<P<PUIq@xL9**rTiN09%jc;=L5+EoW6C&tdc-uAhjyDJgJ z$KUDeBDmmiAvnaknhSMnpMDGo`QHTxmATEz<Q})x=adUuGgq~fd-_or2u_E<cf&Q0 zB3N?HxG;HnywIQ72U%eX`$^BT#nY@F%P>x?VWDefq05}X0{Aiu-kQplEr+b+4i^<o z>(X5=_r?X5i9@QJmU5MA(6o1Qw>U5cCFV8P*b<~lbLljDoJGwwZrxQ>b~?=t`CneY z)&7=bmPbgUd4IJB)Nm*_fw%KAA|%@1NOLOu2hVdJ>)lTM7xf#6l+I(SI%Vb>Ig-LZ z)k0V`{+6Ow_Cjm3bub$D9uncn!#~=M*;A>E8IAu*eV`neL=D6EraTIXmh^ge)s&@4 z?-<M&8tbaDM7<N`Z^l15`<T;*Lv5|~jsE1n*nYu3A*jDU^`n+<e^hPCYtC$a%nV(O zA(DfpC#QP--x#oH<ocf6z4O$H_<Frr_9jlIRo9O#850_tP+%G-7PMM3(K`S52b|he zT^eM#sJ=m}mPRRE;(+6YBU4oWWUcIQBOUVo)OtR-?CGQRvViYPPJiSxE`69loj(C6 z>6cn7-}H|Ss;E&p@cHfiAM2N$jeiZF2F1=<=ijS`q#_+S0OXn2XrZ@mv=&4<o;1;h zx-_K6Xq>(u6yXh1SrQ!sTsmZBzC*IVB*DCZ>U3e;Pi)$B%p%f1kaMZl%r%qfU|gN) z9&w$W_pbN9{k&_)H<az;hoteiVI0|7@S&k;1Y$w|3x%Km!C@`$PtZk_jB)P<le<I} z(gX5`C%?1X5REWal)s0yya$230GEeHUNF47`PlY0V6y0I`^z$COeew9%<b*Ob2sur zQ1e%<8le6Oy}4_nto7Uq<>#aEcPfZ;x94clf1UsB^~SU6oZ_Hq^%Z-w-#2E7?tlX> z02KE72G4>{9>|}6iroWLO>Sf)VG(<?w-67HJn&Opfs-?ymn-4#jmr|n#@fO`rCwfV zV^rsP5)OuUH$8sE^M^d%bgj7d%%|AHHjSxH_5_PhylJ+~bd!tX!8Y-k<J~^e?N^e6 za8~7d=>{Ab+6}xnslD6R6~V@3u9M7Lx^d-#zQMI8s+CW7!2TA`TwddUWxkf<t^Pkp z2NI(A22RZUCwW3jB$?ANFn=)h=uRAh+#2Z+Gl*yAt>dRP)3!k&rry49iwZQQN1?up zryf>91=pOzM<I6KPOkK`Z>h|vsIe3EMm#-B#ZW{EdOSl?@YX|mI-l$P9+rI&86|mx z;Ee?NjiZ72J)h}r5WM&x_91am+P>b%D4BPM%9Z)Mc8HYh3D4VUb~Vj*>s)XHfxduj z5BJ|~rau_EOVD-FdO1t9I|b^ir<G<cJ)2Zc&6inEJ8XsKbePAipaJ?+lk709MBXXl z-|HYE;rMKz>1)Z1r}ihf6VwXnrMB%KnSHDJ!@E~~zj@4=m^6x%S~C~mfj_3p0x+Xy zw8xWLkZPJ~LcM?W3OH-#)EfVlQNq{ul{)<K;thWHAK~(n%2p(%NGfZ%M%p2_^~}U; z{2H1V929*4X^<YM^M0xtn^ynmFmDXK8tK&e1zm(r^>ht=I;keKKdQFm`8LySmd5qU z4Y^gt@E00N&PAy=W~z<9>?N&1;xqt38N`YzPyJ)lFR>$V=>9yO>9_nU?xwJVx<DqB zxctE0%d?J&oryTsEH2DGYA{SE`xOG=c)LvD{ipZ*b2-+rhXG(A&DIuw*j$`&-s{4{ zH)ju~v^$YJ(BP1(FrV_{mwIc8l>XhIY?JF*4wuGqsf%{RiPJ#=1xe&%T=+3jAAZ*Y z1fEBu$$`O(G*_NDoHM*r8?gmw5DU{P#C=53d=fh=0Lo=Mzs<4q2sG`Z9T%LE?{FOk zPt+nYZpneF5)!_BjCRwBJ5+q)BkEYXGI0}oGpgY<*y>S{W|wFO!QQD2c8=q0&q3nh zN!ml(T;Vvmb1MCj>nx#X&A0(J<C0bEW#+k#&i)IJ+19_|ei8fmv=cL*mKDV?|8qG8 ztdn!1n-z^cS$^+#)7768$y??7KRfS_#Y2~p_2FKH*44Jp7^1th$%x;nF|<}|iSfVx z=zxlOZoIW0>s)JY+9J)XvBXbv;jb{h<@+(WpNvgp@o583dY-Q$dPt8yujIan)}ttg zDs*Hk>ww6Y)0@Om@yyvZtct@lv{Ryvl{BdT>rl+zNpJbnB!iLq9a3fEA9eoo(q;D# zy;#|O#PL&#?Fp&6G@KqkwJg0foSwguX3?k)H4kpnUK%dHZ|Sw)rTpRf2K8Z*Y|8?3 z^!wPbiy|)aP9MT`|2h`Sj{W<x-hHioTiXE&{h3uRa*Zx=wQp;%nBx>P_sa}c`?hh! z0Osv>F7OYF%)Ota_HC0~<Tgcqu6^577d#Yp5b69A#dO1e(yjs?A^(-9wr{H=1ehkU zNxT%9JCRJ(<|0Qa@-LCOqYQS`MV_k2Mbz(t-y#_4JUf8BfXGP4Q-mVdj5SbgF57CA zYLCnvW}xP|$X8UhV+!=wzHPpX+G5}a1>m|55V+e7+)V3-`NV+kQW_ZPI8r=k?og83 zw=Hl9t1V%ufm}#bq*JDHl=uX|G`_}VJEl$L<x(^<_Yf<;t4sKjB|J+4mqc9D2%?gg zb2FuV+XiAH9e)90WbTWG&qkN$ZY#!f0u-xaT2bNsKcZMO_p0*tH;giJK1t(9igZl1 z+K;Ie_7&D|cN@qW*ArJ;CN$v4nEj5USzzC7+0^WrBipyFw$Lmqw80gsoJplm1vekt zx6O0deOE15{QhzPrPU3={A}O0kW$G7M6aZrl3%6LJbhDx+S_>r^^w-8JfLcE8Z_db zS6qHRWcvN7EWE~5=jKcMwu2m&r>M6&zW@l)W7Huz$VOf}0s74N5A^Hue^*`6`7gS{ z+VH{URH~=OI`xzlSR8l-5z@C5&#!ta(fs;>%`ewiheCZbr?hVyuQqgCK`3%f|4I!& zF#MA#lsG;zcf3V5ILyAGNT%2i-868K;}yvi8|Q*81S6fT6jSGi?HvdHk&X|Dz4CNu z&$Z?z8k$%infrU9^IdYRz&#qyj|P|XN6L8*J>-H(>mi@<cAh^NUzc#D^39H1^SqJ5 zR2O-ka@%=6{KQ3#v#4|FV#fvOx}yx{bp|s(iSDp`N0Tpd&7BUWYvl|}*h>j>Pc`)0 zT*72as5Hp)T+}&4B~K`$f07~{PaDV@m+fsRCeqQvKsqJ}PUl&a;1d`Im^?i!pdFEp z`ze1V^dGQ{Ib=^hYxA=kn2C5~?uS;xYO5`nAABbl0&j{aG^DSEz)QU8=2h}1q>fi= zIDUlV#o_$?U1n4Ba}H;r)Oi~fl6{e;55R-<f%i{~=Mx!TDGTpe3V#w<l4}sLk<MPD z_dFX~t4cfHw8#+uIybJTTGCTN{)N`;qZo_qpNT5)pZDFQxsymLsdA_kt<OX*C35N3 zYRnaRGc_}`n;^0G@srxxN3YZuk0&X2Iw1M>-c%fpJg_RYH4<gn0w7e=w5q^Q(T$ zQ@(+{VW!_j#rc8vD~)zh|6NfQ9$ywdpe+1xaeo5u>9X+e%feTeg}+}GKB+7`tSsE8 zEc{Ygdmb(eFDMJA%EA|xg-<RE_b&^-EY4TdUk{gse^wTrRu(?JEPQlXc-OLUPOP`6 zzH<08%JToNEPuKz{0)Ue`N;I)5K1#wth7(?T59}tNAle>iggnjO6gFcK+i6}GNu=h z><?Bs&y&mrlut4DEAq18&lM!k9)lrugG*Ij{qv_<J*kB*7*u7e(2nYBsr7F$0HbPE zz#(S-bn6`Awf>b#_jqzAGc-|@)gNGJoKhDy%KxfMtt$Wu`?qL6@Z$xl1{Dh;`RDvm z*3guTn`J+)*-nfn&rtug^Qm7V^(?h9@5n?J79sqi{aGV=QMz#+S^dt#tz=93(d75y zUMA?yd%Ad3sn?Gmp=M>&Pqgf3M8<nM^SyYeOErvoI>XNNr<2X0mVU_6>=Kc4npZTQ z{zr#V$MYyYb-wgi^62c4%HsVbiY}?@{-qvd3o}hyqDb?ndR@Dv>4iv#_Q&9+M(9j! zU$uj+`%ocid*kFosK39=6w(IzLSV<b(qs-*@E0wYK5yt_i?p@R`d_2Gsl3ecDt2BB z3-rv+A41_O{%tEBD=L13inE>Uq<n6X^e_3&n?{tsv+&7x-8Zb3->d8V_h~mN3;3ot z^W8RrEb-1>93F~eqgOeFmSpcE03JUG@HlTfJbt|lo7`hy|4!e>CV7}P*292a;jet) zQ?|-8(E!P8>-^Pde*F7iWjAGE%(y=Mlhn;RenQhX{Q2DbW%TcV_0XU@mvcaiE^(=U zfkvGHiR6#1-1@{04SU1a$)9`8>8E$z%6!jW_Z;#A`bjr`Q^$(1lV22RAHnsd$qs(v z0D(RmbZzYV<|){Wd)m~PaMNlr&5Y)R-~<Ylnt<ZO=-Gt3lxZ{6SqBu_g9lqx`l5gB zA=DyUyQlpb`V{#+nwV~<iMhtYdd>kYboH3BfZIcV3UKR59BQQbl7EhyI&xL9oM$L^ z@tc&lY5BBAThkX-WPiw@XdKU1$;{C6_>tE812S>RU?QpfjOWMopUr>gkLd}FBe+aW z*8pGzREb@ysR2;qTzG~eH!*gXGmtiPGB30DN?R^-)Vj#1WE7p|yzRDk2d7QSndb+E z{_~pLOZJdo;;a7o!_?v)Rok05s>K^z&p177ky}kMzTBTA5=IBJ5AFKk746Qq`ukYB zin^W&t255^{x?As+B%Bv)RFmg1BL%!^f)%!D-vHaxac1p+{72GN6Guf!PcYGKMyX+ zNBk*ak)Grqb16-~i>ck6zY9^&xsV8d9#t5<w4fF$LaEpuA>_9le71n*-~1fi4P74& zkcCV;L5~Yn$JT#Il;5auus((K=y+^2^v^CjT;u;h<{#oh%M+LAq#wdV@3G83I3V}k zic9C`kAK(8^i($p3#flt2&8|a#`<ol|Ar`xjtBC3|1xrm?53%coa0-xufNUfV*)rq zIG8PQv%f%r|Llyf$qc+9?(H`Ae1muF-JE%4hK`ysNCzRRVdBVs?5g-&frS**uv6TN z_|w;k0>7g4MwLM87B~COcyRdX<U_dD;!7Mo?t`ME<O~ue>DwHq<a&zkH#z=5M;+$3 zZ^-xFe%$I_03oXfck>%HE}mNoO+2v9GL8`1=W?ckA=^{j7Co*2<><J#P`p<Y>EO+? zbxKgl?RamYt!zYcM@+Z*=yr^2-FRTo_NIT<7p%X7$CVN}Qwiq2Z2T>dJ+STlm2w5b zhHeTz=AS4+ftX+w*?6j_(x3T9%VG<_Zpz-&GwmTR?F)h2RRKK1CNuPl_d;raRi>W2 zh+=Q+mgv`Xe&nC^PwOc;q-nDTN~ss%-<{i3Oz$lCHMBc>|7AR@1wTgMnv%WK0&O5c z*rnfIoPNXh>Bry?J74}_3k2oc1wYSUw$rz%zJuFTILtqfYV-NM_6ijT`Cxw$;PXMg zzV_;3_?(W-vBwk=1Mn#;Q0!KU=*imm#-)Y&@P|ew^3GAU^V0KGA3=jEeL~PbR>b;e zSoV#LeYsbqa_X;P*>7zsgz0~j?e3_~Kj<FQqZaS4G(L;|VdJwT27p9=Z(bL_&M6|d zA7b3PDy&Zhends$M|V$x0@Blm1=E=NXJr45O;a8pyEdAA)S~kI$NM2x*k7*|^Tnh| zE4yP*;Lj!S%vWpu>06A?aq{u?+T08I{toK*?)9y)4g{9hA&7kWqh0yeto%Ro<>^0_ z%-+7Oc)j=Rwq`tYO11BSC{qGYGbSgu{sAg~<MX0&C-8?X(WbNY|BUQe2CNOZp+Bax zxx50f6H0;g{vKdI`z&C^<qP<n0_-Au{wxq@eHMs9|2hCVF9eMN4#uIhsm{L)2tnh1 zpwIO5I=}x80BS%c&&&NmvuL~V=X$9fMgsh|u8j`(z6IdBg}{Gv!1lf8MjQFa@l$~l zqF*oVucv-TW52V5;stpt7|-Ervuhb}@O`HgU(q9pe<IO#PC8F*f2)Bxwb|Y$W=(w} zl*ig1RXohKSpLt&tpESvE;h!i#o|}{|Jt86A)Q_FnBoyRWkM9KQ+F=)8$sKxN5QLl zfk`mu>ruOKvk^%o?u{Gf-#n~Jr#zQQGC92;M#ik>&)rR<&-^2DyLYu+n(=37bb#AU zibEr~O(TC_&u`W`x0SQh|8rOs%Q9EOI=(2G&O4Vr9eTBu;a%ASg<L?x*}-{vPC^>? zLH-5gV=essRJRr`Mm-X<2ff3M$Sasda27Qp`>d1oQ$fx@ZkKa0IguF|e#WDSU%30@ zB1w$z<o|4g9qr1hIpt<Ew=~oJ!wKf-FLagf7{q7NqwUNcNd~}E4*34A!?uH*=ih-V z{t$jkdZnDLW_Et%eflsn^dc-Mv$Jnxx9a$-UVTVEPWsVJ{VK8#->ih<`N4YEs0%^E z<o*D&nl%6f%w<22(rV}ZfaZVuM2>CQZL+4oKX#n|WS9RP2G`${Yf#1cxd9sBcuymO zPiE-8%FJ#mDh8yFMt$(x5Jn6OKkD@1zj1^?<lId59R+ybaPa>6{r?f(hr<JS^X5es z^;rUO^-gZ8jNBk=jmSv6;uiP^{_MDZ6K`7}DdI}}TN3VR)8eLo_|Mf>(flh98^5sY zFs!VJ&*NvPm6<X5SC#CTC34m<-f>HBo1-e)Y#l4`i<0u1`+KYWLHY87+q@1ay3#;| zWsC4PddAjhxT+tx*-SZVlDpWpEWgcRQfc^y`7`ek^Uz%~LP@R+FZCb91VxC#GRDLM z9CO`;^$B{gHVghi%*daAZ&1aGKHraZ>1>BFtved@!by25cHSmjikRBSP*HS0I`!5h z>+SK?!?9ZWtKFuIV-9wL&g;kNTr(;|pLh=O?@h_cQ|Sd+k3j8694{;CueZ7=*>Foj zRGe;<JNA}bfw=vUMl6wN%^Y)LE9~o)U$a-Y%_@h5q_lXW`G010D{ms0En1=8{gD)% zt$=@_)dMTwx<x$o827b4)b7&IT2GJBVb9{Vt^d5?Z}UQfHmIt{EbJ$R$LQSCroS#{ z^A)q>f7y(YaW5g1>a9#1D!aV;KL3}vGmnq5y8eFx5dwk(f(q6pTCCs-E|rK&MiQLp zptz%Tq2f1EwUz1&;GQ@MW*kRx*VeXHt;JTq?ikQ2n+enn(W*hKV6EOEsDKp-F8RGb z=RVKOB>MgSUcbM7`6Kf@_qoft=bn4+Ip>~xZe6spY((OTTJ~;x9h;3G^j*h*$TKjc zg}v&=4NCkbR=Ftox%H{zE~?w<BF_*Nzo46oK3@DQ9>=JmJ@q2`D6(J0!f`~<H~+pR z2=I9B;b^u<t`5I8bSJ$>c`WP&;ixw_-PZ^b6Cdd%%?n;a2<%CYxwpH^{6~C`_;`_C zAghZWFto?g*Ofyb*rE6~N#9;~HX1L+vOAR|x9*5}>~<)SGLCR}D!1|`7*vqF1|L%; zF-ZHkdezxx71DdVE;QO&HeymPPM_oHM-?;B`j{I>g8wu|bH4~5fj)<?1*f^+;&je1 zkqi5${Fld%mG{?t4MIOiEu9uBH(tIrXE*`adycsvdTjYj#y?q9EBMY}yU|%Yb^1>c zIi!slV6EH9r!D7*Sp_Y}GPeo<DfqklFORD7R_<kn@-1dUZl<~rt`7!Z0jwat*(4u+ ztCvlCGwQsZ>~GUw$3qdC`^i6Jr2GSLaIolVaWq6)?wWHK|HTs$+t)uRr`c}{yu%7F zNE|2tJKf-$tUGg!W~@6K-NYL#?Y3$d3N@QU!UlJmr3Nv^(w!K%zP!$NXi2V)-V}{T z-W~;S(1<MPuYmvs_ur@z0W}75O6vo-tT6npbt^K~IQT`7k;(|ppYv(*6Oz`jsa`}; zk(?aM{B=F=@yz|Uv~!xjZer6%iP4c~PLY*m`w+h}p~Nfyb?FYcZ=Yq|-q8c{aZbSx z<_NTrbjJDtzc9Y6S@7fEN?huUJhQ?%8_DDiIbCA1U}u_*K8G&P(zx#*n7$o174={I zA7jFBu~*iLBA~01L&Cu>@+YJz&&n_5&R&H}FjhW;C`XIj`rl~oaos6fy2)i)c<P%U zr`^(yd3pNr@(-<HPfUzs-B7`2R1g5TPqnr80Z^C8Iwqg0zvV$wGcaU?YeZ=Xo3a-5 z$NL9X*kHb95ntNfvbi2qf}>+Jn5Zgiib1UssG$Q67fl-y2xKeDEJ5=DyDw4&)G)aI zCXr~b!ulP8Q6V~KJi4tnlb%-%)>-e-yhMJZm0W)VIUf*0bx<sGG;FBFS#zvL1D~nG zLm1Aozt*=W%fxB_LPg;!H|=4LK*;c+`Eizv-mv;mzr^hbo?7Kjx?6*R_wS2tGLN<C z)()*NLEx<~e=GK;=#Lv*rE>CelsdYPe@VWLFRTc7VmhZ;3wK09pYs?XR?9zH3nl9A z#;!SYNuuxoV|RF)O@-#HLz(7x_~efLLti{hPo{><Ie6B@0c~1?jPNOa4!W+#lEibC z&u|t?&sj}ceb&&O+lERZA@rkwf1)jGwhFZU#9H<d><j;7s>!~^cO1^#20YC&9%|(m z5T_6%Y;a4iFPh(BhAQUBm5Lx@{BylAjfC+}<OAcMFZ;Bf^ZV4uGu-Z5H}1+2`&_zx z$AJa<NPS*fS4rwj1aEE*eXVQKAUK6)=}{hl_fZWl7tVm`_>|{Tk`r_C09?S>YZP70 zotoWNuD>sLBjt`Fi}k9|p5X^ydX>wJ@zlwdROVDDEC|s(Bv?b*-3w{M0U>bYs!kEZ zlTg3_w~L*9$}Q83?)$|{NV`u%=r{jpV|!2gw0WAKo>WB5aeo_-Yx7_4Qco`A7Uytj z>1Yn`+x@}uTz`LIJoo9{+d4C&=XjRl;V;~MVM|uPuYY(vD?Aw8#`7Dlp{9e3=Xe0m z;n7|HsOT~~M;FGrfxgIJ)WYMCZ3wv;ueII=^q7}XV+fY%w{`4lxaMI+Alv8wrT9l{ z-vhjS8c?Kx-g3L2fF@!7)xRYFp(cN?7ZKwUm*P<({kw_njpth^hehtn-<q65+yIVv zN>X3+Vei!HuljMcSZ{{2jvIT>hxvLIh$Hp9=^Ke53$_W!?LnjRq`%)f6fWxdX!9c^ zjunlDJHk>G<csHgT5BvbTa_BkPAYe&_-XSfJ%IJ?>9P7p(ZkQ`3s~*A+0(=K={I!5 z9;6D|U7rGcMTA=<{}}O({sH)Q3gA;cIrn=%`Ypwzyu~JA;(=IZ-fDH2VYu^dkeuFV zmlSlmPM?8|jCS|CYYNbt=$n^!8`jNLX&tkATWsnGv8lt*uvFppe>BQIN}TG5fU;*! zU=pfK$kZjhKQhIO+q28H2=oJ^;UX~g!Ec!R+IQ$tYQac@y3?)ko$Dt4?d)M+E|q5r z7(lIY{e0Tfn^K~fvc#E@XP*2OE!AN<X*yhkn7Q>Ge&QLVZfQcCf3ZoNxHgu_=!>fp zg4&Fu)3_d$(;gY_Syv;k>}tG<x@H&2MUkd5@{uOlD3-ay=|?KpI3+9M(`KwDk!MDy zH>%l)^(fNVm%3uvhey<topi~y)t;?1t}|=QU#C-EWpeHc1U}XH1|P_%BzL|~TBy8K z`_5H1h>ef&9v~soq*%84_$;&D+ORIUhr`!ace5>H8>MaB!KM#z2a8&ysSkzW&p%h2 z0gA@o^*^D=P-Amir17(x%hV^W5EVwN#1Ehv`!0C44ia@vc+5(rwEM0%u~Vr=*P-w| zFQG3dhpis>`OQKY5p%*6hLC_P67Z)lZ#8*fS3xl9W|)q4S_g|{S@_yrt9?$M2u1$r zY)_F2NfT`$0(71tU%x+4zK#2Ou_TJ{pMF%FAdpWyLt2%W2UUB^9OHj-C-}V<kE{YW zL7+#tZLTeo<RU%#)~&zms;zwS(&y2TO|Rx1XtixKOXbrWYB^ne7LOA-d8PfFcDE~U z9lHgp`+amvgdo>CDZWQka=O0pY>^UK5ArZ1SJtLpEQMi)@_4AP8Qdnx8FN22z~86< ze^1|H_%n<hAtWATttD}Z9+*4RV{Fd%F!qQ00*r+$wo3hQb8j+yBysjsup+I*8{K%{ z0_s`2yDrFZpK@RBUsxlOQ^nI()k{=p?byX61KWYz;GXW!jtU1tkEonfo<Qbj=bNHO zlB%8WRX{mDfbya5LD~7oZ@OCh?hk352(l!S-a#IU45CQ1g`nFd9h@s_(kL66a(fBI zf&Jx_yoQC&+Ye^wDg~e>%MxvnE^_nx0flW>Ci5Gth7fb-2-c)dw=L5xuaFhK%ZO3| z)j$^RNEi)^`9DQGRm^m8x4nJZa;zl-B>ytJvC7X9+^=iKlzV7A^2{X6F>BmowiG4b zV>|YqaQrpJa&CsP`9z}@ufJSY#Pa0`K&^%KwVV7u-3aC_CS0WPTCfvn$&scUIP;Qb z##7K1cPRuY3BkmJ>ERlHV6OqcBkL*RLvOT_D9U+sD?ucGG9-P5#3DgBEy(>;b*8C; zW@DM#hv^4-ZBoGaJ6&%wb?h_8CP%0HH$<e#VLB?P*h5u#?O{hAnRtm`s_KD3)yo+E z!Do27_V+UD{BXE7wGl_5wT~!fH25Lw$EV9^x4&0oL_ybYRmgoexqq<N_uh~PLP0DT zB6xwjoJZXSx;+Op;|e3Z$X$Gkovdp*gVuBp5RfClIUwR_*Lr^3e^Cg^7;5y1Mo^64 z);^PRI#Ou!C7ADMD#K-;0kzlv#%qtpfoJYr&=o7Vp;plyQ?sVyWxQZpjVY7r0wcKO z_Q6HTF_ZN2{6vEQxte}4=L#cN?mJP8$k=qZ>yqA7VOuEn-nF<l?9T;m77af8pVi17 zGr`$PM(p;*9d{MmmrS28Fsqkv(twHYFD?7m9tR`puN<*|DJSd}t+rb&Y}HS#)~y!y z7^29O{!qTfej$8Fkipa9<Pm!bGn4KzDdtK^F?;pyJtJ=~m>fvA=xfS%*G2w((CPy2 z1|^Ao?@!t@EW`t95#^O6tH$75w&2GBDtEPone+S1@zI8~weDvuwak;+fWH{w6t%}( zE<@9@WASz|PU4Y39h`|o=UdF&rN%NXoB7{yOMEJZLvwMdu&NUe3&Bg1g<0NlPtp7i z{cn71TCdv&5`Q;q=KY54KpzPdb+aEa8fxHQ*BeEyHeN-7c-6&zgkIM7`_q2PzaR|W z5xhL1vE!g=Yv1V|4~k`7<v%1o)5~<d9F9IzGV^`CS6CBR*0Z-yMzT}VD`WxTgX^=B z_3CY`%}JrP@1z_)N?mzwU141__bfJ~Bqv}-+a`b`5=*_%Ogr4EQ?S;_1cEgJYv1f? zRE`UX#5s4&O??p^AM{B#tya>V({*mRafFF`LGIw@>ExrWH6@d@%i2gzM2y1v!JMo# zpcGO&(s&DBVM#cpxH|&-&c!k(MCQ$Tj8B^u4~jH>$Ab_I@w7+gJ@zQ901a>MW8w_p z`*S}AgN5P)n+@NQMn%_!WgU2m=Wd(nO0;D;i2-+`!B2hzf2%3kzu-S(OO@##KwuV( z;1Z6xgA(m?s}ld9#x*Cy1Zzr0MqB<)ZQ_EfsJl?>&D7eX#=1Gxr5f7U)J^V|>j04R zf`_YQ7bU6kMymAH6{<PL12-}!(PmES!>UMAC)~}94EUQt1Y=cGnsLJHly2{-@~-L> z<)>Sd)gGJ80oLk;HQ4Io`YCO9PguSr3^C}j-@K{HeN1b4ekWl2VtmXU=U0OFPV#7t zm~)X35iT0H-0hK?d$71X=E;#bvTawi=*m8bxy#ds?O*wIb&%&=_$d~}7hA9cO=x`I zm}SiN-#k-6#m_qaWc<FUeAy3{_q?dx-P)skPSNw~0)Ju&HW*n7$M|-Pc`G-JZ7%pK zA@<p|w;8we7ep8cvKI!{ZRpR}|8WRku2-S{5U^Ng@TP0`p}w+YUthzVVA*MRU$7!D zvso;HNM(zK#$x#V1x16B1AKKt!jd_z<5q!{>{u`<=@Io8U(pBoitwx{jHlsC+i2?V zB)?rzzd#eNWL9uHLcXRcz9tMr0Z98(lVQEUPrKDu6<A>_48ml;`uXBgC9{ggGtmEg zcJ?1AJyvs`e@%&{<}VZKjY0W630CQSNRc43bcWEC95m)#+oqTj@UGClkASt-t-sVz z`d+}IO`Lqsr!7NSRqgT2>=pW9R(<Hd{I_bKjVB?4abGNRqjI?k*Gu`EZSV+yHY>$b zNk_f7Mgbpz{n~&wW+x-IEc5+b=`D-{7WWwg0-(ik5f3@voig5){KT85%dAWGwb<XF zA2qq>ZuXT#?p$1Vc!{neEMJ`5OLp-+RMWnyDKz1;_bc;jFt5B-KBS$I=95~mfB79? zGjG72+Y~PoduGts%u5=sE-zumCw?L9EJGGX;7^_z)Ne+^APx^$n?x)swHujdJ4Dvv z!nI|oHKjxd82k6co-n@KkN0e3ma!4V1P|HBvA26RVuHa~6GW_rj`cm{I}9^gNCfAf z=Xj)OgWz2@2$0dVV#omcGJ(~A38$=fH^{@C7zY4D0|53i0E(6e_xIZZan?(IA;SFI z9P59B@Bfg(c1D$larqpoo`0P0+Ze05m_=Sp)mlMNQ2r3eKjHp+D4i9o;ZNLX{ARym zYxoQZ=~lD9T&sPls$>Oh1SA#w_d>LV`w0t<zEBee{o9lG2bzHR&)b{dAnbUyX#Yj? znf)a3!-8?%{lvqvyI=_|xikA2WF@_4{s<sU+C*No_KWtL^89;9QTy#~tK#;H?+5eq zXS7WnDPAVE`}wm7AjYh;8PwlA8AjXu@dCLG_6H0wbU7dp-Tik4euw&Cerfdj>qQ#a z68HHvN`E)mU&_wPj=#$uw=yuy{;P>859NGh5Omxaj90inB?ldl1c+^%*AFIkUj4PX zYxJt<=5|+#@%yvS$^A&HdQW~a{d*XH>INJAn&Q!)sr_VWK1Kc{3-&dJ*zTVEwXv+B zvN?F--{?O7l`+Y!ZBVQr{1GJ*3eenGXrB{ntcOC)@yK;_d4(oR>H<84ZwmH@r!3go znt92^t(l|`Fe0vNMve-bZ5!RyzDCqs+flVv&hTlkitsw!I?q`bs)-7kkP4*jl8(m^ zIiQ~(roRU>e(f!$zZqJtpfuHVDoFKjMgCbD9(MzHw5agNIVpuS*;F;4EHi14e2+I! z1U{G>M(I!<Ay{Pc-{GA1OcJOH<7M^xWz&|>U_mdp1sxu-WC5Bn^wsWmH)JNYIg?td zFV;T|Pl&Bazch5eAK-t3d(ETj6+cJUcvQXM-`?<VkE`lWrWGOXx^DK1U_I9Sb#uU) z`fl~lC=b1V7Wgffc2{pz=BEqdMBSVKmUcJQxA!l#-tG<tvQS@rrdVGM=Y#Czn8x20 za~T%2J99U0jjd9I$_Y}mXO+N-*<$jWwH1lMA*O=~Q-#)%(I~m0F&ps@y!%o`fYna- zvPaR&o|>Mww}66Lv=aX>>u<yL!8HBe`uo)tA%Do+WUb$Ew6*?r{Y?^JDmqr=<>A1- zfWF^@MfOfx5pJAfBe9p??3y{4p`T@ISV&(B1_tEO+jpefd_D3)jcd}+S6{ApzE;@h z#2RkIZHmkPZr?flEYQUp9sL9T6nO^1?sR|hq%{x!BYclOOG>PCkJS~(#>8JJ#|EH? zpZwq6t^a<12f|LjQJeld*Y*&_r<@k>$DBs@u;4DUpqHaMQ;Vise9OP89~JR5*IS;1 ztqxaYfULS4v}aEmrst&$fyr~-wld|f0Xqxtg@$QwbeCUgD>`nMg<Y$UeHupNoZCya zDq!JLqQwDv6T2H<;Re}rj^~l?KbI+8&!gRDJ!iJ&d91sq*@h7#iG?Jy7Mrd1NaGZ7 z8R}f7{D+qyv_!6x>yYxoQ!VdBL0+8=Q{H=&7h`;6_U=K-^`y)tbk4R`@}dz_tmIm^ zdr)!<Lbm#Gu1d<Lm$QToE~*6UN|mdzXMrDcqw>#_+`je<B;zN$-SiAjcVt+mXjsDG zu`$lwrfQ3N`Gk!CPB%ew*S;f6L>e!!_fEHRmWQY5^dQ6IN-%h)xTo!T{4`&6B{>3m z%**rK_wi=6Y-1-(Ark#Ge+Y)=5qNB^Xm?|%qXQ`xlVH1h3gB6aMzc=obvpwtv0Gi` zMI-jp`HpsXl$xY_uQJCbX^vsKP`t~cSLoXZRZ}Rn+H~0n1Fsg}hw|>Z3j95gKLj4+ z+NP`jxcy7!+5;FbAo`Koo;OonZ;z$>x@YY%@8xSUN74F@9w}p0;MNViv2?H6ba|q0 z5I=(R(=WxC%cQnR!q&-*VtwM&len%sp55+2GDYVrLoJ)~s<CO|#7K>qXlf(Xi=&(B zSCU$l_*Fb}vpnA7nFfi7adG9=8ZJOUGBzjAA5Y*m?6d1?#`RC^fgrjyUW5aV;$H3L zi67%M$SKc-$#u2n#q@6SH8N~honBtRPhGmdAu+$6Wgb^+vCQ3Sjfr2IUffaC|8Dkl zLe{-<Y<57uTFFg{D&?B4G$~6*0WTAbP=0H2SVwK1-`ZA(F|iL42WC$GohZ&-SF54m znxpg@bL{&wwctRe_*lY!!KJ1OY)ve2*YVw;p2!Ko+Vl}U@)^w(7c7SVv~E3!jrnv; zmpnFMK1bB1U#*p|K<k1-H6Q?X+!fXxWXr?^+ilhsX6>l;?qGvBae{nKWe>^@J<>&e z=EPyPu~U~GI?{X@8K*-Dhg=FyxG7DwzH>RX+V-{fGS=G4n0(sHOVV8DQV|2Sn<%GN z=O?Ri)xA}<gOriA={~jTBdz=N8$l$*4|{v?S5Kc%i;Q_uT*aaBLlM6ddqDfJ=|zyn z%EXUEDMp#ql>?%>;&dTyZVNA2Py8XPI@C9!-d~OD@xVxS;O8~?tNpDApV0eq(xCU2 zeq>qV<vk*~D3KdX?AsfDP3yz_1qK{kS0u*Dp*2>yEcqE4)@f0%VGV@jy5Dy*5XXWs z3)_0{ujWlW3_ET*NmV!huBG*%zPl)vIS{j_G%GAVR)nLUVodq4k?w%6jp%lH7QSyM zK-bk5a7p(YNya35zf|9EWpdDxAS>nRGsMawje{wur7nGGz(}=%X#8d=!Pbb+s6m4^ zNv@ES1;BLMP1TT2u_%TeBLa^2Mbg*Wp(50JU{Gu0Doa5A^a;t=f{xKrJoDH>0g<^& zU34YnAXP4A|Gq?z2~o?UYQ<ud@^_>)wV~?`xpxv_RtuK=gD?!M_?XM`o?%y$$j#91 zIO1vJva8RQGjxhO$$OBc=V&v>Zg&mwCHvy*h|G*?!;vzEJ`ebzG4x$`I35FN%m?H$ zwxm><+4X($cf3mSq+G(1zbBs~`D>Ts2&~@dknVgs3Pm3+*1a`7)v|GDT?*d~&lVCV z(R?qO7c}?w6;UlIfZ<x$vd6Qr&!v9;$gkrcNBGS6O^`WVlsQA@);``#C@=LF_@~z& zdKlomzi>rChZq%%;rmlfAoSXnYBPDL!j_(mZqU#5HSwWW5T3BS33I7#J+mO`b^N7R zUhl@uAhUZ$$o7XR#qfn^H(}#!!DBrJQy^;Rus6XXYu<`^{wzjV1w7imo$k^6n$Y~f zbdP34!$0sy3;6fdAb^i!=RPqC6y9<;=JY=M3+0cO3yWVAVX+3E7FbRidw0%FrULO% z%wLDwBXp`6QBj-T5Z=1e?lw|8;FfDU@Hj}-xGG+dwsDbeuS?^`v<-P|cIWm{4)|p^ z|B8ln%YdQQBjapNXHQJGO-#S)W^&p}CiO_;w?Y=O0SfyKBgR_4R=HV*s7T|V^f5?x z_g@^$a$OD+%Rc9?<H70WUf#!S3h7^XnH6Mhv@4&y!1ELx71QwXC~d2IaL~*{R3Hb4 zv+F7wt=8lMdHS3oXflmfe=Kv`h`D47d@&nG)bkQc-!`I|-;NB}A9|Q4;8zXxMFh<D z$TD{7*~n;EDr^*ZoUIoWZ6D{0wpr2sG#lFPZla(-7)@Gh$w=MTME-|@{HuPTsk122 zack42WJR>ChSma*YulJtjD$bTl)G4*Cwq@|Z9xSeVo=Q#etGaH2%qoL1AlphgWlT7 zHcbYLAh<oN(~ZRM5=uEoJZlR5otDu0+UeGluJMSSUfhlSbL(L;^kdDTzTc~@ALWI9 zQ^oDL9u#`Mf9`J-2|b)7%-{Y?s6pyRHIaH}=|v)`t<(yZI4vwIwmSt_#OslL+17;2 zU0<A;L=4A*huZ9IBg9`PW*bMW=T`vth3)G5-og_d*;5^18JSX>?yKKv$N<7G*-LU9 zzAK7Xl-FlH$J~z<(KXxca>=147kM=_Ki>oIv<+_jIfm7DwMYS}nR>1<wv%WRrm3mZ z?cy`dldh)aP*(Xfd?sw`x2hlUOv-m7=cf2C&60V_Y|tW&v(%-GU0?4OUc!Q7RcBH* ztJ_klL4SCxsTTcdqWd|11Z7j5+bP)LR&Q4JXN}ovUziT|55h(c^zxHGDl@u{7?9-% zG|A8N0*(LPgFj58k-CQYvsvRyaGkF-0pd2(E8=X3YITh?8egEtQ^X7ein={D7^8P7 zsdN6>gKGgPmOcDF&BT-{)?Zz9I(3n13FL`b<#(8>GT6FWM@uyOobe_MY2|mxwYA>E zd(84W&gYE|PAWv2Z2iw3{>4~zc#kvR#Av!HYK)+xAM-J@Co(7lmUDkRLyPrVmVfGu zcD*SI!XPR-bxnMe)5yT;^!oIMH&*vE0R3sE?}jAjQ%;2U{*gNG8EJY@kehvrc{2YH zKTn2WGwc?Bz+H?#09|ibs@`^IEMb3ZGpBj$nqL#y{NxCKSI0}?_XWay9MbyY7okTr z7lMo!?Vj{YUgH%Et`<c47o_}xl-ycs@$#{`#pki5IBBZx0SHY9*hL6H7({wFMw2lv zV%(D>H2SzJHOamcXA@^1#HwZrYfvh@*Fqn8Ega{)76vNcalLy-uKOtv3!DSQRbV?9 zz&usB^#GWE8FC6vmTQ0#49@&%e|V}^#%2A5!&_;`#}wK3N{VF5W^hV!C7F<zf2AKn z`bVA_+RObn2+nE0Z-L}*_3PznWkgJ+{kn#Yg9g=Af-1B{c_&^Q5acn+POlBfUj~T> zljyNH4oXnpe@selCI1XNw~bh>2H-(rD#B6k8NyNGh`NU7EDaQK*GwKoKgpx$28*lf zu{21zE2u$;(nSV3T9I>onfzM9G@TfU?Ryc<jGgNe&>w5qA_s}cb*BmJ5^($cHwHm2 zHfnKfRIAN=f)#JIU^}wKB1f%vcLzQAx%L>J!6zu^W(P^fkracW3IyU!>(j9T<2g{D zbolr)J*2)X7mHTDNa_e$t=iPe9WlFUY?Vp(Ws=mZRrCKjUf8HepFH}z++!*o-e|DV zefvAr3OavlKy#n0(ZC%>Nts*Z(Sl88P$c)IFbxsHH8;ew4_M1?*Q+28kJI@qLJaUH z=!Ml8O#0DG{Zdji6?kl>b{-EJv+#@9UlD>`Q`l~8(C%#v^a3wt+Nw0xT>^ayvO^XB z1bL;N>OhD#3jTbm|FkQg;(-VQH<!$JL-480KKb~=$Z9xtxnBpLawtv#CE)nUDHNG6 zI9j02x{HELOUYE7-m*8#9>ssL(m}w4wLi#R5rB0+8PxV_1IyYT6qIdN1KFpH>?kZF z;lG(p>dY@yiWQJE%pZzMzYWq)A>Esnduh<`IKgK>g5=!s)|G)95Aba4bQAH}1jvgy zb7wKjPGn%2sxJq*(6)OpyK9x}(=B*hQdIsTqrcH_?)L`mtn!#oN0b>YOrQaN!gUSo z7A=BBmTri7yJ_xXvKQ&k-PR+{I>#}*v(#W&LGWj<*_^4rI@x#U8mf(F_nixjW8RIv zz|cc7pLGn9`zY&4>gyqqMv14@>CNf(H&!=YC%%k*S<Jn&>(r5Ot2gPR8zXjP3`jg_ z5990NN$&UT<HL@A1|RyEOyWbBlTO~M#ErO2?(J1HKky;GsNC4^tq12&+=PtD-4+Ai zz8idq1rzw2yoF!9B(UB0m%{uBL)5WM1NYC9001x{xHazH(@6fntQ7l&>qQTIVYeT} z()+4_%^tqz!TiWTcH4+$bO#{g2k@)Ix<9n$ewAE{Z6Uu@o7uO{FV|uYszQ4IF%X)h zqA79y)yA_2kEFHe-z0V5a)I@;YMQH=iU{bJ7l>1od8tx#&Ug_wfiesM!9IMR*8@D0 z!xp;1^{ewqIdU~zW&84&YN|&Z6KRyc6vECYqx&<aYsW0_=o`v6Ts)YlOD!r*bq+~( zNcbeaKH^xrd-fo|giFw3u)f(}O8D&_8x`j=WT9~XMDm+19n*~45-jB3`;G!MpcI>o zn0FXA7Tj7rqL#ZtH|Ir%Y*}sGR2w6bu9N#zFh84m(Q0HKd1<;K-*geNT?7PhvbZ~t z<|X_c1Fc<7PPceQ08j2hRT9Wcb=-wsN;tPo;-4UEr*rdYZF-0_hU0EZ`?;XOk^(!W z<Iu1?qM5=Sj0OH<4zMvmG&&Vn?M{wJqpcL+v6lH$3o;XzMbj{@<<U1jscw2!^C!8Q zDe%*}hVM$dl8<Y77hNpSqGc7ky>1i2t-8d`tmB*a6UHgX_nh13=cOgp{j4JS$D*N( zwf=>)8Ep}T=4PpTnFC3kGM#r;m=^nKkm>~)CC<U3H&)NAAyYs^*NW8UUWrI*bMM4y z)>w|<`Zk_Zg7MtoR=ma0h3vr2ef@mB$L6cdS|JHM%C0?5!FZi(O|!)+6SkPVvHpH- zmR-|vFLgXk9nqEt3T4FrnyJuTNF5B}Gh|>fcHblzMNz;p)f(np&-=@I&fj=ux0nU{ zVy`j8i92M94RUf@ae?3b%Cm~d?B3S@GXu?Im0JNVz$^9(%XwS|66G5A`agb<oHa>i zykNpjt4&!^3{+?n{O~ya81pIeH8dz?ZLG4?>S?se!zz8(IROnWjx?446YHjuUk7Si zqpYZHbL?jjMjGV^?dLSJc{oi}r#CX2k>A7lESu<o-=EJL+)Mk5ypq@1RL$*5MSi$P z@D%R%!RlulsSXIHOVhT1)sHjvWwqhN6^}qoU>$;|cb(jKn5OG~RKn=Ky?4kYie~D& z8r>}J0pTotlU!~mhTF!s){pOvHV60JZXas!)(Jyox}#$U!&hx;F>BKj=GGP#rzq{A zfmEko2V|H0FfO&2DGHEN4hXE1CjnVpz$RswJIp}qL3mD}ZDc>*@<Dx-<T^H6c4E<j zb?GGmpi?}c|Mu(qy1mp@#i}Uk>g%fSKI#j*x`|xa%f8X+iukX{9BtA6+`UxtzpO`` zF%voX3pHfmm_wmZk_n?Myr^3oAeW<#mUH<AcLpQZ=4~ac(zR`6BPc|C%OfDb6w)+v zup)BjB0XzMX4l9ai_2e6&eR1Dm(*rvPp8F+*{cS@B)B|@l7Ku?HN?_vd6`AcUwF}} zdy^u~9eheu!aO34t0^i7rcnnFMX|^I?HGBuw-J1z&)^v5D76?#NwNv{|7ymp3<ZzZ zUDvrXw6wcFPw-uN?R=P>-LoV-bdv!>eq5Wqql$0geM>nvo;slKKf4bR<@h>@uRnA% zP`hiO6*%F(uH`qJILO|}bn{mYT`3O?bfOJz7qeJKntlSEdHof5YsPeW1ETy<Vws1n zQ-03IM}3PwzdJwH8%D{k6;kA7`(zIsM(xf~x>$B?_T+taj!C!m9rLOQV@(^4YkCyL zveVX6SA5i$T1V@D4qCMIFHY3Q8onjpH6CY?>som^J{v!HkaW>l{*olDEwCDQ<b~oO zBI>bh-f`!X-OMDFRTE`wymY0z5@SM;CAq()`l{U$d`PTh?p)fS^Nk_`Q5I+_$qglu zdgHoUD$YHG-qsMCy3(!M5*+_&^9|RAR9BK5jua&N^G&3Wu2LY#TraAM2VbPs4I@V^ z8>=>G+=Wx*UJkS!i{1Wtm|nGs1OB`5|L{!aC@rglfYUZd5Pc`=jG67yt~*oxP2g6c zy%X;P_>QF|tD*FYXOPoj6Wi^nX<cOYbZ=Y~+U>ia$BdpWyJudW)OtEuG@SaGHS|~M zB=uk{1W8KK`5uUyw4nd?bYuQHYw2NjX`d2lx(KS1;OL8c<1CiC7+SR$L2dff@_<J& z+ErRu&eXWaIz|`41L~>-&let^YXZY!yZaD>Fqrrik_z6w?QUD&EVDJq(QnUdI`GFJ zicik{$(KH^*7hfJ?%$LBin@9t_NQNfu#fieLcx3BFWM3T_n}bm8@y8dVIg@e3&$^# zCwHetJv;E>pd44Dc1O6n<j%IT2Ow2e<r*mfLvt6XY00Kb-0?ih#^AAGw||WWF=qZP z@GO(ka_&A<Ef|B@|Ho37U-pP&+%0}f(Rl>KZtukRwyWciY2D$yyr<O6h<Qql4fzp{ z_L<Fe*j1g)JZ)p6PA~|Hl<W`o2;5H~wa3z}sgFwu(27m%^-q&~m|dkuZGm%QQT5#F zi`M5ZJImMrhfvi*0#~ZPs(x@Gt)jx6U=4K2URV05JCHZK;tv0WHSWt(OX0ZUSGZ5~ zzEu?{`B#&T25#_fKwl=;<Sr1WE7B)Je+Qu=?TfX#(+rYLKit<AbzhNxjE$PzcP69- z>W7#zU>*>8ej+Y=7r?>alB+em8UK>t#G#2i7cxMsGu{bs;hb*sox3=tuccqomJEu0 zCOOMJd!8Sv$m~VH5zky5i)ZR4#WPO|_*mvyp=_c8I`5}<JuD|5v0Atzf(K;tUB_%H z%%8f3uS>hM1rIzqcjGlC=j}_m#7MGkUst&*aTps>+lKs+#Gw<E`V(z|$0|1`Kb2K9 zUion(b(^n$r<olO<@;Y3O`qa78Navr9*h_JTbLJ9oBJdtKm<DlrbfltZsCf&5-O<i z6?FVf{wzS*GF2#$$!rfs^99i$YR$vD6ZUy131;86QL@H6W-|@<;G?GIw*xc{wTl%_ z-*?Y9nf`1Fs@FBo%AG9w91;$d9{w%UH}^6_L>+5(^L6~AXB|xC!`!XZ!#qCBKmf{o z6$_}sZIuW43Mvah?xe<?{EG_X5%>!=tXmHNcKV*de-m#J5z-6i`i{@26dSG*Yp5q% zRMGvwOuM_WpMsf0n%>cS!&24ZXK{XizF^tvbW{FJn78b9rvpW_Ww=$*>E2ah>iK3~ zOA?3ic`y4ce29FX)8~xY>kw<Nt%t~JxY^Xle`;7<C88tS?N+spXlFCZqvacZv(Y{L zt*P5~ZrKb|ny?f&PX&B{uQZP~e6hBgk_xrkttVPS>y?V2QN{MBTmFzh;w8-Q?!;#0 zYv@)ou*VFq@Z<O=ToJq5=U@A;z&_s%ad4HQ@hSF)X;@dT{&KVsN3JOdthxf7C|G9D zIQK+mJ;O9XBlqu<j1diudsjK+lZ`HVigAsJkk;&7do0JI)d=vhwRR{#6=`Z3<~^5T z)Yb;2nh)8uE!1<=*hsYuzj;tL_z9De$=}I@w5?K83+t0N&Hn?%TrX~OGO256r11!K zBUs1_2F{$@Z{^nn56HQn@aq=6{<W!i)7>+A!hK*mV_iLBmgg+g<u58!W4E86kUh?C zRw_JNtEq(Ust+isjEgmb+2bl;;g-ow4ZqCgizoxnkK?NRx1+;v;tKl4@&Dtd_-}jr zZv?D^-|zBB(5JS<c^DQ)RFI!lf~|9h#7mAE5c&&3T-pJ#OT|nsq%Z2?RP_len(j^y zo@Tk@?Hlp9u(xS5;T)=0Ghh9sS4mD28Bv)UiP`)#gScpCPgmO;T|Gt10gs{0B+d!B zT1vRDk28xMoB5H(r^#ch_ae8{EU-!>xC4z5>TZL3^hAlyN<2}C2rUa$g1N-jDJEb< zmopKAmti7Rws?lONTY;#lY*3S`a}uC?e3$&QU-7?I~GWH0McknLjgjeY64)pSI!l& z9mto!D$?#2yokK3SXe&9qeW#PPLhI8DA~-Su}lJGc`I9j(rsV-$uwKL{4_6bG_3O$ z8qBr04+MQ+Ra@oy8TiTVpl4+X=^2)#^*nQ<1YLI!;%P{&F(n-Mny9hW?XBM?woTf& zzZ9ZBg3BEiG7F3;-)NaQ&t$*culu9ka+Eu)XH$jwt>GQXSnw;qpq(etY)D904A~?x zO=yw3|4~s97Ayo%MuY1SSG(hfqu0sBk>j07Mj<#!mUG)jy+N9_n_)E9C@i)gy5o-U z>GGnbYNKdDP`CPP2?dSvqQ!`qPd_e5-%0gkdgs%B8l;z5`uOtvhn<5D9U3jD{E<p) z&<DnQi$tiQ-;X@qp7%X|_`(!h8@c5pZ(j_~Cm>P3gr}IT5=mHIgZ85}s3T+9v=~0y zRay(&b6<(yEBvzGvIbito98HpXV57fVQ2wt7>XWMe-%gHH0W@bmlFB&hE@Llz2ID8 z5O|!bKM<20t3et|krFnCrA_HpF74~Oy^j~2qLV@p`?!I)fI|TOCQ&HN$Is_<_zCQ9 zm5MY+i<egf@xhSp0vCkajyGmK$V5EM^^~nwbK<uxanEo6MSCh;<sJ-DcIm(w$ozRv zw(<#RV}on<UlUIXzAJ*PZyP>3{%BNRpvS;JVWb@hLc`OMufzqMB-Wz&D0VVC4>Vjp zVg}ksO`l?YjV6YHT@dxIPPzss50ZPbBNccCF;rSd2sKcm5!-UC^|X)t%Q_wjN6FVa zCpZr?8UQlULF^=)3@c%nQk(nEJR!Z1tCwcSO4oO-&dYzXOkW@+N+P)8PLT1bD+ZOR zai4lGsl+gr_!8pNf0;Cr%y{y*cb!xY+ZsP8(x|*>2FcruP%K&<{J}`4?YeqCBKxQ^ zBOK9^&I!r?CcTrV@4fjRZP88eq3rj;S>JROXwUK&)wk6T)mQW#Ik9JZ_B9Ba-^gbg z49|ai-Tm1r(u_t3w1r@|;6vWIVYXVA8xt?<AWhHYAceZ~<zuOi(nQ?mvobs~&NAfa z))P$IZV^nyrtYRXS5CK-x&GiloY9h+XRA^PW|NTWD)radq`G=VTZWQ?u=fa+Cht?> zH;hvx?l2QWESuGo)dWYjS>-<d!b@>ta)A`bJOO^sUK-CL-NIYgrsK3jJeT88NuZTZ z;|UUB{Gu(p`<Cyg<&N3;*OPh8CCJueK6KNM8rF>kD&#MDcIk;t(0Z%RyPM%|T`ZBU zVBzpaQ}?tHxsF8=4@=3+kCS^yS&N>x?SNx;48%n$?q)LKrlQ}oi){8g!4YEE1hH`Z z5R#wVhmS6`1SwT(!;6u|JK5aTruMypHN7F4`dC4JT$KTpZmVuij5uEmEyni};`cH? zWE5Gb?CeZG#&4XiuFyMd&1~+o^fXCEk}LIu^K4_VSB!B%Ys$91n~}x=5N;r9zj}=3 zdZe*cEr@L@<3mB><4OcS?MEAan1Pm%bITT6SCV7&^;wR~TfYD|(x_mMO8p1^CaU;- z-ii5e{%(=R5!Qx}O^JCUGpC#cx9%!iGO@};8b^Z`Gfd`O@<nSR(x^*3<ia&6+M@Yr zoE#q^?{^WMzpbI<<PkICbXV+)Z#Rq>#zVMh$H-gGyDFLNH6=dHqMWi^so!||DYK?w zRmW$8{1rj|D!q*4#ho(G6a3DA!(uY4X?divfudYNuF*}c?sr&uq^ZAp&uTPN!rNld zCKMb>H$lNnj=b#8W1In$dO;SXJQv3yLAi8)okYxwCIrZq?yG8k79=!n6i_VT$1DOh zFv3XVZKN=0S1Qifj#{HbV7598-we5+n_A?CSrq<A<BdTL<zWp?A7N&!%{19UU>a2S zrQq`#1Fq?BWQ(>;0_wa}_`tJl7Ik$T)ML(MNrpFVzk{DM&rqb>oN*V)wI#dV!B;Zu zbmlC9Ld!9C>DfrgkKuX{!XvX!i$=mt1`LQwWIfG|(+j<xW?`}xxtD(XZCCCA01Www z_6PG|eoF*O;F-O>hi8$&Be#H1H1Be&*fr0|M=Ib)-MaZVUw%SRUeRE?@mzSoZz!Li zthov*3VOhBvb2g8Sz1kq{X@0K=g|yS?yp|@>e$YMrhI<mIb5BhRLuR&-TJdH@L--_ zKv~~k8UconFYis^Zjkr(klzqgzq%*n?nAssa=)e`G43zN8`&k!09mI~q}!lrDrpwb z&?6M;0n%^gmzCs3QIFxz_PS<-_@~4b`m7z(+Dvu|H0`c8j~}Tp+3ofN?%H&d(!*iT zG|vH4SN(zr!?*<nJ%Lu0$I=h!Yu6<9yx<s3+Lr?2KM(x@h<_@GKXqTTP0|Bm*Mdev zr;NSker3en4a;q0pxQ}PtG>&C)(s(a>jA3G$ww;MqO%rZhusYnWq^kBMMXDz0Q(q# zMZ0L!aIOKSZL)mf<0+hbpE;nS+X8>bk{)Q8$W(;eCdXtNZN+2RniXUj^J%_Mw!7a} z-$LE`%Vnt2xNv|<_QoX=5IkW_S9T~&tl?f7ORfI4--=lFW)*9;6v?N@zAH|iuevI7 zd)t^#bFA}H9rha{#4n^kK(qo}As6Z2wK(DU0DJlVUHlBlDS(;#0?n`I`hIF&VoEKo zM-dQhFyV*C*x#Ub(RfLuQ4SjUrCmFyT6ES|LBz0M98fylrAKM5X(Qw!ZG^x**1FfA za*%f+kSDhN0g}1EL%vK-HSF&drk;Bm{x3c?$&EXjIQ5&+QtAuqeUZF9W;tAORY86i zD0c}i+HDTEwAoh@YD-==y`7cs4t2_$JG@jbL2EKoDWk=O`H4?&fAwrqlqeEzuK6cx z#k|_eU5OV*=0PC}mKsMD$14hdV^^Ve<qy{Cw&F1=lL2~qoNcs`@$`Ax?Obo`ZM!># z4FF9kA}XtwMnE~;lWg1Q0Bd9D{`=_w4Y~i=gs-B0@RVmfE}PGwc$Mf^pt|2+q52X) zEh3U8I_A#7zF`&Q4Gu1zuizFcu=_?Df@r{IWven7w1Aq8(XU=Nq&zvo;y6b|74dNh zMTzPjhKvnQ*{r^Nke}5=>j$hG3t+hw==~^BVMJC`Jo*<{^BNyF!TaGBN|kiHo7Zo8 z$fM%o5NmY4*-IfzBr=&s*uu{A&c{ONnlv5K+(r(joo?0sR`Uc+okuAS#@>zyW7S2V z9SmsV(~pb_KvY8o0%VIW(4S;o5V=d9EZI*rCms~7{b!Y?G4V3II{M}BO)U?)^Jo#h zX0Dhe3!vC6@MVrKca`(M#T-J=N(*22*L|(hJtUj#pJcz+2d*5-qYqpuW7-{-DLGJm zS`4JQJs~Ak`xw<ykv0iW^cB4q#Qo(+aO1Un1>u~OznqYCGc7ids(af|l-NN+?|Q4j z94rSFwep%;Sp>=CgVEiRu&w$0`z5@G5N>e)*~hxUS)ZJ{YotB5gpgE48vksNSa7^q zu$#MhwIle-UK>CogXsznjhM@|R-^Cp2ZH86pvgNH|Ht?C!>|jQsn~$e@?fy}WFhos zx%V!WU=)VXo8_M4J+xkKa7Xy;_Xvy+_cW;I*xeRkwH=4()14IJ7opl+$z!3{-|cN> zj`D$5>pguOWHBW*(x1;`b*X$Yl6s5fOJlEo9r}!hpM#uc5PR5aNZzfH?NBc#lC@|* zt>}DJ!#ZI{ri!c%45eRX6D#E4BFUTgfTm$;$BD4Z{w)TS9R0kpd%iCD315xlE|0=- zW$jjV1)7KAnITvbq)E-;Q*?er?a5-(i8an9S@OqBr{)2E#&1pC-KW+26Y-e5L7ewE zX+9VGL3%l)R87yl&w_IE)c?D^guvv^MLbWL?s%-M#30YfV@I8uGEtVooIBHF{I#Y} zk-q^C&UKS9b#ZfJ^YlLCVXu8|h8m8BNP$DhouV8_y4ayi{Kf7fB@aP(q&yyv<DtUM zKeMYV-Krx{OO5`Kjn(o|)^eorFG@6|xUS!LEk=9Own5#q4R;m$RK#9=BG2D~cn8ab zS?zOpzvv!Jc#Co1F}sQb6Yc3jc%7ErDQ4)1&NthFf^j;yj~|v{^cu7H`y+asw6dFZ zFfp(-nsbw2cJMD8d(DIvHRuyBnsK>fnU{ZitUm)EH6DLQe?Q_;8}VWuzwX$cEq3=$ zvh#`HK8j8ErOcd#ka%j#u*B)9EoH6s4}*o0#Np8vP9+qiw!8n^+T1;8bC$LF0XafJ zeim)!?S?*zS!r^C8_dP(9XZ1KsoLzRrS)4Xn&;?w=H=CyXcaa|6nkx<F+H{$>qVO* z^)jt85N&uqOdp`gzQ}h+md>~ea=*J@czR;8fs&?5e|qBcW4<Q~zxN0tnS5BiO;fAS z>G|??R$d{lefdYNe7DZuQ(RsP8utnP2)3{d^FViQ7ssO^9L+D^v}I^`3w2^V+sT&6 zRMCAIeyHc!mO!Fi_P(84aGg+IwF{tFB8%lM!LFoW{p+zFgPoF0lnY}+!_bwojQHhE zdvVjmJRYNBbAvTQ<^Td+z(`V?w~k!53&l}WE(If)Hm|i?<wcpTC>LNo(pZI2LPPR& zkkGV02`wW9DHHr;StVBUQimNuzb*UlPpp$4OO$>PBh$V7hTFI-3{P2T$$0vKV7YtP zY#W;Q%nfhPz*uqe0q$>q@-zDH<@6J$KwxTW<hh!yplLNt??xI=;!UueDF%1;Ax1fa z_1r7$!+YcqOy>gw!+%D356RfI#JZ7<%oKn6Ynk`AFnLK>E-+?<5l;vuuo;cuKQrTZ z%H7Wk@*v}=;anh|po-qR)dZ0i5zZiPM`OM}tmlL7v-Er8nei2jz#agl<bAg@DKD+( zKMvD#r13IHt(Ij#X6Ct6OB3{{#K+#jaJ(EUj%UVkvI_6_qb4(MoNdpXI7J2I;@9{% zW}8U!6WB`x(O+&76p_Z=#mQ-AM}sQTsCXq*Eh}@ds<*pcSp0Isl`*sR0<Au7fb}QR z_>pm4?jzyaIn@T;TWx3l(GQqdb%2W&;48@~`nf@wx6wzMUL!5lA|5o5c%i^Y3Fr$> zytM_Sa=*XD*EWNU9_R0^_3fQUilAS2ug`HZ@02F+b%}4UMj0{(E)c3j!6yY(?M-@h zW&-TzRM^jRMz&hwZaq-S1bn&OO?$(}=^!OPr)2og@%nI0(AX!Sg~mW@(AYa91ojI2 ztGDvZc^dudcHZ3`KS7K#_ZJn1ATJ^V1i762-PCWlC;5uBGl4(!A@Q-?#S~Sqgi<A6 zMKpS${}j>-y)xIhPPgy?VAndVj*LIZrp9jJHh59Yowcsd!TK0!T5Jrl$X2ky{dTT# z{}Dl_#J{@(dwGp@>K|y#!qLwT@DMHG9UKWzw0;QSDXG*V)1%o~)0p>(G(O6QAXDxc zzSqs+&3LBbHE@?ui+ESbtY4|-6E^#y|Akd_Y(+eqGOG<td4oH7TR&Oig^!Ms0VNaf zJ@}4*X<+_md!K(N-f43Hc`c?zZlGm=UOuwcnr`4r090-RY`Z3d+hgW5_|yh>&X|B^ zHn@+#H4|@$oo(U%BExp1=~0~47~+q6_ZVUgf0UZtVb$G+S`&2CpKYicY0U5;3O3_# z?$;#YyJA~FEh2T|<0}aUyO6h#oTKw!(wn3zykM(Q&oYDv+3dA4AT%N$zsC1(2qPpp zbhH}-E+DZ1YB%o>neQ$u%)LPy8WVMY%IJLeYnUc<f3PSmtz;49cjPM~WA$y~gJs5x z=Xlb8wO0?kxP8WBce)O&6-l5fIFy1Q@^=&v?mnS>v_<BDPzd?rD1-huii+k>6ePzp zJ_2MEvm=zENtf>UfQ?tAaT`r2vc9>$2fFE7#$U4Mq;V6tejsA)bej;@vm^n@kN}b= ztdn0ALGlX^iEa?qh%Drjjl~wXf6(YB#=P*i2pVnFPIWLY<KFgEzC=mc+XCN6WbMvY z?<jeITSj&ej7vbI@u#dd%C_3K;$F5cYalkblCb*y$kbyXmOg-`gZ;3*sEY1C4NnqY zWi-fXKU|XYXjSspoBVthi_0Z#a-jd>d>6wtFP1@tI)0FDljV09zk~SYxNMvO$W#rB zrH>xzD&H%B`%mhZFXSnlgr#;o5MDYAa;toiAd`Uct9<fPJ~_g50LCOADDeZolzv8A zHu66l_$^hMLHm=E=Zc@)Z!_p97)C66>vU`LbvttJcIr)Ym`~2M4&r!X0?zC1O-?Fl z*w5s^mo8Tk!<iGP6Pv#Z4-=Nb3HXS?*QySt9kT~^;HR297V2jvMEsn(YF{I(<eozA z87g@>m6;LwWCK^UJ=TMJD_>M<tUEd=^>?d;E-W)7q*n0b4&|eGbtmg~?ktso+;KSZ zz)+t}c{lZG)pmm?KkfkDSE|)?se)(9g?%)aM<xg5{>f0+9aTA$tu3AXt<}k=%H_#* zMF<sycOb2(2ba?WXn%*Uehk7Fyo7_0Jd$a<0*I7LF)hfo;XCE}w>mw^h#8448pw_p zjX2(RxmNQvI)9WEczDFU{7U{4=hjZ&WU2jLdJW`E?S4t7j0SN}{ic|?POD|UP#uB< z)ySZu%7%fokVBH^WaZ&^a`1bme&gwf14;BL+e`zt+q?t1u}^BLpcX{Z;}39q{nk&2 z`)CG4PPSC-mn{+}4Ll2x+W3r)Z0iB{gU$D|`j?~z?uD5N<&{UVkM&bax^@|0WRBmd zGPYA<M|I_MfrWqdw?g6oTF-55tZIWBjt7;v+EvE6C&b3A^pU+Q@Fi-dlq)}-p%;HJ zmlVH4C+TT}dmoo{93xCB&)n+$BQ{iLs?Kz`ou)4naJIeQZ$?-QpxX3vcDyZ?es;QA zgO0cp(4zdfqlWk(@nYqn_e)Aw#b{Y-vqUa6%iOYFkLfvg*-yKB2?0~k-~S)qVBoM3 zY2;{Bz8=n8OsyIa%T5~P*eAFAmy#czbh0)Bb<kE+KgG-kviD-@#SYx=M`$x{3TmPR zkhOb1O>=#UX7sDpxMtN93<tthe6)oYJCiBPads_(e;*aB1ioWM*CAC!8Zoc~q%JwM zixXAn1$TIQScxR8_d}5-)cRuH<6K~lm@=1^`~W->^!`uzkK?E1Wt2I=$7VjlXrPNg zyu6GAci;Ys0+#!wN@fS%_O<Au7vKa_P&6aMi(88eMYQFY6wdR*x3Pv&^Z;wr^o^$} zE@1ywZooF(#{|s{;=7l!XPjdgY+4J+6)nUfp^UHV<Bfi<YvBW&tqh$1;w5*UE#7&4 zEcS64Wdz@~`u-g9g<jZ&SIL*Q^rH*@2$t8vM_C7oHjcQDiwbhT4w__>u_U(?a!@Tf z-+mLdL|epoav!no>dQZQ>G-{|+T-(>c;$D7iIG&r7r&t9`S4@@<JNriXUAFCGF77c z>~@Ne;BLAf`(gT7O9FY*?WAX<an%M|^qPy;J(iQu0+c1W7kEPG&8_3t?0I?r=X?1q zGmN!9hH9~qHm}eC)}8_(Y5KM%F813O^2M)mC!8c1e|(iU*>iu`Pasrg0c#KP3!*S; z3T^~N!b-dQ=RF?t3TOhd&+ZhO(li}V4f|LN*z3~3Zlrqi^$=uU+g1Fy>>bSjr6zuD zO(cFN)0b2V8Bfn*vM_bhWLr<Mc-He4ObE9Eou+{f?|NgIFR{0kKyOz%wf;=KAY;=} zBrsXW^4$Cmb&Z>?;k>F(+I|=8$BX#<VYUNM2Y;?7Ma!Okg@;2l>cV<-zW!s!AmK2c zcw{$`Ul|<c@C%zb<N){c+ck076FP-v4<lSn3!msrzfBf=yI1nu$h_J2QkCr%rIwYa zR)5`W38>jq1aqSqB+aBFO<Uy&Nl~*t_b}7RDDRMf^4i@=EE^V+6QIV@)oXI23^RA! zKnt>0Y`dqSa=4x+>|sbr4hW#KyJdR}Z7(WRkMY?p$yLyx(U<%SD@07$^mHnA-*h5q z1y`I+*}Ja}wY($j2-3FH>hLjTmknUg>S13J=Za;X@{4HZIdc{<k12e+*!01(i}+a} z{|F1f{=zn9&>R|h<~EBFB@XlT_GVGuQ_rtOB%@>LR<+#>DtUXX+(+uwsE*xjao@7Y zFeF47+wQ}!M7yv^vtkS#Y9AhoW&A>Ij;ozv{#*P}boab3o>DH623nB#(c6|BX_T9m zC?_;jb6?<KRU2tMPG2AkETz6HI9XdLGK^Q|K51H2XsdQ__3sUu*jPkdh`Y_BY)y&h zwxt#um4ZI?L-@_kuLm~SLb0m9s5Nb}Mo?#Bm}DC#reAiaydqjnRFe|VVB?EtF0F7C zFKf5b_dlK;&z>i-+T!Ue#Sz$)GtcPr<m<`Oh+8VW#O*9W?0>_55B_wIiA5YzzHJi= zhTn*mmnKo<V(GsV4pgT~tF-MgmVp7k#0Um8de*~8mKTQ7MA8bU)3Wd=`It5=y_YWm zmof1zj;y-ba<hADG1^g6(O?bHftbfjg}Z>ONtk?z`3%pQ`Jk`eYy2PaJvKlzZsV`$ zgeM2?PL}ZSaxDD@TiYvj5JhkU2%TB)J{@k<JN$>ufY|$RkC&1sAvFluvR)*tcTv_9 z;<LmujU(o&-4HX9RSJ!~6Nu~;uB6-!wBD);*Hb|}z24UeYE*&kbFC__G014cZB+)R zT!gkN;YSacxwd-xKU(jFz8|5&iNg0X3db@_#d$Fb#7jG7^5qe4kXy+$HhlghSMF0| zIQe+ocu1Ros8x)+#Ge#FXJ+l>KIKF?!$>@$XnM0do^u@#z}A?wD;Rrh+5m;W@N(!_ z3*PvO<gQBClLT8o!;FRTjAf4n$c0=v)9WXFOFCZ9#~-eWXMSE0%l;ZN7xS|jrQoeE zx=vb+Wlv(17s@LDt=8fTn$QSk(taN(Dz&sKAV;7owAW+4z9YJ5=v1@^+L5<%8wXP( z*ZrOTvLCI^a$(OitKCp7;t;?z?onT6#DL6M?VS=<xVl$tn_zn*E7jSJ8H)E|!>=dZ zJ-n~g8BH&Bi%#Y-Q?J@MrS@hfwv&5)g}6I46HL|()=H{@=j;VTK6WER4w>1+ETX*) zMko?4jUbFAa_~OqN)g;d89Jb0mAcoo3}v_5xS=1Dp-t0ty4Xwcd}oF-fr_f%Y}K<S zLB0?YM`K`T?oSA1s(WkI%}Vek%fGsrxmVqBt@}v(USS+J-$H?lkOkuRtQRgUen!9C zX!LVihGkoB`ji6$UR+9E5bd%%rqtry;&_~&;3$U<H8xi;Qsx)3#Vz|W>mlh?&5z0M z;UzYmS42{JbA3NsU8m7>w55jsp{jfRXfrg8w+T=}OD%j<OS(NLXel|EIyJL=ojd4D zws|!fgQh12O?SNAV|@tEYjUGkcHsUR!tAf738fY6KBCP;D{N`l=$<r;2KSelGq}|x zje{Yp0eow!)2+of0e1N|vvRIgF}{MTpJGh&)iM&SGj57inRq0qW4A&b4_Y0;A<mnA z=zJ*`#RD4^|40>Q=R2Abr07Z*wyK-!?*kjw;BI_zUt&Lj6ZqQ{1L*7dKo1T67e5#L zn>9Q4^6(SD^jQQ@G8p^`fXi2B@NaSVTBV7<26fzBsN-YK41og<vz&^CYZVL$E5Hy8 zr0ubW#Z#!>{md!}xZF9AYxn)r;Jkts==49_HgHkO;(#>b1fKllB<zXi=I)x~pCYWs zl4nHbEf9spvQLQo2vCs(wph2Rq|Ov5en)_^06y`87Zdho+p0+ttQmI2h9)N=sB$%V zX+Y%G@qj<WV*yCQJh`!GT%o@<;^A10RBdYW=$UA|H%r@R*p`0Qk5COq5%_uWAj9i0 zYIVoSyp&oxws8LpS?7Q1r^W_ybayw9e}Ta^7S`U#XEGH0-5S=-AwhRYWCpY1!kRf? zDU}s5w7POxJabHJV)mic<Vp19L71x5zNTS}C@)&2Af{C!ikhV+4;>oMBu2z0X3mq8 zv%y7{zz`5fM*1Uhfj5|aM3`9QcBMPaR68Anz#wo6jMw{H6v3NXHz|h5tLYshO2k6_ z>Zr1!5g<Oe!6U=L-_y?E7-tR!e~*{G>q0UUb8A|eEK^kRSms!0uhEMJ>BXoAY0Zf^ ztZZaF+c3qRZ9DuT^HUdjm@iv}J72bvR2T){0`&eMepd@b-PFO+i?<}Ad4rJV_IUzP zYb-~%<iIF&OlPm77J(;Q)jM9fdgf`SW=bcU$p;I40j@jULrCpR9<EGlvavv%%WxrU zro<gT$fToV$;IV^zory7TQw{d7)5x6WM+4Gl97$48_7`YQ2aPL+QR-!9JLN-94eg1 zXn*TI^=<#&G)NJ^VSJL}`5*tGNv}vj_tK<WKS1PXA`@g{a?<Q(K4h+>Sg?O#&Vgnu zBJ5rj)@n|<ySKf=A*jLX+{NXk&jM!&N6dL6p8Zek9R5ak@6LToayybnkDglVdqgCN z?mcoB;6f9)4_5b}|JBqQ%RcV0_!1Mq&b<@wej#+5*_uUMx>c2EJX6{=2}z~hjoU%1 zIxAkA8?8qRlin7&R_A;~^FLBqIiIw;LHVq))aSiislB%Q11_W5+?wqbZ6OXWLgCYN znNZeV<Vp;uL^t@}5EkU25ZM8qL9$^NNj*TYyZ(hTqOsHrlB|WO#>#?a95F$N{uP7_ zDdDtgQJd)1D%XFwSuTF6HSYIdv!h&3X`Vpy#GI5q@R(nIw>A&K+~j~W3q`}|SZ(Ff z1k-5XP83l2hiqJmJ!4kl1&0xAR|=}o8`~+q!fNxqA%0@BQS$SCz5bf@TFxE()irD> z>3zvg{1EVx`?0ocdrfkimNLYrx^$`KUP46K0)Fb!gMDh?uTj^~N%`UY^zNNrHe&z} zWxZRry@ohqWnb8R7LtMs<$dA*`Q3A=!uP=c#QXCoEP7j2IoN`n@bJN)#G|{5J$uPH zvGiklw<cgG@+$HED`NwHAj;RJW?fQ}+%F7X=xY%hb0-#R(R)}6aV`{>=>hQWLz>EP z7j2P*?9F*+;K$d)qv+`CMY9`R7kl!4y^zm~$uB+o*ApK-zyH6!BN#sfs1)<-6YqET zc>hI@_sSmc{d&B&yYBUk>hZm^$M@wu-tX@5p6l^GzsGyJ$NT9$-h0;Hv;0Fn@>~0! z+ULy4eLbP1q}bmvyid0R<3DRRCvlirnc-tLHNBg?urzXGhJntUFlf_a&IdipGr~oA zY-%3A(a7^Bmvp6<G_H&^iTGkESBlYXN%CX9OzJY{&M})dEiO&gY+BsQT;G!8HZ3kQ zZ^Psms(oInN^(!`i+#RKPdjf~T=D!?dK$86an<wM22b`&zqRPQT~i<Toue2R+sSEi z>c5By63@m;tC~kAN5#_-yz^3~cG^WU;rOTDq8AkGXbt@BI4KKTP++IWcj$`@wrFDM znx=QJe%>frp^~E&(XNh1!}8f_r8zAc;rp0RyS3BZo<_Wr8m+-xEAnRKMwBbm7dDPI z(*-#n%AIK)&$XGuMnvZI<;*D}(oKILB{O~yA|0`NQhzV6$<E>=)XLQA_5D^vaX;el zXyUSoQ@@hK^7eqtD$k-GY1AI6?I|x}8_IpOJs~4BDN&<Jzj|Z!_=@U-C6bg^r^jhq zXDfG<mE9CiUs&EYUJR}zfj+g1LOjLn!pc}-O)vOk*Klup3-f<z5P;-P%0*kU{6}As zSA{#{$Jm#-zjCYCxLp$EV!g8<u`%y<JS555HtVX9fev$P(6YRUBB%VrB2DtaCtm~A z|5s4`^;Z3V7pg~q=-izJ_w-;rAa7-m_fM8LTFC2OQ_kt+Eb!05X^eGajrt_+m1HmI z+r)<1OOe{OU#(2PzUbTDsWpAy_?W?q)U+~AsN)!a$rzhDBsF!=`pSP?d8$5Iz%^mj z#`PI8RA+x#I&tcY?ly(aM~Bww)F-WA@0zrWj#@~utG9_|2lSmdbs<)beYRr+(^oJo zdv^?weI&!pThR0`VpBi;>aAGm=T*BOQr++4s^&v7y(u{c{etPXtp3XWT_wpMGr17p zOJjE_piMo^*nF$MvKJrwFztFLKQH3j{-PMxFNyf!;4T56#43SZJM|U!;!uIpma7J7 zp!WSBv`9NO=g*1RC?|H)>e}&Ob@nJwR~@NcJZ52Z(dOQwt$nM<m0mS6o~bRL$lI=8 zt)#04M*8*fk$FQ)h1=ClE4*C3M5|(9d{q9puxL#N-f{Jj)!E5i(FH)H7P;wZVQJ&? z<WHiN3yC9mb)U$*0lhdgvHJjavX>;+j9J*YoP$6xB*RBO{CmLgdf0dF63TQ|nIQZ; zx`7<w3B~5kXiAbpi3&%^b$2e7v{<%g7`Fw<95I^bp=OteqqmM)&k@G*nP<eZr<Nn+ zO(d>d<=c_#UeT0i2DJKW2_;Q}Y}LI_Du)~pX5H6Uf8CW{ylCyNjVlxVYAe6Ou0Xp+ zBzMJ2H|rqjwFi+>oBlH1`$Fhsvu)>VpK~m&W>47(U@DLpCFxFb4<BAqGPj<jDUqhp zYMrgnN%2u@iS!mLeQR!MVi&-Trk0ilAV+3%lTnwB>HGDurs<>D)anrzCCWwKmjvLB z+8C=`5t;phuvNMqT_QfJGlp4=ZH>rv>QilHTjaVY)n3!`=<_92lBRDn+|o&uoOt?M z*r4oTae5T5+%z%$C5VYfCVW<_*m~}PjfVJ0<2Wjrm|hpcqy2P4)@mW^)vGLy#EqJ1 zvAbfWFV>D)ntborY}rq18@_{k97%-);`>YyVnE&JG1SE>9Y0W)s!<!`0>5&7<l4bB zLti6}a}CPY+)pXa{Bu7W_D$CwU6GQK!?oj^+}~Y*Nf=~L$vsXEiJB_G+}LPAN20uh zoNvl5n)Aq~_>HxQToJ5AVBu7=gVd_wOJBodR>OToHS9tS9naC)d0@YZ-N&wIY8?k{ z@8&6%ULQN$V?0d}sj4E`SbEovJ5}i;ymUOIr_XrGok3Q;$X^L)tF0|{DTMZkonej> zgIsG=_#Ne!cXY?Al-QOMO87mWy3hStl(hcY<)_LsNQLeee>eG*{fIYY46U&HdhDEA z1+|p8tIZf4O)s2vh-`lq$~02iLPlpHQH;CZKx36LvO<htEBDIhii+}%XIRW>ts|?8 z`9<CyjPk@r#oKn>%`5H{pq9#e_~qezPK-sv^(IR8r}cFMYN1z#+yo7lRF_uwTa^IS zsqpGCNxOZ5kPC6cg&ckZEW#Hqz>Tism5^S;{sYVF0ScCweZ}`5%S_Wk_5aY~{-ezm zP~dWB3A$n|w0%~L1yJy>{Qg;Bp916BrqS)SXZ+50{iw_GT|d;6dxF$1a%b9Cx{j@F zl{>D`@B5YA`fW=?$Uo_P7*D0CXXo9;utZq$OQA5yZvaos;(NeX0jV`{hBjIjb-kU9 z^^Z+m?xt*GQVV_51{a#7xt_sNyD(a^zYTuIAbS%0r;9By8<pEt#Go^&q+p+-`L)1! zdl1y%Sc9>6QogjK!T4gZ9{6}Hw%BV}Mr&9YD(;dJ6p(}4av>@5h64;mUBSGfJ$C_y zb~|Rdt36X0a2=ro?wf%EOa$uVxiC0v2o2mSfM;4B9utm`Ud91W$18b^8NI|(m1PWI z`i-_|nN9^nZn|Ayv4Hwna3_tJ*T{Uy!Op2o$(0kz6EhGZoBymb=3E<BFPe$^vgqsb z^eS6)iS|h^X0d8EpHRAJ3+pFQ!#9^D*LuIHsf&n^sx>r@gOa56n&tt6Bvhm}cO^g0 zMoZKAyAVPBl341p@{;8Bbn(RDo<B^c@$UR#G91%{3>C=6x;lPSSl_>Tw{1dMf7nG1 z1FDGU-tP8Rb@*qQ6UrL4C{yC()Rz9nYLc;<G0QUo{F=B$x1mo5vPzBvV(dh{O2;fT zeKIny|Dx6OV{vJ}W%0_z$<Nb^zgks;)LpX}lCDDi{9=js7wCAL*4J3&Mf!Ybj~9iA zpTNlyS4elgpIZr#zIhzJaP-2h1YLT3ncIovriFGrNAjS`A=lJM8cZ!Li%nhOMsFRA z)8fSCY<9unh+lp?%RO?oD8}sI*-3rj^|dP&ZRwposx-B@ta8ZJ&q~VcSYh(A=)ui9 z6msy^yrzr68|Z%{2uUDHiMEJIhm5^_2Q5SS2FUy8AnzaZL*+&FN0qbk123hoqz$fY zEEF_++I*=^uZT?@Z07yia+kiv7)#=yhAV6&6WZT1>aPaM^rFDO3HiibeH~dPsf0PS z6b%ocdCH*qMFDcZ%d?|^Qkjmq%#u8RuVOrmxwFIck1;E|-a-lnA~&RefaJEsX;y*F zRGcch-Xe|}Qq0wdm9~yr5}W!~l&)b|E8XHgNq*ghtoSc8`$?|&DV12qtNdDB#9!X+ zcpsQ=4+18fn#W+c0KDsdfyYDl!bS4z_xbYzR3>ra`!4+<{`?$YJ#!YdNTz`UvMiM) zpc}19o;&CHKd^NMArZhnl+b-~dSyF19+oc_#5+PBgMD~zTdPfdi^V#Y3W%3fC)NYE zV+mrCod_0pD9m5s)4qD7wi;52IJ4N@0)!y-eUDW5<5>4Wc@bKfen6<j3z%yHn6Lc- zd=3ZZj%5MA{yzRL=Wx03ckU%Wgug5KTEO2netiRfOUeB|;BS5q7U7Z~z+V=(lcHj> zmmJc~USj??nbXTMN0l}Fs|2R7hyGPANwC)oYrcKqSMQ{jp`^**M)TSI2rP>y@v&yH zPcN2d0{fn9FK<N}kEgE8aBdLAws%5#>g&?Tyk1Fs7n7X&;g%XRENA){#-m=*12MTi z%!sLP#7eg}svId>Ti(B)A&oS~sFpJVHc_o`E8^R0Ha^vv+OlZF8g(Ml^cWaHbVzN! zCUWBgJnNnjH2b-+%=XpIy{Z*p?5I-HgOy((iqkgE1nafT&Qz{6R{Hl?=^~(RT$mgs z>%}z#I)1F*;Bd6Eq}G<UMhSO2uU8ai-be(ruijCX=F+S8ie{_6t8LRc=&ssP5a~i5 z<Y`sbEBe)n>gF;^!~eNPw1Xb!`tcD65`9w(>#x}>aiAgTE6t%y9|$#fHs8m*o5zaA zqm?^~mtwx;FSj%Q!12|~>Mt)XNv^HVjwg=qirUf@9YgZ-P1<MuEIz-ai*+}2+++C5 z>2SXwc#_|4_T6s!CVO$LZ$461wY>Rd*a$5_(gUK{uVR@4CQe;1Ice-x#@dd{?(<Wr zfsJ!Oa#L6GFw8Z*tf1K)kdkLw#!ute5z^xlh!SU^LhUoc^YXl=Z|X<=5gZMZybx5v zdvb_{&U%8{Q=fxSqTf#aY9izOd-G@Jq%`qQ%W%H9k)By-R`-*GfIHY-!oRO1dwgka z=AaR6RR$Qv1^#7}AyWu`la3NI^)DxUg0~z?Yw(hTUydqp#)@&UxM>;i<(BhL=V8j^ z^ctDBO?@Y(lvhZs%}(fwmA0ZBlZvw6q<Yd@WIm~4_swS#UBptKm9|!ivbKT78kZ+N z)K?iTziLlyDQzx~+}Of+rPgv+v%)_@Vk=^8i+RxDu14~y;Q`x!^}2~fYcVjaNPcF4 zt@GdM&_h80hC+A3m00^_vC6Yb`~v%HqC$*$H&;hXh4~2T6B9r?IE$BVIyPH<2*y5o zm8`*XWO3~AIEuFREyWl(zP0R-lH69^%KL!gxf4l5<+T}|+l3CKx8!#4KjrF9e*PEP zzor>2O2~;cK15eTLj0XQ_pLU&0`g=$#wHT3`Ei~93|!zQyYc(V(2$%&*wjhHTf0=a zvJ>H8<WAx}NG&8FY+foE&t{W13sweZ!Jp%~8VVfKLLFJ!*5sn%(U$Y6IYj7pI2?A& zHyRXphq>R42?^0`h>1r763mUG*P;gm2^ob&kGWE#M|Ry3mnk`z0hqrIjAt$)m{$E& zDE!;Oc@l$aIfo+7f=y*I4aH+q9h8|op*CB+FRPC^3Wl?<lX_Jjy^E)(mZy809aSRC zWG)mp9k~eqEm8WDdz<kxe#;?pe;VH%Ks6nI_?|wXnch<$xQ?tg)LtKW$9L@ivp#U& zKtJdgGU(m)ffyUb|EoTr8UBCO2b4+rK(GJb`alp(1M%#pD<%9VuLv13Ndqj&^nt|S zACm3&GYc*`w@s@sCR#2K9AC}~+@||&Ag;XRF8VD}C)Rw|$1~l<L?l3+=$H>bmXz3h zty#sIlF)p>FU{($@}6JM*e{$Wk*4wFVv>EawI43|`*qhJ?%tZ2T7ZJQZ9(3rEN>Jj zJ;T0OIYa&77TO4>bHP992lR*9*#-T<2K9f|AC9=<2lR)^0GgK!n(yfktNH^Jlh5l9 zCKaW6m4^0=Sf*FAzfLr!)H%FI)61fZTzPeKNpq~!OHrv_y@LJ8{P$seCuei4H<<@j zH&>PB%T@IXOO;u?*9w$IKH42oZ1cOZdw_kcmA!*(UKaH0i^-2<rpTD(X5)7K$lfh) zv3%(D(~8WFrk!qD(kpRrs`Hwe`=*zrR)3Ik$W6m%jLk;59jf1q(W%ag#NKIchZuM; z!5m!uH%36oVX1$8yJ^Xw#Gur7*QDQx+_^Zl`g8W{YTntjq%1L{;XB(l^66ju^tSTE zj->N}%M^AkbOWEx`cJ-Ude=|Me|M~%Q?$O|cjVpg6^mdWvu_~u#M7^6-%G~fhOW{< z%;_T<x_asNyoRnaev?OJ`lLF_kVDEM%iy&8z<3icW4S}6*r)3sO$)DiAyk8OMcI<b zJhGeEqRbty<GkU0hJIclJNm36QT{-FYsWL150Pic-Anf;)Gb<A9(iV=6}l(Co`-$Q zOHKJ;zJ-+H@#yA1G^LszOL)OHyMiA^1BaVeP*|(eORCeavL>326=|%6t!MlRJ~_y8 z>+wSJ_ZbONz7tX+jZ?`Hxl!^?!*@bYr16jTEEGkWhVgaNlHQS~)7iL7zq4p_FZyv9 z2JNf2t{!(Dn`t*4UM6Aj>i*+!hKbzpG}&U=;K*QhAaQZJqTB?FzfVr9S%s@+bg@G; zpG&a-u(`b=O=^Gcph(ldnQL=7y!K1AyOe{nI`|TOUVufP+l5RyiB<5UO-nFWujga> zo!2)DrkvbM3+rFQcO}+=)2J{w-Z796ig*kt-2ehh!6^;__E$g!u(SdZ!iui!>)Dn! zMxyM6vO)AYGIY83`f%+NZXT(nQ$mp<TCD#dFB!~3D2d}w;*HwORd7{A%ku%+Vg#W; z4Dt6>yIr<0W7>``Co|r1=a;ej8LdR|nkm*3jug>L7^yGFLXsb<Hvi(siu0S24>-tj z@PA|f%?=RkCAwe;OPmCgNu2>>$Co$Kc!A*H?jKCLN3%7(fpKD#(mS+Ln=n=-BndM& zgEot4hW*ktZthc(UXq&&w!qS<eLR+K5*#h__#a460hZ=%h3)?z4EY?atcT^6QYz55 zL;P${nH-_=><$PZe{+i<H>h)5x=wb_zv!|CE_tj#8%xuB(?#Gl>I&)I;H8oesKl)z zgRBEN88_zeB*gp|UxbldPEGQF)N6-TLwJS?o@4oF1_w;poi6$l&F@IlKvE@bt{}@C zAUNIPD@4E7=|$XWnp;g*O+`n{s~NtDP_^Gg8-!ZLVy+qfQ8e|@`e<tDPPq>}CI<v@ z5OfkYAI?%cpaCW?Ql%N6cQwXa0pbk_H+~O*D&;+gywx1}`4`Ze3WZ{aM-)bj8eJ+$ zp`3PmLj2O7G}T619w}63PGf55x1_nXy@~Fg-RdUgN_Q@(APtjI0Nz>Wu^48zyM~Y0 zw!JV=D=^-Hc*GBD8b6hG(&^p+9@V*?^0|4Sl$ImbvXs<-eDW=eeY@$t<?YB-lU~!K z<$q1JmcJnqLcZnKD3CjwmZ|$mKB&F>sVRT5zX-8Il=lGgDw8RMy8+Z3{8_cQPbYOW zB~=AXlj%e*cQI7N%#SU}o7Y2o7pFF)cyq|+?Zi3Qu!of-CTC6<8nvhj*!2JF#~KYn zMJ2?uxhEvkm!o(1twD-jSydy^`F;2=Y98x)@6Nv3)bYAhUG&O+M{)?Jju?(7GSkVB zh|B>;Icb<X?Mo)Oa>Xdn(cW$SD87FqwQd&Xix_8~7t#)U(&~4l@pL#sG$r*{A&l{( z8JYTYbn4q)k?XGZUvSI09tK~XeraNMdM`3mm9oeY@`cZ-&HE+#r8ZYYnlN>gWUC($ z%BqJ^afre(n-;C^O`ob*Cix+bX`tl6f!f&Z#!P-retnEKd^6|nyNA!1X||R3sj^yb z|HRkEoXKo7BgFz4t(Exxa-VpG2z)BWbk39BY_qm;8c7Ha{4YrysynS}BG3P-i<LZ@ z`nH10dQ#u+m)N}~dlfz}UHu~0HPRI{wR+I}$MM;r4>Y}7lO1tdvQ-;3X!T7?{|{g9 z0v}azHvVUm5E2AWK+s^R1dW;$FNtDJ1WOKV;H+*G?|3bJ<4Zxj;#q-eA-IX={MJRZ z+N*7Cwbs_&s|aW{8zcd|1@HpmCE)EGRttE607CxXXXc#U4f_81e8`@2X6BihXP$ZH znP;Bo834r(gcc1l<6oU<+<ls$qu|<#dSMWcQ&v^Pc+gri^~pff>56Y#)OPVe=%pPM z)(5eV<l3`#S_8s=O96<iIvna9-=YWM-Us<+CeIgsSlzmI;nZjoCqNC!%MQZ9qXl}z ztkB+?_D1JTx%ANIr^d3Oq6dqwYc|`4Bc-&Xt?G_>0%cM%TpMC<YAid-`Z>(6I&j}7 zqlic%BM2H;ZiMfF7VbahDQ&0`lB=~LM8=5O^pqbi;SSob?-viY%rEvKLL&s!>S-SR zT-KW1^0LdF$aTuTK5Tw=wd{94n)|EkeKl*R(K?jc6|C5k=`Khjtd5rJ{JL*cbqk{m z>OP;k)4x%N!1UMc*;RzO7*D2?%Aw-B&Vt{imuYxHLMnOy&1=7Le_zrnTK<!Y$o+e~ zaB{++)ZWo%itz4LuZHPT*jTcH+H!h#<7Y(-($sR!2Ea|&-A#=Fla=MBA^Ah@7z|hB zn_{#8W9mwefFdTfg-;|F!V96sx{vW7A!TK=0HzIpxtH$45@MSaQ<U{3LNo;CPPs!C zbGa<BL4Uu0aDSh7FZGb?I6s#tM$F~E%*j<Jxmu+)qT-QA&0aGY(ES(Px+N7iv3>~g zeojVjJb!e$>Ab0~st$*+7WZDK9CbZS<OONb3#u;8FEcHA`2cktAXg5OA_^(H?K7pC z33K-M5nHR;+pR%e?}K_sff7Yw(78JW)W683vUl;I){mOCUT;AGqMt7h1os2L%g{9| zPrEnl%ZY#q%e_#{Y05ds<3MTUG+-krxGO0g?>*mHwWx{y-ur}nPL4QI1(PV@Mf_vG zdllOIRccR~Ayj>yK-P~`$b>>a>tWxNH7kFHG2jzJr?+<mlwn`48pNff>VSMK%~3K2 zH`Z)*|8ph7U$?{lyDX8VJCU(ucb;v-QZ0^1*89nNNa`~pl4=9A06(&Rt&kPVy+XIZ zuIZ{5;RZRgUbu2zS3SaryvkqsS}ea^_2ojbYIS48SAV5P{0DsOr)<%S(;NF~HZ!d@ z{fe5U+5W5jrd|u}s}g4U<Ao9_q=YZ%kx!K-X=^s##_)#kjMX(+wZQ6vr?Lwuw#&&= zCMAm91OE;3=(bN*U3okd8%Rqz@>nY8_wwXzBq#hgcYnyqL9jdOG?rl0&0Ix6J47B5 zM=SHl5YLTGJvHr<n(sKSFK@vRZ->G{d#J8+VMFtTg67y~OmLfUfdzee^FNYVfM2y7 zGyYzMD7c^O0R^}3gWVyV_R^y4ZccUqhQAB2i*`>f55<PMmoVWp<FH@05?8~v&M#vl zpgJi=Z41WF8@}+kuBocKVm$iAr|>qYpoL!wVn=FU6F<KkHv5)uUV5SA2w|oADS~~O zGjF)1HyOeH!Y+(BY(>N{<7ye_Yzw7RGWwp}gyh$mzMn2WuVN`kvS?a!Rq3zq-7kI( z_Mpi4AG4qpQ4k8o`~NHEt%r{|leZbv<Y|2ZjxYHl+gV}QW;sVsqU{aKNh-p*NCsje zham>ifqTwT5J7WnCW_zsqS&cQ?@BLaf{fN!V{y@3>`1yXO$4DV{pkqWw7r0~OUq@n zg8>>%tCgZq6;hO|^}j;Kn!hlA@X>CmkjASulZKYdZLPGLJ(IMbIBp1qz^)%cCih3! z@zIXyS}63!kLq`R=Oqq#PvcUX6(2=@RLTuuWowM{x*>bc-K28vmEE8s1z5>ZL#^ld zl(%?)-yex>p~4ZQ&sOb^)NQiIJ8L2={8~XXVI+1ertz~?)<(B^??h`)w`EN2!Z2@O zL(7&1qhWo^TGO!Bo5r$YP666mH>j&jVuMXiEJn5y(>&gOq@Z-U>|o_VxNsJ~YJPKM zx1ewo;;xM)hfKq4I)`@V?)HM%$4ovsuv>UT^I3VZ&FaK!WAl&l^I|V^=GK>Tp@-<5 z93^$9hc?&d#pbC)uUneulVc8IOrcem!ls-1#}|%;n=4xq6;Lf*h{Ihm7A1ws3PW<n zQ-$HSNquz%i$36D4!kyDG0AC|vnsQPeCG)Frw|U-6oK+Zot5hGR^%Xz#Q!I^8YPA$ z^2X+C{+|f(lyly`+bj*m27OMVF7I8ry(rhd-5GMu83XgO=lh8PXZ3r(>{9WVvyx{& zLihp8S)(-U*oA%mSZsLn`~i8fg{noh3h`kWRr2gb<n*18B-^)__q|DP25cJ_T-wK6 zmN}s4f&7<A{sD}h0&6$&DI%X_vD2Tpjr{D1s{T#|SW)2TkJ*1t-zjsFJE^PzoXfhG zxx%mcz!=&|?|+!(%h_G`r596~?*H<<au~;reAM-;^MzS>LFjm6BSuk;AJJA~voewD zO+{KViI`Kn+&ewR(ZpJ7m{tpOSd+o8l^EjPXu$F~UGr_EcDjH3!2$LH_IhO~K#neQ zxE)tZFqKugAi$r0zR!8KY|j$+R6HzLfaf3ty@9$gjQWhJZ1I&)8{tjvcwuD#pOUZ! zCr14E^nt9_Xd8ORtlM2*ns0>H;j0EGs7};Fyq{^tuvr*_d%-87Nm_WSMDq>YDVH+- z84$`hX!G%+g_F*^O9|qVewpo0cXs|{>`|%{4^=eNDCcG8&9Kwi;Jg%n|DY8=`>h)c zb~MuwZ0^(CP)FM)Qd-Rhg58&FcC6BPU!Psz%rA@|l;4|+TQ-E98H3eHvIG(v@-tva z^oEHj3zSG9`gG;SKzx=Vd)XAbk6sBj<pg%Xb!3h$6;>)sBb;^Um*PWZ^5XMVtj<<r zfZPvKKp!fYvHQwLYK-mj_=_Q@5|INW_c_x`IZcx%eXJ-(l2VOWucm+IuOBl0*X!{= z3R&#Ow9V=ouz^qV&uhHuK;P$?$;%v8^v5Z<SlipDCC({~?>)-?HVkWTnJqE{s~#k> z*=>0Rm!a(I@dK%|NA}ZDX(eRYH{v%R4FyT8JG<N;UITH!PV}X-D{}YO;A1cN@E#Z^ z>dAWWGr*Jg;n1GEgU`+Ke(^=Y`-rvj{#v7c_vv$%Scw0e9!cbTrXbee_o#P<p1ZEx z53g1&kV!JLb$5&lYhw}g2XXhbcyH5fqpgH4je<t2^W1B7|J1oBrk;l;qcD)}>tv`~ z#hh{fPAzPJAA=<2oV14^4>BNE(JpiOE&L4@(l@X`Cev?bE=9J5Q+Q`Ec8dQb%))qY znLQ-ldz4*(alDs?6M5ey+=%86et$u+=t|s|DF<TJo=9m)pA{S=&Q!a9k*(sl7na#` z!ifSE@5;nm(f!jfwN;-jjQ+;r<a~axeQWA#t{sPE&b*T$lZ#b&3eP>SQ{>c(Fquc{ z@!a3at5Tm-3c<r<7@rXpe&#Wxrr{|U6;quId%dbC_Ok4RMdzXmxh0qQW6^1UXgOyp zSCI@qbki3HsYdHWdWU&aDrf!B=dWVFEC(#>-ILyDW{8Wih)3nZ7QlF*d8$AZB6YJ% zuu297*W}jSTBAYKO+}eMR!#IhkmD~{nz{i|A)=)F+>0te2BtD9N#tYS|LTQiRiP5R zu%YFyPntvgF6I{$Fhmxi;KmL};aUmMgrUY(_aT+Rey>r&+iz0Q==Qot33X=k2WzSP zDtpcZ(uXXW%!zpKfR(f?FR+(X_^4F5ELj|!jbhL{R1{<NxUc+YDv;4^)nhl~jFd2x zx3KK%nAQrO6+ejBvZvcv*6!darjv5;E%HjWG8TT(J{A$j{&sv{kv$fj0ZjZPHwpff zINfeHu+VXewAqy%b08^j!y;MTpZ*saj{z7%%#W2?N4MD(dy|}en!eTQO{swY$-;FW z?8uHJLgVvelj*-bUM_DwQtSZ65LX#tHd5?eOG6aD2tMF(%ZEI?-^NZV&dL+wZ$iC& z0nh7qKE$zIeE%S<PLO%6<jLiPdx$2F->V`hoPEFiB<2>IY8}8Rw`PO!T;Zjrvp$@x z?>3uz(Sj|aV1t;6y4B&jRmMFx@g6pw3tt*)NX{b90rFhQw`5^+L-M-(hUB>Va9!F= zPU$x8kx+Ky!w=>e_sD^TIlk}#<K9zw5)7P(dU3$KBhG6oyf+f+HFNGeG~=D);=MJd zabBlm4macbi|k|gJHTkUTFRp6GO-G4aJG9moD;v+VRwz6e__#tD~y)WWJykYeet#f zLQ$>5d4(BGIJqHtPLYX|jwyy-YX}DLqP8zHlamUppVRB2<h1VQeRM{Y=w|Z5LOP5G zi}Bp>Bg4rn=;;2EdAHHYWOx!Mor4!$H@m&`aI`i;x%9^fcTi}+p(VnNO>5)ZtEU*x z4L-afdASC2YI6AfX7b_-y5sxCFFJP4h6x~UV5mc&G;}~x{}VR;-VUXoK3(zNi+q7p zt;fnU-!Th4Zin;bD~Q}9{wd71MH-Xmn1j`Q+rhgT|8Gs$xuw*5T4iE1uY(OUNT7q+ zQLYzy?ef1Yd}%&o|GL@SbHFYJp{@5Qk%Aq_&v@tpo$zk?mX%N9KPo)R9t0Ko>$7(| z8@`<R#>SvuI#Hd_;9N>3JwNn*uwHXN*r2c~;d1VA@4^UK`O0h7YRM3usN#i#qf_B~ zYAa-aOSXgMKJ$ARbv~&>yQUNh2(|B4dhr?wJQoji<ZzvA`+ffB$ByuI_F56Hr9q=b zT*aj&Gh_{3BW?TPr84a82+u~#7)4|sh-wYfuRJj)tK~PGIB&R_G+$vkHtz1Fknd=x z!$Mk3h=jdI%&XGk(DU#3A}?;0N*^UL2zI!opg`bgf4wy;N4KUgK%V$Ep)~ev56c<; z-c;}C)V={#9f_hj8?FUU^@%BkX4QHX9-h})Z0z}|PD~lhPi10CDf>d6%H1cqia@r| z&%TY0N$kTh<WQ?iZrBPu<x~U1aN?`nkwGiF!f@cLjMi(Jfrte^@Z)v7LofTuf$sC( zew2<M#EyoD`@_xHhY5pS!?>m2*7RU<n!ZmK+tXQ98O(O?U;XH9g(8k4DWL{nmHlY{ zp?N8@+}e+7rK|S?0T9dwUp^6|Hnm=`-Yot^1T7&{5xSQ1Y>yN>y{tP`&VE+pK^!sG zNfVcH{6iCQJ-SL0hm?gD-Kn|}_6lj+NwRhkr~n_BP3{5RtA|l$RO&N=MZbuRMpD0{ z;v|XodXn*=*y^q|&g;lHb7=;z_EaLzqOw|&fWnMr*sjhujAh+w(J`G;7JKxADa=(l z#Ms(nHt$7}`W9J5{~h1DlMg*c%N3aqy?oedw21mZ=lF^by+%td2LbV(gM3qH;Nw@Z zN8<Yi7)w@>Vl2BLw4C|N$*9~M)lPDAtc6N1&u`!y(Ennz${vu91!nF?aib+`q!8<b z_($#a%?F!}R&oC1+kl);H3C1i?U>ZIGBfr5u*KWJ>_k)j)TiDbY?f?r)|nVU=Y5qI z-!{?NWTv(jg-bRZpSQChFI@6gNe9#8_;xl0B^`?yrM?2=uA#JD9lv?&)!=J>i3osG zv_fY@cgtB9-`3u|k9Mgji%xfZ>%>$~(edqU2})8Jzc}lRyX5#sOcL^xb!JUFsMqw1 zy_m7&AyTE6AzBgdX?Hplz7)*qQune*ezuk=d?6pb9jt32_|^v9_U@7tPLI?pRbC)f zib~XzW08QK<NFGXB@*OD20(Wp?7S89K;o-PL-NDf`s8jRJ{4rY$Z>qw*#M$d3$_gl zYlI5AM`2(NPD|Duic$#SE>S}1;QI>&sFLUQ71Dpce`9;DP<3CPpKYNfbxU({S~yPS ziWFvBc&y}d-U3HuG%~eqm?j0hrYA}xzd}u(O95YR?dZJQhU*yjuOYB1iOG9ep7`JA zt>SO6zZ88Nflb7)cgYTZQ8_J|R}yXusadwlT-+-IGVer1IIjreopv+cGcn~BAzL)Z z*R+S*Ol-*&bub^vj~UZ#SEz^4d4zHUIcn7Iqp&Rd>RwTxq}*ZgH9OlN8XgA&5^#Vz z1b)v%;1{T*e1-c}fr;Y6>3+#IJqk!}t5m6c4NwtLuwMK9QLVl0D8IEThmvcJyJd3X zG9A#HphIC|-fEHHF+rh!eFgKb;({Mzi4cV9QkPJG^rI}krq}P%u-q=?^bq3ghe6fW zLe<s+HD>g1z`~ipwQo=`k0GE_e9c!r*s}g$GqniVoLV5Tuh%j_)l#U~0=+>p(89Dv ztp2Q<5bR;NwL9KB#{O2~f>8us(ynT&IDZ)5We&cUP9q5+qDyLf?6}qq3rEWy<0K+d ziQ2P5sXdQDip{s2q3I6r$4=mx)(s1u&KBoM)+3*v0OBOH6#)5;59C+{WRw6=0|BI* z^+|oo8L#wn{q?oMe(#g&Xww4~%~ZtByMa~!9zpSSjKQ5X&a3gB(ThKBCw0PTEEGQF z%(y+8yarRNd-%qh|K*2T6(GcHF29|>fhyp|tvDk$^8tY?P$L1rUKdTy3^m}6a}0cD zV7zCMoPU}nt4K4^V>3w>{gDHNM^Ho;R<N*bmO>9o-f+n#)EfiO7Bj&`@kSQgP*#3x z{nT_=z3Pl5GlAi}O7X+uAD6Qx*;hJi8k0?^!56ixoqru#g*Guob@FR)T-b)~LDgrG zstufuFT`SdNQK{_b}BKK=lCthUu|~x^z84eH<n>bcwC9=9S4;9mOg>qB}+h_(IWD= z4mHxA{yjc}#@(CvQs){;0w^LQBxm*6m5s^h*nIZPBGIQpFg>#m*THZ}yNZb4n7sC+ zkasDtHBdr&wR;l8xc~SeFC+2RvssJcsI$RDUVtkOI9}QvmVh05k6AQ_MR;^1d21+K zvIgd0wiRGMM><CZ%wFcfBKFf$LgBU|%L$1}Khm^5)mt1+o<sP9*k`h6!Fh_%iXKTO z2GR`?YM~fE_SjCgH0LD4#rP$vl1t-jsOk1l%@%5*U^?IVJk>jpx`FgX19DQ+Dl@)q zQA69s1))fYBh~bge3efeR1})nDKxYl5y1>YRkD|$Bz>`Wt)|^p=%6g6tri%N#&#Ap z`&IVG2m1L=0xlzZb4b9f^7(FtU$t(S{{wn`jG7mVYT|qI?WmlM>|3<(aA*C@rK!Ee zytb~5?Os7mi>lU#I_lOaCSXK6kbmho-aX=UWUtCT$K3Q&{(9eDkY25shT<RI7HBzV z|Kq*b|2^<8i!`Au5nqVbE%WD$Kjx09qPr5y(}v_lAlG9r>CRX$x*)t{sr+`a7COdm z;*`=#oL3x+bQX@(0wnWH9o=dEWyKfbFS{XmZitIwvGu#whml^X+bgPvv7%^N)eZ2b zP3gE&+w60XlZ-%4Kc-NXeq84ltsc{3z&1VK#U;qh)%Cht-Vq(zjm1#wTrlYCZ+v&w zjrOTHs)_mxH3l13_kfxX_DBghGo@7XuXyhLV`{sLVl7yo^!~71)Pv%l?1=7LR)PWU zXVL-jKsw#u$5Ny|PxL$W&WkI`pm+C&k_F@)Bg+v|)bzsa@wPtnmQA6kHjm$``}fa7 z`zOZ|weIe>gY#`1?^z|X{D<3_*}OOzdQ<0NG*HydX9OPAMY|`LmJ*dLIGa9`cKPy# zJ63hWKeRqZUSwBJUs_a~1AGGT75gkzn_DJxLU}{k=uJNp=R`5@prh!+#9kl=f3m-t zMgG82UXpV4)f#@Z37Uf%H^Lmo=En{b>#`ASCC5(YG|dO6+Y>0L-2JZ<$^PuEL(&ss z`JRIx7N>si=!5&!Z?Reix+_^@opo@ZZF`zOIJkJ9a>NR+;qa*Qy^=gQ+dKl<3^<yh zg0ihd;TkmkU-x%I)BkEje2i)s%f#Hm#UJJIV6=V)KF#<<xV7*?eg2QtXU&#q^5j<p zrr3&@&!!(fe0$o+jHg(NIj;~hFj8<?F&83Glx;J<gY9l1iz3TSctBnoJ8C|m{fze* znNMTf9d+Wv4Hpx;VboS;-RR_b`3t8bt?v0mtf)ta-csB5IUA0v+ZZD-^9YlcWU6uh zrUAq*Po7uk-NG<(9y8)w{jwzdEZ+q(DgmDvh^4ynzazibBOt*+o_meT91^|7E+~eP z5w6##f>Y`7ty!C1;p|F3705e>;CGgU0of!-NIX;_c*USX#ex(&d$C6ERcYw!@$BXz zWuv8!OwHrL`u(J!m`_|($dtNR7yxE}iOHgvz}*SkM+x*2u9&{NgRR#9N^$D$Qbrc; zDe_9bI{nFLA-Eo<q#qcqU-3X?c0ngswkC&so4%q#D(5yc`YhsTAeWrJ*+1)_l~s9R zc}68Y<dTj0#j;Vy?~HoH96@5Om%A?!64mM8teEPtS|EdHoG$JxkhoaVB&%vy80Q%0 z+~E#=={|lj(2UkI!D={^s=G%)H<HAd6;;VX=vbP^%>XnnN6MhC3GUKO`}^nyP$y(o zehNkWLcdmpewfpz@9P4v-U{F=&P0E9lB15+8m-(}45Qd$4+5&sZ-|7ZdSP>7u!fjC zi6>PHt2!C2i)H;OX2aVPYHNTGX{Ulb8;7A5<zEorR^C=BW*)_Y0}~5k4xa3Ryi7CO z28s)(JV#9j!NO1!=Ot*uH{clbDnu(B&mue~F@!pdmJ)K)<ICRFX!?4OZ+KHi(K~~D zdVNw$uXlXry&t`5&5p9|fq!PAE;SG*%Xz4x4LrrF&E2U`4B=N(R%26lG{jj<nO>T{ zA)b!f(jyP_G3jwrzC|drMNI{XsT~KV+yo|*Ng`HC9daYyo&1KAH;2*}gH@R~g~q)G z%miinJ*rR`AgYjq{AG(ubFW*?phEpE;%5~lU4V%rebpwjs!NRdloLSILBhhTvqa6Z zQNTv$&FL6)HjM&8Z<haCFTcdD<x?#%*;1<zuv@bc%Uwd8sygKol;&quyCLVP(t@UY zR11~M^$mPLBC)4M6QgOWC<td^Cd=g#a#b<1OZZQ$n62$%wK^+`1>eowUqt1RrWdV( z^Eu*pK=p<I|6)rs%l*R|G1cTrz7%A-8uc&M$aeYOA=J!Wt&0=~5{%f5P|WdfYl?}e zIU*L7!Mq>;x}umGC`9Cg=G*bl)e|GWDqjQgX~Agu1LXor2x!3DgYF@_-c#3#ExN8t zRb6IIU9Y~T>RK)O3xEA4zvJhxRr!CD%@6U<a(_h`Ce1AGUP_VsN<a5RmHW5Z-0m$J z`VV!!)BSv>s(er8<csKh6Q$it<)r(Vc|%w?e@_9{%|u}v+ry0hHM1YAmyZ7&Fk;s< zAMr&5t;96!?l#z`L=zWQHu7-1aOg_Oxm0p;LPk#bnc262l}B{#Vl_bcvQOjl3%@d2 zM8(0DWRP)p8BeT5e|<~BK(Dca%V1g0fT7N)H@nj|DY?d;p(kG!pxn)T9J2+JK)}H7 z`|P*n1S$50&e^3sW^$U4S-*4PcmGYnk3B4t>ycUk^r?S)RlC*I0AxO8YgPO-r@RpP z1ou~j1Q3~$m?=ky9()1<?(s6C*=#wJ3cc?`pPWH*-x<&t&%|a;Ew>d2%fF6~0cHMf z0|u_LsLQ5J$3Ej}l%Yd}B@R=Hln#OHM6lI+DL^~sQAUdlc!cWN9IUks-L#(7a$X<- zcp)f|I<6wZ;4s<raIsJFZ+IsnBgXv_l_5Odu**=r!7}`5Ji%SC4bGszIPX}=?-zS# zskzfajo?Q>8_PH|@Gj-^()!(<>@Lrv7xeYFn{;0vRegPm>_K0jTJPH+E1F@v*$3-J zr@0NOwO!R`v>ppc;9Lfre!C1=GoJ;hdjoLf*!e+;Sgj32y;CTZ8E;CD^jmSGYQ>{D ztvFR$(I@jFL;tj&v09?*eeX@({)bh`Sve)Y?53p5YkW6mf0qqFFuz%h^7*X$GLaM| zn0FBl-ziX?^5lYmu(MX@xcYNNJ@|yHL@|pm@Q%~9|G=;P301q9Q~NxreX5$zhpcbQ z$;A?0&QKzdRr90v9>`>`H8`D7=T)vEn#;V=6hLP6EYn>6$@hoVlPEDvEHljJI*wZ9 zq|ZcB4{nKw_kIN-*+$E&Bw$3uAp&_LiNXpIndTeMAwx$iZc*zF3xF&qwQ?s?Gq8pF zYAGhGnhH10mW7pxua$h|vEEAJU!&NFy97x<Ry>!<E`BkK1WUG=G<R}3ZrrsPcubK4 z_U$n4n`yG#q^K6;{iqLAmbWQMmO;!vy}Z&cEBTP(S0cI17g7QY3+Z;j4f~$WZr2`F zZR-v&U(*ikxvUYgh;RlY815%AN&}3RM}h7)VmzhT22|V<NsK~sWweR|o^-oeAmCXy zA1i@K)h2GgHbdPRywK~p615t9V7lRH1l*vGl#G_!m{6)60i4W5G{OBD+8jvn2vHh= z$QkZ?DXgP;P~kMSd=x+U6^OTkk+i?hkPG7FpPJaMyXPZ{4f)_TP5M28zu*QhPT7dh z^Rimh{QZJNHk>cQe=}+H%L<{#&|Os*PCZ9k`daWNd4x)UdyfzI0|obP3I#0T_ZqI6 z9>n+t=#vU4a@DN}Hx`$8%kpk4*+WsGkz1t`@(CY3{tCio$oD(sX_k_KObIVCp?M+k zQob8aPRZx=o0tk(oWNB`+JGH}5}kf0P^nS?raLn8S%i=oA|cQE|Cgc;5uvzKNCd8O zfaSSs6ib7vPz8f{D});JNkTQBEhUmSGMv(wfTSO8)X3i_4a|+LrABqZOG-kR;oS%a zAa|Xg`xwP1{!NVmO3x=J3~37a0{$dYyi7mZFrCjrPVy>ifgHUol}Q{Bhpcr_ibfX) zr8R5mk|kZ@w_bjOp$@=gv5=YE0TyIXrn&#Yq>;rkf+#6nrxpJ}A4VRV%KN;3@FM-+ zp!<KA>e0W*7xd`IsL$w;jZ~`XS^DqiP9KUb_k5k3+pV+xhhFcne2G$;FU|0N49C^* zgani<<7`e|8e*!<5b5=<-ze!-7{-hs=&mmvHSO*!tcG$P(&l)=pFD1Cp~7Y$3(5at zz3z=LAal7an?Y~>zE1V#F?t=0k5FebSu~@o+T?veB2h$b?;?N#?OY#Po|5x&CEFip zXpI_&$NBlH6%NguTI+Pa<8{9M-MV$VRlXc))E%nx9e@R8*T+NF8(BFZp<+lV@fUT2 zDJu=CqcGi&eP@&lED{TFUC@Z;3(EP`%^&PH7k?-{fM3Zz@3sN*$U1U056$C?qKSE> z#@#b`F_slzBDs!6A|o!gLTmbZgxJccu-<s?Q)JUhVx$l_akK20bd}-{DCAbl7m>tx zEbqIlJad4q;}9!#h@y8Z`9OsXi;((aelw&_*$k-%q#e*q(2C47R|M|2ff}*U)P0uk zmF^4w)hpTHB0Bi2s)jWspB_>~Dn}<huZ*r9rn=gV_h(_aweUWp^_RtTwFNVh3wVG4 z&UsZ2SeioS@?Y~eAg38?5DWfGqq&eqLLVC~S7OucZ!ob(>1K!(BoUN?_UE82J5?3> zD&14DY4TRf+{nmB0W{$gVRS!&@c<==4D>DlEY>lSD#H}z`A(i0E{-bNYc?=u_<FG0 z46x>p6PE8;tj$uWlP_^q3&ZH%@u|k+YY-0-0r7eVD$=nB?VegpfPnYtnq0IgwaLl> zuB9-H=3mmbIN_&Sk|0u)6C)XDrS1Mq=~2zTH$>Ku6RpHWrKrmZh26Sg(P(cbRRr@B zJr$vO2#sFOY0i>sXvLm^dDLltq(o+As$x}3lkmamvRU52WrsV0PwI}ql>41ySzwk2 z@Ms6a#F%|kTUsZ{U?Ts%tcQFrujcaqrGdea-+)aj;h`JE%*cel_?A!0#z+sr&dKsE zF}boaF|`yx*8zxK*BpLSmj%J)?s9;@RNscdEEW1_If_zBn)CUiKaUi?_mf5`nOict zG}}ttqvm5~aG@jFOCV1AD<JuErUSYj39l-%;%{j^nhOA`px?lR2uRFm`8804oP<Y5 z5(E@uV_+<cF@!M&lU;|3r@JfOQ$A>NAu6hXmisOvKuQc`ba)~W>QUduSo!Gb8Y^l< z26=ulVWsb>^}Acs*UBjx@z4EkFTA`THLCI3<(_kjG)i|lsIU<OEjGWiq{FJ`Yz>j) zQtqdCBCC$oK_gJtlAqEFDz4jSw203X<fqM>!Zhg+ngkVG_oZmE*I%j?BAmjC<x+_^ zR&($=t~i#8_1UXr38>@z7hnkQP&PY%(Qw0Gjk_L&tBd}FasNOVd_a#l&tPgiVj3{D zxBjnyL8j;Z{F%XN{fwS~{{RILI%o&wC<s*ZjMfBYAi7_y)9pKjMr&zCNALOPDq1I6 z3B{9c1wmxK-p~BLbbh%Qjs%^#Q?i%lB4TV|1tR;cAta|T7e@;@dZMpV@DA7TM)~lr zQI$WE1Mf6}*G_i9oh)E#e@_#<wX)mHT?q$D)(6Qtb17`uJHS(bFY#I5Wu<xsSOpSb z6-8o)TX~XD8mxf$&&OaDDk8ArGrPFIRt>+Gq#vq2sr)TkmA*^MAM$=1jqz@!5c>F< zPsLB_c0$GVK&5hl&ipXU)0V4cUCKp~S7b3vR|fKno-Wa<-YPvq19mm16fb>Xm}+!X z`*yj%hU^rp!qPAV#$^1kWShz7U|`vsa@uLMJS1h~y`d;vUx;jBk=Z;k&t3>eOiqJD z>bBd(oOLu{Duzm#$zVL!F72&krkAVR^tQV1!bt_z!@!bh(b`Ba{rF?UzD=*ih?jT= zdfhIi7Vob_d1t~9el8+Rcb{>u2!Gx)Y7FYxpkkA3w9cbkqqASG=b9f*fS-tH^L%}! z!~s&c$|&~URef>uJM}`ro>AjUN$0VPeBOqjYI(^+QFh&Te3TJ5Lu|=*=b<nVj;V1c zOM`m?dBD5R@oPt+fS*&kXn7<toJG^;XX4Me%dF~lol1?ABLF7LLF-=TwMWb{8Gq>U z@-97p?o=fFCy)|MiJRJ?%L5=NJHLGn_hq?;De5Ay=Y1QHe$p?$m3v;P_2pYR)u5&w zox!C#7pl5s4(Pc$fSS}I^BA>xKjlwg9|biC{Xw@Zaq5@u2r_W_4@gKT00~WVYd5k3 z5I0GUnb8VHC>SxcUq~JB8ky6fh2dZkK-CpHQ+Wc`=;M8jOHZN)1!cbu)o58rI{h=~ zpG>fB)w^8T`S|C-<iC4G(FO5%f8wdp*`Z!kx0mz5`z?Q@xR{lD8wI0`rF1@55|xE5 z5IjA(*ok_7wp!Qgsd^XCr(gvC`W!wbzxGF_ezY32))}ZDq@KH_o;lPbFB9eE8eV`m z)ra@Gg7<h1ysLrdr72IYF@7$6HC3)g_)N*Qnp`uN%K7xoR+1H4DT-dCs{Z4M&zmGq zlQuBPpdxkUu0^GCuk|!Wnhv`kpvc0xtyDX=-7E*z&5{LsfgQQ$%ipknkRwFlzce72 zhwLCYMP&0J6eOad(ej1NL*;yl9jX}S3V3tz)^>g#FXECDay?F9sB_83nIh$ccI2$3 znO}l?w2Q{AK9EX9L51lH{YGq&(EQ>*L?}tVAd~jnzL&hOg_JOm)mr{ARYemg1nP%I zESf94*GZN6iZZgS65lxDu5ig|AWFF6ZzE}MS17-^7?%<j!FVzMrd%*j<fN#L)|&qj zOv7~-E%Xi}9eKV?O(;&34;>(-IOU`|cZ=m->T4Vh3R*#hpuqCaSgge1*~P)V>O|EZ zqvd_F2JH}jzvO;C1pHpg>vJdJ`9`Z;vhH)<89c(7_0dU`WmxjY=0ktK>(ErM)GW($ z>F?=hpg&pR@egBQ9xs+1n3U68L&m_qR5m~&Mg@%$B#=_>E>JoIm@fs?c*vQXtV#l* z(fOWU-@f6fPUIbd5<omY4-p2Cl>u$L$0*RTKgoxuL43M0-jlzw6u1x_aTi&&5qMV) z<%9Q2UWgA%&cDeJC5QYob*S9%>PoSNL7TVB9e1S61@C{s7Fq8itCXBe$$p{+t-0R) zImHq@cxRHELUQgG$Q!Isix>(y^#acKd^mqlaB>;i#lT3%b^Crvs&}OV0u=~dZgn3R zp?Gz<ti%BNvi%SZyL$uxyonTYM`CSjIYnM09hOG7QY8K2a*_~=U~o`<cKyl3S6KXs zP%^aF!%yb25HW<ot^|*=7j>u}GcnXkH0E*JmbiD#H(Iukeet$-{z4ggO0sDLFP6BO z%@;MaD4EeqMJwjY1g;iWB_xe&m88K25|L1NQn@?rJw0*L08@k_W*5E!?ol2^onuQC za&4gWjBiX*Q6EHE2Ijlx!)|4cPKCfkq?wOik^<e)Dz~Z&Ky&jbj2e71<v4ORmTcnz z!%m}BzKC6>(fTS+Vw>rS;&|p#zf)`uwo4m@G(6UQbQ6NED}A?~tbHwGbNTa{SjK{P zbNPI-1*^wRcv~x1ihgB*d%g7L1U<AzQ@kIIxwRA%`Z}~yy&pLAE4G$bTFxbTYFa5f z1lqLvIo+l@)uvp++wydV=IaR&0Qt(Yk=b7ajjN%ciiZub`93h&z?#eF<#ccfz|#NB zT|Zc^rppjl2jj&Wg!&Dzm99jw;k?d|w4g0ke0!;;D~c1h6i1sn>pqVf=dHq?iOZQ2 z!-zcMPWrPlToUJBF@|z>qM6r^f)80At0M^${wslTDEDnHi>a1};eFkHOqg7MK6UAt z%#Fx#Axk-gK|Fa}Ut|yBnhmDz6TIqUl`rK9KNAi{d*v}vCf<2>ujLuHo;$&c^H!v( zaA`Eu-q#bXr(4qZSa^q6EN#-DM2XOqxTbfz?Mu=7ukyq{F@x{_EAQ~%tGs8ES8lcF zvybvyayQWE-0fx}Qcj$y+n<rXcq90u_A4s>!L+i(^x>iu7oma1!vrK?)J~ChnpU~) z<M<E>62XhPctLqyu}q(keUaSbnkY-J<|Q$`&~(Z?bw78agv;pSsbcxC4;W_Rf^rU* zTU8AxaZdHOEOZ!8ueGt?cz2OY?{{#zFSY+Dlhb;Jj~vAk!R3cMS<bZLE<sJ6r+h5@ z^Y?!82eEKW{PZP0DEGX+&ON&|8}O!X<Ptu|<%AWgn&9q(s+>;d%Y@{#ofuvlKV22? zJzzZ0QL-`qc}SgpJx(oXVd4i5+TV|ZsBo`X&K%paC3drwxP&!n7x0AZ{tZ~1HpC)U zQ>PVb$Ro!Q%5~TZX1>x&I-lWk9p+H_yw{~}e4#S>H}iQWNghtaKlAr{xGfixt7VJ5 zjF?zUVYvSwgLd=|%O=#L7v=728%5{_K@?5q*rOhTkLm2-@*3rsU;MAR)3=Mj0))h` z)wC<_kevH#%ZSFrbz=OZ;|okEnrEXo*!zr9)ZWS2mXK_{&iyn~AQJykDeUks!b+1P zKF!T1%(gnr5Ke%wYl#~-jCEPeijEI!;cRWA_-DVhg54t;5kjy^=Gs^hD-VXxVQvRu z*7w6;hW;lM-L^FSRu+FO-##!jNE(>^jM}GdcK<O_NPqqybNtj&;~p_E$maH|rn>aK zMB#+{)T(*SDilTgqt%G+682Vdzfz~s)+95g<x?t=#zvJTw`wnT+<SB&RGAmJX2+Ea zUTyl{f-lCeoifBTRL#VgQ-VieP;p_Ui8`xPkvJ;D4+M{i?}@o*;xJOnh&zV|7P|CL zA%1Ri3=eu#K|(oZmb?&dJJEZM1fdUsZ>|8491^lK2end-yOkZM)FEz88T_F*EY4{Y z0i!8n<L;)4T!YF$iY(AY!o1N8kQ1d2c-=9yQU+2qt%suBXsM@^nYav9Yb3D<RjaY2 z6r8JrVL9!SSrtaT(avxB>R`Vq3X09{>Z4^9RF+Y?E9&z3l>0IO)KdRCg#_=?Ppr7> z))@D$=M(3x?9bVnn{_vp(v_&OM61ozV9Ipa>^i`PzvImryU%-w8S9hBeYhGT4YWCY zQY4aG#FHq1Hj4r%QZN+-5UuNSPXq!7LelV{bsEVjPQ%OHN*XCxn@sV=dXy&8O!HY0 zG?lk*mR{MG_~T1~VNx@{gZTCFq3<R1dX=^S{D;|7SIZ%mV9)75V5x0zdSE35>xDV) zrnu3vj@$}MDIUN=wLiknJ`stc5Fc{Me`u1T5clV=$~a9el~EF6u9oe=1r(L=^wly) zCy1%1bT@svLILK>XhF)EPjcm6IT2D|fZ8+}hwhMj0_bk2<BVrX9$<X-uCad@g}^>n zipHMwxQ?z*&7N_zg*GXE;FfjEJ{=C=Vf_ap>T~7K;QrWpRss<zZ^nw5YsrY?Vi#F) z;?xlTfv>c@JZEg)az953b2>AzGsSL6Agj!>4=I<xN`ex1EjgJ7oeMV*=FdIi_sXUm zEt!3SEXfF<Uk5Kc<ohXx!$|s}=LAanLCwF-6~YDlkhY8;6UD0~J&^Yg;m^pwl?+x7 zs8)is_DtqpqA)=_H}Tck5&yUhskGWYQLWr&-Dab8B<MC-ah)C7iAU1Wg-QPONT)-K z+h|+l1FIJ!%$O1-aWyl!US@{b{NcnstEHuOsf1rvflf5vs;}R@y2xl1p(XxdsnK#6 z`9(un-Uum`1xOP)_dc{n;Eh|)9WsX@&3f61saAK$YB%E*2AO88AvsSj9Fet7(djZC z0LLPsdnr-xc$AE+an62WO75<gP})ePveT6$JzlCYQvXou$0{IS0^a+M+poOLpo^q3 zzu)R1j8#rgB=D)@vIPWwt$l4xJAEzG96P`kDPbMjRF(v3IKP%`5QSyc=Y<bris)8B zzJBwA2CAmH3s5T|w%LsO%%uTboBM;~J;I{Gc-w<hz(O7xyzmKasg6mt`8);t(&uV= zQrpeF?(4%3U}TgXg$8FY_w|aHJl!p!K84kr0lSj2i>f;6-Z1W!Sbm{SOD@@AFir=8 zRkv#H--IQIBv$Wy<~|3CDJo-lI=LBe>WE_A%u8nExXlB`PN`bvXg#)Fa+Zyxs&P&e z%H1h1s(Br5gj;bq9IlupU1J4km4l<2-Llo2p%{?t>t!s{)j|JQc=pOAG48G-{5~r7 zf(4mGOq4Fpa8E$DC7rmDELL6T+_eZ6_1N8)(y*W*?s{ni>`r!gV$|t<$REd5GCQbW zE`z8hgAw+rl-Uh<%WDRV&wl|>%{S5bDMFTHaWD_&ue0C#6<{;#sTQZ(_{3E#i~0G6 zc`%)Z36{~x|E51;@8wl$3<&9vd5~7f_14lCv1kwsT+f<8XaS6+9`nCkAzzY%>#fw* z0{4<%EAAy&t2SERkStBFxD&HqYYB%cZII!V+f1wRmSb>cMU!`68bPsH=_xwOi^Zzy zUM;}+IztM~(i4zdeArZTiw~n#hX0bQ$^K4kyPPRIB_n{Qut4s0pBpOUwR-MfdEsiy zzssu#hinp0N2SHuVlFRZSR`1_|2#y~LAy|gmEe=KrBp&7i#<(zHC17?BT#24sGYY~ zM4KA$OA=z9B|E^4BAmNtDL9gq)b#UEN;qG&URF^B+$pllrBJoI#Lrvnw(#UVCIplA z(3I$A%2j32L<6dffJmhsx_;Wx!|9b!<J;+fYH$+;2(ij?_4h=7(`aK>l+(35cQ1Sk z7FDa<VtjuhmbMq|Tbs`sV1EyLQ^wc6)Q_TBDG_8wNd%dBnCZn%L^>gQ$ZDp!Tm|v+ zuRxl%lLRDwMSiKz+>0POKPCM^R{ls#DtEx9c0qyxsr{c-oG7)D)0M61a`8p2T3Cip zuKfpM=fs|J%l?uD^^5pEwzu<yLp>z?u&Z9h_DU}f<T*Ba-?9>uuq$pSzFVSRJ(O4~ z1Pt}59b)c&<<g9XDgH^h(ph7kkG)A3o=9cvLBSX{BVu;<1&?Yw_;W?T*Oe;s-krQm zC^GJry&>in_xxRLShQsc^0}|B`*Mhq^;&*ME|z59N`U1cukUs7;Av@-;##$LIaU%l ztf2blMjiw}WI@i6lXj?Q;Uu;SN;w5R>~gE&+e)-~0p){8io4tcgd|WJC!D>39*O_A z++-ew<+upHwomQSZ0*R})Xwga5N(IM1;3P$luZnrw_n^A*{a!T>3OTf-DGF>E<3L0 z|CX~e%Z_gre5P{}Y*y(kb^H{gZ2?f~CL^rfEL8M!+8rEtBK6P__sncBqJnGL6kbeT zr9afb`nOSCBIWB7xKA7!ki)P;@`M1j6w+Ya;Lt}&-Kt&vvq3530S0*_Rx!BwS_T<! zx$%hce(kT{INk#=Z4?OqR7_I!{!Tv0u=07y-3l-*Wo(53+W9@6goB^C)JIk9Fugap zhL7VxRZ;@D)_m%{!cRZ_DC(q2WhnwXv68}5zQg<{4Au*kO5P;RE8|PBeq`+N;raP0 zn(>>&&n)7u$wUo4d}uBz)5isPSru~M9xN>LGHwZP_l-y^-8D$jLToc6jU~NXUJ8aB z=!<j}R`>)IxMs^NG8gxVX53v$IcZstCK@#vE0|$+zA^{f?ZY$k6_yk`%+jHO#M6&> zK%v+U#YI&AP;4#uO9@KSqIqL+kwd-J?5nq0q$Thd1v++Oz#lXyi7n9Vr^{H!j#9Rg z;NRyMZ_)zcFMINem?yC{;;NATg+AXxTPOU|Xlc(@AnLz*p)9<aq=%|F{6<*njhdwz zE&m|@!joaB`o0*LYV0x$zL!5nv@a)fn+{s8?0gcQd-@6y(A>Qbs<o8>n=m~-<aOmi z!+jE7MT#5CSgAxsrZnktriCq=8--JgHmgzy`oWZ-lQ^t)VcaUMr%-w=<Elyp_|Ps8 zS~)BFoy3LZ&JpUILCvo${V2?e(-Tgeuoj5@OIi|5%s`3rfzeXP{P#y?81tm!37IFu z@8bf+zHMToR3Plh*(CBJ#I)D_30+dP<`780Kll3nr!l#@^v{3Rs^VAZc0VJ2_aDDg z>gz0lNqNHS35`81b=*XqjL^#TPc!n9tn_?p?d#@;>&^7hzl4Jf=!cuUrE_vFrRK%n zzHZ)Ir}6IHz#llC&(QaoeXmK@=V_T@>L-ybeVqqlFl!JKuv?2cg*)04TOG}>;+>*C zfIk~cWNW0CdiRV${$t9OV3iQ)8@h6LER)FlQh0?be`xJ?gQ{7A8cEF$)0A8+pN!rq zVA1;&<>)rIE~bEA19u$AS<s|EX*`P<+TTdbdiW4LGtS1{6NNS5q)IeIN@hH8RGN4o z7|VnXbec~Gj1TuQSWV}aODFT(_kN-%T!x`#7)5ehek)6p5LWBig7^)Jr7^!KuRI`v z@lsiimMniK3-dVx{LUQUPmvbj6S)54!#sKyQ*VxZApEmfRp!$J@|5C*+(IQbSx8lt zG(FFKpK)nzUoOv<aXw$6V?-?YvjwM>$pW7Z*`r~G!chnzuQ^db^A;S5{+N5(#r!X} zRdMApB6HTd9~Z%B#cqce`!oqcAn2k33w^lat+M>{>Rqi^bBFsO%7JVqM$`VI9?hdE z*?-pj=r_tBOBQALF<Dn2!g%9)WX-6TgM&ZG`;$BLyE60hcDD!g=gmp=!x!a8O8zh2 z%akvXcRMK06y!dZZ27TYEB^~53-8Hnc}L#I1?8C-dERZ=@@XD(#!Kp#{C2i{iM)S- zy{z;{1$Oqnn=Svu*UJBbCEXjBE$_(tlR<e_@jP$$^V$A?t^7#I|HZr6{>!@^l$S8q z-m+}@v0p1M>zVgtw)|{)9~YD#uKJ%XpXRZD|M$XbJv&?8llLz^_507cG4WBe<)8Rk z`2~`HT(<mdd4Dn}k4BpQKbP(Q*UE2(L3>}klj;9jdAEb|5?{?*mMuT_YvnJO{7+`f zN9286P+qoc-fh|PX&(Fce+BHvv$N&@B=28*;`bj_D*exvf8uN9M@s&2+43dw{$x-d z+bjD2pKSlXR(`?bQs3K|{?C?oJ1CC<AN|jkAN#fPdzq@<liBi~ypQwC!$LR9yA6{T zdWPMumG>{c4C)(Fr_!_Kt5kYA$UkJHypPM4FOl~rv*i~&Ch6Jov*rECZ28OO{R<e3 zUw=g2?QHqIe~|PoL3;*x@@{9#Z<hBbv*p*y`?zfR1u8vTezr=_mcLxy?QHpoynpdU zP~VUhk4Sp9{Ga6gi|v{8k@9|VHoZjNUn5<~qfL_v351j=^y9HdnuxnyfCej-$RpOo zQdYPL_(D%8vInU6RDtOF+3xz{ko}3(R6m&P_WNCV!lG9##lAS-Y-T@wB!6`{C;PCR z_(>uki+nPYJqL!4MA&G$5C}sFp<-|H4qp6~X5%al{`!MEW}R%B5n5`3!j-!x73bT> zQnZYNGJ9n6jMA_C`!)hmv3{_$=X3u)M}QCzW~BJ;PYinSU3!pj6PA=Mb7+-)BHMem z!`vV-xin-~Ha7`KRwl$weSb#RWCfCChi!jGo^qc_6y>GYXWldMm&H;;f~(jw{EDYX z5)t1Go@&h9Cbf^Znl7OBjrM8AvdN`fB5<>lB2r+tCy~b2I34kA2ObZ#T~umUS<ZOp z)?(TqEecjT&fAHy-2csL`mbnrp8bEmXi-44EcU@2TvY4Z)H)=k{}sr;C^dTdAoZv3 z6#wS*W4ZPMe!LjeJ<8$#4f~o%f&tuOUm8i!bVjmKjby%kw$;SeBeY711jMPiXfOf2 z5W{!d!?|Zm>5UEtOzdQJ%huuIbbLDTE1ZEr`^)LgDkYw)CoS*c73^+u=nLCYprkug z?sRuRAA9m;t3~XEScydT6+-IH^~YBB3m8%k5~1DcHut2Ix4|`5;tKTKLot%F5`*() z;A0rW2@%Jl?o@|;048HtesY9gH9p@~ccCYv&Hyxj>(Ym3_ba5Ggn3G(RktqoIi3P) zJ9oOsLMrA?o;&tu`CvOkA6AmRc94qvLlN1k#9k)qcp=DN&4NA)1|{075lVIueQIE^ z^4x<WyQCkMnXCT^y-6fCXXDC&4X1QS9Mg8<poBvmsePqY9kV-{|8}s?3~iiqLE(gO zs69N}ES5;SI8KHOLT0GlT->|p0_<#-$goK$U~{qC%!kD6Qgh`KfBy4#61NObUi~@2 zRrZfI_iSIk&v~=zy{e7L!Yh+kwf4>4auaO~5=~+ruHQ%G!*KF}@14ZLQ}tHzq3<o_ z!JOUk6z2G0b!$YJYa?`#6v4DY8&n+DJ=-O4%f{sJD~TbD>Lt>_otS2*BV2I7;K|9B zBc8fb#Lf8}s$d))7Uvf|3)Bn{dpqZxJ~^J?{;|dF(gE)*-i4l3jtu^_{!hY#a|XM) zZ^S)siuH;w#)env*`2e#D*Ca+Vus5R#T8u6^%)x%!vz|IE(tMI4YlT1v~9x5{}j!s z3n!a5bCxqHxGr){YVT<2q*1lbSwDNjKhMg~OHL|^cNEaomG5kO=4t6~ReJ*$iZ#q$ z`!E_I9C7z-pOh>dWKuNMJ3L&qW_I_vtOKUADhEjo$!OkaVnsNqZJ2~~uYB{(4Zng2 zp!Yr7ljf_bgQMrPUppl^Jl{<1J3JgB*2QNH$%pbE;1r{V;otuVR<p+4XMinAtsHsw znxpYoZEI^&bw4QVChS}}+^p(w*022G%$YNZ@Kv>oyU*?m&0c#8R>;I{ae~ebs9I-+ z)~{Us@891ScFr9v2N$(;g9v4Nwp0CRp2MMaseOlqt2Q_n6`Olp@WZWO1Hx77oi)xY ze4xJ$Iq2|!s_r@M6XvX)P}Qj>y;-%^xfPp6xo%jaocW{qQ@soj-q5eg7}ctiJq|5X z%Cb!lmxQTgxJng&sTWS;^A`$^QzOeRM{HP$6fDF0sLF45%Xp4u@KGs@8>^0P7oO~_ zPkEzJDpbVX(BcjuHsNylL}`I9o}$|796=*hHBL%rew)aHn>g}Yyj=>UiF?&7xK+75 zi71tw&)ATN4x3cM;>{Poqo1;5*Ap<0Ygq<|NWMA5xwT5)E$Jg})9Ib0GtS1c>G|d} zlHRgqz7b7+`!bS^WvfUXRluKmB33t`;cZ(+7Q)SPQuma4+Q*ZaR}tI1f+7HFCsa2( zSz<B~e1en-<dD-xqJs{T2&=>sEHX<{4JGRvN;cOw_nlpDJiwiUTWD-w>f-|9(Vk79 z@Ku<7kTbt|zr1x&duRjV!P&&jF6kv4A%XTp1wWnJXzcGXO5cG_tgd`neZy^$eC}(O z*pzFy<eB)L3S(+gi#&Gd{5DfwDMe-RR~f@?C23-}<jXdUxC|s0r?%tW6bZErO>@)4 zA?L%jHM?>Ai%7&P%%@jFQTEjm(dya?!VS*;Dm_}5PbIezM?zg33l-P{B6aV?zRjT@ z7wWusTMa>YzAXxAPHS8Vks_R3k(>%Cmx&^kT|XkucU3#nTYP%N)N$@<k>#*n^^Y|x zvZtqp^Zf3}dYAQfLH_5fBB`GI2(&c!i>SXhX5G~LY3?tS!+)&G-lE45lq0;T@SBjy ztG|N|?rJ50mkwUAr(Bkg$aV$JAt^$Wb#OWM`^BlAQW+FJ_wft2F;nSbQz4$C8`>`a zO22cT(fbpFZwL5B)KIb!7JgYFZsOUrgJzq_xjnIwxJ1b<u%}3y=C#QcM8>i~sja2* zZr3vBy}_yN!ze#|nAtW|V%1jrFBgPXo=uz0whQvjPP5=_X{*^8%A?1S^@X9-w&D_) zYRZ$+g9n*yCA@4e0$_aG1VY+sFghs`N<W<|-{hQzRA$}qUqW_kl;MBHlyeSdgxKf( znFs6ztL43F4Vqx%P6<sQCVYQTc~Fy`&4&nP425tKQ)lH&xN4Q#1T|R6;h0J8Kh+HM z#$0A+C4Us^%pcT=tKz(2UZ=nzhsELLUG4Isj>0q~eLt7LNQNspRO+m@;^}Iu&dq^w zYs&0upqzjadra-Co0V5345m~t?=ekp@%_b(u)sni-a#2I5I0&cl|F5;k0x{}_mi7# z(TYNQh_l&v`r^Y6&NQ8iiw|07!><;JV1gaas0uE?>X6`7{c5xvSM8U8)QuuJkk=x~ z=wO1cY>GPT+`MLPdkj%Nx24RgVh}i(7TpPaxwQIievy%gfdCE}%#z3R+XzVUpn7{c z8ag=BiRK?vS2Ci{J~DzLxR8^MMD)nsh!ZXCrOt}MR(xx3q-xEi<nV%MRcCx#Z+u^| zap!4tglBkvgT(Z1FFr3Z{BX0b`#fiO$=px8BS?-UN}>pDk$4YBtb>RV6XG|T-y5y! zh*Yh&xM~0ZmV#CwW6T@IT8ZH$jm~gHy%cdi*U#PIeS83!@^BOVR-v;waq;2Iql=5b z^5nq8Oq4i-OaOlc+^@X<kTZiXU;Y*g95zA9s1Ru<R_5P57gr}&Ir?)ec>$!i%l%@% zklVCSXJOHx&TvsEPw!=%qd>M2ul@C>rhRuuL9EnDZAX(?cwwMx%bXWn2Du~`6#L3M ztIHJXXQV&wwW{{UQ?)6t;B)H<xy4M&KXTJsKYOD7_v2#5@T@kl)bpx&!5NS^&MGq9 zj8;#LG;7Sq@&H}dV(1<Xy((u$XWaLYT(|K9x(5qRpQ`CsVzW0-II_<^t9jwLyx6$J zkwjgM?=5r=Zwnt;XxA%qjJo&ic^qm^D4$n~N%0AoX$W}Zk&d}NE$s`Q?VNH(NF5@8 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%0A4oQ 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	mi_>rC`Z2LZqbp=w#-pS0XeJ71 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ʧ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%0Aj}Fw;zh12<P` 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	U2w`P3!_eU8}% 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 V4lSgYL=W6cf~4lM{uy`s#s7`e4*CE9 diff --git a/memory_usage.csv b/memory_usage.csv deleted file mode 100644 index 4f2c2fb879f..00000000000 --- a/memory_usage.csv +++ /dev/null @@ -1 +0,0 @@ -8771.168889,165387,4457938,8698.928889,210284,, diff --git a/remove_exec_ctx.py b/remove_exec_ctx.py deleted file mode 100644 index fe530e424ee..00000000000 --- a/remove_exec_ctx.py +++ /dev/null @@ -1,49 +0,0 @@ -import os -import sys -import re - -def repl_fn(m): - ret = '' - ret = ret + m.groups()[0] + '(' - for i in range(1, len(m.groups())): - if(m.groups()[i] != None): - ret = ret + m.groups()[i] - else: - break - ret = ret + ')' - print '\n' + m.group() + '\nwith\n' + ret + '\n' - return ret - -def work_on(fname): - with open(fname) as f: - p = re.compile(r'((?:\b[^\s\(\),]+)|(?:\(\*[^\s\(\),]+\)))\s*' + # function name or function pointer - r'\(\s*' + # open brackets - r'(?:(?:exec_ctx)|(?:grpc_exec_ctx\s*\*\s*exec_ctx)|(?:&\s*exec_ctx))' + # first exec_ctx paramenter - r'\s*,?' + # comma after exec_ctx - r'(\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'(\s*,\s*[^\),]+)?' + # all but first argument - r'\s*\)') # close brackets - res = p.sub(repl_fn, f.read()) - - f = open(fname, 'w') - f.write(res) - f.close() - #print res - -def main(): - file_list = [] - for line in sys.stdin: - work_on(line.strip()) - - -if __name__ == '__main__': - main() diff --git a/scenario_result.json b/scenario_result.json deleted file mode 100644 index 00a7c1b7470..00000000000 --- a/scenario_result.json +++ /dev/null @@ -1 +0,0 @@ -{"scenario":{"name":"cpp_protobuf_async_unary_1channel_100rpcs_1MB","clientConfig":{"clientType":"ASYNC_CLIENT","outstandingRpcsPerChannel":100,"clientChannels":1,"loadParams":{"closedLoop":{}},"payloadConfig":{"simpleParams":{"reqSize":1048576,"respSize":1048576}},"histogramParams":{"resolution":0.01,"maxPossible":60000000000},"channelArgs":[{"name":"grpc.optimization_target","strValue":"throughput"}]},"numClients":1,"serverConfig":{"serverType":"ASYNC_SERVER","channelArgs":[{"name":"grpc.optimization_target","strValue":"throughput"}]},"numServers":1,"warmupSeconds":5,"benchmarkSeconds":30},"latencies":{"bucket":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"minSeen":60000000000},"serverStats":[{"timeElapsed":30.000293970108032,"timeUser":6.916,"timeSystem":10.652,"totalCpuTime":"35087","idleCpuTime":"31013","cqPollCount":"3","coreStats":{"metrics":[{"name":"client_calls_created","count":"0"},{"name":"server_calls_created","count":"1"},{"name":"cqs_created","count":"19"},{"name":"client_channels_created","count":"0"},{"name":"client_subchannels_created","count":"0"},{"name":"server_channels_created","count":"2"},{"name":"syscall_poll","count":"22"},{"name":"syscall_wait","count":"0"},{"name":"pollset_kick","count":"7"},{"name":"pollset_kicked_without_poller","count":"3"},{"name":"pollset_kicked_again","count":"0"},{"name":"pollset_kick_wakeup_fd","count":"0"},{"name":"pollset_kick_wakeup_cv","count":"16"},{"name":"pollset_kick_own_thread","count":"3"},{"name":"histogram_slow_lookups","count":"1"},{"name":"syscall_write","count":"8"},{"name":"syscall_read","count":"19"},{"name":"tcp_backup_pollers_created","count":"0"},{"name":"tcp_backup_poller_polls","count":"0"},{"name":"http2_op_batches","count":"7"},{"name":"http2_op_cancel","count":"0"},{"name":"http2_op_send_initial_metadata","count":"1"},{"name":"http2_op_send_message","count":"2"},{"name":"http2_op_send_trailing_metadata","count":"0"},{"name":"http2_op_recv_initial_metadata","count":"1"},{"name":"http2_op_recv_message","count":"3"},{"name":"http2_op_recv_trailing_metadata","count":"1"},{"name":"http2_settings_writes","count":"2"},{"name":"http2_pings_sent","count":"3"},{"name":"http2_writes_begun","count":"7"},{"name":"http2_writes_offloaded","count":"2"},{"name":"http2_writes_continued","count":"0"},{"name":"http2_partial_writes","count":"0"},{"name":"http2_initiate_write_due_to_initial_write","count":"0"},{"name":"http2_initiate_write_due_to_start_new_stream","count":"0"},{"name":"http2_initiate_write_due_to_send_message","count":"1"},{"name":"http2_initiate_write_due_to_send_initial_metadata","count":"1"},{"name":"http2_initiate_write_due_to_send_trailing_metadata","count":"0"},{"name":"http2_initiate_write_due_to_retry_send_ping","count":"0"},{"name":"http2_initiate_write_due_to_continue_pings","count":"0"},{"name":"http2_initiate_write_due_to_goaway_sent","count":"0"},{"name":"http2_initiate_write_due_to_rst_stream","count":"0"},{"name":"http2_initiate_write_due_to_close_from_api","count":"0"},{"name":"http2_initiate_write_due_to_stream_flow_control","count":"0"},{"name":"http2_initiate_write_due_to_transport_flow_control","count":"2"},{"name":"http2_initiate_write_due_to_send_settings","count":"0"},{"name":"http2_initiate_write_due_to_bdp_estimator_ping","count":"0"},{"name":"http2_initiate_write_due_to_flow_control_unstalled_by_setting","count":"0"},{"name":"http2_initiate_write_due_to_flow_control_unstalled_by_update","count":"0"},{"name":"http2_initiate_write_due_to_application_ping","count":"0"},{"name":"http2_initiate_write_due_to_keepalive_ping","count":"0"},{"name":"http2_initiate_write_due_to_transport_flow_control_unstalled","count":"0"},{"name":"http2_initiate_write_due_to_ping_response","count":"3"},{"name":"http2_initiate_write_due_to_force_rst_stream","count":"0"},{"name":"http2_spurious_writes_begun","count":"0"},{"name":"hpack_recv_indexed","count":"0"},{"name":"hpack_recv_lithdr_incidx","count":"0"},{"name":"hpack_recv_lithdr_incidx_v","count":"9"},{"name":"hpack_recv_lithdr_notidx","count":"0"},{"name":"hpack_recv_lithdr_notidx_v","count":"0"},{"name":"hpack_recv_lithdr_nvridx","count":"0"},{"name":"hpack_recv_lithdr_nvridx_v","count":"0"},{"name":"hpack_recv_uncompressed","count":"18"},{"name":"hpack_recv_huffman","count":"0"},{"name":"hpack_recv_binary","count":"0"},{"name":"hpack_recv_binary_base64","count":"0"},{"name":"hpack_send_indexed","count":"0"},{"name":"hpack_send_lithdr_incidx","count":"0"},{"name":"hpack_send_lithdr_incidx_v","count":"4"},{"name":"hpack_send_lithdr_notidx","count":"0"},{"name":"hpack_send_lithdr_notidx_v","count":"0"},{"name":"hpack_send_lithdr_nvridx","count":"0"},{"name":"hpack_send_lithdr_nvridx_v","count":"0"},{"name":"hpack_send_uncompressed","count":"8"},{"name":"hpack_send_huffman","count":"0"},{"name":"hpack_send_binary","count":"0"},{"name":"hpack_send_binary_base64","count":"0"},{"name":"combiner_locks_initiated","count":"34"},{"name":"combiner_locks_scheduled_items","count":"58"},{"name":"combiner_locks_scheduled_final_items","count":"17"},{"name":"combiner_locks_offloaded","count":"0"},{"name":"executor_scheduled_short_items","count":"5"},{"name":"executor_scheduled_long_items","count":"0"},{"name":"executor_scheduled_to_self","count":"0"},{"name":"executor_wakeup_initiated","count":"5"},{"name":"executor_queue_drained","count":"5"},{"name":"executor_push_retries","count":"0"},{"name":"server_requested_calls","count":"240018"},{"name":"server_slowpath_requests_queued","count":"0"},{"name":"cq_ev_queue_trylock_failures","count":"0"},{"name":"cq_ev_queue_trylock_successes","count":"10497179"},{"name":"cq_ev_queue_transient_pop_failures","count":"0"},{"name":"call_initial_size","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":7},{"start":9},{"start":11},{"start":14},{"start":17},{"start":21},{"start":26},{"start":32},{"start":39},{"start":47},{"start":57},{"start":68},{"start":82},{"start":98},{"start":117},{"start":140},{"start":167},{"start":199},{"start":238},{"start":284},{"start":339},{"start":404},{"start":482},{"start":575},{"start":685},{"start":816},{"start":972},{"start":1158},{"start":1380},{"start":1644},{"start":1959},{"start":2334},{"start":2780},{"start":3312},{"start":3945},{"start":4699},{"start":5597,"count":"1"},{"start":6667},{"start":7941},{"start":9459},{"start":11267},{"start":13420},{"start":15984},{"start":19038},{"start":22676},{"start":27009},{"start":32169},{"start":38315},{"start":45635},{"start":54353},{"start":64737},{"start":77104},{"start":91834},{"start":109378},{"start":130273},{"start":155159},{"start":184799},{"start":220100}]}},{"name":"poll_events_returned","histogram":{"buckets":[{},{"start":1,"count":"21"},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":13},{"start":14},{"start":15},{"start":16},{"start":17},{"start":18},{"start":19},{"start":20},{"start":21},{"start":22},{"start":23},{"start":24},{"start":25},{"start":26},{"start":27},{"start":28},{"start":30},{"start":32},{"start":34},{"start":36},{"start":38},{"start":40},{"start":42},{"start":44},{"start":46},{"start":48},{"start":50},{"start":52},{"start":54},{"start":56},{"start":58},{"start":60},{"start":63},{"start":66},{"start":69},{"start":72},{"start":75},{"start":78},{"start":81},{"start":84},{"start":87},{"start":90},{"start":94},{"start":98},{"start":102},{"start":106},{"start":110},{"start":114},{"start":118},{"start":122},{"start":126},{"start":131},{"start":136},{"start":141},{"start":146},{"start":151},{"start":156},{"start":162},{"start":168},{"start":174},{"start":180},{"start":186},{"start":192},{"start":199},{"start":206},{"start":213},{"start":220},{"start":228},{"start":236},{"start":244},{"start":252},{"start":260},{"start":269},{"start":278},{"start":287},{"start":297},{"start":307},{"start":317},{"start":327},{"start":338},{"start":349},{"start":360},{"start":372},{"start":384},{"start":396},{"start":409},{"start":422},{"start":436},{"start":450},{"start":464},{"start":479},{"start":494},{"start":510},{"start":526},{"start":543},{"start":560},{"start":578},{"start":596},{"start":615},{"start":634},{"start":654},{"start":674},{"start":695},{"start":717},{"start":739},{"start":762},{"start":785},{"start":809},{"start":834},{"start":859},{"start":885},{"start":912},{"start":939},{"start":967},{"start":996}]}},{"name":"tcp_write_size","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26,"count":"1"},{"start":34,"count":"1"},{"start":44},{"start":57,"count":"3"},{"start":73,"count":"1"},{"start":94},{"start":121},{"start":155,"count":"1"},{"start":199},{"start":255},{"start":327},{"start":419},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108},{"start":10373,"count":"1"},{"start":13270},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"tcp_write_iov_size","histogram":{"buckets":[{},{"start":1,"count":"1"},{"start":2,"count":"3"},{"start":3,"count":"3"},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18,"count":"1"},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"tcp_read_size","histogram":{"buckets":[{},{"start":1},{"start":2,"count":"1"},{"start":3},{"start":4,"count":"1"},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26,"count":"1"},{"start":34,"count":"1"},{"start":44,"count":"2"},{"start":57},{"start":73,"count":"1"},{"start":94,"count":"1"},{"start":121},{"start":155},{"start":199},{"start":255},{"start":327},{"start":419,"count":"1"},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108},{"start":10373},{"start":13270},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"tcp_read_offer","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26},{"start":34},{"start":44},{"start":57},{"start":73},{"start":94},{"start":121},{"start":155},{"start":199},{"start":255},{"start":327},{"start":419},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108,"count":"3"},{"start":10373},{"start":13270,"count":"16"},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"tcp_read_offer_iov_size","histogram":{"buckets":[{},{"start":1,"count":"3"},{"start":2,"count":"16"},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_message_size","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4,"count":"1"},{"start":6},{"start":8},{"start":11},{"start":15},{"start":20},{"start":26},{"start":34},{"start":44},{"start":57},{"start":73},{"start":94},{"start":121},{"start":155},{"start":199},{"start":255},{"start":327},{"start":419},{"start":537},{"start":688},{"start":881},{"start":1128},{"start":1444},{"start":1848},{"start":2365},{"start":3026},{"start":3872},{"start":4954},{"start":6338},{"start":8108},{"start":10373,"count":"1"},{"start":13270},{"start":16976},{"start":21717},{"start":27782},{"start":35541},{"start":45467},{"start":58165},{"start":74409},{"start":95189},{"start":121772},{"start":155778},{"start":199281},{"start":254933},{"start":326126},{"start":417200},{"start":533707},{"start":682750},{"start":873414},{"start":1117323},{"start":1429345},{"start":1828502},{"start":2339127},{"start":2992348},{"start":3827987},{"start":4896985},{"start":6264509},{"start":8013925},{"start":10251880},{"start":13114801}]}},{"name":"http2_send_initial_metadata_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_message_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_trailing_metadata_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"http2_send_flowctl_per_write","histogram":{"buckets":[{},{"start":1},{"start":2},{"start":3},{"start":4},{"start":5},{"start":6},{"start":7},{"start":8},{"start":9},{"start":10},{"start":11},{"start":12},{"start":14},{"start":16},{"start":18},{"start":20},{"start":22},{"start":24},{"start":27},{"start":30},{"start":33},{"start":36},{"start":39},{"start":43},{"start":47},{"start":51},{"start":56},{"start":61},{"start":66},{"start":72},{"start":78},{"start":85},{"start":92},{"start":100},{"start":109},{"start":118},{"start":128},{"start":139},{"start":151},{"start":164},{"start":178},{"start":193},{"start":209},{"start":226},{"start":244},{"start":264},{"start":285},{"start":308},{"start":333},{"start":359},{"start":387},{"start":418},{"start":451},{"start":486},{"start":524},{"start":565},{"start":609},{"start":656},{"start":707},{"start":762},{"start":821},{"start":884},{"start":952}]}},{"name":"server_cqs_checked","histogram":{"buckets":[{"count":"1"},{"start":1},{"start":2},{"start":4},{"start":7},{"start":13},{"start":23},{"start":39}]}}]}}],"serverCores":[12],"summary":{"qps":"NaN","qpsPerServerCore":"NaN","serverSystemTime":35.506318740121465,"serverUserTime":23.053107435850553,"clientSystemTime":"NaN","clientUserTime":"NaN","serverCpuUsage":11.611138028329577,"clientPollsPerRequest":"NaN","serverPollsPerRequest":"Infinity","clientQueriesPerCpuSec":"NaN"},"clientSuccess":[false],"serverSuccess":[true]} \ No newline at end of file diff --git a/src/core/ext/filters/client_channel/subchannel_index.cc b/src/core/ext/filters/client_channel/subchannel_index.cc index 69da1967378..cb8e480734f 100644 --- a/src/core/ext/filters/client_channel/subchannel_index.cc +++ b/src/core/ext/filters/client_channel/subchannel_index.cc @@ -134,7 +134,7 @@ void grpc_subchannel_index_unref(void) { if (gpr_unref(&g_refcount)) { ExecCtx _local_exec_ctx; gpr_mu_destroy(&g_mu); - gpr_avl_unref(g_subchannel_index, &exec_ctx); + gpr_avl_unref(g_subchannel_index, exec_ctx); grpc_exec_ctx_finish(); } } diff --git a/src/core/lib/iomgr/closure.cc b/src/core/lib/iomgr/closure.cc index 9a8e3b18f4e..44731eed760 100644 --- a/src/core/lib/iomgr/closure.cc +++ b/src/core/lib/iomgr/closure.cc @@ -135,8 +135,8 @@ grpc_closure* grpc_closure_create(grpc_iomgr_cb_func cb, void* cb_arg, } #ifndef NDEBUG -void grpc_closure_run(const char* file, int line, grpc_exec_ctx* exec_ctx, - grpc_closure* c, grpc_error* error) { +void grpc_closure_run(const char* file, int line, grpc_closure* c, + grpc_error* error) { #else void grpc_closure_run(grpc_closure* c, grpc_error* error) { #endif @@ -156,8 +156,8 @@ void grpc_closure_run(grpc_closure* c, grpc_error* error) { } #ifndef NDEBUG -void grpc_closure_sched(const char* file, int line, grpc_exec_ctx* exec_ctx, - grpc_closure* c, grpc_error* error) { +void grpc_closure_sched(const char* file, int line, grpc_closure* c, + grpc_error* error) { #else void grpc_closure_sched(grpc_closure* c, grpc_error* error) { #endif @@ -187,7 +187,7 @@ void grpc_closure_sched(grpc_closure* c, grpc_error* error) { #ifndef NDEBUG void grpc_closure_list_sched(const char* file, int line, - grpc_exec_ctx* exec_ctx, grpc_closure_list* list) { + grpc_closure_list* list) { #else void grpc_closure_list_sched(grpc_closure_list* list) { #endif diff --git a/src/core/lib/iomgr/combiner.cc b/src/core/lib/iomgr/combiner.cc index 5dc0ef450f9..b1b8fffdcad 100644 --- a/src/core/lib/iomgr/combiner.cc +++ b/src/core/lib/iomgr/combiner.cc @@ -161,7 +161,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(); GPR_TIMER_MARK("combiner.initiated", 0); gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, - (gpr_atm)&exec_ctx); + (gpr_atm)exec_ctx); // first element on this list: add it to the list of combiner locks // executing within this exec_ctx push_last_on_exec_ctx(lock); @@ -170,7 +170,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { // offload for one or two actions, and that's fine gpr_atm initiator = gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null); - if (initiator != 0 && initiator != (gpr_atm)&exec_ctx) { + if (initiator != 0 && initiator != (gpr_atm)exec_ctx) { gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0); } } diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index b45af562f89..f764d915ff6 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -206,7 +206,7 @@ static void executor_push(grpc_closure* closure, grpc_error* error, } thread_state* ts = (thread_state*)gpr_tls_get(&g_this_thread_state); if (ts == NULL) { - ts = &g_thread_state[GPR_HASH_POINTER(&exec_ctx, cur_thread_count)]; + ts = &g_thread_state[GPR_HASH_POINTER(exec_ctx, cur_thread_count)]; } else { GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF(); } diff --git a/src/core/lib/iomgr/pollset_windows.cc b/src/core/lib/iomgr/pollset_windows.cc index 6486f8ad9d7..dd019b1ec39 100644 --- a/src/core/lib/iomgr/pollset_windows.cc +++ b/src/core/lib/iomgr/pollset_windows.cc @@ -160,10 +160,10 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, while (!worker.kicked) { if (gpr_cv_wait(&worker.cv, &grpc_polling_mu, grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME))) { - grpc_exec_ctx_invalidate_now(exec_ctx); + grpc_exec_ctx_invalidate_now(); break; } - grpc_exec_ctx_invalidate_now(exec_ctx); + grpc_exec_ctx_invalidate_now(); } } else { pollset->kicked_without_pollers = 0; diff --git a/src/core/lib/iomgr/tcp_windows.cc b/src/core/lib/iomgr/tcp_windows.cc index 8efced8b5ba..ab9a8a5c1e6 100644 --- a/src/core/lib/iomgr/tcp_windows.cc +++ b/src/core/lib/iomgr/tcp_windows.cc @@ -366,8 +366,7 @@ static void win_add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pss) { grpc_iocp_add_socket(tcp->socket); } -static void win_delete_from_pollset_set(grpc_exec_ctx* exec_ctx, - grpc_endpoint* ep, +static void win_delete_from_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pss) {} /* Initiates a shutdown of the TCP endpoint. This will queue abort callbacks @@ -446,7 +445,7 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket, tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string); /* Tell network status tracking code about the new endpoint */ grpc_network_status_register_endpoint(&tcp->base); - grpc_resource_quota_unref_internal(exec_ctx, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); return &tcp->base; } diff --git a/test/core/debug/stats_test.cc b/test/core/debug/stats_test.cc index 554a4a32882..8401618670f 100644 --- a/test/core/debug/stats_test.cc +++ b/test/core/debug/stats_test.cc @@ -95,7 +95,7 @@ TEST_P(HistogramTest, IncHistogram) { Snapshot snapshot; ExecCtx _local_exec_ctx; - grpc_stats_inc_histogram[kHistogram](&exec_ctx, j); + grpc_stats_inc_histogram[kHistogram](j); grpc_exec_ctx_finish(); auto delta = snapshot.delta(); diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index f9d02ee5041..d6fb3cd3695 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -443,7 +443,7 @@ static void UnrefHeader(void* user_data, grpc_mdelem md) { GRPC_MDELEM_UNREF(md); } -template <class Fixture, void (*OnHeader)(grpc_exec_ctx*, void*, grpc_mdelem)> +template <class Fixture, void (*OnHeader)(void*, grpc_mdelem)> static void BM_HpackParserParseHeader(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index a32b841501e..3a3547141df 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -152,7 +152,7 @@ class Fixture { private: DummyEndpoint* ep_; - grpc_exec_ctx _local_exec_ctx; + ExecCtx _local_exec_ctx; grpc_transport* t_; }; From a6465d124c44b924bdc094675c3fd22b8c843da8 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Fri, 10 Nov 2017 12:03:17 -0800 Subject: [PATCH 05/22] UV Correction --- src/core/lib/iomgr/tcp_server_uv.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/iomgr/tcp_server_uv.cc b/src/core/lib/iomgr/tcp_server_uv.cc index 71226600daa..8d5387fe6ec 100644 --- a/src/core/lib/iomgr/tcp_server_uv.cc +++ b/src/core/lib/iomgr/tcp_server_uv.cc @@ -175,7 +175,7 @@ void grpc_tcp_server_unref(grpc_tcp_server* s) { GRPC_UV_ASSERT_SAME_THREAD(); if (gpr_unref(&s->refs)) { /* Complete shutdown_starting work before destroying. */ - grpc_exec_ctx local_ExecCtx _local_exec_ctx; + ExecCtx _local_exec_ctx; GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); if (exec_ctx == NULL) { grpc_exec_ctx_flush(); From 66b5aadef76c44912f0dff3a2d0583f0841f62e8 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Fri, 10 Nov 2017 14:56:30 -0800 Subject: [PATCH 06/22] gpr_malloc to gpr_zalloc --- src/core/lib/iomgr/tcp_posix.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index d61092c4f29..697281d8b12 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -181,7 +181,7 @@ static void cover_self(grpc_tcp* tcp) { } if (old_count == 0) { GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED(); - p = (backup_poller*)gpr_malloc(sizeof(*p) + grpc_pollset_size()); + p = (backup_poller*)gpr_zalloc(sizeof(*p) + grpc_pollset_size()); if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p create", p); } From 75122c23578e24417dcf64081c737571a9fc2dbc Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Mon, 13 Nov 2017 15:37:58 -0800 Subject: [PATCH 07/22] Address some PR comments --- .../filters/client_channel/backup_poller.cc | 6 +- .../client_channel/channel_connectivity.cc | 6 +- .../client_channel/lb_policy/grpclb/grpclb.cc | 8 +- .../resolver/dns/c_ares/dns_resolver_ares.cc | 2 +- .../resolver/dns/c_ares/grpc_ares_wrapper.cc | 14 +- .../resolver/dns/native/dns_resolver.cc | 2 +- .../ext/filters/client_channel/subchannel.cc | 2 +- .../client_channel/subchannel_index.cc | 36 ++--- .../ext/filters/max_age/max_age_filter.cc | 6 +- .../chttp2/client/insecure/channel_create.cc | 2 +- .../client/insecure/channel_create_posix.cc | 2 - .../client/secure/secure_channel_create.cc | 1 - .../transport/chttp2/server/chttp2_server.cc | 6 +- .../chttp2/server/insecure/server_chttp2.cc | 2 +- .../server/insecure/server_chttp2_posix.cc | 1 - .../server/secure/server_secure_chttp2.cc | 2 +- .../chttp2/transport/chttp2_transport.cc | 10 +- .../chttp2/transport/flow_control.cc | 4 +- .../transport/chttp2/transport/frame_ping.cc | 2 +- .../chttp2/transport/hpack_encoder.cc | 2 +- .../ext/transport/chttp2/transport/parsing.cc | 2 +- .../ext/transport/chttp2/transport/writing.cc | 2 +- .../cronet/transport/cronet_transport.cc | 8 - .../ext/transport/inproc/inproc_transport.cc | 3 - src/core/lib/backoff/backoff.cc | 4 +- .../compression/stream_compression_gzip.cc | 8 +- src/core/lib/debug/stats.h | 2 +- src/core/lib/iomgr/block_annotate.h | 23 ++- src/core/lib/iomgr/combiner.cc | 49 +++--- src/core/lib/iomgr/endpoint_pair_posix.cc | 1 - src/core/lib/iomgr/endpoint_pair_windows.cc | 2 +- src/core/lib/iomgr/error.cc | 6 +- src/core/lib/iomgr/ev_epoll1_linux.cc | 24 +-- src/core/lib/iomgr/ev_epollex_linux.cc | 10 +- src/core/lib/iomgr/ev_epollsig_linux.cc | 8 +- src/core/lib/iomgr/ev_poll_posix.cc | 10 +- src/core/lib/iomgr/exec_ctx.cc | 98 ++++-------- src/core/lib/iomgr/exec_ctx.h | 148 ++++++++---------- src/core/lib/iomgr/executor.cc | 11 +- src/core/lib/iomgr/iocp_windows.cc | 10 +- src/core/lib/iomgr/iomgr.cc | 11 +- src/core/lib/iomgr/iomgr_uv.cc | 1 - src/core/lib/iomgr/load_file.cc | 2 +- src/core/lib/iomgr/pollset_uv.cc | 4 +- src/core/lib/iomgr/pollset_windows.cc | 8 +- src/core/lib/iomgr/resolve_address_posix.cc | 4 +- src/core/lib/iomgr/resolve_address_uv.cc | 2 +- src/core/lib/iomgr/resolve_address_windows.cc | 2 +- src/core/lib/iomgr/resource_quota.cc | 2 - src/core/lib/iomgr/tcp_client_uv.cc | 3 +- src/core/lib/iomgr/tcp_posix.cc | 2 +- src/core/lib/iomgr/tcp_server_uv.cc | 12 +- src/core/lib/iomgr/tcp_uv.cc | 5 - src/core/lib/iomgr/timer_generic.cc | 8 +- src/core/lib/iomgr/timer_manager.cc | 11 +- src/core/lib/iomgr/timer_uv.cc | 5 +- .../lib/security/context/security_context.cc | 3 +- .../lib/security/credentials/credentials.cc | 3 - .../google_default_credentials.cc | 9 +- .../credentials/iam/iam_credentials.cc | 2 +- .../credentials/jwt/jwt_credentials.cc | 2 +- .../security/credentials/jwt/jwt_verifier.cc | 6 +- .../credentials/oauth2/oauth2_credentials.cc | 11 +- .../credentials/plugin/plugin_credentials.cc | 6 +- .../security/transport/security_handshaker.cc | 1 - .../security/transport/server_auth_filter.cc | 1 - src/core/lib/slice/slice.cc | 1 - src/core/lib/slice/slice_buffer.cc | 2 - src/core/lib/surface/alarm.cc | 4 +- src/core/lib/surface/byte_buffer.cc | 1 - src/core/lib/surface/byte_buffer_reader.cc | 4 +- src/core/lib/surface/call.cc | 7 +- src/core/lib/surface/call_details.cc | 1 - src/core/lib/surface/channel.cc | 9 +- src/core/lib/surface/channel_ping.cc | 1 - src/core/lib/surface/completion_queue.cc | 138 ++++++++-------- src/core/lib/surface/init.cc | 5 +- src/core/lib/surface/lame_client.cc | 2 +- src/core/lib/surface/server.cc | 15 +- src/core/lib/transport/bdp_estimator.cc | 2 +- src/core/lib/transport/status_conversion.cc | 4 +- src/core/lib/transport/transport.cc | 2 +- src/cpp/common/channel_arguments.cc | 3 +- test/core/backoff/backoff_test.cc | 51 +++--- test/core/bad_client/bad_client.cc | 9 +- test/core/channel/channel_args_test.cc | 4 - test/core/channel/channel_stack_test.cc | 3 +- .../channel/minimal_stack_is_minimal_test.cc | 2 - test/core/client_channel/lb_policies_test.cc | 2 - .../core/client_channel/parse_address_test.cc | 3 - .../dns_resolver_connectivity_test.cc | 6 +- .../resolvers/dns_resolver_test.cc | 3 - .../resolvers/fake_resolver_test.cc | 8 +- .../resolvers/sockaddr_resolver_test.cc | 4 +- test/core/client_channel/uri_fuzzer_test.cc | 2 +- test/core/client_channel/uri_parser_test.cc | 8 +- test/core/compression/algorithm_test.cc | 2 - .../core/compression/message_compress_test.cc | 9 +- test/core/debug/stats_test.cc | 3 - test/core/end2end/bad_server_response_test.cc | 2 +- test/core/end2end/connection_refused_test.cc | 1 - test/core/end2end/fixtures/h2_census.cc | 2 - test/core/end2end/fixtures/h2_compress.cc | 3 - test/core/end2end/fixtures/h2_fd.cc | 4 - .../end2end/fixtures/h2_full+workarounds.cc | 1 - .../end2end/fixtures/h2_load_reporting.cc | 1 - test/core/end2end/fixtures/h2_oauth2.cc | 1 - .../end2end/fixtures/h2_sockpair+trace.cc | 4 - test/core/end2end/fixtures/h2_sockpair.cc | 3 - .../end2end/fixtures/h2_sockpair_1byte.cc | 3 - test/core/end2end/fixtures/h2_ssl.cc | 1 - test/core/end2end/fixtures/h2_ssl_proxy.cc | 2 - .../end2end/fixtures/http_proxy_fixture.cc | 15 +- test/core/end2end/fuzzers/api_fuzzer.cc | 10 +- test/core/end2end/fuzzers/client_fuzzer.cc | 2 +- test/core/end2end/fuzzers/server_fuzzer.cc | 2 +- test/core/end2end/h2_ssl_cert_test.cc | 1 - .../core/end2end/tests/cancel_after_accept.cc | 1 - .../end2end/tests/cancel_after_round_trip.cc | 1 - test/core/end2end/tests/compressed_payload.cc | 3 - .../core/end2end/tests/load_reporting_hook.cc | 1 - test/core/end2end/tests/max_message_length.cc | 2 - .../stream_compression_compressed_payload.cc | 3 - .../tests/stream_compression_payload.cc | 1 - .../stream_compression_ping_pong_streaming.cc | 1 - .../tests/workaround_cronet_compression.cc | 2 - test/core/http/httpcli_test.cc | 6 +- test/core/http/httpscli_test.cc | 6 +- test/core/iomgr/combiner_test.cc | 11 +- test/core/iomgr/endpoint_pair_test.cc | 3 +- test/core/iomgr/endpoint_tests.cc | 16 +- test/core/iomgr/ev_epollsig_linux_test.cc | 23 ++- test/core/iomgr/fd_conservation_posix_test.cc | 3 +- test/core/iomgr/fd_posix_test.cc | 16 +- test/core/iomgr/pollset_set_test.cc | 32 ++-- test/core/iomgr/resolve_address_posix_test.cc | 11 +- test/core/iomgr/resolve_address_test.cc | 33 ++-- test/core/iomgr/resource_quota_test.cc | 86 ++++------ test/core/iomgr/tcp_client_posix_test.cc | 13 +- test/core/iomgr/tcp_client_uv_test.cc | 11 +- test/core/iomgr/tcp_posix_test.cc | 20 +-- test/core/iomgr/tcp_server_posix_test.cc | 11 +- test/core/iomgr/tcp_server_uv_test.cc | 9 +- test/core/iomgr/timer_list_test.cc | 28 ++-- test/core/iomgr/udp_server_test.cc | 13 +- test/core/security/credentials_test.cc | 46 ++---- test/core/security/json_token_test.cc | 4 +- test/core/security/jwt_verifier_test.cc | 20 +-- test/core/security/oauth2_utils.cc | 4 +- .../print_google_default_creds_token.cc | 4 +- test/core/security/secure_endpoint_test.cc | 8 +- test/core/security/ssl_server_fuzzer.cc | 8 +- test/core/security/verify_jwt.cc | 4 +- test/core/slice/b64_test.cc | 5 +- test/core/slice/slice_hash_table_test.cc | 3 - test/core/surface/byte_buffer_reader_test.cc | 1 - test/core/surface/channel_create_test.cc | 1 - test/core/surface/completion_queue_test.cc | 4 - .../completion_queue_threading_test.cc | 3 - .../surface/concurrent_connectivity_test.cc | 7 +- test/core/surface/lame_client_test.cc | 2 - ...num_external_connectivity_watchers_test.cc | 1 - .../surface/secure_channel_create_test.cc | 3 - .../surface/sequential_connectivity_test.cc | 1 - test/core/transport/bdp_estimator_test.cc | 3 +- test/core/transport/byte_stream_test.cc | 5 - .../core/transport/chttp2/bin_decoder_test.cc | 2 - .../transport/chttp2/hpack_encoder_test.cc | 1 - .../chttp2/hpack_parser_fuzzer_test.cc | 2 +- .../transport/chttp2/hpack_parser_test.cc | 3 - .../core/transport/chttp2/hpack_table_test.cc | 5 +- .../core/transport/connectivity_state_test.cc | 14 +- test/core/transport/metadata_test.cc | 15 +- test/core/transport/status_conversion_test.cc | 2 +- test/core/util/port_server_client.cc | 18 +-- test/core/util/test_tcp_server.cc | 5 +- test/cpp/end2end/client_lb_end2end_test.cc | 1 - test/cpp/end2end/grpclb_end2end_test.cc | 1 - test/cpp/grpclb/grpclb_test.cc | 1 - test/cpp/microbenchmarks/bm_call_create.cc | 7 +- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 20 ++- .../microbenchmarks/bm_chttp2_transport.cc | 13 +- test/cpp/microbenchmarks/bm_closure.cc | 65 ++++---- test/cpp/microbenchmarks/bm_cq.cc | 6 +- .../microbenchmarks/bm_cq_multiple_threads.cc | 2 +- test/cpp/microbenchmarks/bm_error.cc | 6 +- .../microbenchmarks/bm_fullstack_trickle.cc | 2 +- test/cpp/microbenchmarks/bm_metadata.cc | 26 +-- test/cpp/microbenchmarks/bm_pollset.cc | 12 +- test/cpp/microbenchmarks/fullstack_fixtures.h | 2 - test/cpp/naming/resolver_component_test.cc | 6 +- test/cpp/performance/writes_per_rpc_test.cc | 2 - 192 files changed, 700 insertions(+), 1091 deletions(-) diff --git a/src/core/ext/filters/client_channel/backup_poller.cc b/src/core/ext/filters/client_channel/backup_poller.cc index 1b42f5d6a06..dbdcd53ef5d 100644 --- a/src/core/ext/filters/client_channel/backup_poller.cc +++ b/src/core/ext/filters/client_channel/backup_poller.cc @@ -112,10 +112,10 @@ static void run_poller(void* arg, grpc_error* error) { backup_poller_shutdown_unref(p); return; } - grpc_error* err = grpc_pollset_work(p->pollset, NULL, grpc_exec_ctx_now()); + grpc_error* err = grpc_pollset_work(p->pollset, NULL, ExecCtx::Get()->Now()); gpr_mu_unlock(p->pollset_mu); GRPC_LOG_IF_ERROR("Run client channel backup poller", err); - grpc_timer_init(&p->polling_timer, grpc_exec_ctx_now() + g_poll_interval_ms, + grpc_timer_init(&p->polling_timer, ExecCtx::Get()->Now() + g_poll_interval_ms, &p->run_poller_closure); } @@ -137,7 +137,7 @@ void grpc_client_channel_start_backup_polling( GRPC_CLOSURE_INIT(&g_poller->run_poller_closure, run_poller, g_poller, grpc_schedule_on_exec_ctx); grpc_timer_init(&g_poller->polling_timer, - grpc_exec_ctx_now() + g_poll_interval_ms, + ExecCtx::Get()->Now() + g_poll_interval_ms, &g_poller->run_poller_closure); } diff --git a/src/core/ext/filters/client_channel/channel_connectivity.cc b/src/core/ext/filters/client_channel/channel_connectivity.cc index 3069e667750..0ceedb9f86b 100644 --- a/src/core/ext/filters/client_channel/channel_connectivity.cc +++ b/src/core/ext/filters/client_channel/channel_connectivity.cc @@ -41,14 +41,14 @@ grpc_connectivity_state grpc_channel_check_connectivity_state( if (client_channel_elem->filter == &grpc_client_channel_filter) { state = grpc_client_channel_check_connectivity_state(client_channel_elem, try_to_connect); - grpc_exec_ctx_finish(); + return state; } gpr_log(GPR_ERROR, "grpc_channel_check_connectivity_state called on something that is " "not a client channel, but '%s'", client_channel_elem->filter->name); - grpc_exec_ctx_finish(); + return GRPC_CHANNEL_SHUTDOWN; } @@ -241,6 +241,4 @@ void grpc_channel_watch_connectivity_state( } else { abort(); } - - grpc_exec_ctx_finish(); } diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc index d4c58fb1e0f..63cf417c4e0 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc @@ -1122,7 +1122,7 @@ static void start_picking_locked(glb_lb_policy* glb_policy) { if (glb_policy->lb_fallback_timeout_ms > 0 && glb_policy->serverlist == NULL && !glb_policy->fallback_timer_active) { grpc_millis deadline = - grpc_exec_ctx_now() + glb_policy->lb_fallback_timeout_ms; + ExecCtx::Get()->Now() + glb_policy->lb_fallback_timeout_ms; GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "grpclb_fallback_timer"); GRPC_CLOSURE_INIT(&glb_policy->lb_on_fallback, lb_on_fallback_timer_locked, glb_policy, @@ -1271,7 +1271,7 @@ static void maybe_restart_lb_call(glb_lb_policy* glb_policy) { if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_DEBUG, "[grpclb %p] Connection to LB server lost...", glb_policy); - grpc_millis timeout = next_try - grpc_exec_ctx_now(); + grpc_millis timeout = next_try - ExecCtx::Get()->Now(); if (timeout > 0) { gpr_log(GPR_DEBUG, "[grpclb %p] ... retry_timer_active in %" PRIuPTR "ms.", @@ -1297,7 +1297,7 @@ static void send_client_load_report_locked(void* arg, grpc_error* error); static void schedule_next_client_load_report(glb_lb_policy* glb_policy) { const grpc_millis next_client_load_report_time = - grpc_exec_ctx_now() + glb_policy->client_stats_report_interval; + ExecCtx::Get()->Now() + glb_policy->client_stats_report_interval; GRPC_CLOSURE_INIT(&glb_policy->client_load_report_closure, send_client_load_report_locked, glb_policy, grpc_combiner_scheduler(glb_policy->base.combiner)); @@ -1392,7 +1392,7 @@ static void lb_call_init_locked(glb_lb_policy* glb_policy) { grpc_millis deadline = glb_policy->lb_call_timeout_ms == 0 ? GRPC_MILLIS_INF_FUTURE - : grpc_exec_ctx_now() + glb_policy->lb_call_timeout_ms; + : ExecCtx::Get()->Now() + glb_policy->lb_call_timeout_ms; glb_policy->lb_call = grpc_channel_create_pollset_set_call( glb_policy->lb_channel, NULL, GRPC_PROPAGATE_DEFAULTS, glb_policy->base.interested_parties, diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc index 77d790aa385..f0543964ae2 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc @@ -265,7 +265,7 @@ static void dns_ares_on_resolved_locked(void* arg, grpc_error* error) { gpr_log(GPR_DEBUG, "dns resolution failed: %s", msg); grpc_millis next_try = grpc_backoff_step(&r->backoff_state).next_attempt_start_time; - grpc_millis timeout = next_try - grpc_exec_ctx_now(); + grpc_millis timeout = next_try - ExecCtx::Get()->Now(); gpr_log(GPR_INFO, "dns resolution failed (will retry): %s", grpc_error_string(error)); GPR_ASSERT(!r->have_retry_timer); diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc index c57fac61a46..925223d1897 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc @@ -101,18 +101,7 @@ static void grpc_ares_request_unref(grpc_ares_request* r) { request */ if (gpr_unref(&r->pending_queries)) { /* TODO(zyc): Sort results with RFC6724 before invoking on_done. */ - if (exec_ctx == NULL) { - /* A new exec_ctx is created here, as the c-ares interface does not - provide one in ares_host_callback. It's safe to schedule on_done with - the newly created exec_ctx, since the caller has been warned not to - acquire locks in on_done. ares_dns_resolver is using combiner to - protect resources needed by on_done. */ - ExecCtx _local_exec_ctx; - GRPC_CLOSURE_SCHED(r->on_done, r->error); - grpc_exec_ctx_finish(); - } else { - GRPC_CLOSURE_SCHED(r->on_done, r->error); - } + GRPC_CLOSURE_SCHED(r->on_done, r->error); gpr_mu_destroy(&r->mu); grpc_ares_ev_driver_destroy(r->ev_driver); gpr_free(r); @@ -263,7 +252,6 @@ static void on_srv_query_done_cb(void* arg, int status, int timeouts, } } grpc_ares_request_unref(r); - grpc_exec_ctx_finish(); } static const char g_service_config_attribute_prefix[] = "grpc_config="; diff --git a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc index 4463673e1fc..10404ec4ef8 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc @@ -163,7 +163,7 @@ static void dns_on_resolved_locked(void* arg, grpc_error* error) { } else { grpc_millis next_try = grpc_backoff_step(&r->backoff_state).next_attempt_start_time; - grpc_millis timeout = next_try - grpc_exec_ctx_now(); + grpc_millis timeout = next_try - ExecCtx::Get()->Now(); gpr_log(GPR_INFO, "dns resolution failed (will retry): %s", grpc_error_string(error)); GPR_ASSERT(!r->have_retry_timer); diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc index c8583687d59..98f96b57504 100644 --- a/src/core/ext/filters/client_channel/subchannel.cc +++ b/src/core/ext/filters/client_channel/subchannel.cc @@ -458,7 +458,7 @@ static void maybe_start_connecting_locked(grpc_subchannel* c) { GPR_ASSERT(!c->have_alarm); c->have_alarm = true; const grpc_millis time_til_next = - c->backoff_result.next_attempt_start_time - grpc_exec_ctx_now(); + c->backoff_result.next_attempt_start_time - ExecCtx::Get()->Now(); if (time_til_next <= 0) { gpr_log(GPR_INFO, "Retry immediately"); } else { diff --git a/src/core/ext/filters/client_channel/subchannel_index.cc b/src/core/ext/filters/client_channel/subchannel_index.cc index cb8e480734f..fbab57769cf 100644 --- a/src/core/ext/filters/client_channel/subchannel_index.cc +++ b/src/core/ext/filters/client_channel/subchannel_index.cc @@ -132,10 +132,8 @@ void grpc_subchannel_index_shutdown(void) { void grpc_subchannel_index_unref(void) { if (gpr_unref(&g_refcount)) { - ExecCtx _local_exec_ctx; gpr_mu_destroy(&g_mu); - gpr_avl_unref(g_subchannel_index, exec_ctx); - grpc_exec_ctx_finish(); + gpr_avl_unref(g_subchannel_index, ExecCtx::Get()); } } @@ -145,12 +143,12 @@ grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key) { // Lock, and take a reference to the subchannel index. // We don't need to do the search under a lock as avl's are immutable. gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx); + gpr_avl index = gpr_avl_ref(g_subchannel_index, ExecCtx::Get()); gpr_mu_unlock(&g_mu); grpc_subchannel* c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF( - (grpc_subchannel*)gpr_avl_get(index, key, exec_ctx), "index_find"); - gpr_avl_unref(index, exec_ctx); + (grpc_subchannel*)gpr_avl_get(index, key, ExecCtx::Get()), "index_find"); + gpr_avl_unref(index, ExecCtx::Get()); return c; } @@ -166,11 +164,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key, // Compare and swap loop: // - take a reference to the current index gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx); + gpr_avl index = gpr_avl_ref(g_subchannel_index, ExecCtx::Get()); gpr_mu_unlock(&g_mu); // - Check to see if a subchannel already exists - c = (grpc_subchannel*)gpr_avl_get(index, key, exec_ctx); + c = (grpc_subchannel*)gpr_avl_get(index, key, ExecCtx::Get()); if (c != NULL) { c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register"); } @@ -180,8 +178,9 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key, } else { // no -> update the avl and compare/swap gpr_avl updated = gpr_avl_add( - gpr_avl_ref(index, exec_ctx), subchannel_key_copy(key), - GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), exec_ctx); + gpr_avl_ref(index, ExecCtx::Get()), subchannel_key_copy(key), + GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), + ExecCtx::Get()); // it may happen (but it's expected to be unlikely) // that some other thread has changed the index: @@ -193,9 +192,9 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key, } gpr_mu_unlock(&g_mu); - gpr_avl_unref(updated, exec_ctx); + gpr_avl_unref(updated, ExecCtx::Get()); } - gpr_avl_unref(index, exec_ctx); + gpr_avl_unref(index, ExecCtx::Get()); } if (need_to_unref_constructed) { @@ -212,21 +211,22 @@ void grpc_subchannel_index_unregister(grpc_subchannel_key* key, // Compare and swap loop: // - take a reference to the current index gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx); + gpr_avl index = gpr_avl_ref(g_subchannel_index, ExecCtx::Get()); gpr_mu_unlock(&g_mu); // Check to see if this key still refers to the previously // registered subchannel - grpc_subchannel* c = (grpc_subchannel*)gpr_avl_get(index, key, exec_ctx); + grpc_subchannel* c = + (grpc_subchannel*)gpr_avl_get(index, key, ExecCtx::Get()); if (c != constructed) { - gpr_avl_unref(index, exec_ctx); + gpr_avl_unref(index, ExecCtx::Get()); break; } // compare and swap the update (some other thread may have // mutated the index behind us) gpr_avl updated = - gpr_avl_remove(gpr_avl_ref(index, exec_ctx), key, exec_ctx); + gpr_avl_remove(gpr_avl_ref(index, ExecCtx::Get()), key, ExecCtx::Get()); gpr_mu_lock(&g_mu); if (index.root == g_subchannel_index.root) { @@ -235,8 +235,8 @@ void grpc_subchannel_index_unregister(grpc_subchannel_key* key, } gpr_mu_unlock(&g_mu); - gpr_avl_unref(updated, exec_ctx); - gpr_avl_unref(index, exec_ctx); + gpr_avl_unref(updated, ExecCtx::Get()); + gpr_avl_unref(index, ExecCtx::Get()); } } diff --git a/src/core/ext/filters/max_age/max_age_filter.cc b/src/core/ext/filters/max_age/max_age_filter.cc index 1b9ce3b9967..015a3ce124d 100644 --- a/src/core/ext/filters/max_age/max_age_filter.cc +++ b/src/core/ext/filters/max_age/max_age_filter.cc @@ -100,7 +100,7 @@ static void decrease_call_count(channel_data* chand) { if (gpr_atm_full_fetch_add(&chand->call_count, -1) == 1) { GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_idle_timer"); grpc_timer_init(&chand->max_idle_timer, - grpc_exec_ctx_now() + chand->max_connection_idle, + ExecCtx::Get()->Now() + chand->max_connection_idle, &chand->close_max_idle_channel); } } @@ -121,7 +121,7 @@ static void start_max_age_timer_after_init(void* arg, grpc_error* error) { chand->max_age_timer_pending = true; GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_timer"); grpc_timer_init(&chand->max_age_timer, - grpc_exec_ctx_now() + chand->max_connection_age, + ExecCtx::Get()->Now() + chand->max_connection_age, &chand->close_max_age_channel); gpr_mu_unlock(&chand->max_age_timer_mu); grpc_transport_op* op = grpc_make_transport_op(NULL); @@ -141,7 +141,7 @@ static void start_max_age_grace_timer_after_goaway_op(void* arg, grpc_timer_init(&chand->max_age_grace_timer, chand->max_connection_age_grace == GRPC_MILLIS_INF_FUTURE ? GRPC_MILLIS_INF_FUTURE - : grpc_exec_ctx_now() + chand->max_connection_age_grace, + : ExecCtx::Get()->Now() + chand->max_connection_age_grace, &chand->force_close_max_age_channel); gpr_mu_unlock(&chand->max_age_timer_mu); GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc index e7741f97d44..3afca884ca4 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc @@ -95,7 +95,7 @@ grpc_channel* grpc_insecure_channel_create(const char* target, new_args); // Clean up. grpc_channel_args_destroy(new_args); - grpc_exec_ctx_finish(); + return channel != NULL ? channel : grpc_lame_client_channel_create( target, GRPC_STATUS_INTERNAL, diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc index 37e6f1f30dc..b0eff1c992d 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc @@ -60,8 +60,6 @@ grpc_channel* grpc_insecure_channel_create_from_fd( grpc_channel_args_destroy(final_args); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); - return channel != NULL ? channel : grpc_lame_client_channel_create( target, GRPC_STATUS_INTERNAL, diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc index a5da71a67cd..bebc38c2480 100644 --- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc @@ -211,7 +211,6 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds, new_args); // Clean up. grpc_channel_args_destroy(new_args); - grpc_exec_ctx_finish(); } return channel != NULL ? channel : grpc_lame_client_channel_create( diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc index 6eb1e3491c4..bbcfb1b195b 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.cc +++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc @@ -132,7 +132,7 @@ static void on_accept(void* arg, grpc_endpoint* tcp, connection_state->handshake_mgr); // TODO(roth): We should really get this timeout value from channel // args instead of hard-coding it. - const grpc_millis deadline = grpc_exec_ctx_now() + 120 * GPR_MS_PER_SEC; + const grpc_millis deadline = ExecCtx::Get()->Now() + 120 * GPR_MS_PER_SEC; grpc_handshake_manager_do_handshake(connection_state->handshake_mgr, tcp, state->args, deadline, acceptor, on_handshake_done, connection_state); @@ -161,10 +161,10 @@ static void tcp_server_shutdown_complete(void* arg, grpc_error* error) { gpr_mu_unlock(&state->mu); // Flush queued work before destroying handshaker factory, since that // may do a synchronous unref. - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); if (destroy_done != NULL) { destroy_done->cb(destroy_done->cb_arg, GRPC_ERROR_REF(error)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } grpc_channel_args_destroy(state->args); gpr_mu_destroy(&state->mu); diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc index d7aad110b94..6cbb26a349f 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc @@ -39,6 +39,6 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) { GRPC_ERROR_UNREF(err); } - grpc_exec_ctx_finish(); + return port_num; } diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc index 57a8316a58b..e5419e5e6e1 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc @@ -61,7 +61,6 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server, grpc_server_setup_transport(server, transport, NULL, server_args); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } #else // !GPR_SUPPORT_CHANNELS_FROM_FD diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc index dc7da962105..aeae8f42e36 100644 --- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc @@ -76,7 +76,7 @@ done: if (sc != NULL) { GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "server"); } - grpc_exec_ctx_finish(); + if (err != GRPC_ERROR_NONE) { const char* msg = grpc_error_string(err); gpr_log(GPR_ERROR, "%s", msg); diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index ecf3cf69efc..e49e26fc35a 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -530,7 +530,7 @@ static void init_transport(grpc_chttp2_transport* t, t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING; GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - grpc_exec_ctx_now() + t->keepalive_time, + ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } else { /* Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no @@ -2585,14 +2585,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) { } else { GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - grpc_exec_ctx_now() + t->keepalive_time, + ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } } else if (error == GRPC_ERROR_CANCELLED) { /* The keepalive ping timer may be cancelled by bdp */ GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - grpc_exec_ctx_now() + t->keepalive_time, + ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping"); @@ -2602,7 +2602,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) { grpc_chttp2_transport* t = (grpc_chttp2_transport*)arg; GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog"); grpc_timer_init(&t->keepalive_watchdog_timer, - grpc_exec_ctx_now() + t->keepalive_time, + ExecCtx::Get()->Now() + t->keepalive_time, &t->keepalive_watchdog_fired_locked); } @@ -2614,7 +2614,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) { grpc_timer_cancel(&t->keepalive_watchdog_timer); GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - grpc_exec_ctx_now() + t->keepalive_time, + ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } } diff --git a/src/core/ext/transport/chttp2/transport/flow_control.cc b/src/core/ext/transport/chttp2/transport/flow_control.cc index 1609fa05321..e54d59b5fa2 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.cc +++ b/src/core/ext/transport/chttp2/transport/flow_control.cc @@ -160,7 +160,7 @@ TransportFlowControl::TransportFlowControl(const grpc_chttp2_transport* t, .set_min_control_value(-1) .set_max_control_value(25) .set_integral_range(10)), - last_pid_update_(grpc_exec_ctx_now()) {} + last_pid_update_(ExecCtx::Get()->Now()) {} uint32_t TransportFlowControl::MaybeSendUpdate(bool writing_anyway) { FlowControlTrace trace("t updt sent", this, nullptr); @@ -306,7 +306,7 @@ double TransportFlowControl::TargetLogBdp() { } double TransportFlowControl::SmoothLogBdp(double value) { - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); double bdp_error = value - pid_controller_.last_control_value(); const double dt = (double)(now - last_pid_update_) * 1e-3; last_pid_update_ = now; diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.cc b/src/core/ext/transport/chttp2/transport/frame_ping.cc index 1b0dc0dfaaf..60172be9cb7 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.cc +++ b/src/core/ext/transport/chttp2/transport/frame_ping.cc @@ -89,7 +89,7 @@ grpc_error* grpc_chttp2_ping_parser_parse(void* parser, grpc_chttp2_ack_ping(t, p->opaque_8bytes); } else { if (!t->is_client) { - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); grpc_millis next_allowed_ping = t->ping_recv_state.last_ping_recv_time + t->ping_policy.min_recv_ping_interval_without_data; diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc index e225a0244af..efb6e54ce79 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc @@ -570,7 +570,7 @@ static void deadline_enc(grpc_chttp2_hpack_compressor* c, grpc_millis deadline, framer_state* st) { char timeout_str[GRPC_HTTP2_TIMEOUT_ENCODE_MIN_BUFSIZE]; grpc_mdelem mdelem; - grpc_http2_encode_timeout(deadline - grpc_exec_ctx_now(), timeout_str); + grpc_http2_encode_timeout(deadline - ExecCtx::Get()->Now(), timeout_str); mdelem = grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_TIMEOUT, grpc_slice_from_copied_string(timeout_str)); hpack_enc(c, mdelem, st); diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc index 5731e9ff78e..f7f83c9aee4 100644 --- a/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/src/core/ext/transport/chttp2/transport/parsing.cc @@ -436,7 +436,7 @@ static void on_initial_header(void* tp, grpc_mdelem md) { } if (timeout != GRPC_MILLIS_INF_FUTURE) { grpc_chttp2_incoming_metadata_buffer_set_deadline( - &s->metadata_buffer[0], grpc_exec_ctx_now() + timeout); + &s->metadata_buffer[0], ExecCtx::Get()->Now() + timeout); } GRPC_MDELEM_UNREF(md); } else { diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index ec836334724..4f76c2eb232 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -68,7 +68,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) { } return; } - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); grpc_millis next_allowed_ping = t->ping_state.last_ping_sent_time + t->ping_policy.min_sent_ping_interval_without_data; diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc index bff0fb36ade..3411acc5639 100644 --- a/src/core/ext/transport/cronet/transport/cronet_transport.cc +++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -417,7 +417,6 @@ static void on_failed(bidirectional_stream* stream, int net_error) { gpr_mu_unlock(&s->mu); execute_from_storage(s); GRPC_CRONET_STREAM_UNREF(s, "cronet transport"); - grpc_exec_ctx_finish(); } /* @@ -444,7 +443,6 @@ static void on_canceled(bidirectional_stream* stream) { gpr_mu_unlock(&s->mu); execute_from_storage(s); GRPC_CRONET_STREAM_UNREF(s, "cronet transport"); - grpc_exec_ctx_finish(); } /* @@ -463,7 +461,6 @@ static void on_succeeded(bidirectional_stream* stream) { gpr_mu_unlock(&s->mu); execute_from_storage(s); GRPC_CRONET_STREAM_UNREF(s, "cronet transport"); - grpc_exec_ctx_finish(); } /* @@ -492,7 +489,6 @@ static void on_stream_ready(bidirectional_stream* stream) { } gpr_mu_unlock(&s->mu); execute_from_storage(s); - grpc_exec_ctx_finish(); } /* @@ -548,7 +544,6 @@ static void on_response_headers_received( } gpr_mu_unlock(&s->mu); execute_from_storage(s); - grpc_exec_ctx_finish(); } /* @@ -566,7 +561,6 @@ static void on_write_completed(bidirectional_stream* stream, const char* data) { s->state.state_callback_received[OP_SEND_MESSAGE] = true; gpr_mu_unlock(&s->mu); execute_from_storage(s); - grpc_exec_ctx_finish(); } /* @@ -608,7 +602,6 @@ static void on_read_completed(bidirectional_stream* stream, char* data, gpr_mu_unlock(&s->mu); execute_from_storage(s); } - grpc_exec_ctx_finish(); } /* @@ -666,7 +659,6 @@ static void on_response_trailers_received( gpr_mu_unlock(&s->mu); execute_from_storage(s); } - grpc_exec_ctx_finish(); } /* diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index 1c7f2873d10..a79b2b26b02 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -1107,7 +1107,6 @@ void grpc_inproc_transport_init(void) { grpc_slice_unref_internal(auth_tmp); g_fake_auth_value = grpc_slice_from_static_string("inproc-fail"); - grpc_exec_ctx_finish(); } static const grpc_transport_vtable inproc_vtable = { @@ -1182,7 +1181,6 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, grpc_channel_args_destroy(client_args); // Now finish scheduled operations - grpc_exec_ctx_finish(); return channel; } @@ -1194,5 +1192,4 @@ void grpc_inproc_transport_shutdown(void) { grpc_slice_unref_internal(g_fake_path_value); grpc_slice_unref_internal(g_fake_auth_key); grpc_slice_unref_internal(g_fake_auth_value); - grpc_exec_ctx_finish(); } diff --git a/src/core/lib/backoff/backoff.cc b/src/core/lib/backoff/backoff.cc index e6c55f420d3..b75ce79d464 100644 --- a/src/core/lib/backoff/backoff.cc +++ b/src/core/lib/backoff/backoff.cc @@ -36,7 +36,7 @@ grpc_backoff_result grpc_backoff_begin(grpc_backoff* backoff) { backoff->current_backoff = backoff->initial_backoff; const grpc_millis initial_timeout = GPR_MAX(backoff->initial_backoff, backoff->min_connect_timeout); - const grpc_millis now = grpc_exec_ctx_now(); + const grpc_millis now = ExecCtx::Get()->Now(); const grpc_backoff_result result = {now + initial_timeout, now + backoff->current_backoff}; return result; @@ -67,7 +67,7 @@ grpc_backoff_result grpc_backoff_step(grpc_backoff* backoff) { backoff->min_connect_timeout); const grpc_millis next_timeout = GPR_MIN( (grpc_millis)(backoff->current_backoff + jitter), backoff->max_backoff); - const grpc_millis now = grpc_exec_ctx_now(); + const grpc_millis now = ExecCtx::Get()->Now(); const grpc_backoff_result result = {now + current_timeout, now + next_timeout}; return result; diff --git a/src/core/lib/compression/stream_compression_gzip.cc b/src/core/lib/compression/stream_compression_gzip.cc index 4d5d0955cea..3fae3490cee 100644 --- a/src/core/lib/compression/stream_compression_gzip.cc +++ b/src/core/lib/compression/stream_compression_gzip.cc @@ -58,7 +58,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx, if (r < 0 && r != Z_BUF_ERROR) { gpr_log(GPR_ERROR, "zlib error (%d)", r); grpc_slice_unref_internal(slice_out); - grpc_exec_ctx_finish(); + return false; } else if (r == Z_STREAM_END && ctx->flate == inflate) { eoc = true; @@ -89,7 +89,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx, default: gpr_log(GPR_ERROR, "zlib error (%d)", r); grpc_slice_unref_internal(slice_out); - grpc_exec_ctx_finish(); + return false; } } else if (flush == Z_FINISH) { @@ -105,7 +105,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx, default: gpr_log(GPR_ERROR, "zlib error (%d)", r); grpc_slice_unref_internal(slice_out); - grpc_exec_ctx_finish(); + return false; } } @@ -121,7 +121,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx, } max_output_size -= (slice_size - ctx->zs.avail_out); } - grpc_exec_ctx_finish(); + if (end_of_context) { *end_of_context = eoc; } diff --git a/src/core/lib/debug/stats.h b/src/core/lib/debug/stats.h index 1c2826506c3..24b00841302 100644 --- a/src/core/lib/debug/stats.h +++ b/src/core/lib/debug/stats.h @@ -35,7 +35,7 @@ typedef struct grpc_stats_data { extern grpc_stats_data* grpc_stats_per_cpu_storage; #define GRPC_THREAD_STATS_DATA() \ - (&grpc_stats_per_cpu_storage[(exec_ctx)->starting_cpu]) + (&grpc_stats_per_cpu_storage[ExecCtx::Get()->starting_cpu()]) #define GRPC_STATS_INC_COUNTER(ctr) \ (gpr_atm_no_barrier_fetch_add(&GRPC_THREAD_STATS_DATA()->counters[(ctr)], 1)) diff --git a/src/core/lib/iomgr/block_annotate.h b/src/core/lib/iomgr/block_annotate.h index 9db3cf0199e..7783da0c148 100644 --- a/src/core/lib/iomgr/block_annotate.h +++ b/src/core/lib/iomgr/block_annotate.h @@ -19,6 +19,8 @@ #ifndef GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H #define GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H +#include "src/core/lib/iomgr/exec_ctx.h" + #ifdef __cplusplus extern "C" { #endif @@ -39,25 +41,18 @@ void gpr_thd_end_blocking_region(); do { \ gpr_thd_start_blocking_region(); \ } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \ - do { \ - gpr_thd_end_blocking_region(); \ - } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX() \ - do { \ - gpr_thd_end_blocking_region(); \ - grpc_exec_ctx_invalidate_now(); \ +#define GRPC_SCHEDULING_END_BLOCKING_REGION \ + do { \ + gpr_thd_end_blocking_region(); \ + ExecCtx::Get()->InvalidateNow(); \ } while (0) #else #define GRPC_SCHEDULING_START_BLOCKING_REGION \ do { \ } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \ - do { \ - } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX() \ - do { \ - grpc_exec_ctx_invalidate_now(); \ +#define GRPC_SCHEDULING_END_BLOCKING_REGION \ + do { \ + ExecCtx::Get()->InvalidateNow(); \ } while (0) #endif diff --git a/src/core/lib/iomgr/combiner.cc b/src/core/lib/iomgr/combiner.cc index b1b8fffdcad..c9f5448630a 100644 --- a/src/core/lib/iomgr/combiner.cc +++ b/src/core/lib/iomgr/combiner.cc @@ -128,20 +128,24 @@ grpc_combiner* grpc_combiner_ref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) { } static void push_last_on_exec_ctx(grpc_combiner* lock) { - lock->next_combiner_on_this_exec_ctx = NULL; - if (exec_ctx->active_combiner == NULL) { - exec_ctx->active_combiner = exec_ctx->last_combiner = lock; + lock->next_combiner_on_this_exec_ctx = nullptr; + if (ExecCtx::Get()->combiner_data()->active_combiner == nullptr) { + ExecCtx::Get()->combiner_data()->active_combiner = + ExecCtx::Get()->combiner_data()->last_combiner = lock; } else { - exec_ctx->last_combiner->next_combiner_on_this_exec_ctx = lock; - exec_ctx->last_combiner = lock; + ExecCtx::Get() + ->combiner_data() + ->last_combiner->next_combiner_on_this_exec_ctx = lock; + ExecCtx::Get()->combiner_data()->last_combiner = lock; } } static void push_first_on_exec_ctx(grpc_combiner* lock) { - lock->next_combiner_on_this_exec_ctx = exec_ctx->active_combiner; - exec_ctx->active_combiner = lock; + lock->next_combiner_on_this_exec_ctx = + ExecCtx::Get()->combiner_data()->active_combiner; + ExecCtx::Get()->combiner_data()->active_combiner = lock; if (lock->next_combiner_on_this_exec_ctx == NULL) { - exec_ctx->last_combiner = lock; + ExecCtx::Get()->combiner_data()->last_combiner = lock; } } @@ -161,7 +165,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(); GPR_TIMER_MARK("combiner.initiated", 0); gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, - (gpr_atm)exec_ctx); + (gpr_atm)ExecCtx::Get()); // first element on this list: add it to the list of combiner locks // executing within this exec_ctx push_last_on_exec_ctx(lock); @@ -170,7 +174,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { // offload for one or two actions, and that's fine gpr_atm initiator = gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null); - if (initiator != 0 && initiator != (gpr_atm)exec_ctx) { + if (initiator != 0 && initiator != (gpr_atm)ExecCtx::Get()) { gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0); } } @@ -182,10 +186,12 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { } static void move_next() { - exec_ctx->active_combiner = - exec_ctx->active_combiner->next_combiner_on_this_exec_ctx; - if (exec_ctx->active_combiner == NULL) { - exec_ctx->last_combiner = NULL; + ExecCtx::Get()->combiner_data()->active_combiner = + ExecCtx::Get() + ->combiner_data() + ->active_combiner->next_combiner_on_this_exec_ctx; + if (ExecCtx::Get()->combiner_data()->active_combiner == NULL) { + ExecCtx::Get()->combiner_data()->last_combiner = NULL; } } @@ -203,7 +209,7 @@ static void queue_offload(grpc_combiner* lock) { bool grpc_combiner_continue_exec_ctx() { GPR_TIMER_BEGIN("combiner.continue_exec_ctx", 0); - grpc_combiner* lock = exec_ctx->active_combiner; + grpc_combiner* lock = ExecCtx::Get()->combiner_data()->active_combiner; if (lock == NULL) { GPR_TIMER_END("combiner.continue_exec_ctx", 0); return false; @@ -217,10 +223,11 @@ bool grpc_combiner_continue_exec_ctx() { "contended=%d " "exec_ctx_ready_to_finish=%d " "time_to_execute_final_list=%d", - lock, contended, grpc_exec_ctx_ready_to_finish(), + lock, contended, + ExecCtx::Get()->IsReadyToFinish(), lock->time_to_execute_final_list)); - if (contended && grpc_exec_ctx_ready_to_finish() && + if (contended && ExecCtx::Get()->IsReadyToFinish() && grpc_executor_is_threaded()) { GPR_TIMER_MARK("offload_from_finished_exec_ctx", 0); // this execution context wants to move on: schedule remaining work to be @@ -326,11 +333,11 @@ static void combiner_finally_exec(grpc_closure* closure, grpc_error* error) { GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(); grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler); - GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, - "C:%p grpc_combiner_execute_finally c=%p; ac=%p", - lock, closure, exec_ctx->active_combiner)); + GRPC_COMBINER_TRACE( + gpr_log(GPR_DEBUG, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock, + closure, ExecCtx::Get()->combiner_data()->active_combiner)); GPR_TIMER_BEGIN("combiner.execute_finally", 0); - if (exec_ctx->active_combiner != lock) { + if (ExecCtx::Get()->combiner_data()->active_combiner != lock) { GPR_TIMER_MARK("slowpath", 0); GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(enqueue_finally, closure, grpc_combiner_scheduler(lock)), diff --git a/src/core/lib/iomgr/endpoint_pair_posix.cc b/src/core/lib/iomgr/endpoint_pair_posix.cc index 696ac6942f0..1a281322a84 100644 --- a/src/core/lib/iomgr/endpoint_pair_posix.cc +++ b/src/core/lib/iomgr/endpoint_pair_posix.cc @@ -65,7 +65,6 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name, "socketpair-client"); gpr_free(final_name); - grpc_exec_ctx_finish(); return p; } diff --git a/src/core/lib/iomgr/endpoint_pair_windows.cc b/src/core/lib/iomgr/endpoint_pair_windows.cc index d4646170979..e0f211cdf91 100644 --- a/src/core/lib/iomgr/endpoint_pair_windows.cc +++ b/src/core/lib/iomgr/endpoint_pair_windows.cc @@ -77,7 +77,7 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair( channel_args, "endpoint:server"); p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"), channel_args, "endpoint:client"); - grpc_exec_ctx_finish(); + return p; } diff --git a/src/core/lib/iomgr/error.cc b/src/core/lib/iomgr/error.cc index ce8b538773e..157f12a36dd 100644 --- a/src/core/lib/iomgr/error.cc +++ b/src/core/lib/iomgr/error.cc @@ -157,11 +157,7 @@ static void unref_errs(grpc_error* err) { } } -static void unref_slice(grpc_slice slice) { - ExecCtx _local_exec_ctx; - grpc_slice_unref_internal(slice); - grpc_exec_ctx_finish(); -} +static void unref_slice(grpc_slice slice) { grpc_slice_unref_internal(slice); } static void unref_strs(grpc_error* err) { for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) { diff --git a/src/core/lib/iomgr/ev_epoll1_linux.cc b/src/core/lib/iomgr/ev_epoll1_linux.cc index 31f51df15d8..2b486887b81 100644 --- a/src/core/lib/iomgr/ev_epoll1_linux.cc +++ b/src/core/lib/iomgr/ev_epoll1_linux.cc @@ -554,7 +554,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - grpc_exec_ctx_now(); + grpc_millis delta = millis - ExecCtx::Get()->Now(); if (delta > INT_MAX) { return INT_MAX; } else if (delta < 0) { @@ -630,7 +630,7 @@ static grpc_error* do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) { timeout); } while (r < 0 && errno == EINTR); if (timeout != 0) { - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); + GRPC_SCHEDULING_END_BLOCKING_REGION; } if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait"); @@ -743,7 +743,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, SET_KICK_STATE(worker, KICKED); } } - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); } if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -848,7 +848,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, /* Make sure we appear kicked */ SET_KICK_STATE(worker, KICKED); grpc_closure_list_move(&worker->schedule_on_end_work, - &exec_ctx->closure_list); + ExecCtx::Get()->closure_list()); if (gpr_atm_no_barrier_load(&g_active_poller) == (gpr_atm)worker) { if (worker->next != worker && worker->next->state == UNKICKED) { if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -859,9 +859,9 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, SET_KICK_STATE(worker->next, DESIGNATED_POLLER); GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); gpr_cv_signal(&worker->next->cv); - if (grpc_exec_ctx_has_work()) { + if (ExecCtx::Get()->HasWork()) { gpr_mu_unlock(&pollset->mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } } else { @@ -892,12 +892,12 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, found_worker = check_neighborhood_for_available_poller(neighborhood); gpr_mu_unlock(&neighborhood->mu); } - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } - } else if (grpc_exec_ctx_has_work()) { + } else if (ExecCtx::Get()->HasWork()) { gpr_mu_unlock(&pollset->mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } if (worker->initialized_cv) { @@ -948,9 +948,9 @@ static grpc_error* pollset_work(grpc_pollset* ps, process_epoll_events() returns very quickly: It just queues the work on exec_ctx but does not execute it (the actual exectution or more - accurately grpc_exec_ctx_flush() happens in end_worker() AFTER selecting - a designated poller). So we are not waiting long periods without a - designated poller */ + accurately ExecCtx::Get()->Flush() happens in end_worker() AFTER + selecting a designated poller). So we are not waiting long periods + without a designated poller */ if (gpr_atm_acq_load(&g_epoll_set.cursor) == gpr_atm_acq_load(&g_epoll_set.num_events)) { append_error(&error, do_epoll_wait(ps, deadline), err_desc); diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc index 0979a45270b..385b5f68d06 100644 --- a/src/core/lib/iomgr/ev_epollex_linux.cc +++ b/src/core/lib/iomgr/ev_epollex_linux.cc @@ -682,7 +682,7 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - grpc_exec_ctx_now(); + grpc_millis delta = millis - ExecCtx::Get()->Now(); if (delta > INT_MAX) return INT_MAX; else if (delta < 0) @@ -804,7 +804,7 @@ static grpc_error* pollable_epoll(pollable* p, grpc_millis deadline) { r = epoll_wait(p->epfd, p->events, MAX_EPOLL_EVENTS, timeout); } while (r < 0 && errno == EINTR); if (timeout != 0) { - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); + GRPC_SCHEDULING_END_BLOCKING_REGION; } if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait"); @@ -902,7 +902,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, worker->pollable_obj, worker); } } - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); } else { gpr_mu_unlock(&pollset->mu); } @@ -970,7 +970,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, gpr_log(GPR_DEBUG, "PS:%p work hdl=%p worker=%p now=%" PRIdPTR " deadline=%" PRIdPTR " kwp=%d pollable=%p", - pollset, worker_hdl, WORKER_PTR, grpc_exec_ctx_now(), deadline, + pollset, worker_hdl, WORKER_PTR, ExecCtx::Get()->Now(), deadline, pollset->kicked_without_poller, pollset->active_pollable); } static const char* err_desc = "pollset_work"; @@ -990,7 +990,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, &error, pollable_process_events(pollset, WORKER_PTR->pollable_obj, false), err_desc); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_tls_set(&g_current_thread_pollset, 0); gpr_tls_set(&g_current_thread_worker, 0); } diff --git a/src/core/lib/iomgr/ev_epollsig_linux.cc b/src/core/lib/iomgr/ev_epollsig_linux.cc index c42a609fee1..a9b094a2fab 100644 --- a/src/core/lib/iomgr/ev_epollsig_linux.cc +++ b/src/core/lib/iomgr/ev_epollsig_linux.cc @@ -1090,7 +1090,7 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - grpc_exec_ctx_now(); + grpc_millis delta = millis - ExecCtx::Get()->Now(); if (delta > INT_MAX) return INT_MAX; else if (delta < 0) @@ -1220,7 +1220,7 @@ static void pollset_work_and_unlock(grpc_pollset* pollset, GRPC_STATS_INC_SYSCALL_POLL(); ep_rv = epoll_pwait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, timeout_ms, sig_mask); - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); + GRPC_SCHEDULING_END_BLOCKING_REGION; if (ep_rv < 0) { if (errno != EINTR) { gpr_asprintf(&err_msg, @@ -1350,7 +1350,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, pollset_work_and_unlock(pollset, &worker, timeout_ms, &g_orig_sigmask, &error); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->po.mu); @@ -1373,7 +1373,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, finish_shutdown_locked(pollset); gpr_mu_unlock(&pollset->po.mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->po.mu); } diff --git a/src/core/lib/iomgr/ev_poll_posix.cc b/src/core/lib/iomgr/ev_poll_posix.cc index c7189950f03..cab4f7547c4 100644 --- a/src/core/lib/iomgr/ev_poll_posix.cc +++ b/src/core/lib/iomgr/ev_poll_posix.cc @@ -976,7 +976,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, GRPC_SCHEDULING_START_BLOCKING_REGION; GRPC_STATS_INC_SYSCALL_POLL(); r = grpc_poll_function(pfds, pfd_count, timeout); - GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(); + GRPC_SCHEDULING_END_BLOCKING_REGION; if (GRPC_TRACER_ON(grpc_polling_trace)) { gpr_log(GPR_DEBUG, "%p poll=%d", pollset, r); @@ -1040,7 +1040,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, worker list, which means nobody could ask us to re-evaluate polling). */ done: if (!locked) { - queued_work |= grpc_exec_ctx_flush(); + queued_work |= ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); locked = 1; } @@ -1074,7 +1074,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, pollset->called_shutdown = 1; gpr_mu_unlock(&pollset->mu); finish_shutdown(pollset); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Continuing to access pollset here is safe -- it is the caller's * responsibility to not destroy when it has outstanding calls to * pollset_work. @@ -1083,7 +1083,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, } else if (!grpc_closure_list_empty(pollset->idle_jobs)) { GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs); gpr_mu_unlock(&pollset->mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } } @@ -1110,7 +1110,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { static int poll_deadline_to_millis_timeout(grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) return -1; if (deadline == 0) return 0; - grpc_millis n = deadline - grpc_exec_ctx_now(); + grpc_millis n = deadline - ExecCtx::Get()->Now(); if (n < 0) return 0; if (n > INT_MAX) return -1; return (int)n; diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index c10d1e60f06..fe5a0e7e2de 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -27,45 +27,19 @@ thread_local ExecCtx* exec_ctx = nullptr; -ExecCtx::ExecCtx() - : closure_list(GRPC_CLOSURE_LIST_INIT), - active_combiner(nullptr), - last_combiner(nullptr), - flags(GRPC_EXEC_CTX_FLAG_IS_FINISHED), - starting_cpu(gpr_cpu_current_cpu()), - check_ready_to_finish_arg(nullptr), - check_ready_to_finish(nullptr), - now_is_valid(false), - now(0), - last_exec_ctx(exec_ctx) { - exec_ctx = this; -} - -ExecCtx::ExecCtx(uintptr_t fl, bool (*finish_check)(void* arg), - void* finish_check_arg) - : closure_list(GRPC_CLOSURE_LIST_INIT), - active_combiner(nullptr), - last_combiner(nullptr), - flags(fl), - starting_cpu(gpr_cpu_current_cpu()), - check_ready_to_finish_arg(finish_check_arg), - check_ready_to_finish(finish_check), - now_is_valid(false), - now(0), - last_exec_ctx(exec_ctx) { - exec_ctx = this; -} - +ExecCtx::ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { exec_ctx = this; } +ExecCtx::ExecCtx(uintptr_t fl) : flags_(fl) { exec_ctx = this; } ExecCtx::~ExecCtx() { GPR_ASSERT(exec_ctx == this); - grpc_exec_ctx_finish(); - exec_ctx = last_exec_ctx; + flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; + Flush(); + exec_ctx = last_exec_ctx_; } -bool grpc_exec_ctx_ready_to_finish() { - if ((exec_ctx->flags & GRPC_EXEC_CTX_FLAG_IS_FINISHED) == 0) { - if (exec_ctx->check_ready_to_finish(exec_ctx->check_ready_to_finish_arg)) { - exec_ctx->flags |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; +bool ExecCtx::IsReadyToFinish() { + if ((flags_ & GRPC_EXEC_CTX_FLAG_IS_FINISHED) == 0) { + if (CheckReadyToFinish()) { + flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; return true; } return false; @@ -74,21 +48,7 @@ bool grpc_exec_ctx_ready_to_finish() { } } -bool grpc_never_ready_to_finish(void* arg_ignored) { return false; } - -bool grpc_always_ready_to_finish(void* arg_ignored) { return true; } - -bool grpc_exec_ctx_has_work() { - return exec_ctx->active_combiner != NULL || - !grpc_closure_list_empty(exec_ctx->closure_list); -} - -void grpc_exec_ctx_finish() { - exec_ctx->flags |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; - grpc_exec_ctx_flush(); -} - -static void exec_ctx_run(grpc_closure* closure, grpc_error* error) { +void exec_ctx_run(grpc_closure* closure, grpc_error* error) { #ifndef NDEBUG closure->scheduled = false; if (GRPC_TRACER_ON(grpc_trace_closure)) { @@ -107,13 +67,13 @@ static void exec_ctx_run(grpc_closure* closure, grpc_error* error) { GRPC_ERROR_UNREF(error); } -bool grpc_exec_ctx_flush() { +bool ExecCtx::Flush() { bool did_something = 0; GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0); for (;;) { - if (!grpc_closure_list_empty(exec_ctx->closure_list)) { - grpc_closure* c = exec_ctx->closure_list.head; - exec_ctx->closure_list.head = exec_ctx->closure_list.tail = NULL; + if (!grpc_closure_list_empty(closure_list_)) { + grpc_closure* c = closure_list_.head; + closure_list_.head = closure_list_.tail = NULL; while (c != NULL) { grpc_closure* next = c->next_data.next; grpc_error* error = c->error_data.error; @@ -125,13 +85,13 @@ bool grpc_exec_ctx_flush() { break; } } - GPR_ASSERT(exec_ctx->active_combiner == NULL); + GPR_ASSERT(combiner_data_.active_combiner == nullptr); GPR_TIMER_END("grpc_exec_ctx_flush", 0); return did_something; } -static void exec_ctx_sched(grpc_closure* closure, grpc_error* error) { - grpc_closure_list_append(&exec_ctx->closure_list, closure, error); +void exec_ctx_sched(grpc_closure* closure, grpc_error* error) { + grpc_closure_list_append(exec_ctx->closure_list(), closure, error); } static gpr_timespec @@ -139,7 +99,7 @@ static gpr_timespec // last enum value in // gpr_clock_type -void grpc_exec_ctx_global_init(void) { +void ExecCtx::GlobalInit(void) { for (int i = 0; i < GPR_TIMESPAN; i++) { g_start_time[i] = gpr_now((gpr_clock_type)i); } @@ -147,7 +107,7 @@ void grpc_exec_ctx_global_init(void) { g_start_time[GPR_TIMESPAN] = gpr_time_0(GPR_TIMESPAN); } -void grpc_exec_ctx_global_shutdown(void) {} +void ExecCtx::GlobalShutdown(void) {} static gpr_atm timespec_to_atm_round_down(gpr_timespec ts) { ts = gpr_time_sub(ts, g_start_time[ts.clock_type]); @@ -168,16 +128,6 @@ static gpr_atm timespec_to_atm_round_up(gpr_timespec ts) { return (gpr_atm)x; } -grpc_millis grpc_exec_ctx_now() { - if (!exec_ctx->now_is_valid) { - exec_ctx->now = timespec_to_atm_round_down(gpr_now(GPR_CLOCK_MONOTONIC)); - exec_ctx->now_is_valid = true; - } - return exec_ctx->now; -} - -void grpc_exec_ctx_invalidate_now() { exec_ctx->now_is_valid = false; } - gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock_type) { // special-case infinities as grpc_millis can be 32bit on some platforms @@ -204,6 +154,16 @@ grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec ts) { return timespec_to_atm_round_up(ts); } +grpc_millis ExecCtx::Now() { + if (!now_is_valid_) { + now_ = timespec_to_atm_round_down(gpr_now(GPR_CLOCK_MONOTONIC)); + now_is_valid_ = true; + } + return now_; +} + +ExecCtx* ExecCtx::Get() { return exec_ctx; } + static const grpc_closure_scheduler_vtable exec_ctx_scheduler_vtable = { exec_ctx_run, exec_ctx_sched, "exec_ctx"}; static grpc_closure_scheduler exec_ctx_scheduler = {&exec_ctx_scheduler_vtable}; diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index a80bcbbc0d9..a71e43e178c 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -66,95 +66,81 @@ typedef struct grpc_combiner grpc_combiner; * - Instances are always passed as the first argument to a function that * takes it, and always as a pointer (grpc_exec_ctx is never copied). */ -struct grpc_exec_ctx { - grpc_closure_list closure_list; - /** currently active combiner: updated only via combiner.c */ - grpc_combiner* active_combiner; - /** last active combiner in the active combiner list */ - grpc_combiner* last_combiner; - uintptr_t flags; - unsigned starting_cpu; - void* check_ready_to_finish_arg; - bool (*check_ready_to_finish)(void* arg); - - bool now_is_valid; - grpc_millis now; - const char* creator; -}; - -extern grpc_closure_scheduler* grpc_schedule_on_exec_ctx; - -bool grpc_exec_ctx_has_work(); - -/** Flush any work that has been enqueued onto this grpc_exec_ctx. - * Caller must guarantee that no interfering locks are held. - * Returns true if work was performed, false otherwise. */ -bool grpc_exec_ctx_flush(); -/** Finish any pending work for a grpc_exec_ctx. Must be called before - * the instance is destroyed, or work may be lost. */ -void grpc_exec_ctx_finish(); -/** Returns true if we'd like to leave this execution context as soon as - possible: useful for deciding whether to do something more or not depending - on outside context */ -bool grpc_exec_ctx_ready_to_finish(); -/** A finish check that is never ready to finish */ -bool grpc_never_ready_to_finish(void* arg_ignored); -/** A finish check that is always ready to finish */ -bool grpc_always_ready_to_finish(void* arg_ignored); - -void grpc_exec_ctx_global_init(void); - -void grpc_exec_ctx_global_init(void); -void grpc_exec_ctx_global_shutdown(void); - -grpc_millis grpc_exec_ctx_now(); -void grpc_exec_ctx_invalidate_now(); -gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock); -grpc_millis grpc_timespec_to_millis_round_down(gpr_timespec timespec); -grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec timespec); - -inline grpc_exec_ctx make_exec_ctx(grpc_exec_ctx r) { - grpc_exec_ctx_flush(); - return r; -} - class ExecCtx { public: ExecCtx(); - ExecCtx(uintptr_t fl, bool (*finish_check)(void* arg), - void* finish_check_arg); + ExecCtx(uintptr_t fl); ~ExecCtx(); - grpc_closure_list closure_list; - /** currently active combiner: updated only via combiner.c */ - grpc_combiner* active_combiner; - /** last active combiner in the active combiner list */ - grpc_combiner* last_combiner; - uintptr_t flags; - unsigned starting_cpu; - void* check_ready_to_finish_arg; - bool (*check_ready_to_finish)(void* arg); - - bool now_is_valid; - grpc_millis now; - - private: - ExecCtx* last_exec_ctx; -}; + unsigned starting_cpu() const { return starting_cpu_; } + + struct CombinerData { + /* currently active combiner: updated only via combiner.c */ + grpc_combiner* active_combiner; + /* last active combiner in the active combiner list */ + grpc_combiner* last_combiner; + }; + + /** Only to be used by grpc-combiner code */ + CombinerData* combiner_data() { return &combiner_data_; } + + grpc_closure_list* closure_list() { return &closure_list_; } + + bool HasWork() { + return combiner_data_.active_combiner != NULL || + !grpc_closure_list_empty(closure_list_); + } + + /** Flush any work that has been enqueued onto this grpc_exec_ctx. + * Caller must guarantee that no interfering locks are held. + * Returns true if work was performed, false otherwise. */ + bool Flush(); + + /** Returns true if we'd like to leave this execution context as soon as +possible: useful for deciding whether to do something more or not depending +on outside context */ + bool IsReadyToFinish(); -extern thread_local ExecCtx* exec_ctx; + grpc_millis Now(); -/* initializer for grpc_exec_ctx: - * prefer to use GRPC_EXEC_CTX_INIT whenever possible */ -#define GRPC_EXEC_CTX_INITIALIZER(flags, finish_check, finish_check_arg) \ - make_exec_ctx(grpc_exec_ctx{GRPC_CLOSURE_LIST_INIT, NULL, NULL, flags, \ - gpr_cpu_current_cpu(), finish_check_arg, \ - finish_check, false, 0, __PRETTY_FUNCTION__}) + void InvalidateNow() { now_is_valid_ = false; } -/* initialize an execution context at the top level of an API call into grpc - (this is safe to use elsewhere, though possibly not as efficient) */ -#define GRPC_EXEC_CTX_INIT \ - GRPC_EXEC_CTX_INITIALIZER(GRPC_EXEC_CTX_FLAG_IS_FINISHED, NULL, NULL) + void SetNow(grpc_millis new_val) { + now_ = new_val; + now_is_valid_ = true; + } + + uintptr_t flags() { return flags_; } + + /** Finish any pending work for a grpc_exec_ctx. Must be called before + * the instance is destroyed, or work may be lost. */ + void Finish(); + + static void GlobalInit(void); + + static void GlobalShutdown(void); + + static ExecCtx* Get(); + + protected: + virtual bool CheckReadyToFinish() { return false; } + + grpc_closure_list closure_list_ = GRPC_CLOSURE_LIST_INIT; + CombinerData combiner_data_ = {nullptr, nullptr}; + uintptr_t flags_; + unsigned starting_cpu_ = gpr_cpu_current_cpu(); + + bool now_is_valid_ = false; + grpc_millis now_ = 0; + + ExecCtx* last_exec_ctx_ = Get(); +}; + +extern grpc_closure_scheduler* grpc_schedule_on_exec_ctx; + +gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock); +grpc_millis grpc_timespec_to_millis_round_down(gpr_timespec timespec); +grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec timespec); #ifdef __cplusplus } diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index f764d915ff6..bf8805a2cdd 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -78,7 +78,7 @@ static size_t run_closures(grpc_closure_list list) { GRPC_ERROR_UNREF(error); c = next; n++; - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } return n; @@ -145,7 +145,7 @@ static void executor_thread(void* arg) { thread_state* ts = (thread_state*)arg; gpr_tls_set(&g_this_thread_state, (intptr_t)ts); - ExecCtx _local_exec_ctx(0, grpc_never_ready_to_finish, NULL); + ExecCtx _local_exec_ctx; size_t subtract_depth = 0; for (;;) { @@ -175,10 +175,9 @@ static void executor_thread(void* arg) { gpr_log(GPR_DEBUG, "EXECUTOR[%d]: execute", (int)(ts - g_thread_state)); } - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); subtract_depth = run_closures(exec); } - grpc_exec_ctx_finish(); } static void executor_push(grpc_closure* closure, grpc_error* error, @@ -201,12 +200,12 @@ static void executor_push(grpc_closure* closure, grpc_error* error, gpr_log(GPR_DEBUG, "EXECUTOR: schedule %p inline", closure); #endif } - grpc_closure_list_append(&exec_ctx->closure_list, closure, error); + grpc_closure_list_append(ExecCtx::Get()->closure_list(), closure, error); return; } thread_state* ts = (thread_state*)gpr_tls_get(&g_this_thread_state); if (ts == NULL) { - ts = &g_thread_state[GPR_HASH_POINTER(exec_ctx, cur_thread_count)]; + ts = &g_thread_state[GPR_HASH_POINTER(ExecCtx::Get(), cur_thread_count)]; } else { GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF(); } diff --git a/src/core/lib/iomgr/iocp_windows.cc b/src/core/lib/iomgr/iocp_windows.cc index 8f15f5e6ccd..1686bf28727 100644 --- a/src/core/lib/iomgr/iocp_windows.cc +++ b/src/core/lib/iomgr/iocp_windows.cc @@ -46,7 +46,7 @@ static DWORD deadline_to_millis_timeout(grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) { return INFINITE; } - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); if (deadline < now) return 0; grpc_millis timeout = deadline - now; if (timeout > std::numeric_limits<DWORD>::max()) return INFINITE; @@ -65,7 +65,7 @@ grpc_iocp_work_status grpc_iocp_work(grpc_millis deadline) { success = GetQueuedCompletionStatus(g_iocp, &bytes, &completion_key, &overlapped, deadline_to_millis_timeout(deadline)); - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); if (success == 0 && overlapped == NULL) { return GRPC_IOCP_WORK_TIMEOUT; } @@ -118,16 +118,16 @@ void grpc_iocp_flush(void) { do { work_status = grpc_iocp_work(GRPC_MILLIS_INF_PAST); - } while (work_status == GRPC_IOCP_WORK_KICK || grpc_exec_ctx_flush()); + } while (work_status == GRPC_IOCP_WORK_KICK || ExecCtx::Get()->Flush()); } void grpc_iocp_shutdown(void) { ExecCtx _local_exec_ctx; while (gpr_atm_acq_load(&g_custom_events)) { grpc_iocp_work(GRPC_MILLIS_INF_FUTURE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + GPR_ASSERT(CloseHandle(g_iocp)); } diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index 01d9964cc82..a1add4a303a 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -49,7 +49,7 @@ void grpc_iomgr_init() { g_shutdown = 0; gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); - grpc_exec_ctx_global_init(); + ExecCtx::GlobalInit(); grpc_executor_init(); grpc_timer_list_init(); g_root_object.next = g_root_object.prev = &g_root_object; @@ -98,11 +98,10 @@ void grpc_iomgr_shutdown() { } last_warning_time = gpr_now(GPR_CLOCK_REALTIME); } - exec_ctx->now_is_valid = true; - exec_ctx->now = GRPC_MILLIS_INF_FUTURE; + ExecCtx::Get()->SetNow(GRPC_MILLIS_INF_FUTURE); if (grpc_timer_check(NULL) == GRPC_TIMERS_FIRED) { gpr_mu_unlock(&g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_iomgr_platform_flush(); gpr_mu_lock(&g_mu); continue; @@ -137,14 +136,14 @@ void grpc_iomgr_shutdown() { gpr_mu_unlock(&g_mu); grpc_timer_list_shutdown(); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* ensure all threads have left g_mu */ gpr_mu_lock(&g_mu); gpr_mu_unlock(&g_mu); grpc_iomgr_platform_shutdown(); - grpc_exec_ctx_global_shutdown(); + ExecCtx::GlobalShutdown(); grpc_network_status_shutdown(); gpr_mu_destroy(&g_mu); gpr_cv_destroy(&g_rcv); diff --git a/src/core/lib/iomgr/iomgr_uv.cc b/src/core/lib/iomgr/iomgr_uv.cc index 4dda970286e..2ab414252a3 100644 --- a/src/core/lib/iomgr/iomgr_uv.cc +++ b/src/core/lib/iomgr/iomgr_uv.cc @@ -34,7 +34,6 @@ void grpc_iomgr_platform_init(void) { grpc_register_tracer(&grpc_tcp_trace); grpc_executor_set_threading(false); g_init_thread = gpr_thd_currentid(); - grpc_exec_ctx_finish(); } void grpc_iomgr_platform_flush(void) {} void grpc_iomgr_platform_shutdown(void) { grpc_pollset_global_shutdown(); } diff --git a/src/core/lib/iomgr/load_file.cc b/src/core/lib/iomgr/load_file.cc index 97e448fb325..feef65cc34c 100644 --- a/src/core/lib/iomgr/load_file.cc +++ b/src/core/lib/iomgr/load_file.cc @@ -73,6 +73,6 @@ end: GRPC_ERROR_UNREF(error); error = error_out; } - GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX; + GRPC_SCHEDULING_END_BLOCKING_REGION; return error; } diff --git a/src/core/lib/iomgr/pollset_uv.cc b/src/core/lib/iomgr/pollset_uv.cc index 70288762972..a68ad4a6e3f 100644 --- a/src/core/lib/iomgr/pollset_uv.cc +++ b/src/core/lib/iomgr/pollset_uv.cc @@ -124,7 +124,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, GRPC_UV_ASSERT_SAME_THREAD(); gpr_mu_unlock(&grpc_polling_mu); if (grpc_pollset_work_run_loop) { - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); if (deadline >= now) { timeout = deadline - now; } else { @@ -143,7 +143,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, } } if (!grpc_closure_list_empty(exec_ctx->closure_list)) { - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } gpr_mu_lock(&grpc_polling_mu); return GRPC_ERROR_NONE; diff --git a/src/core/lib/iomgr/pollset_windows.cc b/src/core/lib/iomgr/pollset_windows.cc index dd019b1ec39..5ff3e7cb3a3 100644 --- a/src/core/lib/iomgr/pollset_windows.cc +++ b/src/core/lib/iomgr/pollset_windows.cc @@ -129,7 +129,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, g_active_poller = &worker; gpr_mu_unlock(&grpc_polling_mu); grpc_iocp_work(deadline); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&grpc_polling_mu); pollset->is_iocp_worker = 0; g_active_poller = NULL; @@ -160,10 +160,10 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, while (!worker.kicked) { if (gpr_cv_wait(&worker.cv, &grpc_polling_mu, grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME))) { - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); break; } - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); } } else { pollset->kicked_without_pollers = 0; @@ -171,7 +171,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, done: if (!grpc_closure_list_empty(exec_ctx->closure_list)) { gpr_mu_unlock(&grpc_polling_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&grpc_polling_mu); } if (added_worker) { diff --git a/src/core/lib/iomgr/resolve_address_posix.cc b/src/core/lib/iomgr/resolve_address_posix.cc index 3795c3f75ef..80a1a45cc0b 100644 --- a/src/core/lib/iomgr/resolve_address_posix.cc +++ b/src/core/lib/iomgr/resolve_address_posix.cc @@ -81,7 +81,7 @@ static grpc_error* blocking_resolve_address_impl( GRPC_SCHEDULING_START_BLOCKING_REGION; s = getaddrinfo(host, port, &hints, &result); - GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX; + GRPC_SCHEDULING_END_BLOCKING_REGION; if (s != 0) { /* Retry if well-known service name is recognized */ @@ -90,7 +90,7 @@ static grpc_error* blocking_resolve_address_impl( if (strcmp(port, svc[i][0]) == 0) { GRPC_SCHEDULING_START_BLOCKING_REGION; s = getaddrinfo(host, svc[i][1], &hints, &result); - GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX; + GRPC_SCHEDULING_END_BLOCKING_REGION; break; } } diff --git a/src/core/lib/iomgr/resolve_address_uv.cc b/src/core/lib/iomgr/resolve_address_uv.cc index 038926af073..ffd70c4f35e 100644 --- a/src/core/lib/iomgr/resolve_address_uv.cc +++ b/src/core/lib/iomgr/resolve_address_uv.cc @@ -131,7 +131,7 @@ static void getaddrinfo_callback(uv_getaddrinfo_t* req, int status, original error probably has more interesting information */ error = handle_addrinfo_result(status, res, r->addresses); GRPC_CLOSURE_SCHED(r->on_done, error); - grpc_exec_ctx_finish(); + gpr_free(r->hints); gpr_free(r->host); gpr_free(r->port); diff --git a/src/core/lib/iomgr/resolve_address_windows.cc b/src/core/lib/iomgr/resolve_address_windows.cc index 15f3fd9f1a2..4e2bc7b5cab 100644 --- a/src/core/lib/iomgr/resolve_address_windows.cc +++ b/src/core/lib/iomgr/resolve_address_windows.cc @@ -87,7 +87,7 @@ static grpc_error* blocking_resolve_address_impl( GRPC_SCHEDULING_START_BLOCKING_REGION; s = getaddrinfo(host, port, &hints, &result); - GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX; + GRPC_SCHEDULING_END_BLOCKING_REGION; if (s != 0) { error = GRPC_WSA_ERROR(WSAGetLastError(), "getaddrinfo"); goto done; diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc index b58ae1cb21d..8fee585f4bb 100644 --- a/src/core/lib/iomgr/resource_quota.cc +++ b/src/core/lib/iomgr/resource_quota.cc @@ -624,7 +624,6 @@ void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota) { void grpc_resource_quota_unref(grpc_resource_quota* resource_quota) { ExecCtx _local_exec_ctx; grpc_resource_quota_unref_internal(resource_quota); - grpc_exec_ctx_finish(); } grpc_resource_quota* grpc_resource_quota_ref_internal( @@ -656,7 +655,6 @@ void grpc_resource_quota_resize(grpc_resource_quota* resource_quota, (gpr_atm)GPR_MIN((size_t)GPR_ATM_MAX, size)); GRPC_CLOSURE_INIT(&a->closure, rq_resize, a, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_SCHED(&a->closure, GRPC_ERROR_NONE); - grpc_exec_ctx_finish(); } size_t grpc_resource_quota_peek_size(grpc_resource_quota* resource_quota) { diff --git a/src/core/lib/iomgr/tcp_client_uv.cc b/src/core/lib/iomgr/tcp_client_uv.cc index 2a127993a25..7454b014451 100644 --- a/src/core/lib/iomgr/tcp_client_uv.cc +++ b/src/core/lib/iomgr/tcp_client_uv.cc @@ -105,11 +105,10 @@ static void uv_tc_on_connect(uv_connect_t* req, int status) { } done = (--connect->refs == 0); if (done) { - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); uv_tcp_connect_cleanup(connect); } GRPC_CLOSURE_SCHED(closure, error); - grpc_exec_ctx_finish(); } static void tcp_client_connect_impl(grpc_closure* closure, grpc_endpoint** ep, diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index 697281d8b12..de3dabd7fc6 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -130,7 +130,7 @@ static void run_poller(void* bp, grpc_error* error_ignored) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p run", p); } gpr_mu_lock(p->pollset_mu); - grpc_millis deadline = grpc_exec_ctx_now() + 13 * GPR_MS_PER_SEC; + grpc_millis deadline = ExecCtx::Get()->Now() + 13 * GPR_MS_PER_SEC; GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS(); GRPC_LOG_IF_ERROR( "backup_poller:pollset_work", diff --git a/src/core/lib/iomgr/tcp_server_uv.cc b/src/core/lib/iomgr/tcp_server_uv.cc index 8d5387fe6ec..9db2cbe58d0 100644 --- a/src/core/lib/iomgr/tcp_server_uv.cc +++ b/src/core/lib/iomgr/tcp_server_uv.cc @@ -142,7 +142,6 @@ static void handle_close_callback(uv_handle_t* handle) { if (sp->server->open_ports == 0 && sp->server->shutdown) { finish_shutdown(sp->server); } - grpc_exec_ctx_finish(); } static void close_listener(grpc_tcp_listener* sp) { @@ -177,14 +176,8 @@ void grpc_tcp_server_unref(grpc_tcp_server* s) { /* Complete shutdown_starting work before destroying. */ ExecCtx _local_exec_ctx; GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); - if (exec_ctx == NULL) { - grpc_exec_ctx_flush(); - tcp_server_destroy(s); - grpc_exec_ctx_finish(); - } else { - grpc_exec_ctx_finish(); - tcp_server_destroy(s); - } + ExecCtx::Get()->Flush(); + tcp_server_destroy(s); } } @@ -255,7 +248,6 @@ static void on_connect(uv_stream_t* server, int status) { } else { sp->has_pending_connection = true; } - grpc_exec_ctx_finish(); } static grpc_error* add_socket_to_server(grpc_tcp_server* s, uv_tcp_t* handle, diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index 571c1d6f9a2..3ea96748407 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -115,7 +115,6 @@ static void uv_close_callback(uv_handle_t* handle) { ExecCtx _local_exec_ctx; grpc_tcp* tcp = (grpc_tcp*)handle->data; TCP_UNREF(tcp, "destroy"); - grpc_exec_ctx_finish(); } static grpc_slice alloc_read_slice(grpc_resource_user* resource_user) { @@ -130,7 +129,6 @@ static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size, (void)suggested_size; buf->base = (char*)GRPC_SLICE_START_PTR(tcp->read_slice); buf->len = GRPC_SLICE_LENGTH(tcp->read_slice); - grpc_exec_ctx_finish(); } static void read_callback(uv_stream_t* stream, ssize_t nread, @@ -174,7 +172,6 @@ static void read_callback(uv_stream_t* stream, ssize_t nread, error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed"); } GRPC_CLOSURE_SCHED(cb, error); - grpc_exec_ctx_finish(); } static void uv_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices, @@ -224,7 +221,6 @@ static void write_callback(uv_write_t* req, int status) { grpc_resource_user_free(tcp->resource_user, sizeof(uv_buf_t) * tcp->write_slices->count); GRPC_CLOSURE_SCHED(cb, error); - grpc_exec_ctx_finish(); } static void uv_endpoint_write(grpc_endpoint* ep, @@ -384,7 +380,6 @@ grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle, uv_unref((uv_handle_t*)handle); #endif - grpc_exec_ctx_finish(); return &tcp->base; } diff --git a/src/core/lib/iomgr/timer_generic.cc b/src/core/lib/iomgr/timer_generic.cc index e7fe12b07bd..d5e6066f35e 100644 --- a/src/core/lib/iomgr/timer_generic.cc +++ b/src/core/lib/iomgr/timer_generic.cc @@ -249,7 +249,7 @@ void grpc_timer_list_init() { g_shared_mutables.initialized = true; g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER; gpr_mu_init(&g_shared_mutables.mu); - g_shared_mutables.min_timer = grpc_exec_ctx_now(); + g_shared_mutables.min_timer = ExecCtx::Get()->Now(); gpr_tls_init(&g_last_seen_min_timer); gpr_tls_set(&g_last_seen_min_timer, 0); grpc_register_tracer(&grpc_timer_trace); @@ -341,7 +341,7 @@ void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, if (GRPC_TRACER_ON(grpc_timer_trace)) { gpr_log(GPR_DEBUG, "TIMER %p: SET %" PRIdPTR " now %" PRIdPTR " call %p[%p]", timer, - deadline, grpc_exec_ctx_now(), closure, closure->cb); + deadline, ExecCtx::Get()->Now(), closure, closure->cb); } if (!g_shared_mutables.initialized) { @@ -354,7 +354,7 @@ void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, gpr_mu_lock(&shard->mu); timer->pending = true; - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); if (deadline <= now) { timer->pending = false; GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); @@ -607,7 +607,7 @@ static grpc_timer_check_result run_some_expired_timers(gpr_atm now, grpc_timer_check_result grpc_timer_check(grpc_millis* next) { // prelude - grpc_millis now = grpc_exec_ctx_now(); + grpc_millis now = ExecCtx::Get()->Now(); /* fetch from a thread-local first: this avoids contention on a globally mutable cacheline in the common case */ diff --git a/src/core/lib/iomgr/timer_manager.cc b/src/core/lib/iomgr/timer_manager.cc index 499fc73748f..69adb673d86 100644 --- a/src/core/lib/iomgr/timer_manager.cc +++ b/src/core/lib/iomgr/timer_manager.cc @@ -101,7 +101,6 @@ void grpc_timer_manager_tick() { ExecCtx _local_exec_ctx; grpc_millis next = GRPC_MILLIS_INF_FUTURE; grpc_timer_check(&next); - grpc_exec_ctx_finish(); } static void run_some_timers() { @@ -126,7 +125,7 @@ static void run_some_timers() { if (GRPC_TRACER_ON(grpc_timer_check_trace)) { gpr_log(GPR_DEBUG, "flush exec_ctx"); } - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&g_mu); // garbage collect any threads hanging out that are dead gc_completed_threads(); @@ -179,7 +178,7 @@ static bool wait_until(grpc_millis next) { g_timed_waiter_deadline = next; if (GRPC_TRACER_ON(grpc_timer_check_trace)) { - grpc_millis wait_time = next - grpc_exec_ctx_now(); + grpc_millis wait_time = next - ExecCtx::Get()->Now(); gpr_log(GPR_DEBUG, "sleep for a %" PRIdPTR " milliseconds", wait_time); } @@ -224,7 +223,7 @@ static bool wait_until(grpc_millis next) { static void timer_main_loop() { for (;;) { grpc_millis next = GRPC_MILLIS_INF_FUTURE; - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); // check timer state, updates next to the next time to run a check switch (grpc_timer_check(&next)) { case GRPC_TIMERS_FIRED: @@ -274,9 +273,9 @@ static void timer_thread_cleanup(completed_thread* ct) { static void timer_thread(void* completed_thread_ptr) { // this threads exec_ctx: we try to run things through to completion here // since it's easy to spin up new threads - ExecCtx _local_exec_ctx(0, grpc_never_ready_to_finish, NULL); + ExecCtx _local_exec_ctx; timer_main_loop(); - grpc_exec_ctx_finish(); + timer_thread_cleanup((completed_thread*)completed_thread_ptr); } diff --git a/src/core/lib/iomgr/timer_uv.cc b/src/core/lib/iomgr/timer_uv.cc index 94601d99afc..6edd4169f12 100644 --- a/src/core/lib/iomgr/timer_uv.cc +++ b/src/core/lib/iomgr/timer_uv.cc @@ -51,7 +51,6 @@ void run_expired_timer(uv_timer_t* handle) { timer->pending = 0; GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); stop_uv_timer(handle); - grpc_exec_ctx_finish(); } void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, @@ -60,13 +59,13 @@ void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, uv_timer_t* uv_timer; GRPC_UV_ASSERT_SAME_THREAD(); timer->closure = closure; - if (deadline <= grpc_exec_ctx_now()) { + if (deadline <= ExecCtx::Get()->Now()) { timer->pending = 0; GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); return; } timer->pending = 1; - timeout = (uint64_t)(deadline - grpc_exec_ctx_now()); + timeout = (uint64_t)(deadline - ExecCtx::Get()->Now()); uv_timer = (uv_timer_t*)gpr_malloc(sizeof(uv_timer_t)); uv_timer_init(uv_default_loop(), uv_timer); uv_timer->data = timer; diff --git a/src/core/lib/security/context/security_context.cc b/src/core/lib/security/context/security_context.cc index 1d708c997c6..9b58b3657fd 100644 --- a/src/core/lib/security/context/security_context.cc +++ b/src/core/lib/security/context/security_context.cc @@ -57,7 +57,7 @@ grpc_call_error grpc_call_set_credentials(grpc_call* call, grpc_call_credentials_unref(ctx->creds); ctx->creds = grpc_call_credentials_ref(creds); } - grpc_exec_ctx_finish(); + return GRPC_CALL_OK; } @@ -95,7 +95,6 @@ void grpc_client_security_context_destroy(void* ctx) { c->extension.destroy(c->extension.instance); } gpr_free(ctx); - grpc_exec_ctx_finish(); } /* --- grpc_server_security_context --- */ diff --git a/src/core/lib/security/credentials/credentials.cc b/src/core/lib/security/credentials/credentials.cc index 20c4ae70fb3..6a272653f80 100644 --- a/src/core/lib/security/credentials/credentials.cc +++ b/src/core/lib/security/credentials/credentials.cc @@ -74,7 +74,6 @@ void grpc_channel_credentials_release(grpc_channel_credentials* creds) { GRPC_API_TRACE("grpc_channel_credentials_release(creds=%p)", 1, (creds)); ExecCtx _local_exec_ctx; grpc_channel_credentials_unref(creds); - grpc_exec_ctx_finish(); } grpc_call_credentials* grpc_call_credentials_ref(grpc_call_credentials* creds) { @@ -97,7 +96,6 @@ void grpc_call_credentials_release(grpc_call_credentials* creds) { GRPC_API_TRACE("grpc_call_credentials_release(creds=%p)", 1, (creds)); ExecCtx _local_exec_ctx; grpc_call_credentials_unref(creds); - grpc_exec_ctx_finish(); } bool grpc_call_credentials_get_request_metadata( @@ -213,7 +211,6 @@ void grpc_server_credentials_release(grpc_server_credentials* creds) { GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds)); ExecCtx _local_exec_ctx; grpc_server_credentials_unref(creds); - grpc_exec_ctx_finish(); } grpc_security_status grpc_server_credentials_create_security_connector( diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/src/core/lib/security/credentials/google_default/google_default_credentials.cc index 897b9d75201..03ec4bc3b3d 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.cc +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc @@ -114,13 +114,13 @@ static int is_stack_running_on_compute_engine() { grpc_resource_quota_create("google_default_credentials"); grpc_httpcli_get( &context, &detector.pollent, resource_quota, &request, - grpc_exec_ctx_now() + max_detection_delay, + ExecCtx::Get()->Now() + max_detection_delay, GRPC_CLOSURE_CREATE(on_compute_engine_detection_http_response, &detector, grpc_schedule_on_exec_ctx), &detector.response); grpc_resource_quota_unref_internal(resource_quota); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Block until we get the response. This is not ideal but this should only be called once for the lifetime of the process by the default credentials. */ @@ -144,7 +144,7 @@ static int is_stack_running_on_compute_engine() { grpc_pollset_shutdown(grpc_polling_entity_pollset(&detector.pollent), &destroy_closure); g_polling_mu = NULL; - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_free(grpc_polling_entity_pollset(&detector.pollent)); grpc_http_response_destroy(&detector.response); @@ -285,7 +285,7 @@ end: } else { GRPC_ERROR_UNREF(error); } - grpc_exec_ctx_finish(); + return result; } @@ -299,7 +299,6 @@ void grpc_flush_cached_google_default_credentials(void) { } compute_engine_detection_done = 0; gpr_mu_unlock(&g_state_mu); - grpc_exec_ctx_finish(); } /* -- Well known credentials path. -- */ diff --git a/src/core/lib/security/credentials/iam/iam_credentials.cc b/src/core/lib/security/credentials/iam/iam_credentials.cc index 07938ec67e0..4d9da0cbe3d 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.cc +++ b/src/core/lib/security/credentials/iam/iam_credentials.cc @@ -77,6 +77,6 @@ grpc_call_credentials* grpc_google_iam_credentials_create( grpc_slice_from_copied_string(authority_selector)); grpc_credentials_mdelem_array_add(&c->md_array, md); GRPC_MDELEM_UNREF(md); - grpc_exec_ctx_finish(); + return &c->base; } diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/src/core/lib/security/credentials/jwt/jwt_credentials.cc index 1d43ee6e037..ccc3f4aeed5 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.cc +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc @@ -185,6 +185,6 @@ grpc_call_credentials* grpc_service_account_jwt_access_credentials_create( grpc_call_credentials* creds = grpc_service_account_jwt_access_credentials_create_from_auth_json_key( grpc_auth_json_key_create_from_string(json_key), token_lifetime); - grpc_exec_ctx_finish(); + return creds; } diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/src/core/lib/security/credentials/jwt/jwt_verifier.cc index eaa20787879..5246e1f9859 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.cc +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc @@ -358,7 +358,7 @@ static verifier_cb_ctx* verifier_cb_ctx_create( ctx->signed_data = grpc_slice_from_copied_buffer(signed_jwt, signed_jwt_len); ctx->user_data = user_data; ctx->user_cb = cb; - grpc_exec_ctx_finish(); + return ctx; } @@ -702,7 +702,7 @@ static void on_openid_config_retrieved(void* user_data, grpc_error* error) { resource_quota = grpc_resource_quota_create("jwt_verifier"); grpc_httpcli_get( &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req, - grpc_exec_ctx_now() + grpc_jwt_verifier_max_delay, + ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx), &ctx->responses[HTTP_RESPONSE_KEYS]); grpc_resource_quota_unref_internal(resource_quota); @@ -828,7 +828,7 @@ static void retrieve_key_and_verify(verifier_cb_ctx* ctx) { extreme memory pressure. */ resource_quota = grpc_resource_quota_create("jwt_verifier"); grpc_httpcli_get(&ctx->verifier->http_ctx, &ctx->pollent, resource_quota, - &req, grpc_exec_ctx_now() + grpc_jwt_verifier_max_delay, + &req, ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, http_cb, &ctx->responses[rsp_idx]); grpc_resource_quota_unref_internal(resource_quota); gpr_free(req.host); diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc index bae96929386..b6537056093 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc @@ -216,8 +216,9 @@ static void on_oauth2_token_fetcher_http_response(void* user_data, gpr_mu_lock(&c->mu); c->token_fetch_pending = false; c->access_token_md = GRPC_MDELEM_REF(access_token_md); - c->token_expiration = - status == GRPC_CREDENTIALS_OK ? grpc_exec_ctx_now() + token_lifetime : 0; + c->token_expiration = status == GRPC_CREDENTIALS_OK + ? ExecCtx::Get()->Now() + token_lifetime + : 0; grpc_oauth2_pending_get_request_metadata* pending_request = c->pending_requests; c->pending_requests = NULL; @@ -255,7 +256,7 @@ static bool oauth2_token_fetcher_get_request_metadata( grpc_mdelem cached_access_token_md = GRPC_MDNULL; gpr_mu_lock(&c->mu); if (!GRPC_MDISNULL(c->access_token_md) && - (c->token_expiration - grpc_exec_ctx_now() > refresh_threshold)) { + (c->token_expiration - ExecCtx::Get()->Now() > refresh_threshold)) { cached_access_token_md = GRPC_MDELEM_REF(c->access_token_md); } if (!GRPC_MDISNULL(cached_access_token_md)) { @@ -287,7 +288,7 @@ static bool oauth2_token_fetcher_get_request_metadata( c->fetch_func(grpc_credentials_metadata_request_create(creds), &c->httpcli_context, &c->pollent, on_oauth2_token_fetcher_http_response, - grpc_exec_ctx_now() + refresh_threshold); + ExecCtx::Get()->Now() + refresh_threshold); } return false; } @@ -517,7 +518,7 @@ grpc_call_credentials* grpc_access_token_credentials_create( c->access_token_md = grpc_mdelem_from_slices( grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), grpc_slice_from_copied_string(token_md_value)); - grpc_exec_ctx_finish(); + gpr_free(token_md_value); return &c->base; } diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc index 064666a7d0c..025d024617b 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc @@ -116,9 +116,8 @@ static void plugin_md_request_metadata_ready(void* request, grpc_status_code status, const char* error_details) { /* called from application code */ - ExecCtx _local_exec_ctx( - GRPC_EXEC_CTX_FLAG_IS_FINISHED | GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP, - NULL, NULL); + ExecCtx _local_exec_ctx(GRPC_EXEC_CTX_FLAG_IS_FINISHED | + GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP); grpc_plugin_credentials_pending_request* r = (grpc_plugin_credentials_pending_request*)request; if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) { @@ -141,7 +140,6 @@ static void plugin_md_request_metadata_ready(void* request, r->creds, r); } gpr_free(r); - grpc_exec_ctx_finish(); } static bool plugin_get_request_metadata(grpc_call_credentials* creds, diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc index cb204014091..4ed2ec55bd8 100644 --- a/src/core/lib/security/transport/security_handshaker.cc +++ b/src/core/lib/security/transport/security_handshaker.cc @@ -266,7 +266,6 @@ static void on_handshake_next_done_grpc_wrapper( } else { gpr_mu_unlock(&h->mu); } - grpc_exec_ctx_finish(); } static grpc_error* do_handshaker_next_locked( diff --git a/src/core/lib/security/transport/server_auth_filter.cc b/src/core/lib/security/transport/server_auth_filter.cc index 5f21a2933bc..86817076f83 100644 --- a/src/core/lib/security/transport/server_auth_filter.cc +++ b/src/core/lib/security/transport/server_auth_filter.cc @@ -141,7 +141,6 @@ static void on_md_processing_done( } grpc_metadata_array_destroy(&calld->md); GRPC_CALL_STACK_UNREF(calld->owning_call, "server_auth_metadata"); - grpc_exec_ctx_finish(); } static void cancel_call(void* arg, grpc_error* error) { diff --git a/src/core/lib/slice/slice.cc b/src/core/lib/slice/slice.cc index 3b3b2e4f057..6e1554d471e 100644 --- a/src/core/lib/slice/slice.cc +++ b/src/core/lib/slice/slice.cc @@ -69,7 +69,6 @@ grpc_slice grpc_slice_ref(grpc_slice slice) { void grpc_slice_unref(grpc_slice slice) { ExecCtx _local_exec_ctx; grpc_slice_unref_internal(slice); - grpc_exec_ctx_finish(); } /* grpc_slice_from_static_string support structure - a refcount that does diff --git a/src/core/lib/slice/slice_buffer.cc b/src/core/lib/slice/slice_buffer.cc index 6774269972c..4bc54c303f6 100644 --- a/src/core/lib/slice/slice_buffer.cc +++ b/src/core/lib/slice/slice_buffer.cc @@ -75,7 +75,6 @@ void grpc_slice_buffer_destroy_internal(grpc_slice_buffer* sb) { void grpc_slice_buffer_destroy(grpc_slice_buffer* sb) { ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(sb); - grpc_exec_ctx_finish(); } uint8_t* grpc_slice_buffer_tiny_add(grpc_slice_buffer* sb, size_t n) { @@ -175,7 +174,6 @@ void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer* sb) { void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb) { ExecCtx _local_exec_ctx; grpc_slice_buffer_reset_and_unref_internal(sb); - grpc_exec_ctx_finish(); } void grpc_slice_buffer_swap(grpc_slice_buffer* a, grpc_slice_buffer* b) { diff --git a/src/core/lib/surface/alarm.cc b/src/core/lib/surface/alarm.cc index 395ffd393ca..7aee100f3f5 100644 --- a/src/core/lib/surface/alarm.cc +++ b/src/core/lib/surface/alarm.cc @@ -51,7 +51,7 @@ static void alarm_unref(grpc_alarm* alarm) { if (alarm->cq != NULL) { GRPC_CQ_INTERNAL_UNREF(alarm->cq, "alarm"); } - grpc_exec_ctx_finish(); + gpr_free(alarm); } } @@ -126,13 +126,11 @@ void grpc_alarm_set(grpc_alarm* alarm, grpc_completion_queue* cq, GPR_ASSERT(grpc_cq_begin_op(cq, tag)); grpc_timer_init(&alarm->alarm, grpc_timespec_to_millis_round_up(deadline), &alarm->on_alarm); - grpc_exec_ctx_finish(); } void grpc_alarm_cancel(grpc_alarm* alarm, void* reserved) { ExecCtx _local_exec_ctx; grpc_timer_cancel(&alarm->alarm); - grpc_exec_ctx_finish(); } void grpc_alarm_destroy(grpc_alarm* alarm, void* reserved) { diff --git a/src/core/lib/surface/byte_buffer.cc b/src/core/lib/surface/byte_buffer.cc index f3c10797f3a..6a9b13bb416 100644 --- a/src/core/lib/surface/byte_buffer.cc +++ b/src/core/lib/surface/byte_buffer.cc @@ -78,7 +78,6 @@ void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) { break; } gpr_free(bb); - grpc_exec_ctx_finish(); } size_t grpc_byte_buffer_length(grpc_byte_buffer* bb) { diff --git a/src/core/lib/surface/byte_buffer_reader.cc b/src/core/lib/surface/byte_buffer_reader.cc index fb66829baaf..9a9e26ecdc8 100644 --- a/src/core/lib/surface/byte_buffer_reader.cc +++ b/src/core/lib/surface/byte_buffer_reader.cc @@ -70,7 +70,7 @@ int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, reader->current.index = 0; break; } - grpc_exec_ctx_finish(); + return 1; } @@ -118,6 +118,6 @@ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader) { grpc_slice_unref_internal(in_slice); GPR_ASSERT(bytes_read <= input_size); } - grpc_exec_ctx_finish(); + return out_slice; } diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc index 5e1c0badd0b..bbb7a39e294 100644 --- a/src/core/lib/surface/call.cc +++ b/src/core/lib/surface/call.cc @@ -595,7 +595,7 @@ void grpc_call_unref(grpc_call* c) { grpc_call_combiner_set_notify_on_cancel(&c->call_combiner, NULL); } GRPC_CALL_INTERNAL_UNREF(c, "destroy"); - grpc_exec_ctx_finish(); + GPR_TIMER_END("grpc_call_unref", 0); } @@ -604,7 +604,7 @@ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) { GPR_ASSERT(!reserved); ExecCtx _local_exec_ctx; cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); - grpc_exec_ctx_finish(); + return GRPC_CALL_OK; } @@ -659,7 +659,7 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c, 4, (c, (int)status, description, reserved)); GPR_ASSERT(reserved == NULL); cancel_with_status(c, STATUS_FROM_API_OVERRIDE, status, description); - grpc_exec_ctx_finish(); + return GRPC_CALL_OK; } @@ -2048,7 +2048,6 @@ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops, err = call_start_batch(call, ops, nops, tag, 0); } - grpc_exec_ctx_finish(); return err; } diff --git a/src/core/lib/surface/call_details.cc b/src/core/lib/surface/call_details.cc index 01b19abefbd..03ce7f88fbc 100644 --- a/src/core/lib/surface/call_details.cc +++ b/src/core/lib/surface/call_details.cc @@ -37,5 +37,4 @@ void grpc_call_details_destroy(grpc_call_details* cd) { ExecCtx _local_exec_ctx; grpc_slice_unref_internal(cd->method); grpc_slice_unref_internal(cd->host); - grpc_exec_ctx_finish(); } diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index dc1fc1632e2..7725351f74e 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -252,7 +252,6 @@ void grpc_channel_get_info(grpc_channel* channel, grpc_channel_element* elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0); elem->filter->get_channel_info(elem, channel_info); - grpc_exec_ctx_finish(); } static grpc_call* grpc_channel_create_call_internal( @@ -305,7 +304,7 @@ grpc_call* grpc_channel_create_call(grpc_channel* channel, grpc_slice_ref_internal(*host)) : GRPC_MDNULL, grpc_timespec_to_millis_round_up(deadline)); - grpc_exec_ctx_finish(); + return call; } @@ -344,7 +343,7 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method, rc->next = channel->registered_calls; channel->registered_calls = rc; gpr_mu_unlock(&channel->registered_call_mu); - grpc_exec_ctx_finish(); + return rc; } @@ -370,7 +369,7 @@ grpc_call* grpc_channel_create_registered_call( channel, parent_call, propagation_mask, completion_queue, NULL, GRPC_MDELEM_REF(rc->path), GRPC_MDELEM_REF(rc->authority), grpc_timespec_to_millis_round_up(deadline)); - grpc_exec_ctx_finish(); + return call; } @@ -416,8 +415,6 @@ void grpc_channel_destroy(grpc_channel* channel) { elem->filter->start_transport_op(elem, op); GRPC_CHANNEL_INTERNAL_UNREF(channel, "channel"); - - grpc_exec_ctx_finish(); } grpc_channel_stack* grpc_channel_get_channel_stack(grpc_channel* channel) { diff --git a/src/core/lib/surface/channel_ping.cc b/src/core/lib/surface/channel_ping.cc index 0966a8d9678..06cdbf6c73d 100644 --- a/src/core/lib/surface/channel_ping.cc +++ b/src/core/lib/surface/channel_ping.cc @@ -60,5 +60,4 @@ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq, op->bind_pollset = grpc_cq_pollset(cq); GPR_ASSERT(grpc_cq_begin_op(cq, tag)); top_elem->filter->start_transport_op(top_elem, op); - grpc_exec_ctx_finish(); } diff --git a/src/core/lib/surface/completion_queue.cc b/src/core/lib/surface/completion_queue.cc index b69d40534df..0b0a8d070d5 100644 --- a/src/core/lib/surface/completion_queue.cc +++ b/src/core/lib/surface/completion_queue.cc @@ -124,7 +124,7 @@ static grpc_error* non_polling_poller_work(grpc_pollset* pollset, while (!npp->shutdown && !w.kicked && !gpr_cv_wait(&w.cv, &npp->mu, deadline_ts)) ; - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); if (&w == npp->root) { npp->root = w.next; if (&w == npp->root) { @@ -371,7 +371,6 @@ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq, gpr_mu_unlock(cq->mu); GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down"); } - grpc_exec_ctx_finish(); } gpr_tls_set(&g_cached_event, (intptr_t)0); gpr_tls_set(&g_cached_cq, (intptr_t)0); @@ -412,8 +411,6 @@ static grpc_cq_completion* cq_event_queue_pop(grpc_cq_event_queue* q) { GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES(); } - grpc_exec_ctx_finish(); - if (c) { gpr_atm_no_barrier_fetch_add(&q->num_queue_items, -1); } @@ -445,7 +442,6 @@ grpc_completion_queue* grpc_completion_queue_create_internal( ExecCtx _local_exec_ctx; GRPC_STATS_INC_CQS_CREATED(); - grpc_exec_ctx_finish(); cq = (grpc_completion_queue*)gpr_zalloc(sizeof(grpc_completion_queue) + vtable->data_size + @@ -639,9 +635,9 @@ static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag, error != GRPC_ERROR_NONE)) { const char* errmsg = grpc_error_string(error); GRPC_API_TRACE( - "cq_end_op_for_next(=%p, cq=%p, tag=%p, error=%s, " + "cq_end_op_for_next(cq=%p, tag=%p, error=%s, " "done=%p, done_arg=%p, storage=%p)", - 7, (exec_ctx, cq, tag, errmsg, done, done_arg, storage)); + 6, (cq, tag, errmsg, done, done_arg, storage)); if (GRPC_TRACER_ON(grpc_trace_operation_failures) && error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg); @@ -726,9 +722,9 @@ static void cq_end_op_for_pluck(grpc_completion_queue* cq, void* tag, error != GRPC_ERROR_NONE)) { const char* errmsg = grpc_error_string(error); GRPC_API_TRACE( - "cq_end_op_for_pluck(=%p, cq=%p, tag=%p, error=%s, " + "cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, " "done=%p, done_arg=%p, storage=%p)", - 7, (exec_ctx, cq, tag, errmsg, done, done_arg, storage)); + 6, (cq, tag, errmsg, done, done_arg, storage)); if (GRPC_TRACER_ON(grpc_trace_operation_failures) && error != GRPC_ERROR_NONE) { gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg); @@ -794,31 +790,40 @@ typedef struct { bool first_loop; } cq_is_finished_arg; -static bool cq_is_next_finished(void* arg) { - cq_is_finished_arg* a = (cq_is_finished_arg*)arg; - grpc_completion_queue* cq = a->cq; - cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq); - GPR_ASSERT(a->stolen_completion == NULL); +class ExecCtxNext : public ExecCtx { + public: + ExecCtxNext(void* arg) : ExecCtx(0), check_ready_to_finish_arg_(arg) {} - gpr_atm current_last_seen_things_queued_ever = - gpr_atm_no_barrier_load(&cqd->things_queued_ever); + bool CheckReadyToFinish() override { + cq_is_finished_arg* a = (cq_is_finished_arg*)check_ready_to_finish_arg_; + grpc_completion_queue* cq = a->cq; + cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq); + GPR_ASSERT(a->stolen_completion == NULL); - if (current_last_seen_things_queued_ever != a->last_seen_things_queued_ever) { - a->last_seen_things_queued_ever = + gpr_atm current_last_seen_things_queued_ever = gpr_atm_no_barrier_load(&cqd->things_queued_ever); - /* Pop a cq_completion from the queue. Returns NULL if the queue is empty - * might return NULL in some cases even if the queue is not empty; but - * that - * is ok and doesn't affect correctness. Might effect the tail latencies a - * bit) */ - a->stolen_completion = cq_event_queue_pop(&cqd->queue); - if (a->stolen_completion != NULL) { - return true; + if (current_last_seen_things_queued_ever != + a->last_seen_things_queued_ever) { + a->last_seen_things_queued_ever = + gpr_atm_no_barrier_load(&cqd->things_queued_ever); + + /* Pop a cq_completion from the queue. Returns NULL if the queue is empty + * might return NULL in some cases even if the queue is not empty; but + * that + * is ok and doesn't affect correctness. Might effect the tail latencies a + * bit) */ + a->stolen_completion = cq_event_queue_pop(&cqd->queue); + if (a->stolen_completion != NULL) { + return true; + } } + return !a->first_loop && a->deadline < ExecCtx::Get()->Now(); } - return !a->first_loop && a->deadline < grpc_exec_ctx_now(); -} + + private: + void* check_ready_to_finish_arg_; +}; #ifndef NDEBUG static void dump_pending_tags(grpc_completion_queue* cq) { @@ -873,7 +878,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, NULL, NULL, true}; - ExecCtx _local_exec_ctx(0, cq_is_next_finished, &is_finished_arg); + ExecCtxNext _local_exec_ctx(&is_finished_arg); for (;;) { grpc_millis iteration_deadline = deadline_millis; @@ -923,7 +928,8 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, break; } - if (!is_finished_arg.first_loop && grpc_exec_ctx_now() >= deadline_millis) { + if (!is_finished_arg.first_loop && + ExecCtx::Get()->Now() >= deadline_millis) { memset(&ret, 0, sizeof(ret)); ret.type = GRPC_QUEUE_TIMEOUT; dump_pending_tags(cq); @@ -959,7 +965,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret); GRPC_CQ_INTERNAL_UNREF(cq, "next"); - grpc_exec_ctx_finish(); + GPR_ASSERT(is_finished_arg.stolen_completion == NULL); GPR_TIMER_END("grpc_completion_queue_next", 0); @@ -1039,37 +1045,46 @@ static void del_plucker(grpc_completion_queue* cq, void* tag, GPR_UNREACHABLE_CODE(return ); } -static bool cq_is_pluck_finished(void* arg) { - cq_is_finished_arg* a = (cq_is_finished_arg*)arg; - grpc_completion_queue* cq = a->cq; - cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq); +class ExecCtxPluck : public ExecCtx { + public: + ExecCtxPluck(void* arg) : ExecCtx(0), check_ready_to_finish_arg_(arg) {} - GPR_ASSERT(a->stolen_completion == NULL); - gpr_atm current_last_seen_things_queued_ever = - gpr_atm_no_barrier_load(&cqd->things_queued_ever); - if (current_last_seen_things_queued_ever != a->last_seen_things_queued_ever) { - gpr_mu_lock(cq->mu); - a->last_seen_things_queued_ever = + bool CheckReadyToFinish() override { + cq_is_finished_arg* a = (cq_is_finished_arg*)check_ready_to_finish_arg_; + grpc_completion_queue* cq = a->cq; + cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq); + + GPR_ASSERT(a->stolen_completion == NULL); + gpr_atm current_last_seen_things_queued_ever = gpr_atm_no_barrier_load(&cqd->things_queued_ever); - grpc_cq_completion* c; - grpc_cq_completion* prev = &cqd->completed_head; - while ((c = (grpc_cq_completion*)(prev->next & ~(uintptr_t)1)) != - &cqd->completed_head) { - if (c->tag == a->tag) { - prev->next = (prev->next & (uintptr_t)1) | (c->next & ~(uintptr_t)1); - if (c == cqd->completed_tail) { - cqd->completed_tail = prev; + if (current_last_seen_things_queued_ever != + a->last_seen_things_queued_ever) { + gpr_mu_lock(cq->mu); + a->last_seen_things_queued_ever = + gpr_atm_no_barrier_load(&cqd->things_queued_ever); + grpc_cq_completion* c; + grpc_cq_completion* prev = &cqd->completed_head; + while ((c = (grpc_cq_completion*)(prev->next & ~(uintptr_t)1)) != + &cqd->completed_head) { + if (c->tag == a->tag) { + prev->next = (prev->next & (uintptr_t)1) | (c->next & ~(uintptr_t)1); + if (c == cqd->completed_tail) { + cqd->completed_tail = prev; + } + gpr_mu_unlock(cq->mu); + a->stolen_completion = c; + return true; } - gpr_mu_unlock(cq->mu); - a->stolen_completion = c; - return true; + prev = c; } - prev = c; + gpr_mu_unlock(cq->mu); } - gpr_mu_unlock(cq->mu); + return !a->first_loop && a->deadline < ExecCtx::Get()->Now(); } - return !a->first_loop && a->deadline < grpc_exec_ctx_now(); -} + + private: + void* check_ready_to_finish_arg_; +}; static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, gpr_timespec deadline, void* reserved) { @@ -1106,7 +1121,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, NULL, tag, true}; - ExecCtx _local_exec_ctx(0, cq_is_pluck_finished, &is_finished_arg); + ExecCtxPluck _local_exec_ctx(&is_finished_arg); for (;;) { if (is_finished_arg.stolen_completion != NULL) { gpr_mu_unlock(cq->mu); @@ -1153,7 +1168,8 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, dump_pending_tags(cq); break; } - if (!is_finished_arg.first_loop && grpc_exec_ctx_now() >= deadline_millis) { + if (!is_finished_arg.first_loop && + ExecCtx::Get()->Now() >= deadline_millis) { del_plucker(cq, tag, &worker); gpr_mu_unlock(cq->mu); memset(&ret, 0, sizeof(ret)); @@ -1182,7 +1198,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, done: GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret); GRPC_CQ_INTERNAL_UNREF(cq, "pluck"); - grpc_exec_ctx_finish(); + GPR_ASSERT(is_finished_arg.stolen_completion == NULL); GPR_TIMER_END("grpc_completion_queue_pluck", 0); @@ -1238,7 +1254,7 @@ void grpc_completion_queue_shutdown(grpc_completion_queue* cq) { GPR_TIMER_BEGIN("grpc_completion_queue_shutdown", 0); GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq)); cq->vtable->shutdown(cq); - grpc_exec_ctx_finish(); + GPR_TIMER_END("grpc_completion_queue_shutdown", 0); } @@ -1249,7 +1265,7 @@ void grpc_completion_queue_destroy(grpc_completion_queue* cq) { ExecCtx _local_exec_ctx; GRPC_CQ_INTERNAL_UNREF(cq, "destroy"); - grpc_exec_ctx_finish(); + GPR_TIMER_END("grpc_completion_queue_destroy", 0); } diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 66c8c3b6dad..20e17a7f60b 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -168,14 +168,14 @@ void grpc_init(void) { grpc_iomgr_start(); } gpr_mu_unlock(&g_init_mu); - grpc_exec_ctx_finish(); + GRPC_API_TRACE("grpc_init(void)", 0, ()); } void grpc_shutdown(void) { int i; GRPC_API_TRACE("grpc_shutdown(void)", 0, ()); - ExecCtx _local_exec_ctx(0, grpc_never_ready_to_finish, NULL); + ExecCtx _local_exec_ctx; gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { grpc_executor_shutdown(); @@ -194,7 +194,6 @@ void grpc_shutdown(void) { grpc_stats_shutdown(); } gpr_mu_unlock(&g_init_mu); - grpc_exec_ctx_finish(); } int grpc_is_initialized(void) { diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index 5cd8c1fd899..da081e68cbd 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -169,6 +169,6 @@ grpc_channel* grpc_lame_client_channel_create(const char* target, auto chand = reinterpret_cast<grpc_core::ChannelData*>(elem->channel_data); chand->error_code = error_code; chand->error_message = error_message; - grpc_exec_ctx_finish(); + return channel; } diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc index 6e3ce005a21..0d4435d5563 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/lib/surface/server.cc @@ -1047,8 +1047,6 @@ void grpc_server_start(grpc_server* server) { GRPC_CLOSURE_CREATE(start_listeners, server, grpc_executor_scheduler(GRPC_EXECUTOR_SHORT)), GRPC_ERROR_NONE); - - grpc_exec_ctx_finish(); } void grpc_server_get_pollsets(grpc_server* server, grpc_pollset*** pollsets, @@ -1188,7 +1186,7 @@ void grpc_server_shutdown_and_notify(grpc_server* server, grpc_cq_end_op(cq, tag, GRPC_ERROR_NONE, done_published_shutdown, NULL, (grpc_cq_completion*)gpr_malloc(sizeof(grpc_cq_completion))); gpr_mu_unlock(&server->mu_global); - goto done; + return; } server->shutdown_tags = (shutdown_tag*)gpr_realloc( server->shutdown_tags, @@ -1198,7 +1196,7 @@ void grpc_server_shutdown_and_notify(grpc_server* server, sdt->cq = cq; if (gpr_atm_acq_load(&server->shutdown_flag)) { gpr_mu_unlock(&server->mu_global); - goto done; + return; } server->last_shutdown_message_time = gpr_now(GPR_CLOCK_REALTIME); @@ -1225,9 +1223,6 @@ void grpc_server_shutdown_and_notify(grpc_server* server, channel_broadcaster_shutdown(&broadcaster, true /* send_goaway */, GRPC_ERROR_NONE); - -done: - grpc_exec_ctx_finish(); } void grpc_server_cancel_all_calls(grpc_server* server) { @@ -1243,7 +1238,6 @@ void grpc_server_cancel_all_calls(grpc_server* server) { channel_broadcaster_shutdown( &broadcaster, false /* send_goaway */, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls")); - grpc_exec_ctx_finish(); } void grpc_server_destroy(grpc_server* server) { @@ -1265,7 +1259,6 @@ void grpc_server_destroy(grpc_server* server) { gpr_mu_unlock(&server->mu_global); server_unref(server); - grpc_exec_ctx_finish(); } void grpc_server_add_listener(grpc_server* server, void* arg, @@ -1368,7 +1361,7 @@ grpc_call_error grpc_server_request_call( rc->initial_metadata = initial_metadata; error = queue_call_request(server, cq_idx, rc); done: - grpc_exec_ctx_finish(); + return error; } @@ -1425,7 +1418,7 @@ grpc_call_error grpc_server_request_registered_call( rc->data.registered.optional_payload = optional_payload; error = queue_call_request(server, cq_idx, rc); done: - grpc_exec_ctx_finish(); + return error; } diff --git a/src/core/lib/transport/bdp_estimator.cc b/src/core/lib/transport/bdp_estimator.cc index 47d65870d1a..4e279b4d94a 100644 --- a/src/core/lib/transport/bdp_estimator.cc +++ b/src/core/lib/transport/bdp_estimator.cc @@ -79,7 +79,7 @@ grpc_millis BdpEstimator::CompletePing() { } ping_state_ = PingState::UNSCHEDULED; accumulator_ = 0; - return grpc_exec_ctx_now() + inter_ping_delay_; + return ExecCtx::Get()->Now() + inter_ping_delay_; } } // namespace grpc_core diff --git a/src/core/lib/transport/status_conversion.cc b/src/core/lib/transport/status_conversion.cc index fd7764f2dba..61470b8c784 100644 --- a/src/core/lib/transport/status_conversion.cc +++ b/src/core/lib/transport/status_conversion.cc @@ -46,8 +46,8 @@ grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error, case GRPC_HTTP2_CANCEL: /* http2 cancel translates to STATUS_CANCELLED iff deadline hasn't been * exceeded */ - return grpc_exec_ctx_now() > deadline ? GRPC_STATUS_DEADLINE_EXCEEDED - : GRPC_STATUS_CANCELLED; + return ExecCtx::Get()->Now() > deadline ? GRPC_STATUS_DEADLINE_EXCEEDED + : GRPC_STATUS_CANCELLED; case GRPC_HTTP2_ENHANCE_YOUR_CALM: return GRPC_STATUS_RESOURCE_EXHAUSTED; case GRPC_HTTP2_INADEQUATE_SECURITY: diff --git a/src/core/lib/transport/transport.cc b/src/core/lib/transport/transport.cc index 6f31bd07f97..ca80a7404d3 100644 --- a/src/core/lib/transport/transport.cc +++ b/src/core/lib/transport/transport.cc @@ -62,7 +62,7 @@ void grpc_stream_unref(grpc_stream_refcount* refcount, const char* reason) { void grpc_stream_unref(grpc_stream_refcount* refcount) { #endif if (gpr_unref(&refcount->refs)) { - if (exec_ctx->flags & GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP) { + if (ExecCtx::Get()->flags() & GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP) { /* Ick. The thread we're running on MAY be owned (indirectly) by a call-stack. If that's the case, destroying the call-stack MAY try to destroy the diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc index 79e4aee4e29..0bcfac28459 100644 --- a/src/cpp/common/channel_arguments.cc +++ b/src/cpp/common/channel_arguments.cc @@ -73,7 +73,6 @@ ChannelArguments::~ChannelArguments() { it->value.pointer.vtable->destroy(it->value.pointer.p); } } - grpc_exec_ctx_finish(); } void ChannelArguments::Swap(ChannelArguments& other) { @@ -106,7 +105,7 @@ void ChannelArguments::SetSocketMutator(grpc_socket_mutator* mutator) { replaced = true; } } - grpc_exec_ctx_finish(); + if (!replaced) { args_.push_back(mutator_arg); } diff --git a/test/core/backoff/backoff_test.cc b/test/core/backoff/backoff_test.cc index 4e32298da40..739ab86bb23 100644 --- a/test/core/backoff/backoff_test.cc +++ b/test/core/backoff/backoff_test.cc @@ -34,19 +34,18 @@ static void test_constant_backoff(void) { min_connect_timeout, max_backoff); ExecCtx _local_exec_ctx; grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); - GPR_ASSERT(next_deadlines.current_deadline - grpc_exec_ctx_now() == + GPR_ASSERT(next_deadlines.current_deadline - ExecCtx::Get()->Now() == initial_backoff); - GPR_ASSERT(next_deadlines.next_attempt_start_time - grpc_exec_ctx_now() == + GPR_ASSERT(next_deadlines.next_attempt_start_time - ExecCtx::Get()->Now() == initial_backoff); for (int i = 0; i < 10000; i++) { next_deadlines = grpc_backoff_step(&backoff); - GPR_ASSERT(next_deadlines.current_deadline - grpc_exec_ctx_now() == + GPR_ASSERT(next_deadlines.current_deadline - ExecCtx::Get()->Now() == initial_backoff); - GPR_ASSERT(next_deadlines.next_attempt_start_time - grpc_exec_ctx_now() == + GPR_ASSERT(next_deadlines.next_attempt_start_time - ExecCtx::Get()->Now() == initial_backoff); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); } - grpc_exec_ctx_finish(); } static void test_min_connect(void) { @@ -62,13 +61,12 @@ static void test_min_connect(void) { grpc_backoff_result next = grpc_backoff_begin(&backoff); // Because the min_connect_timeout > initial_backoff, current_deadline is used // as the deadline for the current attempt. - GPR_ASSERT(next.current_deadline - grpc_exec_ctx_now() == + GPR_ASSERT(next.current_deadline - ExecCtx::Get()->Now() == min_connect_timeout); // ... while, if the current attempt fails, the next one will happen after // initial_backoff. - GPR_ASSERT(next.next_attempt_start_time - grpc_exec_ctx_now() == + GPR_ASSERT(next.next_attempt_start_time - ExecCtx::Get()->Now() == initial_backoff); - grpc_exec_ctx_finish(); } static void test_no_jitter_backoff(void) { @@ -83,48 +81,46 @@ static void test_no_jitter_backoff(void) { // x_1 = 2 // x_n = 2**i + x_{i-1} ( = 2**(n+1) - 2 ) ExecCtx _local_exec_ctx; - exec_ctx->now = 0; - exec_ctx->now_is_valid = true; + ExecCtx::Get()->SetNow(0); grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); GPR_ASSERT(next_deadlines.current_deadline == next_deadlines.next_attempt_start_time); GPR_ASSERT(next_deadlines.current_deadline == 2); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 6); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 14); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 30); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 62); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 126); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 254); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 510); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 1022); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); // Hit the maximum timeout. From this point onwards, retries will increase // only by max timeout. GPR_ASSERT(next_deadlines.current_deadline == 1535); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 2048); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 2561); - grpc_exec_ctx_finish(); } static void test_jitter_backoff(void) { @@ -142,9 +138,9 @@ static void test_jitter_backoff(void) { ExecCtx _local_exec_ctx; grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); - GPR_ASSERT(next_deadlines.current_deadline - grpc_exec_ctx_now() == + GPR_ASSERT(next_deadlines.current_deadline - ExecCtx::Get()->Now() == initial_backoff); - GPR_ASSERT(next_deadlines.next_attempt_start_time - grpc_exec_ctx_now() == + GPR_ASSERT(next_deadlines.next_attempt_start_time - ExecCtx::Get()->Now() == initial_backoff); grpc_millis expected_next_lower_bound = @@ -157,7 +153,7 @@ static void test_jitter_backoff(void) { // next-now must be within (jitter*100)% of the current backoff (which // increases by * multiplier up to max_backoff). const grpc_millis timeout_millis = - next_deadlines.current_deadline - grpc_exec_ctx_now(); + next_deadlines.current_deadline - ExecCtx::Get()->Now(); GPR_ASSERT(timeout_millis >= expected_next_lower_bound); GPR_ASSERT(timeout_millis <= expected_next_upper_bound); current_backoff = GPR_MIN( @@ -166,9 +162,8 @@ static void test_jitter_backoff(void) { (grpc_millis)((double)current_backoff * (1 - jitter)); expected_next_upper_bound = (grpc_millis)((double)current_backoff * (1 + jitter)); - exec_ctx->now = next_deadlines.current_deadline; + ExecCtx::Get()->SetNow(next_deadlines.current_deadline); } - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/bad_client/bad_client.cc b/test/core/bad_client/bad_client.cc index c7e074ae6fa..bc9e65089c8 100644 --- a/test/core/bad_client/bad_client.cc +++ b/test/core/bad_client/bad_client.cc @@ -60,7 +60,6 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { ExecCtx _local_exec_ctx; grpc_server_setup_transport(a->server, transport, NULL, grpc_server_get_channel_args(a->server)); - grpc_exec_ctx_finish(); } static void read_done(void* arg, grpc_error* error) { @@ -118,7 +117,6 @@ void grpc_run_bad_client_test( transport = grpc_create_chttp2_transport(NULL, sfd.server, 0); server_setup_transport(&a, transport); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); /* Bind everything into the same pollset */ grpc_endpoint_add_to_pollset(sfd.client, grpc_cq_pollset(a.cq)); @@ -137,7 +135,6 @@ void grpc_run_bad_client_test( /* Write data */ grpc_endpoint_write(sfd.client, &outgoing, &done_write_closure); - grpc_exec_ctx_finish(); /* Await completion, unless the request is large and write may not finish * before the peer shuts down. */ @@ -150,7 +147,7 @@ void grpc_run_bad_client_test( grpc_endpoint_shutdown( sfd.client, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Disconnect")); grpc_endpoint_destroy(sfd.client); - grpc_exec_ctx_finish(); + sfd.client = NULL; } @@ -170,7 +167,7 @@ void grpc_run_bad_client_test( GRPC_CLOSURE_INIT(&read_done_closure, read_done, &read_done_event, grpc_schedule_on_exec_ctx); grpc_endpoint_read(sfd.client, &incoming, &read_done_closure); - grpc_exec_ctx_finish(); + do { GPR_ASSERT(gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) > 0); GPR_ASSERT(grpc_completion_queue_next( @@ -188,7 +185,6 @@ void grpc_run_bad_client_test( grpc_endpoint_shutdown( sfd.client, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); grpc_endpoint_destroy(sfd.client); - grpc_exec_ctx_finish(); } GPR_ASSERT( @@ -203,6 +199,5 @@ void grpc_run_bad_client_test( grpc_completion_queue_destroy(a.cq); grpc_slice_buffer_destroy_internal(&outgoing); - grpc_exec_ctx_finish(); grpc_shutdown(); } diff --git a/test/core/channel/channel_args_test.cc b/test/core/channel/channel_args_test.cc index 03b1cbf2653..f0393b0f400 100644 --- a/test/core/channel/channel_args_test.cc +++ b/test/core/channel/channel_args_test.cc @@ -56,7 +56,6 @@ static void test_create(void) { 0); grpc_channel_args_destroy(ch_args); - grpc_exec_ctx_finish(); } static void test_set_compression_algorithm(void) { @@ -71,7 +70,6 @@ static void test_set_compression_algorithm(void) { GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_INTEGER); grpc_channel_args_destroy(ch_args); - grpc_exec_ctx_finish(); } static void test_compression_algorithm_states(void) { @@ -123,7 +121,6 @@ static void test_compression_algorithm_states(void) { } grpc_channel_args_destroy(ch_args); - grpc_exec_ctx_finish(); } static void test_set_socket_mutator(void) { @@ -139,7 +136,6 @@ static void test_set_socket_mutator(void) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(ch_args); - grpc_exec_ctx_finish(); } } diff --git a/test/core/channel/channel_stack_test.cc b/test/core/channel/channel_stack_test.cc index 04337589055..66ee2948b1c 100644 --- a/test/core/channel/channel_stack_test.cc +++ b/test/core/channel/channel_stack_test.cc @@ -138,13 +138,12 @@ static void test_create_channel_stack(void) { GPR_ASSERT(*channel_data == 1); GRPC_CALL_STACK_UNREF(call_stack, "done"); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(*channel_data == 2); GRPC_CHANNEL_STACK_UNREF(channel_stack, "done"); grpc_slice_unref_internal(path); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/channel/minimal_stack_is_minimal_test.cc b/test/core/channel/minimal_stack_is_minimal_test.cc index f35557324f2..dd3c70a261c 100644 --- a/test/core/channel/minimal_stack_is_minimal_test.cc +++ b/test/core/channel/minimal_stack_is_minimal_test.cc @@ -128,7 +128,6 @@ static int check_stack(const char* file, int line, const char* transport_name, grpc_channel_stack_builder_set_channel_arguments(builder, channel_args); GPR_ASSERT(grpc_channel_init_create_stack( builder, (grpc_channel_stack_type)channel_stack_type)); - grpc_exec_ctx_finish(); } // build up our expectation list @@ -213,7 +212,6 @@ static int check_stack(const char* file, int line, const char* transport_name, ExecCtx _local_exec_ctx; grpc_channel_stack_builder_destroy(builder); grpc_channel_args_destroy(channel_args); - grpc_exec_ctx_finish(); } return result; diff --git a/test/core/client_channel/lb_policies_test.cc b/test/core/client_channel/lb_policies_test.cc index aabe8dea3ca..5b412cc6229 100644 --- a/test/core/client_channel/lb_policies_test.cc +++ b/test/core/client_channel/lb_policies_test.cc @@ -653,7 +653,6 @@ static void test_get_channel_info() { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } // Ensures that resolver returns. grpc_channel_check_connectivity_state(channel, true /* try_to_connect */); @@ -1025,7 +1024,6 @@ int main(int argc, char** argv) { test_ping(); test_get_channel_info(); - grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/client_channel/parse_address_test.cc b/test/core/client_channel/parse_address_test.cc index 17725ba5ff1..597a1212c14 100644 --- a/test/core/client_channel/parse_address_test.cc +++ b/test/core/client_channel/parse_address_test.cc @@ -43,7 +43,6 @@ static void test_grpc_parse_unix(const char* uri_text, const char* pathname) { GPR_ASSERT(0 == strcmp(addr_un->sun_path, pathname)); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(); } #else /* GRPC_HAVE_UNIX_SOCKET */ @@ -68,7 +67,6 @@ static void test_grpc_parse_ipv4(const char* uri_text, const char* host, GPR_ASSERT(ntohs(addr_in->sin_port) == port); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(); } static void test_grpc_parse_ipv6(const char* uri_text, const char* host, @@ -88,7 +86,6 @@ static void test_grpc_parse_ipv6(const char* uri_text, const char* host, GPR_ASSERT(addr_in6->sin6_scope_id == scope_id); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc index e2823a45019..c7a0e029f22 100644 --- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc @@ -106,7 +106,6 @@ static bool wait_loop(int deadline_seconds, gpr_event* ev) { ExecCtx _local_exec_ctx; grpc_timer_check(NULL); - grpc_exec_ctx_finish(); } return false; } @@ -154,7 +153,7 @@ int main(int argc, char** argv) { call_resolver_next_after_locking( resolver, &result, GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(wait_loop(5, &ev1)); GPR_ASSERT(result == NULL); @@ -163,14 +162,13 @@ int main(int argc, char** argv) { call_resolver_next_after_locking( resolver, &result, GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(wait_loop(30, &ev2)); GPR_ASSERT(result != NULL); grpc_channel_args_destroy(result); GRPC_RESOLVER_UNREF(resolver, "test"); GRPC_COMBINER_UNREF(g_combiner, "test"); - grpc_exec_ctx_finish(); grpc_shutdown(); gpr_mu_destroy(&g_mu); diff --git a/test/core/client_channel/resolvers/dns_resolver_test.cc b/test/core/client_channel/resolvers/dns_resolver_test.cc index 8b403602635..33916b59ec8 100644 --- a/test/core/client_channel/resolvers/dns_resolver_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_test.cc @@ -42,7 +42,6 @@ static void test_succeeds(grpc_resolver_factory* factory, const char* string) { GPR_ASSERT(resolver != NULL); GRPC_RESOLVER_UNREF(resolver, "test_succeeds"); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(); } static void test_fails(grpc_resolver_factory* factory, const char* string) { @@ -59,7 +58,6 @@ static void test_fails(grpc_resolver_factory* factory, const char* string) { resolver = grpc_resolver_factory_create_resolver(factory, &args); GPR_ASSERT(resolver == NULL); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { @@ -84,7 +82,6 @@ int main(int argc, char** argv) { { ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(g_combiner, "test"); - grpc_exec_ctx_finish(); } grpc_shutdown(); diff --git a/test/core/client_channel/resolvers/fake_resolver_test.cc b/test/core/client_channel/resolvers/fake_resolver_test.cc index ec49558f872..9a1971561cf 100644 --- a/test/core/client_channel/resolvers/fake_resolver_test.cc +++ b/test/core/client_channel/resolvers/fake_resolver_test.cc @@ -109,7 +109,7 @@ static void test_fake_resolver() { results); grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg.ev, grpc_timeout_seconds_to_deadline(5)) != NULL); @@ -144,7 +144,7 @@ static void test_fake_resolver() { results_update); grpc_resolver_next_locked(resolver, &on_res_arg_update.resolver_result, on_resolution); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg_update.ev, grpc_timeout_seconds_to_deadline(5)) != NULL); @@ -153,14 +153,14 @@ static void test_fake_resolver() { memset(&on_res_arg, 0, sizeof(on_res_arg)); grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg.ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); GRPC_COMBINER_UNREF(combiner, "test_fake_resolver"); GRPC_RESOLVER_UNREF(resolver, "test_fake_resolver"); - grpc_exec_ctx_finish(); + grpc_fake_resolver_response_generator_unref(response_generator); } diff --git a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc index dbc8a965d5f..70b3cbf5b75 100644 --- a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc +++ b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc @@ -63,7 +63,7 @@ static void test_succeeds(grpc_resolver_factory* factory, const char* string) { grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); GRPC_RESOLVER_UNREF(resolver, "test_succeeds"); - grpc_exec_ctx_finish(); + grpc_uri_destroy(uri); } @@ -81,7 +81,6 @@ static void test_fails(grpc_resolver_factory* factory, const char* string) { resolver = grpc_resolver_factory_create_resolver(factory, &args); GPR_ASSERT(resolver == NULL); grpc_uri_destroy(uri); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { @@ -114,7 +113,6 @@ int main(int argc, char** argv) { { ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(g_combiner, "test"); - grpc_exec_ctx_finish(); } grpc_shutdown(); diff --git a/test/core/client_channel/uri_fuzzer_test.cc b/test/core/client_channel/uri_fuzzer_test.cc index 805becad188..6c1e8cb137c 100644 --- a/test/core/client_channel/uri_fuzzer_test.cc +++ b/test/core/client_channel/uri_fuzzer_test.cc @@ -38,7 +38,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if ((x = grpc_uri_parse(s, 1))) { grpc_uri_destroy(x); } - grpc_exec_ctx_finish(); + gpr_free(s); return 0; } diff --git a/test/core/client_channel/uri_parser_test.cc b/test/core/client_channel/uri_parser_test.cc index 591c642f4e7..024c30faee0 100644 --- a/test/core/client_channel/uri_parser_test.cc +++ b/test/core/client_channel/uri_parser_test.cc @@ -36,14 +36,13 @@ static void test_succeeds(const char* uri_text, const char* scheme, GPR_ASSERT(0 == strcmp(path, uri->path)); GPR_ASSERT(0 == strcmp(query, uri->query)); GPR_ASSERT(0 == strcmp(fragment, uri->fragment)); - grpc_exec_ctx_finish(); + grpc_uri_destroy(uri); } static void test_fails(const char* uri_text) { ExecCtx _local_exec_ctx; GPR_ASSERT(NULL == grpc_uri_parse(uri_text, 0)); - grpc_exec_ctx_finish(); } static void test_query_parts() { @@ -77,7 +76,7 @@ static void test_query_parts() { GPR_ASSERT(NULL == grpc_uri_get_query_arg(uri, "")); GPR_ASSERT(0 == strcmp("frag", uri->fragment)); - grpc_exec_ctx_finish(); + grpc_uri_destroy(uri); } { @@ -96,7 +95,6 @@ static void test_query_parts() { GPR_ASSERT(0 == strcmp("bar", grpc_uri_get_query_arg(uri, "foo"))); GPR_ASSERT(0 == strcmp("", grpc_uri_get_query_arg(uri, "foobar"))); - grpc_exec_ctx_finish(); grpc_uri_destroy(uri); } { @@ -114,7 +112,7 @@ static void test_query_parts() { GPR_ASSERT(NULL == uri->query_parts); GPR_ASSERT(NULL == uri->query_parts_values); GPR_ASSERT(0 == strcmp("", uri->fragment)); - grpc_exec_ctx_finish(); + grpc_uri_destroy(uri); } } diff --git a/test/core/compression/algorithm_test.cc b/test/core/compression/algorithm_test.cc index dea8e330306..9ae6363d97f 100644 --- a/test/core/compression/algorithm_test.cc +++ b/test/core/compression/algorithm_test.cc @@ -53,7 +53,6 @@ static void test_algorithm_mesh(void) { GPR_ASSERT(grpc_slice_eq(GRPC_MDKEY(mdelem), GRPC_MDSTR_GRPC_ENCODING)); grpc_slice_unref_internal(mdstr); GRPC_MDELEM_UNREF(mdelem); - grpc_exec_ctx_finish(); } /* test failure */ @@ -84,7 +83,6 @@ static void test_algorithm_failure(void) { static_cast<int>(GRPC_COMPRESS_ALGORITHMS_COUNT) + 1)), grpc_empty_slice())); grpc_slice_unref_internal(mdstr); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/compression/message_compress_test.cc b/test/core/compression/message_compress_test.cc index d642e056d8d..a5dfdc884fc 100644 --- a/test/core/compression/message_compress_test.cc +++ b/test/core/compression/message_compress_test.cc @@ -72,7 +72,6 @@ static void assert_passthrough(grpc_slice value, { ExecCtx _local_exec_ctx; was_compressed = grpc_msg_compress(algorithm, &input, &compressed_raw); - grpc_exec_ctx_finish(); } GPR_ASSERT(input.count > 0); @@ -94,7 +93,6 @@ static void assert_passthrough(grpc_slice value, ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_msg_decompress( was_compressed ? algorithm : GRPC_COMPRESS_NONE, &compressed, &output)); - grpc_exec_ctx_finish(); } final = grpc_slice_merge(output.slices, output.count); @@ -158,7 +156,7 @@ static void test_tiny_data_compress(void) { GPR_ASSERT(0 == grpc_msg_compress(static_cast<grpc_compression_algorithm>(i), &input, &output)); - grpc_exec_ctx_finish(); + GPR_ASSERT(1 == output.count); } @@ -189,7 +187,6 @@ static void test_bad_decompression_data_crc(void) { /* try (and fail) to decompress the corrupted compresed buffer */ GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_GZIP, &corrupted, &output)); - grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&corrupted); @@ -210,7 +207,6 @@ static void test_bad_decompression_data_trailing_garbage(void) { /* try (and fail) to decompress the invalid compresed buffer */ ExecCtx _local_exec_ctx; GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); - grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); @@ -228,7 +224,6 @@ static void test_bad_decompression_data_stream(void) { /* try (and fail) to decompress the invalid compresed buffer */ ExecCtx _local_exec_ctx; GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); - grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); @@ -253,7 +248,6 @@ static void test_bad_compression_algorithm(void) { GRPC_COMPRESS_ALGORITHMS_COUNT + 123), &input, &output); GPR_ASSERT(0 == was_compressed); - grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); @@ -279,7 +273,6 @@ static void test_bad_decompression_algorithm(void) { GRPC_COMPRESS_ALGORITHMS_COUNT + 123), &input, &output); GPR_ASSERT(0 == was_decompressed); - grpc_exec_ctx_finish(); grpc_slice_buffer_destroy(&input); grpc_slice_buffer_destroy(&output); diff --git a/test/core/debug/stats_test.cc b/test/core/debug/stats_test.cc index 8401618670f..c7aaf68dd3e 100644 --- a/test/core/debug/stats_test.cc +++ b/test/core/debug/stats_test.cc @@ -51,7 +51,6 @@ TEST(StatsTest, IncCounters) { ExecCtx _local_exec_ctx; GRPC_STATS_INC_COUNTER((grpc_stats_counters)i); - grpc_exec_ctx_finish(); EXPECT_EQ(snapshot.delta().counters[i], 1); } @@ -62,7 +61,6 @@ TEST(StatsTest, IncSpecificCounter) { ExecCtx _local_exec_ctx; GRPC_STATS_INC_SYSCALL_POLL(); - grpc_exec_ctx_finish(); EXPECT_EQ(snapshot.delta().counters[GRPC_STATS_COUNTER_SYSCALL_POLL], 1); } @@ -96,7 +94,6 @@ TEST_P(HistogramTest, IncHistogram) { ExecCtx _local_exec_ctx; grpc_stats_inc_histogram[kHistogram](j); - grpc_exec_ctx_finish(); auto delta = snapshot.delta(); diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc index 9ae3d3cfbff..5e7e12643e2 100644 --- a/test/core/end2end/bad_server_response_test.cc +++ b/test/core/end2end/bad_server_response_test.cc @@ -290,7 +290,7 @@ static void run_test(const char* response_payload, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); grpc_endpoint_destroy(state.tcp); cleanup_rpc(); - grpc_exec_ctx_finish(); + test_tcp_server_destroy(&test_server); grpc_shutdown(); diff --git a/test/core/end2end/connection_refused_test.cc b/test/core/end2end/connection_refused_test.cc index 677e3151129..1372c5a7463 100644 --- a/test/core/end2end/connection_refused_test.cc +++ b/test/core/end2end/connection_refused_test.cc @@ -133,7 +133,6 @@ static void run_test(bool wait_for_ready, bool use_service_config) { { ExecCtx _local_exec_ctx; if (args != NULL) grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } grpc_shutdown(); diff --git a/test/core/end2end/fixtures/h2_census.cc b/test/core/end2end/fixtures/h2_census.cc index c3c3e961e7b..a43d963c54e 100644 --- a/test/core/end2end/fixtures/h2_census.cc +++ b/test/core/end2end/fixtures/h2_census.cc @@ -76,7 +76,6 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f, { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); - grpc_exec_ctx_finish(); } } @@ -93,7 +92,6 @@ void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f, { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } grpc_server_register_completion_queue(f->server, f->cq, NULL); GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); diff --git a/test/core/end2end/fixtures/h2_compress.cc b/test/core/end2end/fixtures/h2_compress.cc index f520b48fa32..3f9a87d0fcd 100644 --- a/test/core/end2end/fixtures/h2_compress.cc +++ b/test/core/end2end/fixtures/h2_compress.cc @@ -68,7 +68,6 @@ void chttp2_init_client_fullstack_compression(grpc_end2end_test_fixture* f, if (ffd->client_args_compression != NULL) { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(ffd->client_args_compression); - grpc_exec_ctx_finish(); } ffd->client_args_compression = grpc_channel_args_set_compression_algorithm( client_args, GRPC_COMPRESS_GZIP); @@ -83,7 +82,6 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture* f, if (ffd->server_args_compression != NULL) { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(ffd->server_args_compression); - grpc_exec_ctx_finish(); } ffd->server_args_compression = grpc_channel_args_set_compression_algorithm( server_args, GRPC_COMPRESS_GZIP); @@ -104,7 +102,6 @@ void chttp2_tear_down_fullstack_compression(grpc_end2end_test_fixture* f) { grpc_channel_args_destroy(ffd->server_args_compression); gpr_free(ffd->localaddr); gpr_free(ffd); - grpc_exec_ctx_finish(); } /* All test configurations */ diff --git a/test/core/end2end/fixtures/h2_fd.cc b/test/core/end2end/fixtures/h2_fd.cc index 48e1b313fd4..99bced86514 100644 --- a/test/core/end2end/fixtures/h2_fd.cc +++ b/test/core/end2end/fixtures/h2_fd.cc @@ -75,8 +75,6 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, f->client = grpc_insecure_channel_create_from_fd( "fixture_client", sfd->fd_pair[0], client_args); GPR_ASSERT(f->client); - - grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, @@ -90,8 +88,6 @@ static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_server_start(f->server); grpc_server_add_insecure_channel_from_fd(f->server, NULL, sfd->fd_pair[1]); - - grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture* f) { diff --git a/test/core/end2end/fixtures/h2_full+workarounds.cc b/test/core/end2end/fixtures/h2_full+workarounds.cc index 563e1e1ac2d..e98df083f23 100644 --- a/test/core/end2end/fixtures/h2_full+workarounds.cc +++ b/test/core/end2end/fixtures/h2_full+workarounds.cc @@ -90,7 +90,6 @@ void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f, GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); grpc_server_start(f->server); grpc_channel_args_destroy(server_args_new); - grpc_exec_ctx_finish(); } void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) { diff --git a/test/core/end2end/fixtures/h2_load_reporting.cc b/test/core/end2end/fixtures/h2_load_reporting.cc index 74b59833643..84eb9e45139 100644 --- a/test/core/end2end/fixtures/h2_load_reporting.cc +++ b/test/core/end2end/fixtures/h2_load_reporting.cc @@ -79,7 +79,6 @@ void chttp2_init_server_load_reporting(grpc_end2end_test_fixture* f, { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } grpc_server_register_completion_queue(f->server, f->cq, NULL); GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); diff --git a/test/core/end2end/fixtures/h2_oauth2.cc b/test/core/end2end/fixtures/h2_oauth2.cc index 8ff7cb304c0..9ffc5b7b7e0 100644 --- a/test/core/end2end/fixtures/h2_oauth2.cc +++ b/test/core/end2end/fixtures/h2_oauth2.cc @@ -160,7 +160,6 @@ static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_channel_args_destroy(new_client_args); grpc_channel_credentials_release(ssl_creds); grpc_call_credentials_release(oauth2_creds); - grpc_exec_ctx_finish(); } static int fail_server_auth_check(grpc_channel_args* server_args) { diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.cc b/test/core/end2end/fixtures/h2_sockpair+trace.cc index 391de0bd0bd..9e87a229625 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.cc +++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc @@ -55,7 +55,6 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, NULL, grpc_server_get_channel_args(f->server)); - grpc_exec_ctx_finish(); } typedef struct { @@ -98,7 +97,6 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, client_setup_transport(&cs, transport); GPR_ASSERT(f->client); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, @@ -113,7 +111,6 @@ static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, transport = grpc_create_chttp2_transport(server_args, sfd->server, 0); server_setup_transport(f, transport); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture* f) { @@ -143,7 +140,6 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_end2end_tests_pre_init(); grpc_init(); - grpc_exec_ctx_finish(); GPR_ASSERT(0 == grpc_tracer_set_enabled("also-doesnt-exist", 0)); GPR_ASSERT(1 == grpc_tracer_set_enabled("http", 1)); diff --git a/test/core/end2end/fixtures/h2_sockpair.cc b/test/core/end2end/fixtures/h2_sockpair.cc index 4e7eb3dbb8d..fa69ad84cf3 100644 --- a/test/core/end2end/fixtures/h2_sockpair.cc +++ b/test/core/end2end/fixtures/h2_sockpair.cc @@ -49,7 +49,6 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, NULL, grpc_server_get_channel_args(f->server)); - grpc_exec_ctx_finish(); } typedef struct { @@ -92,7 +91,6 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, client_setup_transport(&cs, transport); GPR_ASSERT(f->client); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, @@ -107,7 +105,6 @@ static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, transport = grpc_create_chttp2_transport(server_args, sfd->server, 0); server_setup_transport(f, transport); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture* f) { diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.cc b/test/core/end2end/fixtures/h2_sockpair_1byte.cc index cfa32d4a274..a12d60575bf 100644 --- a/test/core/end2end/fixtures/h2_sockpair_1byte.cc +++ b/test/core/end2end/fixtures/h2_sockpair_1byte.cc @@ -49,7 +49,6 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, NULL, grpc_server_get_channel_args(f->server)); - grpc_exec_ctx_finish(); } typedef struct { @@ -103,7 +102,6 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, client_setup_transport(&cs, transport); GPR_ASSERT(f->client); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, @@ -118,7 +116,6 @@ static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, transport = grpc_create_chttp2_transport(server_args, sfd->server, 0); server_setup_transport(f, transport); grpc_chttp2_transport_start_reading(transport, NULL); - grpc_exec_ctx_finish(); } static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture* f) { diff --git a/test/core/end2end/fixtures/h2_ssl.cc b/test/core/end2end/fixtures/h2_ssl.cc index ac555d9ee8c..c137cec8b9a 100644 --- a/test/core/end2end/fixtures/h2_ssl.cc +++ b/test/core/end2end/fixtures/h2_ssl.cc @@ -112,7 +112,6 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); - grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.cc b/test/core/end2end/fixtures/h2_ssl_proxy.cc index 66c5b167e1d..0c130d6ae1b 100644 --- a/test/core/end2end/fixtures/h2_ssl_proxy.cc +++ b/test/core/end2end/fixtures/h2_ssl_proxy.cc @@ -68,7 +68,6 @@ static grpc_channel* create_proxy_client(const char* target, { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); - grpc_exec_ctx_finish(); } return channel; } @@ -150,7 +149,6 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); - grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/fixtures/http_proxy_fixture.cc b/test/core/end2end/fixtures/http_proxy_fixture.cc index b3ec44d77b0..73a3e2c444e 100644 --- a/test/core/end2end/fixtures/http_proxy_fixture.cc +++ b/test/core/end2end/fixtures/http_proxy_fixture.cc @@ -391,7 +391,7 @@ static void on_read_request_done(void* arg, grpc_error* error) { GPR_ASSERT(resolved_addresses->naddrs >= 1); // Connect to requested address. // The connection callback inherits our reference to conn. - const grpc_millis deadline = grpc_exec_ctx_now() + 10 * GPR_MS_PER_SEC; + const grpc_millis deadline = ExecCtx::Get()->Now() + 10 * GPR_MS_PER_SEC; grpc_tcp_client_connect(&conn->on_server_connect_done, &conn->server_endpoint, conn->pollset_set, NULL, &resolved_addresses->addrs[0], deadline); @@ -449,13 +449,13 @@ static void thread_main(void* arg) { gpr_ref(&proxy->users); grpc_pollset_worker* worker = NULL; gpr_mu_lock(proxy->mu); - GRPC_LOG_IF_ERROR("grpc_pollset_work", - grpc_pollset_work(proxy->pollset, &worker, - grpc_exec_ctx_now() + GPR_MS_PER_SEC)); + GRPC_LOG_IF_ERROR( + "grpc_pollset_work", + grpc_pollset_work(proxy->pollset, &worker, + ExecCtx::Get()->Now() + GPR_MS_PER_SEC)); gpr_mu_unlock(proxy->mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } while (!gpr_unref(&proxy->users)); - grpc_exec_ctx_finish(); } grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( @@ -489,7 +489,7 @@ grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( proxy->pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(proxy->pollset, &proxy->mu); grpc_tcp_server_start(proxy->server, &proxy->pollset, 1, on_accept, proxy); - grpc_exec_ctx_finish(); + // Start proxy thread. gpr_thd_options opt = gpr_thd_options_default(); gpr_thd_options_set_joinable(&opt); @@ -516,7 +516,6 @@ void grpc_end2end_http_proxy_destroy(grpc_end2end_http_proxy* proxy) { grpc_schedule_on_exec_ctx)); GRPC_COMBINER_UNREF(proxy->combiner, "test"); gpr_free(proxy); - grpc_exec_ctx_finish(); } const char* grpc_end2end_http_proxy_get_proxy_name( diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc index 1d6a40c7e32..1d22ba3a42f 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.cc +++ b/test/core/end2end/fuzzers/api_fuzzer.cc @@ -411,7 +411,7 @@ void my_resolve_address(const char* addr, const char* default_port, r->addrs = addresses; r->lb_addrs = NULL; grpc_timer_init( - &r->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(), + &r->timer, GPR_MS_PER_SEC + ExecCtx::Get()->Now(), GRPC_CLOSURE_CREATE(finish_resolve, r, grpc_schedule_on_exec_ctx)); } @@ -428,7 +428,7 @@ grpc_ares_request* my_dns_lookup_ares(const char* dns_server, const char* addr, r->addrs = NULL; r->lb_addrs = lb_addrs; grpc_timer_init( - &r->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(), + &r->timer, GPR_MS_PER_SEC + ExecCtx::Get()->Now(), GRPC_CLOSURE_CREATE(finish_resolve, r, grpc_schedule_on_exec_ctx)); return NULL; } @@ -488,7 +488,7 @@ static void sched_connect(grpc_closure* closure, grpc_endpoint** ep, fc->ep = ep; fc->deadline = deadline; grpc_timer_init( - &fc->timer, GPR_MS_PER_SEC + grpc_exec_ctx_now(), + &fc->timer, GPR_MS_PER_SEC + ExecCtx::Get()->Now(), GRPC_CLOSURE_CREATE(do_connect, fc, grpc_schedule_on_exec_ctx)); } @@ -745,7 +745,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { { ExecCtx _local_exec_ctx; grpc_executor_set_threading(false); - grpc_exec_ctx_finish(); } grpc_resolve_address = my_resolve_address; grpc_dns_lookup_ares = my_dns_lookup_ares; @@ -840,7 +839,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } gpr_free(target_uri); gpr_free(target); @@ -868,7 +866,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } grpc_server_register_completion_queue(g_server, cq, NULL); grpc_server_start(g_server); @@ -1197,7 +1194,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } gpr_free(target_uri); gpr_free(target); diff --git a/test/core/end2end/fuzzers/client_fuzzer.cc b/test/core/end2end/fuzzers/client_fuzzer.cc index 219c42847ee..95ed2fcdac9 100644 --- a/test/core/end2end/fuzzers/client_fuzzer.cc +++ b/test/core/end2end/fuzzers/client_fuzzer.cc @@ -111,7 +111,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_event ev; while (1) { - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); switch (ev.type) { case GRPC_QUEUE_TIMEOUT: diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc index d7295f4c834..21778c0a679 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.cc +++ b/test/core/end2end/fuzzers/server_fuzzer.cc @@ -78,7 +78,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_event ev; while (1) { - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); switch (ev.type) { case GRPC_QUEUE_TIMEOUT: diff --git a/test/core/end2end/h2_ssl_cert_test.cc b/test/core/end2end/h2_ssl_cert_test.cc index 850d6516f29..e0da548a75d 100644 --- a/test/core/end2end/h2_ssl_cert_test.cc +++ b/test/core/end2end/h2_ssl_cert_test.cc @@ -183,7 +183,6 @@ typedef enum { NONE, SELF_SIGNED, SIGNED, BAD_CERT_PAIR } certtype; { \ ExecCtx _local_exec_ctx; \ grpc_channel_args_destroy(new_client_args); \ - grpc_exec_ctx_finish(); \ } \ } diff --git a/test/core/end2end/tests/cancel_after_accept.cc b/test/core/end2end/tests/cancel_after_accept.cc index fcf30f0cc68..ffafb1f1e9b 100644 --- a/test/core/end2end/tests/cancel_after_accept.cc +++ b/test/core/end2end/tests/cancel_after_accept.cc @@ -247,7 +247,6 @@ static void test_cancel_after_accept(grpc_end2end_test_config config, if (args != NULL) { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } cq_verifier_destroy(cqv); diff --git a/test/core/end2end/tests/cancel_after_round_trip.cc b/test/core/end2end/tests/cancel_after_round_trip.cc index b63491c7d21..7e20487f8b9 100644 --- a/test/core/end2end/tests/cancel_after_round_trip.cc +++ b/test/core/end2end/tests/cancel_after_round_trip.cc @@ -279,7 +279,6 @@ static void test_cancel_after_round_trip(grpc_end2end_test_config config, if (args != NULL) { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); - grpc_exec_ctx_finish(); } cq_verifier_destroy(cqv); diff --git a/test/core/end2end/tests/compressed_payload.cc b/test/core/end2end/tests/compressed_payload.cc index a85fdf2662d..f04addbe9e7 100644 --- a/test/core/end2end/tests/compressed_payload.cc +++ b/test/core/end2end/tests/compressed_payload.cc @@ -132,7 +132,6 @@ static void request_for_disabled_algorithm( ExecCtx _local_exec_ctx; server_args = grpc_channel_args_compression_algorithm_set_state( &server_args, algorithm_to_disable, false); - grpc_exec_ctx_finish(); } f = begin_test(config, test_name, client_args, server_args); @@ -260,7 +259,6 @@ static void request_for_disabled_algorithm( ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } end_test(&f); @@ -539,7 +537,6 @@ static void request_with_payload_template( ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } end_test(&f); diff --git a/test/core/end2end/tests/load_reporting_hook.cc b/test/core/end2end/tests/load_reporting_hook.cc index 670610f37f1..6ce22d77c61 100644 --- a/test/core/end2end/tests/load_reporting_hook.cc +++ b/test/core/end2end/tests/load_reporting_hook.cc @@ -302,7 +302,6 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(lr_server_args); - grpc_exec_ctx_finish(); } config.tear_down_data(&f); } diff --git a/test/core/end2end/tests/max_message_length.cc b/test/core/end2end/tests/max_message_length.cc index 0200517de3e..f884d8b11f9 100644 --- a/test/core/end2end/tests/max_message_length.cc +++ b/test/core/end2end/tests/max_message_length.cc @@ -176,7 +176,6 @@ static void test_max_message_length_on_request(grpc_end2end_test_config config, ExecCtx _local_exec_ctx; if (client_args != NULL) grpc_channel_args_destroy(client_args); if (server_args != NULL) grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } cqv = cq_verifier_create(f.cq); @@ -367,7 +366,6 @@ static void test_max_message_length_on_response(grpc_end2end_test_config config, ExecCtx _local_exec_ctx; if (client_args != NULL) grpc_channel_args_destroy(client_args); if (server_args != NULL) grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } cqv = cq_verifier_create(f.cq); diff --git a/test/core/end2end/tests/stream_compression_compressed_payload.cc b/test/core/end2end/tests/stream_compression_compressed_payload.cc index 6100d604d20..cec46305bd3 100644 --- a/test/core/end2end/tests/stream_compression_compressed_payload.cc +++ b/test/core/end2end/tests/stream_compression_compressed_payload.cc @@ -132,7 +132,6 @@ static void request_for_disabled_algorithm( ExecCtx _local_exec_ctx; server_args = grpc_channel_args_stream_compression_algorithm_set_state( &server_args, algorithm_to_disable, false); - grpc_exec_ctx_finish(); } f = begin_test(config, test_name, client_args, server_args); @@ -261,7 +260,6 @@ static void request_for_disabled_algorithm( ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } end_test(&f); @@ -547,7 +545,6 @@ static void request_with_payload_template( ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } end_test(&f); diff --git a/test/core/end2end/tests/stream_compression_payload.cc b/test/core/end2end/tests/stream_compression_payload.cc index 42318ffbc82..c304c990d79 100644 --- a/test/core/end2end/tests/stream_compression_payload.cc +++ b/test/core/end2end/tests/stream_compression_payload.cc @@ -280,7 +280,6 @@ static void test_invoke_request_response_with_payload( ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc index 5fb6a7e46f3..f4b737d7a32 100644 --- a/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc +++ b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc @@ -276,7 +276,6 @@ static void test_pingpong_streaming(grpc_end2end_test_config config, ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } } diff --git a/test/core/end2end/tests/workaround_cronet_compression.cc b/test/core/end2end/tests/workaround_cronet_compression.cc index f38a51a5b77..100f393b8ed 100644 --- a/test/core/end2end/tests/workaround_cronet_compression.cc +++ b/test/core/end2end/tests/workaround_cronet_compression.cc @@ -150,7 +150,6 @@ static void request_with_payload_template( arg.value.string = user_agent_override; client_args = grpc_channel_args_copy_and_add(client_args_old, &arg, 1); grpc_channel_args_destroy(client_args_old); - grpc_exec_ctx_finish(); } f = begin_test(config, test_name, client_args, server_args); @@ -352,7 +351,6 @@ static void request_with_payload_template( ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); - grpc_exec_ctx_finish(); } end_test(&f); diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc index 85e4bc8a0ed..dfa328360d7 100644 --- a/test/core/http/httpcli_test.cc +++ b/test/core/http/httpcli_test.cc @@ -88,7 +88,7 @@ static void test_get(int port) { "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -127,7 +127,7 @@ static void test_post(int port) { "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -196,7 +196,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(grpc_polling_entity_pollset(&g_pops)); diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc index d948bb5e31d..ff082e8367b 100644 --- a/test/core/http/httpscli_test.cc +++ b/test/core/http/httpscli_test.cc @@ -89,7 +89,7 @@ static void test_get(int port) { "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -129,7 +129,7 @@ static void test_post(int port) { "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -199,7 +199,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(grpc_polling_entity_pollset(&g_pops)); diff --git a/test/core/iomgr/combiner_test.cc b/test/core/iomgr/combiner_test.cc index 9fc1890c972..df8d55f1f69 100644 --- a/test/core/iomgr/combiner_test.cc +++ b/test/core/iomgr/combiner_test.cc @@ -30,7 +30,6 @@ static void test_no_op(void) { gpr_log(GPR_DEBUG, "test_no_op"); ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(grpc_combiner_create(), "test_no_op"); - grpc_exec_ctx_finish(); } static void set_event_to_true(void* value, grpc_error* error) { @@ -47,11 +46,10 @@ static void test_execute_one(void) { GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(set_event_to_true, &done, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&done, grpc_timeout_seconds_to_deadline(5)) != NULL); GRPC_COMBINER_UNREF(lock, "test_execute_one"); - grpc_exec_ctx_finish(); } typedef struct { @@ -84,7 +82,7 @@ static void execute_many_loop(void* a) { GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE( check_one, c, grpc_combiner_scheduler(args->lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } // sleep for a little bit, to test a combiner draining and another thread // picking it up @@ -93,7 +91,6 @@ static void execute_many_loop(void* a) { GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(set_event_to_true, &args->done, grpc_combiner_scheduler(args->lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_finish(); } static void test_execute_many(void) { @@ -117,7 +114,6 @@ static void test_execute_many(void) { } ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(lock, "test_execute_many"); - grpc_exec_ctx_finish(); } static gpr_event got_in_finally; @@ -142,11 +138,10 @@ static void test_execute_finally(void) { GRPC_CLOSURE_SCHED( GRPC_CLOSURE_CREATE(add_finally, lock, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&got_in_finally, grpc_timeout_seconds_to_deadline(5)) != NULL); GRPC_COMBINER_UNREF(lock, "test_execute_finally"); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/iomgr/endpoint_pair_test.cc b/test/core/iomgr/endpoint_pair_test.cc index bddeadd3297..72833a8dbe8 100644 --- a/test/core/iomgr/endpoint_pair_test.cc +++ b/test/core/iomgr/endpoint_pair_test.cc @@ -45,7 +45,6 @@ static grpc_endpoint_test_fixture create_fixture_endpoint_pair( f.server_ep = p.server; grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); grpc_endpoint_add_to_pollset(f.server_ep, g_pollset); - grpc_exec_ctx_finish(); return f; } @@ -69,7 +68,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/endpoint_tests.cc b/test/core/iomgr/endpoint_tests.cc index 10e80fc71b4..5c156ef5248 100644 --- a/test/core/iomgr/endpoint_tests.cc +++ b/test/core/iomgr/endpoint_tests.cc @@ -213,7 +213,7 @@ static void read_and_write_test(grpc_endpoint_test_config config, even when bytes_written is unsigned. */ state.bytes_written -= state.current_write_size; read_and_write_test_write_handler(&state, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_endpoint_read(state.read_ep, &state.incoming, &state.done_read); @@ -225,24 +225,23 @@ static void read_and_write_test(grpc_endpoint_test_config config, grpc_endpoint_shutdown( state.write_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); } - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); while (!state.read_done || !state.write_done) { grpc_pollset_worker* worker = NULL; - GPR_ASSERT(grpc_exec_ctx_now() < deadline); + GPR_ASSERT(ExecCtx::Get()->Now() < deadline); GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); end_test(config); grpc_slice_buffer_destroy_internal(&state.outgoing); grpc_slice_buffer_destroy_internal(&state.incoming); grpc_endpoint_destroy(state.read_ep); grpc_endpoint_destroy(state.write_ep); - grpc_exec_ctx_finish(); } static void inc_on_failure(void* arg, grpc_error* error) { @@ -253,16 +252,16 @@ static void inc_on_failure(void* arg, grpc_error* error) { } static void wait_for_fail_count(int* fail_count, int want_fail_count) { - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(10)); - while (grpc_exec_ctx_now() < deadline && *fail_count < want_fail_count) { + while (ExecCtx::Get()->Now() < deadline && *fail_count < want_fail_count) { grpc_pollset_worker* worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(*fail_count == want_fail_count); @@ -303,7 +302,6 @@ static void multiple_shutdown_test(grpc_endpoint_test_config config) { grpc_endpoint_destroy(f.client_ep); grpc_endpoint_destroy(f.server_ep); - grpc_exec_ctx_finish(); } void grpc_endpoint_tests(grpc_endpoint_test_config config, diff --git a/test/core/iomgr/ev_epollsig_linux_test.cc b/test/core/iomgr/ev_epollsig_linux_test.cc index 5dd28eac9c2..5c71bc6152f 100644 --- a/test/core/iomgr/ev_epollsig_linux_test.cc +++ b/test/core/iomgr/ev_epollsig_linux_test.cc @@ -77,11 +77,11 @@ static void test_fd_cleanup(test_fd* tfds, int num_fds) { for (i = 0; i < num_fds; i++) { grpc_fd_shutdown(tfds[i].fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_fd_cleanup")); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_fd_orphan(tfds[i].fd, NULL, &release_fd, false /* already_closed */, "test_fd_cleanup"); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(release_fd == tfds[i].inner_fd); close(tfds[i].inner_fd); @@ -110,7 +110,7 @@ static void test_pollset_cleanup(test_pollset* pollsets, int num_pollsets) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(pollsets[i].pollset, &destroyed); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_free(pollsets[i].pollset); } } @@ -168,32 +168,32 @@ static void test_add_fd_to_pollset() { /* == Step 1 == */ for (i = 0; i <= 2; i++) { grpc_pollset_add_fd(pollsets[0].pollset, tfds[i].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } for (i = 3; i <= 4; i++) { grpc_pollset_add_fd(pollsets[1].pollset, tfds[i].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } for (i = 5; i <= 7; i++) { grpc_pollset_add_fd(pollsets[2].pollset, tfds[i].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } /* == Step 2 == */ for (i = 0; i <= 1; i++) { grpc_pollset_add_fd(pollsets[3].pollset, tfds[i].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } /* == Step 3 == */ grpc_pollset_add_fd(pollsets[1].pollset, tfds[0].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* == Step 4 == */ grpc_pollset_add_fd(pollsets[2].pollset, tfds[3].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* All polling islands are merged at this point */ @@ -212,7 +212,6 @@ static void test_add_fd_to_pollset() { test_fd_cleanup(tfds, NUM_FDS); test_pollset_cleanup(pollsets, NUM_POLLSETS); - grpc_exec_ctx_finish(); } #undef NUM_FDS @@ -239,7 +238,6 @@ static void test_threading_loop(void* arg) { "pollset_work", grpc_pollset_work(shared->pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(shared->mu); - grpc_exec_ctx_finish(); } } @@ -279,7 +277,6 @@ static void test_threading(void) { shared.wakeup_desc, GRPC_CLOSURE_INIT(&shared.on_wakeup, test_threading_wakeup, &shared, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(); } GPR_ASSERT(GRPC_LOG_IF_ERROR("wakeup_first", grpc_wakeup_fd_wakeup(shared.wakeup_fd))); @@ -296,7 +293,6 @@ static void test_threading(void) { grpc_pollset_shutdown(shared.pollset, GRPC_CLOSURE_CREATE(destroy_pollset, shared.pollset, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(); } gpr_free(shared.pollset); } @@ -318,7 +314,6 @@ int main(int argc, char** argv) { poll_strategy); } - grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/fd_conservation_posix_test.cc b/test/core/iomgr/fd_conservation_posix_test.cc index a5f6d339984..7f3420269ed 100644 --- a/test/core/iomgr/fd_conservation_posix_test.cc +++ b/test/core/iomgr/fd_conservation_posix_test.cc @@ -45,12 +45,11 @@ int main(int argc, char** argv) { p = grpc_iomgr_create_endpoint_pair("test", NULL); grpc_endpoint_destroy(p.client); grpc_endpoint_destroy(p.server); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } grpc_resource_quota_unref(resource_quota); - grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/fd_posix_test.cc b/test/core/iomgr/fd_posix_test.cc index 9bf16923cb4..d22cb5f4f62 100644 --- a/test/core/iomgr/fd_posix_test.cc +++ b/test/core/iomgr/fd_posix_test.cc @@ -252,7 +252,7 @@ static void server_wait_and_shutdown(server* sv) { "pollset_work", grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -367,7 +367,7 @@ static void client_wait_and_shutdown(client* cl) { "pollset_work", grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -386,7 +386,7 @@ static void test_grpc_fd(void) { port = server_start(&sv); client_init(&cl); client_start(&cl, port); - grpc_exec_ctx_finish(); + client_wait_and_shutdown(&cl); server_wait_and_shutdown(&sv); GPR_ASSERT(sv.read_bytes_total == cl.write_bytes_total); @@ -469,7 +469,7 @@ static void test_grpc_fd_change(void) { "pollset_work", grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } GPR_ASSERT(a.cb_that_ran == first_read_callback); @@ -493,7 +493,7 @@ static void test_grpc_fd_change(void) { "pollset_work", grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } /* Except now we verify that second_read_callback ran instead */ @@ -501,7 +501,7 @@ static void test_grpc_fd_change(void) { gpr_mu_unlock(g_mu); grpc_fd_orphan(em_fd, NULL, NULL, false /* already_closed */, "d"); - grpc_exec_ctx_finish(); + destroy_change_data(&a); destroy_change_data(&b); close(sv[1]); @@ -523,9 +523,9 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_free(g_pollset); - grpc_exec_ctx_finish(); + grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/pollset_set_test.cc b/test/core/iomgr/pollset_set_test.cc index ba794ca192e..e9b46f59e32 100644 --- a/test/core/iomgr/pollset_set_test.cc +++ b/test/core/iomgr/pollset_set_test.cc @@ -84,7 +84,7 @@ static void cleanup_test_pollsets(test_pollset* pollsets, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(pollsets[i].ps, &destroyed); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_free(pollsets[i].ps); pollsets[i].ps = NULL; } @@ -129,7 +129,7 @@ static void cleanup_test_fds(test_fd* tfds, const int num_fds) { for (int i = 0; i < num_fds; i++) { grpc_fd_shutdown(tfds[i].fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("fd cleanup")); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* grpc_fd_orphan frees the memory allocated for grpc_fd. Normally it also * calls close() on the underlying fd. In our case, we are using @@ -138,7 +138,7 @@ static void cleanup_test_fds(test_fd* tfds, const int num_fds) { * underlying fd, call it with a non-NULL 'release_fd' parameter */ grpc_fd_orphan(tfds[i].fd, NULL, &release_fd, false /* already_closed */, "test_fd_cleanup"); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_wakeup_fd_destroy(&tfds[i].wakeup_fd); } @@ -236,7 +236,7 @@ static void pollset_set_test_basic() { grpc_pollset_add_fd(pollsets[1].ps, tfds[8].fd); grpc_pollset_add_fd(pollsets[2].ps, tfds[9].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Test that if any FD in the above structure is readable, it is observable by * doing grpc_pollset_work on any pollset @@ -259,10 +259,10 @@ static void pollset_set_test_basic() { grpc_pollset_work(pollsets[i].ps, &worker, deadline)); gpr_mu_unlock(pollsets[i].mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); verify_readable_and_reset(tfds, num_fds); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } /* Test tear down */ @@ -270,19 +270,18 @@ static void pollset_set_test_basic() { grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[5].fd); grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[1].fd); grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[6].fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_pollset_set_del_pollset(pollset_sets[1].pss, pollsets[0].ps); grpc_pollset_set_del_pollset(pollset_sets[0].pss, pollsets[1].ps); grpc_pollset_set_del_pollset(pollset_sets[0].pss, pollsets[2].ps); grpc_pollset_set_del_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); cleanup_test_fds(tfds, num_fds); cleanup_test_pollsets(pollsets, num_ps); cleanup_test_pollset_sets(pollset_sets, num_pss); - grpc_exec_ctx_finish(); } /* Same FD added multiple times to the pollset_set tree */ @@ -338,10 +337,10 @@ void pollset_set_test_dup_fds() { GPR_ASSERT(GRPC_ERROR_NONE == grpc_pollset_work(pollset.ps, &worker, deadline)); gpr_mu_unlock(pollset.mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); verify_readable_and_reset(tfds, num_fds); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Tear down */ grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[0].fd); @@ -350,12 +349,11 @@ void pollset_set_test_dup_fds() { grpc_pollset_set_del_pollset(pollset_sets[1].pss, pollset.ps); grpc_pollset_set_del_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); cleanup_test_fds(tfds, num_fds); cleanup_test_pollsets(&pollset, num_ps); cleanup_test_pollset_sets(pollset_sets, num_pss); - grpc_exec_ctx_finish(); } /* Pollset_set with an empty pollset */ @@ -406,21 +404,20 @@ void pollset_set_test_empty_pollset() { GPR_ASSERT(GRPC_ERROR_NONE == grpc_pollset_work(pollsets[0].ps, &worker, deadline)); gpr_mu_unlock(pollsets[0].mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); verify_readable_and_reset(tfds, num_fds); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Tear down */ grpc_pollset_set_del_fd(pollset_set.pss, tfds[0].fd); grpc_pollset_set_del_pollset(pollset_set.pss, pollsets[0].ps); grpc_pollset_set_del_pollset(pollset_set.pss, pollsets[1].ps); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); cleanup_test_fds(tfds, num_fds); cleanup_test_pollsets(pollsets, num_ps); cleanup_test_pollset_sets(&pollset_set, num_pss); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { @@ -442,7 +439,6 @@ int main(int argc, char** argv) { poll_strategy); } - grpc_exec_ctx_finish(); grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index d06777d86fe..9870d7aa73b 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -67,7 +67,7 @@ void args_finish(args_struct* args) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(args->pollset, &do_nothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); } @@ -86,7 +86,7 @@ static void actually_poll(void* argsp) { if (done) { break; } - grpc_millis time_left = deadline - grpc_exec_ctx_now(); + grpc_millis time_left = deadline - ExecCtx::Get()->Now(); gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRIdPTR, done, time_left); GPR_ASSERT(time_left >= 0); grpc_pollset_worker* worker = NULL; @@ -94,10 +94,9 @@ static void actually_poll(void* argsp) { GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, n_sec_deadline(1))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } gpr_event_set(&args->ev, (void*)1); - grpc_exec_ctx_finish(); } static void poll_pollset_until_request_done(args_struct* args) { @@ -130,7 +129,6 @@ static void test_unix_socket(void) { GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); args_finish(&args); - grpc_exec_ctx_finish(); } static void test_unix_socket_path_name_too_long(void) { @@ -153,7 +151,6 @@ static void test_unix_socket_path_name_too_long(void) { &args.addrs); gpr_free(path_name); args_finish(&args); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { @@ -163,7 +160,7 @@ int main(int argc, char** argv) { test_unix_socket(); test_unix_socket_path_name_too_long(); grpc_executor_shutdown(); - grpc_exec_ctx_finish(); + grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc index 1eb753dc859..dbc825884d6 100644 --- a/test/core/iomgr/resolve_address_test.cc +++ b/test/core/iomgr/resolve_address_test.cc @@ -63,7 +63,7 @@ void args_finish(args_struct* args) { grpc_pollset_shutdown(args->pollset, &do_nothing_cb); gpr_mu_unlock(args->mu); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); } @@ -81,7 +81,7 @@ static void poll_pollset_until_request_done(args_struct* args) { if (done) { break; } - grpc_millis time_left = deadline - grpc_exec_ctx_now(); + grpc_millis time_left = deadline - ExecCtx::Get()->Now(); gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRIdPTR, done, time_left); GPR_ASSERT(time_left >= 0); grpc_pollset_worker* worker = NULL; @@ -89,10 +89,9 @@ static void poll_pollset_until_request_done(args_struct* args) { GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, n_sec_deadline(1))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } gpr_event_set(&args->ev, (void*)1); - grpc_exec_ctx_finish(); } static void must_succeed(void* argsp, grpc_error* err) { @@ -123,10 +122,9 @@ static void test_localhost(void) { "localhost:1", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } static void test_default_port(void) { @@ -137,10 +135,9 @@ static void test_default_port(void) { "localhost", "1", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } static void test_non_numeric_default_port(void) { @@ -151,10 +148,9 @@ static void test_non_numeric_default_port(void) { "localhost", "https", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } static void test_missing_default_port(void) { @@ -165,10 +161,9 @@ static void test_missing_default_port(void) { "localhost", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } static void test_ipv6_with_port(void) { @@ -179,10 +174,9 @@ static void test_ipv6_with_port(void) { "[2001:db8::1]:1", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } static void test_ipv6_without_port(void) { @@ -200,10 +194,9 @@ static void test_ipv6_without_port(void) { kCases[i], "80", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } } @@ -221,10 +214,9 @@ static void test_invalid_ip_addresses(void) { kCases[i], NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } } @@ -241,10 +233,9 @@ static void test_unparseable_hostports(void) { kCases[i], "1", args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); - grpc_exec_ctx_finish(); } } @@ -261,7 +252,7 @@ int main(int argc, char** argv) { test_invalid_ip_addresses(); test_unparseable_hostports(); grpc_executor_shutdown(); - grpc_exec_ctx_finish(); + grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resource_quota_test.cc b/test/core/iomgr/resource_quota_test.cc index bee9373ff60..40beadc5d6c 100644 --- a/test/core/iomgr/resource_quota_test.cc +++ b/test/core/iomgr/resource_quota_test.cc @@ -86,7 +86,6 @@ grpc_closure* make_unused_reclaimer(grpc_closure* then) { static void destroy_user(grpc_resource_user* usr) { ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); - grpc_exec_ctx_finish(); } static void test_no_op(void) { @@ -120,12 +119,10 @@ static void test_instant_alloc_then_free(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); - grpc_exec_ctx_finish(); } { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -141,7 +138,6 @@ static void test_instant_alloc_free_pair(void) { ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -158,14 +154,13 @@ static void test_simple_async_alloc(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); } { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -182,7 +177,7 @@ static void test_async_alloc_blocked_by_size(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); } @@ -192,7 +187,6 @@ static void test_async_alloc_blocked_by_size(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -209,7 +203,7 @@ static void test_scavenge(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -217,14 +211,13 @@ static void test_scavenge(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr1, 1024); - grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -232,7 +225,6 @@ static void test_scavenge(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr2, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr1); @@ -250,7 +242,7 @@ static void test_scavenge_blocked(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -259,14 +251,14 @@ static void test_scavenge_blocked(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); } { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr1, 1024); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -274,7 +266,6 @@ static void test_scavenge_blocked(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr2, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr1); @@ -292,7 +283,7 @@ static void test_blocked_until_scheduled_reclaim(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -303,14 +294,13 @@ static void test_blocked_until_scheduled_reclaim(void) { ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaim_done))); - grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -320,7 +310,6 @@ static void test_blocked_until_scheduled_reclaim(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -338,7 +327,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -349,14 +338,13 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr1, false, make_reclaimer(usr1, 1024, set_event(&reclaim_done))); - grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -366,7 +354,6 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr2, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr1); @@ -384,7 +371,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -395,14 +382,13 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, true, make_reclaimer(usr, 1024, set_event(&reclaim_done))); - grpc_exec_ctx_finish(); } { gpr_event ev; gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -412,7 +398,6 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -434,7 +419,7 @@ static void test_unused_reclaim_is_cancelled(void) { usr, false, make_unused_reclaimer(set_event(&benign_done))); grpc_resource_user_post_reclaimer( usr, true, make_unused_reclaimer(set_event(&destructive_done))); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -465,7 +450,7 @@ static void test_benign_reclaim_is_preferred(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -476,7 +461,7 @@ static void test_benign_reclaim_is_preferred(void) { usr, false, make_reclaimer(usr, 1024, set_event(&benign_done))); grpc_resource_user_post_reclaimer( usr, true, make_unused_reclaimer(set_event(&destructive_done))); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -489,7 +474,7 @@ static void test_benign_reclaim_is_preferred(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&destructive_done, @@ -501,7 +486,6 @@ static void test_benign_reclaim_is_preferred(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -526,7 +510,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; @@ -537,7 +521,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { usr, false, make_reclaimer(usr, 512, set_event(&benign_done))); grpc_resource_user_post_reclaimer( usr, true, make_reclaimer(usr, 512, set_event(&destructive_done))); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -550,7 +534,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { gpr_event_init(&ev); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&destructive_done, @@ -562,7 +546,6 @@ static void test_multiple_reclaims_can_be_triggered(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); destroy_user(usr); @@ -582,18 +565,15 @@ static void test_resource_user_stays_allocated_until_memory_released(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); - grpc_exec_ctx_finish(); } { ExecCtx _local_exec_ctx; grpc_resource_quota_unref(q); grpc_resource_user_unref(usr); - grpc_exec_ctx_finish(); } { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } } @@ -616,7 +596,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_unused_reclaimer(set_event(&reclaimer_cancelled))); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -626,7 +606,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( gpr_event_init(&allocated); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -636,7 +616,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -644,7 +624,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_seconds_to_deadline(5)) != NULL); } @@ -663,7 +643,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event_init(&allocated); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); } @@ -674,7 +654,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaimer_done))); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&reclaimer_done, grpc_timeout_milliseconds_to_deadline(100)) == NULL); @@ -684,7 +664,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event_init(&allocated); ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); - grpc_exec_ctx_finish(); + GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&reclaimer_done, @@ -694,7 +674,6 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - grpc_exec_ctx_finish(); } destroy_user(usr); grpc_resource_quota_unref(q); @@ -719,14 +698,13 @@ static void test_one_slice(void) { const int start_allocs = num_allocs; ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); - grpc_exec_ctx_finish(); + assert_counter_becomes(&num_allocs, start_allocs + 1); } { ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } destroy_user(usr); grpc_resource_quota_unref(q); @@ -752,21 +730,19 @@ static void test_one_slice_deleted_late(void) { const int start_allocs = num_allocs; ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); - grpc_exec_ctx_finish(); + assert_counter_becomes(&num_allocs, start_allocs + 1); } { ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); { ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } } @@ -796,7 +772,7 @@ static void test_negative_rq_free_pool(void) { const int start_allocs = num_allocs; ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); - grpc_exec_ctx_finish(); + assert_counter_becomes(&num_allocs, start_allocs + 1); } @@ -809,14 +785,12 @@ static void test_negative_rq_free_pool(void) { { ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); - grpc_exec_ctx_finish(); } grpc_resource_quota_unref(q); { ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } } diff --git a/test/core/iomgr/tcp_client_posix_test.cc b/test/core/iomgr/tcp_client_posix_test.cc index 7fad3b08bef..abefecba335 100644 --- a/test/core/iomgr/tcp_client_posix_test.cc +++ b/test/core/iomgr/tcp_client_posix_test.cc @@ -56,7 +56,7 @@ static void finish_connection() { ExecCtx _local_exec_ctx; GPR_ASSERT( GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); - grpc_exec_ctx_finish(); + gpr_mu_unlock(g_mu); } @@ -127,13 +127,11 @@ void test_succeeds(void) { grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(5))))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - - grpc_exec_ctx_finish(); } void test_fails(void) { @@ -177,12 +175,11 @@ void test_fails(void) { break; } gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); } static void destroy_pollset(void* p, grpc_error* error) { @@ -198,7 +195,7 @@ int main(int argc, char** argv) { g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); grpc_pollset_set_add_pollset(g_pollset_set, g_pollset); - grpc_exec_ctx_finish(); + test_succeeds(); gpr_log(GPR_ERROR, "End of first test"); test_fails(); @@ -206,7 +203,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(g_pollset); return 0; diff --git a/test/core/iomgr/tcp_client_uv_test.cc b/test/core/iomgr/tcp_client_uv_test.cc index dd98fb2275f..0355896b858 100644 --- a/test/core/iomgr/tcp_client_uv_test.cc +++ b/test/core/iomgr/tcp_client_uv_test.cc @@ -121,7 +121,7 @@ void test_succeeds(void) { grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(5))))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } @@ -129,8 +129,6 @@ void test_succeeds(void) { uv_close((uv_handle_t*)svr_handle, close_cb); gpr_mu_unlock(g_mu); - - grpc_exec_ctx_finish(); } void test_fails(void) { @@ -175,12 +173,11 @@ void test_fails(void) { break; } gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); } static void destroy_pollset(void* p, grpc_error* error) { @@ -194,14 +191,14 @@ int main(int argc, char** argv) { grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); - grpc_exec_ctx_finish(); + test_succeeds(); gpr_log(GPR_ERROR, "End of first test"); test_fails(); GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(g_pollset); return 0; diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc index e4126fb05aa..678e1c3638d 100644 --- a/test/core/iomgr/tcp_posix_test.cc +++ b/test/core/iomgr/tcp_posix_test.cc @@ -193,7 +193,7 @@ static void read_test(size_t num_bytes, size_t slice_size) { GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); @@ -201,7 +201,6 @@ static void read_test(size_t num_bytes, size_t slice_size) { grpc_slice_buffer_destroy_internal(&state.incoming); grpc_endpoint_destroy(ep); - grpc_exec_ctx_finish(); } /* Write to a socket until it fills up, then read from it using the grpc_tcp @@ -244,7 +243,7 @@ static void large_read_test(size_t slice_size) { GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); @@ -252,7 +251,6 @@ static void large_read_test(size_t slice_size) { grpc_slice_buffer_destroy_internal(&state.incoming); grpc_endpoint_destroy(ep); - grpc_exec_ctx_finish(); } struct write_socket_state { @@ -316,7 +314,7 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { grpc_timespec_to_millis_round_up( grpc_timeout_milliseconds_to_deadline(10))))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + do { bytes_read = read(fd, buf, bytes_left > read_size ? read_size : bytes_left); @@ -385,7 +383,7 @@ static void write_test(size_t num_bytes, size_t slice_size) { GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -393,7 +391,6 @@ static void write_test(size_t num_bytes, size_t slice_size) { grpc_slice_buffer_destroy_internal(&outgoing); grpc_endpoint_destroy(ep); gpr_free(slices); - grpc_exec_ctx_finish(); } void on_fd_released(void* arg, grpc_error* errors) { @@ -453,7 +450,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { gpr_log(GPR_DEBUG, "wakeup: read=%" PRIdPTR " target=%" PRIdPTR, state.read_bytes, state.target_read_bytes); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); @@ -461,7 +458,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { grpc_slice_buffer_destroy_internal(&state.incoming); grpc_tcp_destroy_and_release_fd(ep, &fd, &fd_released_cb); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); while (!fd_released_done) { grpc_pollset_worker* worker = NULL; @@ -472,7 +469,6 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { gpr_mu_unlock(g_mu); GPR_ASSERT(fd_released_done == 1); GPR_ASSERT(fd == sv[1]); - grpc_exec_ctx_finish(); written_bytes = fill_socket_partial(sv[0], num_bytes); drain_socket_blocking(fd, written_bytes, written_bytes); @@ -528,8 +524,6 @@ static grpc_endpoint_test_fixture create_fixture_tcp_socketpair( grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); grpc_endpoint_add_to_pollset(f.server_ep, g_pollset); - grpc_exec_ctx_finish(); - return f; } @@ -553,7 +547,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc index 3707634c293..1c3f4490d5c 100644 --- a/test/core/iomgr/tcp_server_posix_test.cc +++ b/test/core/iomgr/tcp_server_posix_test.cc @@ -167,7 +167,6 @@ static void test_no_op(void) { grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void test_no_op_with_start(void) { @@ -177,7 +176,6 @@ static void test_no_op_with_start(void) { LOG_TEST("test_no_op_with_start"); grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void test_no_op_with_port(void) { @@ -197,7 +195,6 @@ static void test_no_op_with_port(void) { port > 0); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void test_no_op_with_port_and_start(void) { @@ -219,7 +216,6 @@ static void test_no_op_with_port_and_start(void) { grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static grpc_error* tcp_connect(const test_addr* remote, @@ -247,7 +243,7 @@ static grpc_error* tcp_connect(const test_addr* remote, return GRPC_OS_ERROR(errno, "connect"); } gpr_log(GPR_DEBUG, "wait"); - while (g_nconnects == nconnects_before && deadline > grpc_exec_ctx_now()) { + while (g_nconnects == nconnects_before && deadline > ExecCtx::Get()->Now()) { grpc_pollset_worker* worker = NULL; grpc_error* err; if ((err = grpc_pollset_work(g_pollset, &worker, deadline)) != @@ -257,7 +253,7 @@ static grpc_error* tcp_connect(const test_addr* remote, return err; } gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_log(GPR_DEBUG, "wait done"); @@ -413,7 +409,6 @@ static void test_connect(size_t num_connects, GPR_ASSERT(grpc_tcp_server_port_fd(s, 0, 0) >= 0); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); /* Weak ref lost. */ GPR_ASSERT(weak_ref.server == NULL); @@ -489,7 +484,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(dst_addrs); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_server_uv_test.cc b/test/core/iomgr/tcp_server_uv_test.cc index 2a0ada225c5..50042af37f5 100644 --- a/test/core/iomgr/tcp_server_uv_test.cc +++ b/test/core/iomgr/tcp_server_uv_test.cc @@ -119,7 +119,6 @@ static void test_no_op(void) { grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void test_no_op_with_start(void) { @@ -129,7 +128,6 @@ static void test_no_op_with_start(void) { LOG_TEST("test_no_op_with_start"); grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void test_no_op_with_port(void) { @@ -149,7 +147,6 @@ static void test_no_op_with_port(void) { port > 0); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void test_no_op_with_port_and_start(void) { @@ -171,7 +168,6 @@ static void test_no_op_with_port_and_start(void) { grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); } static void connect_cb(uv_connect_t* req, int status) { @@ -205,7 +201,7 @@ static void tcp_connect(const struct sockaddr* remote, socklen_t remote_len, grpc_pollset_work(g_pollset, &worker, grpc_timespec_to_millis_round_up(deadline)))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(g_mu); } gpr_log(GPR_DEBUG, "wait done"); @@ -277,7 +273,6 @@ static void test_connect(unsigned n) { GPR_ASSERT(weak_ref.server != NULL); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); /* Weak ref lost. */ GPR_ASSERT(weak_ref.server == NULL); @@ -305,7 +300,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(g_pollset); return 0; diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc index 07dfec168cf..7281f55b854 100644 --- a/test/core/iomgr/timer_list_test.cc +++ b/test/core/iomgr/timer_list_test.cc @@ -52,7 +52,7 @@ static void add_test(void) { grpc_timer_check_trace.value = 1; memset(cb_called, 0, sizeof(cb_called)); - grpc_millis start = grpc_exec_ctx_now(); + grpc_millis start = ExecCtx::Get()->Now(); /* 10 ms timers. will expire in the current epoch */ for (i = 0; i < 10; i++) { @@ -69,32 +69,32 @@ static void add_test(void) { } /* collect timers. Only the first batch should be ready. */ - exec_ctx->now = start + 500; + ExecCtx::Get()->SetNow(start + 500); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); - grpc_exec_ctx_finish(); + for (i = 0; i < 20; i++) { GPR_ASSERT(cb_called[i][1] == (i < 10)); GPR_ASSERT(cb_called[i][0] == 0); } - exec_ctx->now = start + 600; + ExecCtx::Get()->SetNow(start + 600); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_CHECKED_AND_EMPTY); - grpc_exec_ctx_finish(); + for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 10)); GPR_ASSERT(cb_called[i][0] == 0); } /* collect the rest of the timers */ - exec_ctx->now = start + 1500; + ExecCtx::Get()->SetNow(start + 1500); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); - grpc_exec_ctx_finish(); + for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 20)); GPR_ASSERT(cb_called[i][0] == 0); } - exec_ctx->now = start + 1600; + ExecCtx::Get()->SetNow(start + 1600); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_CHECKED_AND_EMPTY); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 20)); @@ -102,7 +102,6 @@ static void add_test(void) { } grpc_timer_list_shutdown(); - grpc_exec_ctx_finish(); } /* Cleaning up a list with pending timers. */ @@ -112,8 +111,7 @@ void destruction_test(void) { gpr_log(GPR_INFO, "destruction_test"); - exec_ctx->now_is_valid = true; - exec_ctx->now = 0; + ExecCtx::Get()->SetNow(0); grpc_timer_list_init(); grpc_timer_trace.value = 1; grpc_timer_check_trace.value = 1; @@ -134,18 +132,18 @@ void destruction_test(void) { grpc_timer_init( &timers[4], 1, GRPC_CLOSURE_CREATE(cb, (void*)(intptr_t)4, grpc_schedule_on_exec_ctx)); - exec_ctx->now = 2; + ExecCtx::Get()->SetNow(2); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); - grpc_exec_ctx_finish(); + GPR_ASSERT(1 == cb_called[4][1]); grpc_timer_cancel(&timers[0]); grpc_timer_cancel(&timers[3]); - grpc_exec_ctx_finish(); + GPR_ASSERT(1 == cb_called[0][0]); GPR_ASSERT(1 == cb_called[3][0]); grpc_timer_list_shutdown(); - grpc_exec_ctx_finish(); + GPR_ASSERT(1 == cb_called[1][0]); GPR_ASSERT(1 == cb_called[2][0]); } diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc index c079dbf7162..47e5cf02545 100644 --- a/test/core/iomgr/udp_server_test.cc +++ b/test/core/iomgr/udp_server_test.cc @@ -130,7 +130,6 @@ static void test_no_op(void) { ExecCtx _local_exec_ctx; grpc_udp_server* s = grpc_udp_server_create(NULL); grpc_udp_server_destroy(s, NULL); - grpc_exec_ctx_finish(); } static void test_no_op_with_start(void) { @@ -139,7 +138,6 @@ static void test_no_op_with_start(void) { LOG_TEST("test_no_op_with_start"); grpc_udp_server_start(s, NULL, 0, NULL); grpc_udp_server_destroy(s, NULL); - grpc_exec_ctx_finish(); } static void test_no_op_with_port(void) { @@ -157,7 +155,6 @@ static void test_no_op_with_port(void) { on_fd_orphaned)); grpc_udp_server_destroy(s, NULL); - grpc_exec_ctx_finish(); /* The server had a single FD, which should have been orphaned. */ GPR_ASSERT(g_number_of_orphan_calls == 1); @@ -188,7 +185,7 @@ static void test_no_op_with_port_and_socket_factory(void) { GPR_ASSERT(socket_factory->number_of_bind_calls == 1); grpc_udp_server_destroy(s, NULL); - grpc_exec_ctx_finish(); + grpc_socket_factory_unref(&socket_factory->base); /* The server had a single FD, which should have been orphaned. */ @@ -212,7 +209,6 @@ static void test_no_op_with_port_and_start(void) { grpc_udp_server_start(s, NULL, 0, NULL); grpc_udp_server_destroy(s, NULL); - grpc_exec_ctx_finish(); /* The server had a single FD, which is orphaned exactly once in * * grpc_udp_server_destroy. */ @@ -264,12 +260,12 @@ static void test_receive(int number_of_clients) { (socklen_t)resolved_addr.len) == 0); GPR_ASSERT(5 == write(clifd, "hello", 5)); while (g_number_of_reads == number_of_reads_before && - deadline > grpc_exec_ctx_now()) { + deadline > ExecCtx::Get()->Now()) { grpc_pollset_worker* worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(g_number_of_reads == number_of_reads_before + 1); @@ -280,7 +276,6 @@ static void test_receive(int number_of_clients) { gpr_mu_unlock(g_mu); grpc_udp_server_destroy(s, NULL); - grpc_exec_ctx_finish(); /* The server had a single FD, which is orphaned exactly once in * * grpc_udp_server_destroy. */ @@ -313,7 +308,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + gpr_free(g_pollset); grpc_shutdown(); return 0; diff --git a/test/core/security/credentials_test.cc b/test/core/security/credentials_test.cc index c03ae5c584c..029171c931e 100644 --- a/test/core/security/credentials_test.cc +++ b/test/core/security/credentials_test.cc @@ -154,7 +154,6 @@ static void test_empty_md_array(void) { GPR_ASSERT(md_array.md == NULL); GPR_ASSERT(md_array.size == 0); grpc_credentials_mdelem_array_destroy(&md_array); - grpc_exec_ctx_finish(); } static void test_add_to_empty_md_array(void) { @@ -170,7 +169,6 @@ static void test_add_to_empty_md_array(void) { GPR_ASSERT(grpc_mdelem_eq(md, md_array.md[0])); GRPC_MDELEM_UNREF(md); grpc_credentials_mdelem_array_destroy(&md_array); - grpc_exec_ctx_finish(); } static void test_add_abunch_to_md_array(void) { @@ -190,7 +188,6 @@ static void test_add_abunch_to_md_array(void) { } GRPC_MDELEM_UNREF(md); grpc_credentials_mdelem_array_destroy(&md_array); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_ok(void) { @@ -208,7 +205,6 @@ static void test_oauth2_token_fetcher_creds_parsing_ok(void) { 0); GRPC_MDELEM_UNREF(token_md); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { @@ -221,7 +217,6 @@ static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { @@ -233,7 +228,6 @@ static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { @@ -249,7 +243,6 @@ static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { @@ -264,7 +257,6 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { @@ -280,7 +272,6 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime( @@ -296,7 +287,6 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime( &response, &token_md, &token_lifetime) == GRPC_CREDENTIALS_ERROR); grpc_http_response_destroy(&response); - grpc_exec_ctx_finish(); } typedef struct { @@ -402,7 +392,6 @@ static void test_google_iam_creds(void) { NULL}; run_request_metadata_test(creds, auth_md_ctx, state); grpc_call_credentials_unref(creds); - grpc_exec_ctx_finish(); } static void test_access_token_creds(void) { @@ -417,7 +406,6 @@ static void test_access_token_creds(void) { GPR_ASSERT(strcmp(creds->type, GRPC_CALL_CREDENTIALS_TYPE_OAUTH2) == 0); run_request_metadata_test(creds, auth_md_ctx, state); grpc_call_credentials_unref(creds); - grpc_exec_ctx_finish(); } static grpc_security_status check_channel_oauth2_create_security_connector( @@ -448,7 +436,6 @@ static void test_channel_oauth2_composite_creds(void) { channel_oauth2_creds, NULL, NULL, NULL, &new_args) == GRPC_SECURITY_OK); grpc_channel_credentials_release(channel_oauth2_creds); - grpc_exec_ctx_finish(); } static void test_oauth2_google_iam_composite_creds(void) { @@ -484,7 +471,6 @@ static void test_oauth2_google_iam_composite_creds(void) { GRPC_CALL_CREDENTIALS_TYPE_IAM) == 0); run_request_metadata_test(composite_creds, auth_md_ctx, state); grpc_call_credentials_unref(composite_creds); - grpc_exec_ctx_finish(); } static grpc_security_status @@ -533,7 +519,6 @@ static void test_channel_oauth2_google_iam_composite_creds(void) { GRPC_SECURITY_OK); grpc_channel_credentials_release(channel_oauth2_iam_creds); - grpc_exec_ctx_finish(); } static void validate_compute_engine_http_request( @@ -598,7 +583,7 @@ static void test_compute_engine_creds_success(void) { grpc_httpcli_set_override(compute_engine_httpcli_get_success_override, httpcli_post_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Second request: the cached token should be served directly. */ state = @@ -606,11 +591,10 @@ static void test_compute_engine_creds_success(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(); } static void test_compute_engine_creds_failure(void) { @@ -628,7 +612,6 @@ static void test_compute_engine_creds_failure(void) { run_request_metadata_test(creds, auth_md_ctx, state); grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(); } static void validate_refresh_token_http_request( @@ -689,7 +672,7 @@ static void test_refresh_token_creds_success(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, refresh_token_httpcli_post_success); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Second request: the cached token should be served directly. */ state = @@ -697,11 +680,10 @@ static void test_refresh_token_creds_success(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(); } static void test_refresh_token_creds_failure(void) { @@ -719,7 +701,6 @@ static void test_refresh_token_creds_failure(void) { run_request_metadata_test(creds, auth_md_ctx, state); grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); - grpc_exec_ctx_finish(); } static void validate_jwt_encode_and_sign_params( @@ -824,7 +805,7 @@ static void test_jwt_creds_success(void) { make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_success); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Second request: the cached token should be served directly. */ state = @@ -832,7 +813,7 @@ static void test_jwt_creds_success(void) { grpc_jwt_encode_and_sign_set_override( encode_and_sign_jwt_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Third request: Different service url so jwt_encode_and_sign should be called again (no caching). */ @@ -841,13 +822,12 @@ static void test_jwt_creds_success(void) { auth_md_ctx.service_url = other_test_service_url; grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_success); run_request_metadata_test(creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_call_credentials_unref(creds); gpr_free(json_key_string); gpr_free(expected_md_value); grpc_jwt_encode_and_sign_set_override(NULL); - grpc_exec_ctx_finish(); } static void test_jwt_creds_signing_failure(void) { @@ -867,7 +847,6 @@ static void test_jwt_creds_signing_failure(void) { gpr_free(json_key_string); grpc_call_credentials_unref(creds); grpc_jwt_encode_and_sign_set_override(NULL); - grpc_exec_ctx_finish(); } static void set_google_default_creds_env_var_with_file_contents( @@ -902,7 +881,6 @@ static void test_google_default_creds_auth_key(void) { 0); grpc_channel_credentials_unref(&creds->base); gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */ - grpc_exec_ctx_finish(); } static void test_google_default_creds_refresh_token(void) { @@ -920,7 +898,6 @@ static void test_google_default_creds_refresh_token(void) { "32555999999.apps.googleusercontent.com") == 0); grpc_channel_credentials_unref(&creds->base); gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */ - grpc_exec_ctx_finish(); } static int default_creds_gce_detection_httpcli_get_success_override( @@ -968,7 +945,7 @@ static void test_google_default_creds_gce(void) { grpc_httpcli_set_override(compute_engine_httpcli_get_success_override, httpcli_post_should_not_be_called); run_request_metadata_test(creds->call_creds, auth_md_ctx, state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); /* Check that we get a cached creds if we call grpc_google_default_credentials_create again. @@ -984,7 +961,6 @@ static void test_google_default_creds_gce(void) { grpc_channel_credentials_unref(&creds->base); grpc_httpcli_set_override(NULL, NULL); grpc_override_well_known_credentials_path_getter(NULL); - grpc_exec_ctx_finish(); } static int default_creds_gce_detection_httpcli_get_failure_override( @@ -1094,7 +1070,7 @@ static void test_metadata_plugin_success(void) { run_request_metadata_test(creds, auth_md_ctx, md_state); GPR_ASSERT(state == PLUGIN_GET_METADATA_CALLED_STATE); grpc_call_credentials_unref(creds); - grpc_exec_ctx_finish(); + GPR_ASSERT(state == PLUGIN_DESTROY_CALLED_STATE); } @@ -1122,7 +1098,7 @@ static void test_metadata_plugin_failure(void) { run_request_metadata_test(creds, auth_md_ctx, md_state); GPR_ASSERT(state == PLUGIN_GET_METADATA_CALLED_STATE); grpc_call_credentials_unref(creds); - grpc_exec_ctx_finish(); + GPR_ASSERT(state == PLUGIN_DESTROY_CALLED_STATE); } @@ -1167,8 +1143,6 @@ static void test_channel_creds_duplicate_without_call_creds(void) { grpc_channel_credentials_unref(channel_creds); grpc_channel_credentials_unref(composite_creds); - - grpc_exec_ctx_finish(); } typedef struct { diff --git a/test/core/security/json_token_test.cc b/test/core/security/json_token_test.cc index 70529259445..9eac2b92541 100644 --- a/test/core/security/json_token_test.cc +++ b/test/core/security/json_token_test.cc @@ -224,7 +224,7 @@ static grpc_json* parse_json_part_from_jwt(const char* str, size_t len, gpr_free(b64); *scratchpad = decoded; grpc_slice_unref(slice); - grpc_exec_ctx_finish(); + return json; } @@ -348,8 +348,6 @@ static void check_jwt_signature(const char* b64_signature, RSA* rsa_key, grpc_slice_unref_internal(sig); if (key != NULL) EVP_PKEY_free(key); if (md_ctx != NULL) EVP_MD_CTX_destroy(md_ctx); - - grpc_exec_ctx_finish(); } static char* service_account_creds_jwt_encode_and_sign( diff --git a/test/core/security/jwt_verifier_test.cc b/test/core/security/jwt_verifier_test.cc index 16fad9d45eb..7485aa10b4e 100644 --- a/test/core/security/jwt_verifier_test.cc +++ b/test/core/security/jwt_verifier_test.cc @@ -220,7 +220,6 @@ static void test_claims_success(void) { GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == GRPC_JWT_VERIFIER_OK); grpc_jwt_claims_destroy(claims); - grpc_exec_ctx_finish(); } static void test_expired_claims_failure(void) { @@ -247,7 +246,6 @@ static void test_expired_claims_failure(void) { GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == GRPC_JWT_VERIFIER_TIME_CONSTRAINT_FAILURE); grpc_jwt_claims_destroy(claims); - grpc_exec_ctx_finish(); } static void test_invalid_claims_failure(void) { @@ -256,7 +254,6 @@ static void test_invalid_claims_failure(void) { (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_jwt_claims_from_json(json, s) == NULL); - grpc_exec_ctx_finish(); } static void test_bad_audience_claims_failure(void) { @@ -271,7 +268,6 @@ static void test_bad_audience_claims_failure(void) { GPR_ASSERT(grpc_jwt_claims_check(claims, "https://bar.com") == GRPC_JWT_VERIFIER_BAD_AUDIENCE); grpc_jwt_claims_destroy(claims); - grpc_exec_ctx_finish(); } static void test_bad_subject_claims_failure(void) { @@ -286,7 +282,6 @@ static void test_bad_subject_claims_failure(void) { GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == GRPC_JWT_VERIFIER_BAD_SUBJECT); grpc_jwt_claims_destroy(claims); - grpc_exec_ctx_finish(); } static char* json_key_str(const char* last_part) { @@ -371,7 +366,7 @@ static void test_jwt_verifier_google_email_issuer_success(void) { grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_success, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } @@ -404,7 +399,7 @@ static void test_jwt_verifier_custom_email_issuer_success(void) { grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_success, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } @@ -451,7 +446,7 @@ static void test_jwt_verifier_url_issuer_success(void) { grpc_jwt_verifier_verify(verifier, NULL, jwt, expected_audience, on_verification_success, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } @@ -491,7 +486,7 @@ static void test_jwt_verifier_url_issuer_bad_config(void) { on_verification_key_retrieval_error, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } @@ -514,7 +509,7 @@ static void test_jwt_verifier_bad_json_key(void) { on_verification_key_retrieval_error, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + gpr_free(jwt); grpc_httpcli_set_override(NULL, NULL); } @@ -528,7 +523,6 @@ static void corrupt_jwt_sig(char* jwt) { { ExecCtx _local_exec_ctx; sig = grpc_base64_decode(last_dot + 1, 1); - grpc_exec_ctx_finish(); } GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(sig)); sig_bytes = GRPC_SLICE_START_PTR(sig); @@ -568,7 +562,7 @@ static void test_jwt_verifier_bad_signature(void) { (void*)expected_user_data); gpr_free(jwt); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + grpc_httpcli_set_override(NULL, NULL); } @@ -597,7 +591,7 @@ static void test_jwt_verifier_bad_format(void) { on_verification_bad_format, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + grpc_httpcli_set_override(NULL, NULL); } diff --git a/test/core/security/oauth2_utils.cc b/test/core/security/oauth2_utils.cc index 6104c7e9dd4..f4a52aaba0c 100644 --- a/test/core/security/oauth2_utils.cc +++ b/test/core/security/oauth2_utils.cc @@ -92,7 +92,7 @@ char* grpc_test_fetch_oauth2_token_with_credentials( on_oauth2_response(&request, error); GRPC_ERROR_UNREF(error); } - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(request.mu); while (!request.is_done) { @@ -108,7 +108,7 @@ char* grpc_test_fetch_oauth2_token_with_credentials( grpc_pollset_shutdown(grpc_polling_entity_pollset(&request.pops), &do_nothing_closure); - grpc_exec_ctx_finish(); + gpr_free(grpc_polling_entity_pollset(&request.pops)); return request.token; } diff --git a/test/core/security/print_google_default_creds_token.cc b/test/core/security/print_google_default_creds_token.cc index 6ea51658e16..6153e8a9cb0 100644 --- a/test/core/security/print_google_default_creds_token.cc +++ b/test/core/security/print_google_default_creds_token.cc @@ -111,13 +111,11 @@ int main(int argc, char** argv) { GRPC_MILLIS_INF_FUTURE))) sync.is_done = true; gpr_mu_unlock(sync.mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(sync.mu); } gpr_mu_unlock(sync.mu); - grpc_exec_ctx_finish(); - grpc_channel_credentials_release(creds); gpr_free(grpc_polling_entity_pollset(&sync.pops)); diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc index a72329d5040..a49bf1a0b4b 100644 --- a/test/core/security/secure_endpoint_test.cc +++ b/test/core/security/secure_endpoint_test.cc @@ -115,7 +115,7 @@ static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair( f.server_ep = grpc_secure_endpoint_create(fake_write_protector, fake_write_zero_copy_protector, tcp.server, NULL, 0); - grpc_exec_ctx_finish(); + return f; } @@ -178,7 +178,7 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { grpc_slice_buffer_init(&incoming); GRPC_CLOSURE_INIT(&done_closure, inc_call_ctr, &n, grpc_schedule_on_exec_ctx); grpc_endpoint_read(f.client_ep, &incoming, &done_closure); - grpc_exec_ctx_finish(); + GPR_ASSERT(n == 1); GPR_ASSERT(incoming.count == 1); GPR_ASSERT(grpc_slice_eq(s, incoming.slices[0])); @@ -189,7 +189,7 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { f.server_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end")); grpc_endpoint_destroy(f.client_ep); grpc_endpoint_destroy(f.server_ep); - grpc_exec_ctx_finish(); + grpc_slice_unref_internal(s); grpc_slice_buffer_destroy_internal(&incoming); @@ -215,7 +215,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/security/ssl_server_fuzzer.cc b/test/core/security/ssl_server_fuzzer.cc index 3ee7738ea8d..84a42546c67 100644 --- a/test/core/security/ssl_server_fuzzer.cc +++ b/test/core/security/ssl_server_fuzzer.cc @@ -83,7 +83,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_security_status status = grpc_server_credentials_create_security_connector(creds, &sc); GPR_ASSERT(status == GRPC_SECURITY_OK); - grpc_millis deadline = GPR_MS_PER_SEC + grpc_exec_ctx_now(); + grpc_millis deadline = GPR_MS_PER_SEC + ExecCtx::Get()->Now(); struct handshake_state state; state.done_callback_called = false; @@ -92,7 +92,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_handshake_manager_do_handshake( handshake_mgr, mock_endpoint, NULL /* channel_args */, deadline, NULL /* acceptor */, on_handshake_done, &state); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); // If the given string happens to be part of the correct client hello, the // server will wait for more data. Explicitly fail the server by shutting down @@ -100,7 +100,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (!state.done_callback_called) { grpc_endpoint_shutdown( mock_endpoint, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close")); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } GPR_ASSERT(state.done_callback_called); @@ -111,7 +111,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_slice_unref(cert_slice); grpc_slice_unref(key_slice); grpc_slice_unref(ca_slice); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_shutdown(); if (leak_check) { diff --git a/test/core/security/verify_jwt.cc b/test/core/security/verify_jwt.cc index fce1e9d8de1..f3e89666257 100644 --- a/test/core/security/verify_jwt.cc +++ b/test/core/security/verify_jwt.cc @@ -106,7 +106,7 @@ int main(int argc, char** argv) { grpc_pollset_work(sync.pollset, &worker, GRPC_MILLIS_INF_FUTURE))) sync.is_done = true; gpr_mu_unlock(sync.mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(sync.mu); } gpr_mu_unlock(sync.mu); @@ -114,7 +114,7 @@ int main(int argc, char** argv) { gpr_free(sync.pollset); grpc_jwt_verifier_destroy(verifier); - grpc_exec_ctx_finish(); + gpr_cmdline_destroy(cl); grpc_shutdown(); return !sync.success; diff --git a/test/core/slice/b64_test.cc b/test/core/slice/b64_test.cc index 3f1de9bc125..5ed99107405 100644 --- a/test/core/slice/b64_test.cc +++ b/test/core/slice/b64_test.cc @@ -51,7 +51,7 @@ static void test_simple_encode_decode_b64(int url_safe, int multiline) { GRPC_SLICE_LENGTH(hello_slice)) == 0); grpc_slice_unref_internal(hello_slice); - grpc_exec_ctx_finish(); + gpr_free(hello_b64); } @@ -72,7 +72,6 @@ static void test_full_range_encode_decode_b64(int url_safe, int multiline) { sizeof(orig) - i)); grpc_slice_unref_internal(orig_decoded); gpr_free(b64); - grpc_exec_ctx_finish(); } } @@ -128,7 +127,6 @@ static void test_url_safe_unsafe_mismatch_failure(void) { GPR_ASSERT(GRPC_SLICE_IS_EMPTY(orig_decoded)); gpr_free(b64); grpc_slice_unref_internal(orig_decoded); - grpc_exec_ctx_finish(); } static void test_rfc4648_test_vectors(void) { @@ -199,7 +197,6 @@ static void test_unpadded_decode(void) { decoded = grpc_base64_decode("", 0); GPR_ASSERT(GRPC_SLICE_IS_EMPTY(decoded)); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/slice/slice_hash_table_test.cc b/test/core/slice/slice_hash_table_test.cc index b5b9c1bb734..89fc33a7bf0 100644 --- a/test/core/slice/slice_hash_table_test.cc +++ b/test/core/slice/slice_hash_table_test.cc @@ -121,7 +121,6 @@ static void test_slice_hash_table() { // Clean up. ExecCtx _local_exec_ctx; grpc_slice_hash_table_unref(table); - grpc_exec_ctx_finish(); } static int value_cmp_fn(void* a, void* b) { @@ -150,7 +149,6 @@ static void test_slice_hash_table_eq() { ExecCtx _local_exec_ctx; grpc_slice_hash_table_unref(table_a); grpc_slice_hash_table_unref(table_b); - grpc_exec_ctx_finish(); } static void test_slice_hash_table_not_eq() { @@ -229,7 +227,6 @@ static void test_slice_hash_table_not_eq() { grpc_slice_hash_table_unref(table_f); grpc_slice_hash_table_unref(table_g); grpc_slice_hash_table_unref(table_h); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/surface/byte_buffer_reader_test.cc b/test/core/surface/byte_buffer_reader_test.cc index 0ac4018a9ee..1f3a83efe64 100644 --- a/test/core/surface/byte_buffer_reader_test.cc +++ b/test/core/surface/byte_buffer_reader_test.cc @@ -134,7 +134,6 @@ static void read_compressed_slice(grpc_compression_algorithm algorithm, { ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_msg_compress(algorithm, &sliceb_in, &sliceb_out)); - grpc_exec_ctx_finish(); } buffer = grpc_raw_compressed_byte_buffer_create(sliceb_out.slices, diff --git a/test/core/surface/channel_create_test.cc b/test/core/surface/channel_create_test.cc index 516a55275a1..ece06e4968b 100644 --- a/test/core/surface/channel_create_test.cc +++ b/test/core/surface/channel_create_test.cc @@ -39,7 +39,6 @@ void test_unknown_scheme_target(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_exec_ctx_finish(); grpc_channel_destroy(chan); } diff --git a/test/core/surface/completion_queue_test.cc b/test/core/surface/completion_queue_test.cc index f014738f4cb..39aedeba026 100644 --- a/test/core/surface/completion_queue_test.cc +++ b/test/core/surface/completion_queue_test.cc @@ -151,7 +151,6 @@ static void test_cq_end_op(void) { GPR_ASSERT(ev.success); shutdown_and_destroy(cc); - grpc_exec_ctx_finish(); } } @@ -193,7 +192,6 @@ static void test_cq_tls_cache_full(void) { GPR_ASSERT(ev.type == GRPC_QUEUE_TIMEOUT); shutdown_and_destroy(cc); - grpc_exec_ctx_finish(); } } @@ -221,7 +219,6 @@ static void test_cq_tls_cache_empty(void) { GPR_ASSERT( grpc_completion_queue_thread_local_cache_flush(cc, &res_tag, &ok) == 0); shutdown_and_destroy(cc); - grpc_exec_ctx_finish(); } } @@ -322,7 +319,6 @@ static void test_pluck(void) { } shutdown_and_destroy(cc); - grpc_exec_ctx_finish(); } } diff --git a/test/core/surface/completion_queue_threading_test.cc b/test/core/surface/completion_queue_threading_test.cc index 43e90029bca..6625e7e09f1 100644 --- a/test/core/surface/completion_queue_threading_test.cc +++ b/test/core/surface/completion_queue_threading_test.cc @@ -116,7 +116,6 @@ static void test_too_many_plucks(void) { } shutdown_and_destroy(cc); - grpc_exec_ctx_finish(); } #define TEST_THREAD_EVENTS 10000 @@ -165,12 +164,10 @@ static void producer_thread(void* arg) { static_cast<grpc_cq_completion*>( gpr_malloc(sizeof(grpc_cq_completion)))); opt->events_triggered++; - grpc_exec_ctx_finish(); } gpr_log(GPR_INFO, "producer %d phase 2 done", opt->id); gpr_event_set(&opt->on_finished, (void*)(intptr_t)1); - grpc_exec_ctx_finish(); } static void consumer_thread(void* arg) { diff --git a/test/core/surface/concurrent_connectivity_test.cc b/test/core/surface/concurrent_connectivity_test.cc index 62fb58dcbc5..b3999b481f5 100644 --- a/test/core/surface/concurrent_connectivity_test.cc +++ b/test/core/surface/concurrent_connectivity_test.cc @@ -134,7 +134,7 @@ void bad_server_thread(void* vargs) { gpr_mu_lock(args->mu); while (gpr_atm_acq_load(&args->stop) == 0) { - grpc_millis deadline = grpc_exec_ctx_now() + 100; + grpc_millis deadline = ExecCtx::Get()->Now() + 100; grpc_pollset_worker* worker = NULL; if (!GRPC_LOG_IF_ERROR( @@ -143,15 +143,13 @@ void bad_server_thread(void* vargs) { gpr_atm_rel_store(&args->stop, 1); } gpr_mu_unlock(args->mu); - grpc_exec_ctx_finish(); + gpr_mu_lock(args->mu); } gpr_mu_unlock(args->mu); grpc_tcp_server_unref(s); - grpc_exec_ctx_finish(); - gpr_free(args->addr); } @@ -228,7 +226,6 @@ int run_concurrent_connectivity_test() { grpc_pollset_shutdown(args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(); grpc_shutdown(); return 0; diff --git a/test/core/surface/lame_client_test.cc b/test/core/surface/lame_client_test.cc index 7104d2e30ac..dd14a035771 100644 --- a/test/core/surface/lame_client_test.cc +++ b/test/core/surface/lame_client_test.cc @@ -54,13 +54,11 @@ void test_transport_op(grpc_channel* channel) { op->connectivity_state = &state; elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); elem->filter->start_transport_op(elem, op); - grpc_exec_ctx_finish(); GRPC_CLOSURE_INIT(&transport_op_cb, do_nothing, NULL, grpc_schedule_on_exec_ctx); op = grpc_make_transport_op(&transport_op_cb); elem->filter->start_transport_op(elem, op); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/surface/num_external_connectivity_watchers_test.cc b/test/core/surface/num_external_connectivity_watchers_test.cc index e7cde7e39b9..bf51dac6ddb 100644 --- a/test/core/surface/num_external_connectivity_watchers_test.cc +++ b/test/core/surface/num_external_connectivity_watchers_test.cc @@ -180,7 +180,6 @@ static grpc_channel* secure_test_create_channel(const char* addr) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); - grpc_exec_ctx_finish(); } grpc_channel_credentials_release(ssl_creds); return channel; diff --git a/test/core/surface/secure_channel_create_test.cc b/test/core/surface/secure_channel_create_test.cc index 9a4ac1f0bd0..dd9f907652a 100644 --- a/test/core/surface/secure_channel_create_test.cc +++ b/test/core/surface/secure_channel_create_test.cc @@ -40,7 +40,6 @@ void test_unknown_scheme_target(void) { ExecCtx _local_exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); grpc_channel_credentials_unref(creds); - grpc_exec_ctx_finish(); } void test_security_connector_already_in_arg(void) { @@ -57,7 +56,6 @@ void test_security_connector_already_in_arg(void) { GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); ExecCtx _local_exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); - grpc_exec_ctx_finish(); } void test_null_creds(void) { @@ -67,7 +65,6 @@ void test_null_creds(void) { GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); ExecCtx _local_exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/surface/sequential_connectivity_test.cc b/test/core/surface/sequential_connectivity_test.cc index f88124e4ae7..aae418cedbe 100644 --- a/test/core/surface/sequential_connectivity_test.cc +++ b/test/core/surface/sequential_connectivity_test.cc @@ -158,7 +158,6 @@ static grpc_channel* secure_test_create_channel(const char* addr) { { ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); - grpc_exec_ctx_finish(); } grpc_channel_credentials_release(ssl_creds); return channel; diff --git a/test/core/transport/bdp_estimator_test.cc b/test/core/transport/bdp_estimator_test.cc index ca29b826168..4d41ece875f 100644 --- a/test/core/transport/bdp_estimator_test.cc +++ b/test/core/transport/bdp_estimator_test.cc @@ -66,9 +66,8 @@ void AddSamples(BdpEstimator* estimator, int64_t* samples, size_t n) { } gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(1, GPR_TIMESPAN))); - grpc_exec_ctx_invalidate_now(); + ExecCtx::Get()->InvalidateNow(); estimator->CompletePing(); - grpc_exec_ctx_finish(); } void AddSample(BdpEstimator* estimator, int64_t sample) { diff --git a/test/core/transport/byte_stream_test.cc b/test/core/transport/byte_stream_test.cc index af6abaeeedb..12a933f3327 100644 --- a/test/core/transport/byte_stream_test.cc +++ b/test/core/transport/byte_stream_test.cc @@ -66,7 +66,6 @@ static void test_slice_buffer_stream_basic(void) { // Clean up. grpc_byte_stream_destroy(&stream.base); grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } static void test_slice_buffer_stream_shutdown(void) { @@ -109,7 +108,6 @@ static void test_slice_buffer_stream_shutdown(void) { // Clean up. grpc_byte_stream_destroy(&stream.base); grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } // @@ -153,7 +151,6 @@ static void test_caching_byte_stream_basic(void) { grpc_byte_stream_destroy(&stream.base); grpc_byte_stream_cache_destroy(&cache); grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } static void test_caching_byte_stream_reset(void) { @@ -200,7 +197,6 @@ static void test_caching_byte_stream_reset(void) { grpc_byte_stream_destroy(&stream.base); grpc_byte_stream_cache_destroy(&cache); grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } static void test_caching_byte_stream_shared_cache(void) { @@ -254,7 +250,6 @@ static void test_caching_byte_stream_shared_cache(void) { grpc_byte_stream_destroy(&stream2.base); grpc_byte_stream_cache_destroy(&cache); grpc_slice_buffer_destroy_internal(&buffer); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/transport/chttp2/bin_decoder_test.cc b/test/core/transport/chttp2/bin_decoder_test.cc index 663ccf189b4..3d463c40a53 100644 --- a/test/core/transport/chttp2/bin_decoder_test.cc +++ b/test/core/transport/chttp2/bin_decoder_test.cc @@ -129,7 +129,5 @@ int main(int argc, char** argv) { EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3)); EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3)); - grpc_exec_ctx_finish(); - return all_ok ? 0 : 1; } diff --git a/test/core/transport/chttp2/hpack_encoder_test.cc b/test/core/transport/chttp2/hpack_encoder_test.cc index e1bfcc5b37f..fe4538339e9 100644 --- a/test/core/transport/chttp2/hpack_encoder_test.cc +++ b/test/core/transport/chttp2/hpack_encoder_test.cc @@ -261,7 +261,6 @@ static void run_test(void (*test)(), const char* name) { grpc_chttp2_hpack_compressor_init(&g_compressor); test(); grpc_chttp2_hpack_compressor_destroy(&g_compressor); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc index d2199ca7063..feb27fc0ff6 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc @@ -43,7 +43,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse( &parser, grpc_slice_from_static_buffer(data, size))); grpc_chttp2_hpack_parser_destroy(&parser); - grpc_exec_ctx_finish(); + grpc_shutdown(); return 0; } diff --git a/test/core/transport/chttp2/hpack_parser_test.cc b/test/core/transport/chttp2/hpack_parser_test.cc index 0a3cbf84ad8..69a13108f94 100644 --- a/test/core/transport/chttp2/hpack_parser_test.cc +++ b/test/core/transport/chttp2/hpack_parser_test.cc @@ -65,7 +65,6 @@ static void test_vector(grpc_chttp2_hpack_parser* parser, ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_chttp2_hpack_parser_parse(parser, slices[i]) == GRPC_ERROR_NONE); - grpc_exec_ctx_finish(); } for (i = 0; i < nslices; i++) { @@ -204,8 +203,6 @@ static void test_vectors(grpc_slice_split_mode mode) { "set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", NULL); grpc_chttp2_hpack_parser_destroy(&parser); - - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/transport/chttp2/hpack_table_test.cc b/test/core/transport/chttp2/hpack_table_test.cc index 68682f19919..fd5604d8576 100644 --- a/test/core/transport/chttp2/hpack_table_test.cc +++ b/test/core/transport/chttp2/hpack_table_test.cc @@ -113,7 +113,6 @@ static void test_static_lookup(void) { assert_index(&tbl, 61, "www-authenticate", ""); grpc_chttp2_hptbl_destroy(&tbl); - grpc_exec_ctx_finish(); } static void test_many_additions(void) { @@ -148,7 +147,6 @@ static void test_many_additions(void) { } grpc_chttp2_hptbl_destroy(&tbl); - grpc_exec_ctx_finish(); } static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl* tbl, @@ -159,7 +157,7 @@ static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl* tbl, grpc_slice_from_copied_string(key), grpc_slice_from_copied_string(value)); grpc_chttp2_hptbl_find_result r = grpc_chttp2_hptbl_find(tbl, md); GRPC_MDELEM_UNREF(md); - grpc_exec_ctx_finish(); + return r; } @@ -266,7 +264,6 @@ static void test_find(void) { GPR_ASSERT(r.has_value == 0); grpc_chttp2_hptbl_destroy(&tbl); - grpc_exec_ctx_finish(); } int main(int argc, char** argv) { diff --git a/test/core/transport/connectivity_state_test.cc b/test/core/transport/connectivity_state_test.cc index 92bf1ba9033..8ddd8bb2dfe 100644 --- a/test/core/transport/connectivity_state_test.cc +++ b/test/core/transport/connectivity_state_test.cc @@ -66,7 +66,6 @@ static void test_check(void) { GPR_ASSERT(grpc_connectivity_state_check(&tracker) == GRPC_CHANNEL_IDLE); GPR_ASSERT(error == GRPC_ERROR_NONE); grpc_connectivity_state_destroy(&tracker); - grpc_exec_ctx_finish(); } static void test_subscribe_then_unsubscribe(void) { @@ -80,16 +79,15 @@ static void test_subscribe_then_unsubscribe(void) { grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&tracker, &state, closure)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_notify_on_state_change(&tracker, NULL, closure); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 1); grpc_connectivity_state_destroy(&tracker); - grpc_exec_ctx_finish(); } static void test_subscribe_then_destroy(void) { @@ -103,11 +101,11 @@ static void test_subscribe_then_destroy(void) { grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&tracker, &state, closure)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_destroy(&tracker); - grpc_exec_ctx_finish(); + GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 1); } @@ -123,11 +121,11 @@ static void test_subscribe_with_failure_then_destroy(void) { grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_SHUTDOWN, "xxx"); GPR_ASSERT(0 == grpc_connectivity_state_notify_on_state_change( &tracker, &state, closure)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_destroy(&tracker); - grpc_exec_ctx_finish(); + GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 1); } diff --git a/test/core/transport/metadata_test.cc b/test/core/transport/metadata_test.cc index 4bc56729581..3d7034e4cea 100644 --- a/test/core/transport/metadata_test.cc +++ b/test/core/transport/metadata_test.cc @@ -80,7 +80,7 @@ static void test_create_metadata(bool intern_keys, bool intern_values) { GRPC_MDELEM_UNREF(m1); GRPC_MDELEM_UNREF(m2); GRPC_MDELEM_UNREF(m3); - grpc_exec_ctx_finish(); + grpc_shutdown(); } @@ -103,7 +103,7 @@ static void test_create_many_ephemeral_metadata(bool intern_keys, maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_copied_string(buffer), intern_values))); } - grpc_exec_ctx_finish(); + grpc_shutdown(); } @@ -138,7 +138,7 @@ static void test_create_many_persistant_metadata(void) { for (i = 0; i < MANY; i++) { GRPC_MDELEM_UNREF(created[i]); } - grpc_exec_ctx_finish(); + grpc_shutdown(); gpr_free(created); @@ -169,7 +169,7 @@ static void test_spin_creating_the_same_thing(bool intern_keys, GPR_ASSERT(a.payload == b.payload); GPR_ASSERT(a.payload == c.payload); } - grpc_exec_ctx_finish(); + grpc_shutdown(); } @@ -209,7 +209,7 @@ static void test_identity_laws(bool intern_keys, bool intern_values) { GRPC_MDELEM_UNREF(a); GRPC_MDELEM_UNREF(b); GRPC_MDELEM_UNREF(c); - grpc_exec_ctx_finish(); + grpc_shutdown(); } @@ -259,7 +259,6 @@ static void test_things_stick_around(void) { } } - grpc_exec_ctx_finish(); grpc_shutdown(); gpr_free(strs); gpr_free(shuf); @@ -284,7 +283,7 @@ static void test_user_data_works(void) { grpc_mdelem_set_user_data(md, gpr_free, ud2); GPR_ASSERT(grpc_mdelem_get_user_data(md, gpr_free) == ud1); GRPC_MDELEM_UNREF(md); - grpc_exec_ctx_finish(); + grpc_shutdown(); } @@ -340,7 +339,6 @@ static void test_mdelem_sizes_in_hpack(bool intern_key, bool intern_value) { intern_value); } - grpc_exec_ctx_finish(); grpc_shutdown(); } @@ -366,7 +364,6 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) { GRPC_MDELEM_UNREF(q); } - grpc_exec_ctx_finish(); grpc_shutdown(); } diff --git a/test/core/transport/status_conversion_test.cc b/test/core/transport/status_conversion_test.cc index 44e961310a4..16ecd076a30 100644 --- a/test/core/transport/status_conversion_test.cc +++ b/test/core/transport/status_conversion_test.cc @@ -26,7 +26,7 @@ do { \ ExecCtx _local_exec_ctx; \ GPR_ASSERT(grpc_http2_error_to_grpc_status(a, deadline) == (b)); \ - grpc_exec_ctx_finish(); \ + \ } while (0) #define GRPC_STATUS_TO_HTTP2_STATUS(a, b) \ GPR_ASSERT(grpc_status_to_http2_status(a) == (b)) diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc index 2cabd560ee2..4e68ee3744d 100644 --- a/test/core/util/port_server_client.cc +++ b/test/core/util/port_server_client.cc @@ -85,19 +85,19 @@ void grpc_free_port_using_server(int port) { grpc_resource_quota* resource_quota = grpc_resource_quota_create("port_server_client/free"); grpc_httpcli_get(&context, &pr.pops, resource_quota, &req, - grpc_exec_ctx_now() + 30 * GPR_MS_PER_SEC, + ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(freed_port_from_server, &pr, grpc_schedule_on_exec_ctx), &rsp); grpc_resource_quota_unref_internal(resource_quota); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(pr.mu); while (!pr.done) { grpc_pollset_worker* worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&pr.pops), &worker, - grpc_exec_ctx_now() + GPR_MS_PER_SEC))) { + ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { pr.done = 1; } } @@ -106,7 +106,7 @@ void grpc_free_port_using_server(int port) { grpc_httpcli_context_destroy(&context); grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), shutdown_closure); - grpc_exec_ctx_finish(); + gpr_free(path); grpc_http_response_destroy(&rsp); @@ -167,7 +167,7 @@ static void got_port_from_server(void* arg, grpc_error* error) { grpc_resource_quota* resource_quota = grpc_resource_quota_create("port_server_client/pick_retry"); grpc_httpcli_get(pr->ctx, &pr->pops, resource_quota, &req, - grpc_exec_ctx_now() + 30 * GPR_MS_PER_SEC, + ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(got_port_from_server, pr, grpc_schedule_on_exec_ctx), &pr->response); @@ -217,18 +217,18 @@ int grpc_pick_port_using_server(void) { grpc_resource_quota_create("port_server_client/pick"); grpc_httpcli_get( &context, &pr.pops, resource_quota, &req, - grpc_exec_ctx_now() + 30 * GPR_MS_PER_SEC, + ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(got_port_from_server, &pr, grpc_schedule_on_exec_ctx), &pr.response); grpc_resource_quota_unref_internal(resource_quota); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(pr.mu); while (pr.port == -1) { grpc_pollset_worker* worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&pr.pops), &worker, - grpc_exec_ctx_now() + GPR_MS_PER_SEC))) { + ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { pr.port = 0; } } @@ -238,7 +238,7 @@ int grpc_pick_port_using_server(void) { grpc_httpcli_context_destroy(&context); grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), shutdown_closure); - grpc_exec_ctx_finish(); + grpc_shutdown(); return pr.port; diff --git a/test/core/util/test_tcp_server.cc b/test/core/util/test_tcp_server.cc index 79178a7cbdf..7e17ff1f532 100644 --- a/test/core/util/test_tcp_server.cc +++ b/test/core/util/test_tcp_server.cc @@ -72,8 +72,6 @@ void test_tcp_server_start(test_tcp_server* server, int port) { grpc_tcp_server_start(server->tcp_server, &server->pollset, 1, server->on_connect, server->cb_data); gpr_log(GPR_INFO, "test tcp server listening on 0.0.0.0:%d", port); - - grpc_exec_ctx_finish(); } void test_tcp_server_poll(test_tcp_server* server, int seconds) { @@ -85,7 +83,6 @@ void test_tcp_server_poll(test_tcp_server* server, int seconds) { GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(server->pollset, &worker, deadline)); gpr_mu_unlock(server->mu); - grpc_exec_ctx_finish(); } static void do_nothing(void* arg, grpc_error* error) {} @@ -109,7 +106,7 @@ void test_tcp_server_destroy(test_tcp_server* server) { grpc_pollset_shutdown(server->pollset, GRPC_CLOSURE_CREATE(finish_pollset, server->pollset, grpc_schedule_on_exec_ctx)); - grpc_exec_ctx_finish(); + gpr_free(server->pollset); grpc_shutdown(); } diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc index df2ed0ecd00..4cf39eab482 100644 --- a/test/cpp/end2end/client_lb_end2end_test.cc +++ b/test/cpp/end2end/client_lb_end2end_test.cc @@ -133,7 +133,6 @@ class ClientLbEnd2endTest : public ::testing::Test { fake_result); grpc_channel_args_destroy(fake_result); grpc_lb_addresses_destroy(addresses); - grpc_exec_ctx_finish(); } void ResetStub(const grpc::string& lb_policy_name = "") { diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index 62d7094d4ca..962d5a7e688 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -470,7 +470,6 @@ class GrpclbEnd2endTest : public ::testing::Test { grpc_fake_resolver_response_generator_set_response(response_generator_, &fake_result); grpc_lb_addresses_destroy(addresses); - grpc_exec_ctx_finish(); } const std::vector<int> GetBackendPorts(const size_t start_index = 0) const { diff --git a/test/cpp/grpclb/grpclb_test.cc b/test/cpp/grpclb/grpclb_test.cc index c2c6c0b3370..6f6dd3c4df7 100644 --- a/test/cpp/grpclb/grpclb_test.cc +++ b/test/cpp/grpclb/grpclb_test.cc @@ -603,7 +603,6 @@ static void setup_client(const server_fixture* lb_server, grpc_channel_credentials_unref(fake_creds); grpc_channel_args_destroy(args); grpc_fake_resolver_response_generator_unref(response_generator); - grpc_exec_ctx_finish(); } static void teardown_client(client_fixture* cf) { diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index eac1c753c7a..47b984bc280 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -534,7 +534,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { ? &dummy_transport::dummy_transport : nullptr, "CHANNEL", channel_stack))); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_call_stack* call_stack = static_cast<grpc_call_stack*>(gpr_zalloc(channel_stack->call_stack_size)); grpc_millis deadline = GRPC_MILLIS_INF_FUTURE; @@ -558,7 +558,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { typename TestOp::Op op(&test_op_data, call_stack); grpc_call_stack_destroy(call_stack, &final_info, NULL); op.Finish(); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); // recreate arena every 64k iterations to avoid oom if (0 == (state.iterations() & 0xffff)) { gpr_arena_destroy(call_args.arena); @@ -567,7 +567,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { } gpr_arena_destroy(call_args.arena); grpc_channel_stack_destroy(channel_stack); - grpc_exec_ctx_finish(); + gpr_free(channel_stack); gpr_free(call_stack); @@ -693,7 +693,6 @@ class IsolatedCallFixture : public TrackCounters { { ExecCtx _local_exec_ctx; channel_ = grpc_channel_create_with_builder(builder, GRPC_CLIENT_CHANNEL); - grpc_exec_ctx_finish(); } cq_ = grpc_completion_queue_create_for_next(NULL); } diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index d6fb3cd3695..f822f095a78 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -55,9 +55,9 @@ static void BM_HpackEncoderInitDestroy(benchmark::State& state) { while (state.KeepRunning()) { grpc_chttp2_hpack_compressor_init(&c); grpc_chttp2_hpack_compressor_destroy(&c); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_HpackEncoderInitDestroy); @@ -65,7 +65,7 @@ BENCHMARK(BM_HpackEncoderInitDestroy); static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; - grpc_millis saved_now = grpc_exec_ctx_now(); + grpc_millis saved_now = ExecCtx::Get()->Now(); grpc_metadata_batch b; grpc_metadata_batch_init(&b); @@ -87,12 +87,11 @@ static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { }; grpc_chttp2_encode_header(&c, NULL, 0, &b, &hopt, &outbuf); grpc_slice_buffer_reset_and_unref_internal(&outbuf); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } grpc_metadata_batch_destroy(&b); grpc_chttp2_hpack_compressor_destroy(&c); grpc_slice_buffer_destroy_internal(&outbuf); - grpc_exec_ctx_finish(); std::ostringstream label; label << "framing_bytes/iter:" @@ -145,12 +144,11 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { } } grpc_slice_buffer_reset_and_unref_internal(&outbuf); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } grpc_metadata_batch_destroy(&b); grpc_chttp2_hpack_compressor_destroy(&c); grpc_slice_buffer_destroy_internal(&outbuf); - grpc_exec_ctx_finish(); std::ostringstream label; label << "framing_bytes/iter:" @@ -432,9 +430,9 @@ static void BM_HpackParserInitDestroy(benchmark::State& state) { while (state.KeepRunning()) { grpc_chttp2_hpack_parser_init(&p); grpc_chttp2_hpack_parser_destroy(&p); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_HpackParserInitDestroy); @@ -460,12 +458,12 @@ static void BM_HpackParserParseHeader(benchmark::State& state) { for (auto slice : benchmark_slices) { GPR_ASSERT(GRPC_ERROR_NONE == grpc_chttp2_hpack_parser_parse(&p, slice)); } - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } for (auto slice : init_slices) grpc_slice_unref(slice); for (auto slice : benchmark_slices) grpc_slice_unref(slice); grpc_chttp2_hpack_parser_destroy(&p); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index 3a3547141df..f6e4c2bcc43 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -136,12 +136,9 @@ class Fixture { FlushExecCtx(); } - void FlushExecCtx() { grpc_exec_ctx_flush(); } + void FlushExecCtx() { ExecCtx::Get()->Flush(); } - ~Fixture() { - grpc_transport_destroy(t_); - grpc_exec_ctx_finish(); - } + ~Fixture() { grpc_transport_destroy(t_); } grpc_chttp2_transport* chttp2_transport() { return reinterpret_cast<grpc_chttp2_transport*>(t_); @@ -152,7 +149,6 @@ class Fixture { private: DummyEndpoint* ep_; - ExecCtx _local_exec_ctx; grpc_transport* t_; }; @@ -261,6 +257,7 @@ class Stream { static void BM_StreamCreateDestroy(benchmark::State& state) { TrackCounters track_counters; + ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); grpc_transport_stream_op_batch op; @@ -306,6 +303,7 @@ class RepresentativeClientInitialMetadata { template <class Metadata> static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State& state) { TrackCounters track_counters; + ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); grpc_transport_stream_op_batch op; @@ -356,6 +354,7 @@ BENCHMARK_TEMPLATE(BM_StreamCreateSendInitialMetadataDestroy, static void BM_TransportEmptyOp(benchmark::State& state) { TrackCounters track_counters; + ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); s.Init(state); @@ -388,6 +387,7 @@ std::vector<std::unique_ptr<gpr_event>> done_events; static void BM_TransportStreamSend(benchmark::State& state) { TrackCounters track_counters; + ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); auto s = std::unique_ptr<Stream>(new Stream(&f)); s->Init(state); @@ -517,6 +517,7 @@ static grpc_slice CreateIncomingDataSlice(size_t length, size_t frame_size) { static void BM_TransportStreamRecv(benchmark::State& state) { TrackCounters track_counters; + ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); s.Init(state); diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc index 0e25c3d235d..ce8a0545153 100644 --- a/test/cpp/microbenchmarks/bm_closure.cc +++ b/test/cpp/microbenchmarks/bm_closure.cc @@ -35,7 +35,6 @@ static void BM_NoOpExecCtx(benchmark::State& state) { TrackCounters track_counters; while (state.KeepRunning()) { ExecCtx _local_exec_ctx; - grpc_exec_ctx_finish(); } track_counters.Finish(state); } @@ -45,9 +44,9 @@ static void BM_WellFlushed(benchmark::State& state) { TrackCounters track_counters; ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_WellFlushed); @@ -75,7 +74,7 @@ static void BM_ClosureInitAgainstCombiner(benchmark::State& state) { &c, DoNothing, NULL, grpc_combiner_scheduler(combiner))); } GRPC_COMBINER_UNREF(combiner, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureInitAgainstCombiner); @@ -87,9 +86,9 @@ static void BM_ClosureRunOnExecCtx(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_RUN(&c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureRunOnExecCtx); @@ -102,7 +101,7 @@ static void BM_ClosureCreateAndRun(benchmark::State& state) { GRPC_CLOSURE_CREATE(DoNothing, NULL, grpc_schedule_on_exec_ctx), GRPC_ERROR_NONE); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureCreateAndRun); @@ -116,7 +115,7 @@ static void BM_ClosureInitAndRun(benchmark::State& state) { GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx), GRPC_ERROR_NONE); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureInitAndRun); @@ -128,9 +127,9 @@ static void BM_ClosureSchedOnExecCtx(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSchedOnExecCtx); @@ -145,9 +144,9 @@ static void BM_ClosureSched2OnExecCtx(benchmark::State& state) { while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnExecCtx); @@ -165,9 +164,9 @@ static void BM_ClosureSched3OnExecCtx(benchmark::State& state) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSched3OnExecCtx); @@ -183,7 +182,7 @@ static void BM_AcquireMutex(benchmark::State& state) { DoNothing(NULL, GRPC_ERROR_NONE); gpr_mu_unlock(&mu); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_AcquireMutex); @@ -202,7 +201,7 @@ static void BM_TryAcquireMutex(benchmark::State& state) { abort(); } } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_TryAcquireMutex); @@ -217,7 +216,7 @@ static void BM_AcquireSpinlock(benchmark::State& state) { DoNothing(NULL, GRPC_ERROR_NONE); gpr_spinlock_unlock(&mu); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_AcquireSpinlock); @@ -235,7 +234,7 @@ static void BM_TryAcquireSpinlock(benchmark::State& state) { abort(); } } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_TryAcquireSpinlock); @@ -248,10 +247,10 @@ static void BM_ClosureSchedOnCombiner(benchmark::State& state) { ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSchedOnCombiner); @@ -267,10 +266,10 @@ static void BM_ClosureSched2OnCombiner(benchmark::State& state) { while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnCombiner); @@ -289,10 +288,10 @@ static void BM_ClosureSched3OnCombiner(benchmark::State& state) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSched3OnCombiner); @@ -309,11 +308,11 @@ static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) { while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner1, "finished"); GRPC_COMBINER_UNREF(combiner2, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSched2OnTwoCombiners); @@ -336,11 +335,11 @@ static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) { GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c4, GRPC_ERROR_NONE); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner1, "finished"); GRPC_COMBINER_UNREF(combiner2, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureSched4OnTwoCombiners); @@ -379,7 +378,7 @@ static void BM_ClosureReschedOnExecCtx(benchmark::State& state) { ExecCtx _local_exec_ctx; Rescheduler r(state, grpc_schedule_on_exec_ctx); r.ScheduleFirst(); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnExecCtx); @@ -390,9 +389,9 @@ static void BM_ClosureReschedOnCombiner(benchmark::State& state) { grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_scheduler(combiner)); r.ScheduleFirst(); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GRPC_COMBINER_UNREF(combiner, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnCombiner); @@ -403,9 +402,9 @@ static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) { grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_finally_scheduler(combiner)); r.ScheduleFirstAgainstDifferentScheduler(grpc_combiner_scheduler(combiner)); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); GRPC_COMBINER_UNREF(combiner, "finished"); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_ClosureReschedOnCombinerFinally); diff --git a/test/cpp/microbenchmarks/bm_cq.cc b/test/cpp/microbenchmarks/bm_cq.cc index 6d36e61cff9..9fb603213ac 100644 --- a/test/cpp/microbenchmarks/bm_cq.cc +++ b/test/cpp/microbenchmarks/bm_cq.cc @@ -84,7 +84,7 @@ static void BM_Pass1Cpp(benchmark::State& state) { GPR_ASSERT(grpc_cq_begin_op(c_cq, &dummy_tag)); grpc_cq_end_op(c_cq, &dummy_tag, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(); + void* tag; bool ok; cq.Next(&tag, &ok); @@ -104,7 +104,7 @@ static void BM_Pass1Core(benchmark::State& state) { GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(); + grpc_completion_queue_next(cq, deadline, NULL); } grpc_completion_queue_destroy(cq); @@ -123,7 +123,7 @@ static void BM_Pluck1Core(benchmark::State& state) { GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, &completion); - grpc_exec_ctx_finish(); + grpc_completion_queue_pluck(cq, NULL, deadline, NULL); } grpc_completion_queue_destroy(cq); diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc index 41e616a6ef0..0cd9a2c3613 100644 --- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc @@ -76,7 +76,7 @@ static grpc_error* pollset_work(grpc_pollset* ps, grpc_pollset_worker** worker, GPR_ASSERT(grpc_cq_begin_op(g_cq, g_tag)); grpc_cq_end_op(g_cq, g_tag, GRPC_ERROR_NONE, cq_done_cb, NULL, (grpc_cq_completion*)gpr_malloc(sizeof(grpc_cq_completion))); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); gpr_mu_lock(&ps->mu); return GRPC_ERROR_NONE; } diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index 3f85e351f56..8dc98ab9238 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -253,7 +253,7 @@ static void BM_ErrorGetStatus(benchmark::State& state) { grpc_error_get_status(fixture.error(), fixture.deadline(), &status, &slice, NULL); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } @@ -267,7 +267,7 @@ static void BM_ErrorGetStatusCode(benchmark::State& state) { grpc_error_get_status(fixture.error(), fixture.deadline(), &status, NULL, NULL); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } @@ -281,7 +281,7 @@ static void BM_ErrorHttpError(benchmark::State& state) { grpc_error_get_status(fixture.error(), fixture.deadline(), NULL, NULL, &error); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } diff --git a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc index 74e99982ce8..191c93c58de 100644 --- a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc +++ b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc @@ -183,7 +183,7 @@ class TrickledCHTTP2 : public EndpointPairFixture { grpc_trickle_endpoint_trickle(endpoint_pair_.client); size_t server_backlog = grpc_trickle_endpoint_trickle(endpoint_pair_.server); - grpc_exec_ctx_finish(); + if (update_stats) { UpdateStats((grpc_chttp2_transport*)client_transport_, &client_stats_, client_backlog); diff --git a/test/cpp/microbenchmarks/bm_metadata.cc b/test/cpp/microbenchmarks/bm_metadata.cc index 5d89e0d3c6c..07fcf6af991 100644 --- a/test/cpp/microbenchmarks/bm_metadata.cc +++ b/test/cpp/microbenchmarks/bm_metadata.cc @@ -94,7 +94,7 @@ static void BM_MetadataFromNonInternedSlices(benchmark::State& state) { while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_MetadataFromNonInternedSlices); @@ -107,7 +107,7 @@ static void BM_MetadataFromInternedSlices(benchmark::State& state) { while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(); + grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -125,7 +125,7 @@ static void BM_MetadataFromInternedSlicesAlreadyInIndex( GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } GRPC_MDELEM_UNREF(seed); - grpc_exec_ctx_finish(); + grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -140,7 +140,7 @@ static void BM_MetadataFromInternedKey(benchmark::State& state) { while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(); + grpc_slice_unref(k); track_counters.Finish(state); } @@ -157,7 +157,7 @@ static void BM_MetadataFromNonInternedSlicesWithBackingStore( GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_MetadataFromNonInternedSlicesWithBackingStore); @@ -173,7 +173,7 @@ static void BM_MetadataFromInternedSlicesWithBackingStore( GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(); + grpc_slice_unref(k); grpc_slice_unref(v); track_counters.Finish(state); @@ -191,7 +191,7 @@ static void BM_MetadataFromInternedKeyWithBackingStore( GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); } - grpc_exec_ctx_finish(); + grpc_slice_unref(k); track_counters.Finish(state); } @@ -205,7 +205,7 @@ static void BM_MetadataFromStaticMetadataStrings(benchmark::State& state) { while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(); + grpc_slice_unref(k); track_counters.Finish(state); } @@ -220,7 +220,7 @@ static void BM_MetadataFromStaticMetadataStringsNotIndexed( while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } - grpc_exec_ctx_finish(); + grpc_slice_unref(k); track_counters.Finish(state); } @@ -237,7 +237,7 @@ static void BM_MetadataRefUnrefExternal(benchmark::State& state) { GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } GRPC_MDELEM_UNREF(el); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefExternal); @@ -256,7 +256,7 @@ static void BM_MetadataRefUnrefInterned(benchmark::State& state) { GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } GRPC_MDELEM_UNREF(el); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefInterned); @@ -270,7 +270,7 @@ static void BM_MetadataRefUnrefAllocated(benchmark::State& state) { GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } GRPC_MDELEM_UNREF(el); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefAllocated); @@ -283,7 +283,7 @@ static void BM_MetadataRefUnrefStatic(benchmark::State& state) { GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); } GRPC_MDELEM_UNREF(el); - grpc_exec_ctx_finish(); + track_counters.Finish(state); } BENCHMARK(BM_MetadataRefUnrefStatic); diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index 3da8e16788e..7ddca45eca2 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -60,9 +60,9 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { gpr_mu_lock(mu); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } - grpc_exec_ctx_finish(); + gpr_free(ps); track_counters.Finish(state); } @@ -124,7 +124,7 @@ static void BM_PollEmptyPollset(benchmark::State& state) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(); + gpr_free(ps); track_counters.Finish(state); } @@ -143,7 +143,7 @@ static void BM_PollAddFd(benchmark::State& state) { grpc_fd* fd = grpc_fd_create(wakeup_fd.read_fd, "xxx"); while (state.KeepRunning()) { grpc_pollset_add_fd(ps, fd); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); } grpc_fd_orphan(fd, NULL, NULL, false /* already_closed */, "xxx"); grpc_closure shutdown_ps_closure; @@ -152,7 +152,7 @@ static void BM_PollAddFd(benchmark::State& state) { gpr_mu_lock(mu); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(); + gpr_free(ps); track_counters.Finish(state); } @@ -248,7 +248,7 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - grpc_exec_ctx_finish(); + grpc_wakeup_fd_destroy(&wakeup_fd); gpr_free(ps); track_counters.Finish(state); diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index 24b74b9d374..075064eca73 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -205,8 +205,6 @@ class EndpointPairFixture : public BaseFixture { channel_ = CreateChannelInternal("", channel); } - - grpc_exec_ctx_finish(); } virtual ~EndpointPairFixture() { diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 836cc676c23..8ba8be0ea48 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -171,7 +171,7 @@ void ArgsFinish(ArgsStruct* args) { grpc_pollset_shutdown(args->pollset, &DoNothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() grpc_channel_args_destroy(args->channel_args); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); GRPC_COMBINER_UNREF(args->lock, NULL); @@ -202,7 +202,6 @@ void PollPollsetUntilRequestDone(ArgsStruct* args) { grpc_timespec_to_millis_round_up( NSecondDeadline(1)))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_finish(); } gpr_event_set(&args->ev, (void*)1); } @@ -295,11 +294,10 @@ TEST(ResolverComponentTest, TestResolvesRelevantRecords) { (void*)&args, grpc_combiner_scheduler(args.lock)); grpc_resolver_next_locked(resolver, &args.channel_args, &on_resolver_result_changed); - grpc_exec_ctx_flush(); + ExecCtx::Get()->Flush(); PollPollsetUntilRequestDone(&args); GRPC_RESOLVER_UNREF(resolver, NULL); ArgsFinish(&args); - grpc_exec_ctx_finish(); } } // namespace diff --git a/test/cpp/performance/writes_per_rpc_test.cc b/test/cpp/performance/writes_per_rpc_test.cc index b05da25e1d5..b9514e63066 100644 --- a/test/cpp/performance/writes_per_rpc_test.cc +++ b/test/cpp/performance/writes_per_rpc_test.cc @@ -120,8 +120,6 @@ class EndpointPairFixture { channel_ = CreateChannelInternal("", channel); } - - grpc_exec_ctx_finish(); } virtual ~EndpointPairFixture() { From 6c26b16fe06b1cc75b4dac372f4f51f6b7d1bfc0 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Tue, 14 Nov 2017 18:11:22 -0800 Subject: [PATCH 08/22] Move ExecCtx to grpc_core namespace. Make exec_ctx a private static in ExecCtx and some minor changes --- .../filters/client_channel/backup_poller.cc | 8 +- .../client_channel/channel_connectivity.cc | 4 +- .../client_channel/lb_policy/grpclb/grpclb.cc | 9 +- .../resolver/dns/c_ares/dns_resolver_ares.cc | 2 +- .../resolver/dns/c_ares/grpc_ares_wrapper.cc | 2 +- .../resolver/dns/native/dns_resolver.cc | 2 +- .../ext/filters/client_channel/subchannel.cc | 3 +- .../client_channel/subchannel_index.cc | 39 +++--- .../ext/filters/max_age/max_age_filter.cc | 20 ++-- .../chttp2/client/insecure/channel_create.cc | 2 +- .../client/insecure/channel_create_posix.cc | 2 +- .../client/secure/secure_channel_create.cc | 2 +- .../transport/chttp2/server/chttp2_server.cc | 7 +- .../chttp2/server/insecure/server_chttp2.cc | 2 +- .../server/insecure/server_chttp2_posix.cc | 2 +- .../server/secure/server_secure_chttp2.cc | 2 +- .../chttp2/transport/chttp2_transport.cc | 10 +- .../chttp2/transport/flow_control.cc | 4 +- .../transport/chttp2/transport/frame_ping.cc | 2 +- .../chttp2/transport/hpack_encoder.cc | 3 +- .../ext/transport/chttp2/transport/parsing.cc | 2 +- .../ext/transport/chttp2/transport/writing.cc | 2 +- .../client/secure/cronet_channel_create.cc | 2 +- .../cronet/transport/cronet_transport.cc | 16 +-- .../ext/transport/inproc/inproc_transport.cc | 6 +- src/core/lib/backoff/backoff.cc | 4 +- .../compression/stream_compression_gzip.cc | 2 +- src/core/lib/debug/stats.h | 2 +- src/core/lib/iomgr/block_annotate.h | 14 +-- src/core/lib/iomgr/combiner.cc | 43 +++---- src/core/lib/iomgr/endpoint_pair_posix.cc | 2 +- src/core/lib/iomgr/endpoint_pair_windows.cc | 2 +- src/core/lib/iomgr/ev_epoll1_linux.cc | 20 ++-- src/core/lib/iomgr/ev_epollex_linux.cc | 10 +- src/core/lib/iomgr/ev_epollsig_linux.cc | 6 +- src/core/lib/iomgr/ev_poll_posix.cc | 8 +- src/core/lib/iomgr/exec_ctx.cc | 109 +++++++---------- src/core/lib/iomgr/exec_ctx.h | 68 +++++++++-- src/core/lib/iomgr/executor.cc | 12 +- src/core/lib/iomgr/iocp_windows.cc | 13 +- src/core/lib/iomgr/iomgr.cc | 10 +- src/core/lib/iomgr/iomgr_uv.cc | 2 +- src/core/lib/iomgr/pollset_uv.cc | 4 +- src/core/lib/iomgr/pollset_windows.cc | 8 +- src/core/lib/iomgr/resolve_address_uv.cc | 2 +- src/core/lib/iomgr/resource_quota.cc | 4 +- src/core/lib/iomgr/tcp_client_uv.cc | 4 +- src/core/lib/iomgr/tcp_posix.cc | 2 +- src/core/lib/iomgr/tcp_server_uv.cc | 8 +- src/core/lib/iomgr/tcp_uv.cc | 10 +- src/core/lib/iomgr/timer_generic.cc | 8 +- src/core/lib/iomgr/timer_manager.cc | 10 +- src/core/lib/iomgr/timer_uv.cc | 6 +- .../lib/security/context/security_context.cc | 4 +- .../lib/security/credentials/credentials.cc | 6 +- .../google_default_credentials.cc | 10 +- .../credentials/iam/iam_credentials.cc | 2 +- .../credentials/jwt/jwt_credentials.cc | 2 +- .../security/credentials/jwt/jwt_verifier.cc | 11 +- .../credentials/oauth2/oauth2_credentials.cc | 9 +- .../credentials/plugin/plugin_credentials.cc | 4 +- .../security/transport/security_handshaker.cc | 2 +- .../security/transport/server_auth_filter.cc | 2 +- src/core/lib/slice/slice.cc | 2 +- src/core/lib/slice/slice_buffer.cc | 4 +- src/core/lib/surface/alarm.cc | 6 +- src/core/lib/surface/byte_buffer.cc | 2 +- src/core/lib/surface/byte_buffer_reader.cc | 4 +- src/core/lib/surface/call.cc | 8 +- src/core/lib/surface/call_details.cc | 2 +- src/core/lib/surface/channel.cc | 10 +- src/core/lib/surface/channel_ping.cc | 2 +- src/core/lib/surface/completion_queue.cc | 24 ++-- src/core/lib/surface/init.cc | 4 +- src/core/lib/surface/lame_client.cc | 2 +- src/core/lib/surface/server.cc | 12 +- src/core/lib/transport/bdp_estimator.cc | 2 +- src/core/lib/transport/status_conversion.cc | 5 +- src/core/lib/transport/transport.cc | 3 +- src/cpp/common/channel_arguments.cc | 4 +- test/core/backoff/backoff_test.cc | 60 +++++----- test/core/bad_client/bad_client.cc | 4 +- test/core/channel/channel_args_test.cc | 8 +- test/core/channel/channel_stack_test.cc | 4 +- .../channel/minimal_stack_is_minimal_test.cc | 4 +- test/core/client_channel/lb_policies_test.cc | 4 +- .../core/client_channel/parse_address_test.cc | 6 +- .../dns_resolver_connectivity_test.cc | 8 +- .../resolvers/dns_resolver_test.cc | 6 +- .../resolvers/fake_resolver_test.cc | 8 +- .../resolvers/sockaddr_resolver_test.cc | 6 +- test/core/client_channel/uri_fuzzer_test.cc | 2 +- test/core/client_channel/uri_parser_test.cc | 10 +- test/core/compression/algorithm_test.cc | 4 +- .../core/compression/message_compress_test.cc | 16 +-- test/core/debug/stats_test.cc | 6 +- test/core/end2end/bad_server_response_test.cc | 2 +- test/core/end2end/connection_refused_test.cc | 2 +- test/core/end2end/fixtures/h2_census.cc | 4 +- test/core/end2end/fixtures/h2_compress.cc | 6 +- test/core/end2end/fixtures/h2_fd.cc | 4 +- .../end2end/fixtures/h2_full+workarounds.cc | 2 +- .../end2end/fixtures/h2_load_reporting.cc | 2 +- test/core/end2end/fixtures/h2_oauth2.cc | 2 +- .../end2end/fixtures/h2_sockpair+trace.cc | 8 +- test/core/end2end/fixtures/h2_sockpair.cc | 6 +- .../end2end/fixtures/h2_sockpair_1byte.cc | 6 +- test/core/end2end/fixtures/h2_ssl.cc | 2 +- test/core/end2end/fixtures/h2_ssl_proxy.cc | 4 +- .../end2end/fixtures/http_proxy_fixture.cc | 13 +- test/core/end2end/fuzzers/api_fuzzer.cc | 14 +-- test/core/end2end/fuzzers/client_fuzzer.cc | 4 +- test/core/end2end/fuzzers/server_fuzzer.cc | 4 +- test/core/end2end/h2_ssl_cert_test.cc | 2 +- .../core/end2end/tests/cancel_after_accept.cc | 2 +- .../end2end/tests/cancel_after_round_trip.cc | 2 +- test/core/end2end/tests/compressed_payload.cc | 6 +- .../core/end2end/tests/load_reporting_hook.cc | 2 +- test/core/end2end/tests/max_message_length.cc | 4 +- .../stream_compression_compressed_payload.cc | 6 +- .../tests/stream_compression_payload.cc | 2 +- .../stream_compression_ping_pong_streaming.cc | 2 +- .../tests/workaround_cronet_compression.cc | 4 +- test/core/http/httpcli_test.cc | 6 +- test/core/http/httpscli_test.cc | 6 +- test/core/iomgr/combiner_test.cc | 16 +-- test/core/iomgr/endpoint_pair_test.cc | 4 +- test/core/iomgr/endpoint_tests.cc | 19 +-- test/core/iomgr/ev_epollsig_linux_test.cc | 28 ++--- test/core/iomgr/fd_conservation_posix_test.cc | 4 +- test/core/iomgr/fd_posix_test.cc | 12 +- test/core/iomgr/pollset_set_test.cc | 36 +++--- test/core/iomgr/resolve_address_posix_test.cc | 14 +-- test/core/iomgr/resolve_address_test.cc | 42 +++---- test/core/iomgr/resource_quota_test.cc | 112 +++++++++--------- test/core/iomgr/tcp_client_posix_test.cc | 12 +- test/core/iomgr/tcp_client_uv_test.cc | 10 +- test/core/iomgr/tcp_posix_test.cc | 18 +-- test/core/iomgr/tcp_server_posix_test.cc | 15 +-- test/core/iomgr/tcp_server_uv_test.cc | 12 +- test/core/iomgr/timer_list_test.cc | 18 +-- test/core/iomgr/udp_server_test.cc | 18 +-- test/core/security/credentials_test.cc | 70 +++++------ test/core/security/json_token_test.cc | 4 +- test/core/security/jwt_verifier_test.cc | 26 ++-- test/core/security/oauth2_utils.cc | 4 +- .../print_google_default_creds_token.cc | 4 +- test/core/security/secure_endpoint_test.cc | 6 +- test/core/security/ssl_server_fuzzer.cc | 10 +- test/core/security/verify_jwt.cc | 4 +- test/core/slice/b64_test.cc | 8 +- test/core/slice/slice_hash_table_test.cc | 6 +- test/core/surface/byte_buffer_reader_test.cc | 2 +- test/core/surface/channel_create_test.cc | 2 +- test/core/surface/completion_queue_test.cc | 8 +- .../completion_queue_threading_test.cc | 4 +- .../surface/concurrent_connectivity_test.cc | 6 +- test/core/surface/lame_client_test.cc | 2 +- ...num_external_connectivity_watchers_test.cc | 2 +- .../surface/secure_channel_create_test.cc | 6 +- .../surface/sequential_connectivity_test.cc | 2 +- test/core/transport/bdp_estimator_test.cc | 4 +- test/core/transport/byte_stream_test.cc | 10 +- .../core/transport/chttp2/bin_decoder_test.cc | 2 +- .../transport/chttp2/hpack_encoder_test.cc | 2 +- .../chttp2/hpack_parser_fuzzer_test.cc | 2 +- .../transport/chttp2/hpack_parser_test.cc | 4 +- .../core/transport/chttp2/hpack_table_test.cc | 8 +- .../core/transport/connectivity_state_test.cc | 16 +-- test/core/transport/metadata_test.cc | 18 +-- test/core/transport/status_conversion_test.cc | 2 +- test/core/util/port_server_client.cc | 24 ++-- test/core/util/test_tcp_server.cc | 6 +- test/cpp/end2end/client_lb_end2end_test.cc | 2 +- test/cpp/end2end/grpclb_end2end_test.cc | 2 +- test/cpp/grpclb/grpclb_test.cc | 2 +- test/cpp/microbenchmarks/bm_call_create.cc | 8 +- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 22 ++-- .../microbenchmarks/bm_chttp2_transport.cc | 12 +- test/cpp/microbenchmarks/bm_closure.cc | 66 +++++------ test/cpp/microbenchmarks/bm_cq.cc | 6 +- .../microbenchmarks/bm_cq_multiple_threads.cc | 2 +- test/cpp/microbenchmarks/bm_error.cc | 6 +- .../microbenchmarks/bm_fullstack_trickle.cc | 2 +- test/cpp/microbenchmarks/bm_metadata.cc | 26 ++-- test/cpp/microbenchmarks/bm_pollset.cc | 12 +- test/cpp/microbenchmarks/fullstack_fixtures.h | 2 +- test/cpp/naming/resolver_component_test.cc | 8 +- test/cpp/performance/writes_per_rpc_test.cc | 2 +- 189 files changed, 943 insertions(+), 882 deletions(-) diff --git a/src/core/ext/filters/client_channel/backup_poller.cc b/src/core/ext/filters/client_channel/backup_poller.cc index dbdcd53ef5d..ea9fb2cae1b 100644 --- a/src/core/ext/filters/client_channel/backup_poller.cc +++ b/src/core/ext/filters/client_channel/backup_poller.cc @@ -112,10 +112,12 @@ static void run_poller(void* arg, grpc_error* error) { backup_poller_shutdown_unref(p); return; } - grpc_error* err = grpc_pollset_work(p->pollset, NULL, ExecCtx::Get()->Now()); + grpc_error* err = + grpc_pollset_work(p->pollset, NULL, grpc_core::ExecCtx::Get()->Now()); gpr_mu_unlock(p->pollset_mu); GRPC_LOG_IF_ERROR("Run client channel backup poller", err); - grpc_timer_init(&p->polling_timer, ExecCtx::Get()->Now() + g_poll_interval_ms, + grpc_timer_init(&p->polling_timer, + grpc_core::ExecCtx::Get()->Now() + g_poll_interval_ms, &p->run_poller_closure); } @@ -137,7 +139,7 @@ void grpc_client_channel_start_backup_polling( GRPC_CLOSURE_INIT(&g_poller->run_poller_closure, run_poller, g_poller, grpc_schedule_on_exec_ctx); grpc_timer_init(&g_poller->polling_timer, - ExecCtx::Get()->Now() + g_poll_interval_ms, + grpc_core::ExecCtx::Get()->Now() + g_poll_interval_ms, &g_poller->run_poller_closure); } diff --git a/src/core/ext/filters/client_channel/channel_connectivity.cc b/src/core/ext/filters/client_channel/channel_connectivity.cc index 0ceedb9f86b..c949e52bd47 100644 --- a/src/core/ext/filters/client_channel/channel_connectivity.cc +++ b/src/core/ext/filters/client_channel/channel_connectivity.cc @@ -33,7 +33,7 @@ grpc_connectivity_state grpc_channel_check_connectivity_state( /* forward through to the underlying client channel */ grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_connectivity_state state; GRPC_API_TRACE( "grpc_channel_check_connectivity_state(channel=%p, try_to_connect=%d)", 2, @@ -198,7 +198,7 @@ void grpc_channel_watch_connectivity_state( gpr_timespec deadline, grpc_completion_queue* cq, void* tag) { grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; state_watcher* w = (state_watcher*)gpr_malloc(sizeof(*w)); GRPC_API_TRACE( diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc index 63cf417c4e0..e757777aecb 100644 --- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc @@ -1122,7 +1122,7 @@ static void start_picking_locked(glb_lb_policy* glb_policy) { if (glb_policy->lb_fallback_timeout_ms > 0 && glb_policy->serverlist == NULL && !glb_policy->fallback_timer_active) { grpc_millis deadline = - ExecCtx::Get()->Now() + glb_policy->lb_fallback_timeout_ms; + grpc_core::ExecCtx::Get()->Now() + glb_policy->lb_fallback_timeout_ms; GRPC_LB_POLICY_WEAK_REF(&glb_policy->base, "grpclb_fallback_timer"); GRPC_CLOSURE_INIT(&glb_policy->lb_on_fallback, lb_on_fallback_timer_locked, glb_policy, @@ -1271,7 +1271,7 @@ static void maybe_restart_lb_call(glb_lb_policy* glb_policy) { if (GRPC_TRACER_ON(grpc_lb_glb_trace)) { gpr_log(GPR_DEBUG, "[grpclb %p] Connection to LB server lost...", glb_policy); - grpc_millis timeout = next_try - ExecCtx::Get()->Now(); + grpc_millis timeout = next_try - grpc_core::ExecCtx::Get()->Now(); if (timeout > 0) { gpr_log(GPR_DEBUG, "[grpclb %p] ... retry_timer_active in %" PRIuPTR "ms.", @@ -1297,7 +1297,8 @@ static void send_client_load_report_locked(void* arg, grpc_error* error); static void schedule_next_client_load_report(glb_lb_policy* glb_policy) { const grpc_millis next_client_load_report_time = - ExecCtx::Get()->Now() + glb_policy->client_stats_report_interval; + grpc_core::ExecCtx::Get()->Now() + + glb_policy->client_stats_report_interval; GRPC_CLOSURE_INIT(&glb_policy->client_load_report_closure, send_client_load_report_locked, glb_policy, grpc_combiner_scheduler(glb_policy->base.combiner)); @@ -1392,7 +1393,7 @@ static void lb_call_init_locked(glb_lb_policy* glb_policy) { grpc_millis deadline = glb_policy->lb_call_timeout_ms == 0 ? GRPC_MILLIS_INF_FUTURE - : ExecCtx::Get()->Now() + glb_policy->lb_call_timeout_ms; + : grpc_core::ExecCtx::Get()->Now() + glb_policy->lb_call_timeout_ms; glb_policy->lb_call = grpc_channel_create_pollset_set_call( glb_policy->lb_channel, NULL, GRPC_PROPAGATE_DEFAULTS, glb_policy->base.interested_parties, diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc index f0543964ae2..5ac5d37a54c 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc @@ -265,7 +265,7 @@ static void dns_ares_on_resolved_locked(void* arg, grpc_error* error) { gpr_log(GPR_DEBUG, "dns resolution failed: %s", msg); grpc_millis next_try = grpc_backoff_step(&r->backoff_state).next_attempt_start_time; - grpc_millis timeout = next_try - ExecCtx::Get()->Now(); + grpc_millis timeout = next_try - grpc_core::ExecCtx::Get()->Now(); gpr_log(GPR_INFO, "dns resolution failed (will retry): %s", grpc_error_string(error)); GPR_ASSERT(!r->have_retry_timer); diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc index 925223d1897..06af5bf0b29 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc @@ -213,7 +213,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts, static void on_srv_query_done_cb(void* arg, int status, int timeouts, unsigned char* abuf, int alen) { grpc_ares_request* r = (grpc_ares_request*)arg; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "on_query_srv_done_cb"); if (status == ARES_SUCCESS) { gpr_log(GPR_DEBUG, "on_query_srv_done_cb ARES_SUCCESS"); diff --git a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc index 10404ec4ef8..82cd28fb2b7 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc @@ -163,7 +163,7 @@ static void dns_on_resolved_locked(void* arg, grpc_error* error) { } else { grpc_millis next_try = grpc_backoff_step(&r->backoff_state).next_attempt_start_time; - grpc_millis timeout = next_try - ExecCtx::Get()->Now(); + grpc_millis timeout = next_try - grpc_core::ExecCtx::Get()->Now(); gpr_log(GPR_INFO, "dns resolution failed (will retry): %s", grpc_error_string(error)); GPR_ASSERT(!r->have_retry_timer); diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc index 98f96b57504..61adb984f3e 100644 --- a/src/core/ext/filters/client_channel/subchannel.cc +++ b/src/core/ext/filters/client_channel/subchannel.cc @@ -458,7 +458,8 @@ static void maybe_start_connecting_locked(grpc_subchannel* c) { GPR_ASSERT(!c->have_alarm); c->have_alarm = true; const grpc_millis time_til_next = - c->backoff_result.next_attempt_start_time - ExecCtx::Get()->Now(); + c->backoff_result.next_attempt_start_time - + grpc_core::ExecCtx::Get()->Now(); if (time_til_next <= 0) { gpr_log(GPR_INFO, "Retry immediately"); } else { diff --git a/src/core/ext/filters/client_channel/subchannel_index.cc b/src/core/ext/filters/client_channel/subchannel_index.cc index fbab57769cf..b7b7472affe 100644 --- a/src/core/ext/filters/client_channel/subchannel_index.cc +++ b/src/core/ext/filters/client_channel/subchannel_index.cc @@ -133,7 +133,7 @@ void grpc_subchannel_index_shutdown(void) { void grpc_subchannel_index_unref(void) { if (gpr_unref(&g_refcount)) { gpr_mu_destroy(&g_mu); - gpr_avl_unref(g_subchannel_index, ExecCtx::Get()); + gpr_avl_unref(g_subchannel_index, grpc_core::ExecCtx::Get()); } } @@ -143,12 +143,13 @@ grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key) { // Lock, and take a reference to the subchannel index. // We don't need to do the search under a lock as avl's are immutable. gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, ExecCtx::Get()); + gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get()); gpr_mu_unlock(&g_mu); grpc_subchannel* c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF( - (grpc_subchannel*)gpr_avl_get(index, key, ExecCtx::Get()), "index_find"); - gpr_avl_unref(index, ExecCtx::Get()); + (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get()), + "index_find"); + gpr_avl_unref(index, grpc_core::ExecCtx::Get()); return c; } @@ -164,11 +165,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key, // Compare and swap loop: // - take a reference to the current index gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, ExecCtx::Get()); + gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get()); gpr_mu_unlock(&g_mu); // - Check to see if a subchannel already exists - c = (grpc_subchannel*)gpr_avl_get(index, key, ExecCtx::Get()); + c = (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get()); if (c != NULL) { c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register"); } @@ -177,10 +178,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key, need_to_unref_constructed = true; } else { // no -> update the avl and compare/swap - gpr_avl updated = gpr_avl_add( - gpr_avl_ref(index, ExecCtx::Get()), subchannel_key_copy(key), - GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), - ExecCtx::Get()); + gpr_avl updated = + gpr_avl_add(gpr_avl_ref(index, grpc_core::ExecCtx::Get()), + subchannel_key_copy(key), + GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), + grpc_core::ExecCtx::Get()); // it may happen (but it's expected to be unlikely) // that some other thread has changed the index: @@ -192,9 +194,9 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key, } gpr_mu_unlock(&g_mu); - gpr_avl_unref(updated, ExecCtx::Get()); + gpr_avl_unref(updated, grpc_core::ExecCtx::Get()); } - gpr_avl_unref(index, ExecCtx::Get()); + gpr_avl_unref(index, grpc_core::ExecCtx::Get()); } if (need_to_unref_constructed) { @@ -211,22 +213,23 @@ void grpc_subchannel_index_unregister(grpc_subchannel_key* key, // Compare and swap loop: // - take a reference to the current index gpr_mu_lock(&g_mu); - gpr_avl index = gpr_avl_ref(g_subchannel_index, ExecCtx::Get()); + gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get()); gpr_mu_unlock(&g_mu); // Check to see if this key still refers to the previously // registered subchannel grpc_subchannel* c = - (grpc_subchannel*)gpr_avl_get(index, key, ExecCtx::Get()); + (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get()); if (c != constructed) { - gpr_avl_unref(index, ExecCtx::Get()); + gpr_avl_unref(index, grpc_core::ExecCtx::Get()); break; } // compare and swap the update (some other thread may have // mutated the index behind us) gpr_avl updated = - gpr_avl_remove(gpr_avl_ref(index, ExecCtx::Get()), key, ExecCtx::Get()); + gpr_avl_remove(gpr_avl_ref(index, grpc_core::ExecCtx::Get()), key, + grpc_core::ExecCtx::Get()); gpr_mu_lock(&g_mu); if (index.root == g_subchannel_index.root) { @@ -235,8 +238,8 @@ void grpc_subchannel_index_unregister(grpc_subchannel_key* key, } gpr_mu_unlock(&g_mu); - gpr_avl_unref(updated, ExecCtx::Get()); - gpr_avl_unref(index, ExecCtx::Get()); + gpr_avl_unref(updated, grpc_core::ExecCtx::Get()); + gpr_avl_unref(index, grpc_core::ExecCtx::Get()); } } diff --git a/src/core/ext/filters/max_age/max_age_filter.cc b/src/core/ext/filters/max_age/max_age_filter.cc index 015a3ce124d..f89e8c730d7 100644 --- a/src/core/ext/filters/max_age/max_age_filter.cc +++ b/src/core/ext/filters/max_age/max_age_filter.cc @@ -99,9 +99,10 @@ static void increase_call_count(channel_data* chand) { static void decrease_call_count(channel_data* chand) { if (gpr_atm_full_fetch_add(&chand->call_count, -1) == 1) { GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_idle_timer"); - grpc_timer_init(&chand->max_idle_timer, - ExecCtx::Get()->Now() + chand->max_connection_idle, - &chand->close_max_idle_channel); + grpc_timer_init( + &chand->max_idle_timer, + grpc_core::ExecCtx::Get()->Now() + chand->max_connection_idle, + &chand->close_max_idle_channel); } } @@ -121,7 +122,7 @@ static void start_max_age_timer_after_init(void* arg, grpc_error* error) { chand->max_age_timer_pending = true; GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_timer"); grpc_timer_init(&chand->max_age_timer, - ExecCtx::Get()->Now() + chand->max_connection_age, + grpc_core::ExecCtx::Get()->Now() + chand->max_connection_age, &chand->close_max_age_channel); gpr_mu_unlock(&chand->max_age_timer_mu); grpc_transport_op* op = grpc_make_transport_op(NULL); @@ -138,11 +139,12 @@ static void start_max_age_grace_timer_after_goaway_op(void* arg, gpr_mu_lock(&chand->max_age_timer_mu); chand->max_age_grace_timer_pending = true; GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_grace_timer"); - grpc_timer_init(&chand->max_age_grace_timer, - chand->max_connection_age_grace == GRPC_MILLIS_INF_FUTURE - ? GRPC_MILLIS_INF_FUTURE - : ExecCtx::Get()->Now() + chand->max_connection_age_grace, - &chand->force_close_max_age_channel); + grpc_timer_init( + &chand->max_age_grace_timer, + chand->max_connection_age_grace == GRPC_MILLIS_INF_FUTURE + ? GRPC_MILLIS_INF_FUTURE + : grpc_core::ExecCtx::Get()->Now() + chand->max_connection_age_grace, + &chand->force_close_max_age_channel); gpr_mu_unlock(&chand->max_age_timer_mu); GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age start_max_age_grace_timer_after_goaway_op"); diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc index 3afca884ca4..fec61281c3e 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc @@ -80,7 +80,7 @@ static grpc_client_channel_factory client_channel_factory = { grpc_channel* grpc_insecure_channel_create(const char* target, const grpc_channel_args* args, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_insecure_channel_create(target=%s, args=%p, reserved=%p)", 3, (target, args, reserved)); diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc index b0eff1c992d..c713ce1960a 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc @@ -37,7 +37,7 @@ grpc_channel* grpc_insecure_channel_create_from_fd( const char* target, int fd, const grpc_channel_args* args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_insecure_channel_create(target=%p, fd=%d, args=%p)", 3, (target, fd, args)); diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc index bebc38c2480..a328126263d 100644 --- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc @@ -190,7 +190,7 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds, const char* target, const grpc_channel_args* args, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_secure_channel_create(creds=%p, target=%s, args=%p, " "reserved=%p)", diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc index bbcfb1b195b..97b6ad38deb 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.cc +++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc @@ -132,7 +132,8 @@ static void on_accept(void* arg, grpc_endpoint* tcp, connection_state->handshake_mgr); // TODO(roth): We should really get this timeout value from channel // args instead of hard-coding it. - const grpc_millis deadline = ExecCtx::Get()->Now() + 120 * GPR_MS_PER_SEC; + const grpc_millis deadline = + grpc_core::ExecCtx::Get()->Now() + 120 * GPR_MS_PER_SEC; grpc_handshake_manager_do_handshake(connection_state->handshake_mgr, tcp, state->args, deadline, acceptor, on_handshake_done, connection_state); @@ -161,10 +162,10 @@ static void tcp_server_shutdown_complete(void* arg, grpc_error* error) { gpr_mu_unlock(&state->mu); // Flush queued work before destroying handshaker factory, since that // may do a synchronous unref. - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); if (destroy_done != NULL) { destroy_done->cb(destroy_done->cb_arg, GRPC_ERROR_REF(error)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } grpc_channel_args_destroy(state->args); gpr_mu_destroy(&state->mu); diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc index 6cbb26a349f..826886c9618 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc @@ -26,7 +26,7 @@ #include "src/core/lib/surface/server.h" int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; int port_num = 0; GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2, (server, addr)); diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc index e5419e5e6e1..11b3d710dfc 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc @@ -38,7 +38,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server, void* reserved, int fd) { GPR_ASSERT(reserved == NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; char* name; gpr_asprintf(&name, "fd:%d", fd); diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc index aeae8f42e36..827f0020bb0 100644 --- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc @@ -36,7 +36,7 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr, grpc_server_credentials* creds) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_error* err = GRPC_ERROR_NONE; grpc_server_security_connector* sc = NULL; int port_num = 0; diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index e49e26fc35a..a2861dfd6fc 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -530,7 +530,7 @@ static void init_transport(grpc_chttp2_transport* t, t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_WAITING; GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - ExecCtx::Get()->Now() + t->keepalive_time, + grpc_core::ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } else { /* Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no @@ -2585,14 +2585,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) { } else { GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - ExecCtx::Get()->Now() + t->keepalive_time, + grpc_core::ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } } else if (error == GRPC_ERROR_CANCELLED) { /* The keepalive ping timer may be cancelled by bdp */ GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - ExecCtx::Get()->Now() + t->keepalive_time, + grpc_core::ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping"); @@ -2602,7 +2602,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) { grpc_chttp2_transport* t = (grpc_chttp2_transport*)arg; GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog"); grpc_timer_init(&t->keepalive_watchdog_timer, - ExecCtx::Get()->Now() + t->keepalive_time, + grpc_core::ExecCtx::Get()->Now() + t->keepalive_time, &t->keepalive_watchdog_fired_locked); } @@ -2614,7 +2614,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) { grpc_timer_cancel(&t->keepalive_watchdog_timer); GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping"); grpc_timer_init(&t->keepalive_ping_timer, - ExecCtx::Get()->Now() + t->keepalive_time, + grpc_core::ExecCtx::Get()->Now() + t->keepalive_time, &t->init_keepalive_ping_locked); } } diff --git a/src/core/ext/transport/chttp2/transport/flow_control.cc b/src/core/ext/transport/chttp2/transport/flow_control.cc index e54d59b5fa2..14f089859eb 100644 --- a/src/core/ext/transport/chttp2/transport/flow_control.cc +++ b/src/core/ext/transport/chttp2/transport/flow_control.cc @@ -160,7 +160,7 @@ TransportFlowControl::TransportFlowControl(const grpc_chttp2_transport* t, .set_min_control_value(-1) .set_max_control_value(25) .set_integral_range(10)), - last_pid_update_(ExecCtx::Get()->Now()) {} + last_pid_update_(grpc_core::ExecCtx::Get()->Now()) {} uint32_t TransportFlowControl::MaybeSendUpdate(bool writing_anyway) { FlowControlTrace trace("t updt sent", this, nullptr); @@ -306,7 +306,7 @@ double TransportFlowControl::TargetLogBdp() { } double TransportFlowControl::SmoothLogBdp(double value) { - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); double bdp_error = value - pid_controller_.last_control_value(); const double dt = (double)(now - last_pid_update_) * 1e-3; last_pid_update_ = now; diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.cc b/src/core/ext/transport/chttp2/transport/frame_ping.cc index 60172be9cb7..298a56721a3 100644 --- a/src/core/ext/transport/chttp2/transport/frame_ping.cc +++ b/src/core/ext/transport/chttp2/transport/frame_ping.cc @@ -89,7 +89,7 @@ grpc_error* grpc_chttp2_ping_parser_parse(void* parser, grpc_chttp2_ack_ping(t, p->opaque_8bytes); } else { if (!t->is_client) { - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); grpc_millis next_allowed_ping = t->ping_recv_state.last_ping_recv_time + t->ping_policy.min_recv_ping_interval_without_data; diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc index efb6e54ce79..2f9849c09a8 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.cc @@ -570,7 +570,8 @@ static void deadline_enc(grpc_chttp2_hpack_compressor* c, grpc_millis deadline, framer_state* st) { char timeout_str[GRPC_HTTP2_TIMEOUT_ENCODE_MIN_BUFSIZE]; grpc_mdelem mdelem; - grpc_http2_encode_timeout(deadline - ExecCtx::Get()->Now(), timeout_str); + grpc_http2_encode_timeout(deadline - grpc_core::ExecCtx::Get()->Now(), + timeout_str); mdelem = grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_TIMEOUT, grpc_slice_from_copied_string(timeout_str)); hpack_enc(c, mdelem, st); diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc index f7f83c9aee4..f73b498d407 100644 --- a/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/src/core/ext/transport/chttp2/transport/parsing.cc @@ -436,7 +436,7 @@ static void on_initial_header(void* tp, grpc_mdelem md) { } if (timeout != GRPC_MILLIS_INF_FUTURE) { grpc_chttp2_incoming_metadata_buffer_set_deadline( - &s->metadata_buffer[0], ExecCtx::Get()->Now() + timeout); + &s->metadata_buffer[0], grpc_core::ExecCtx::Get()->Now() + timeout); } GRPC_MDELEM_UNREF(md); } else { diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index 4f76c2eb232..ddcac45d839 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -68,7 +68,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) { } return; } - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); grpc_millis next_allowed_ping = t->ping_state.last_ping_sent_time + t->ping_policy.min_sent_ping_interval_without_data; diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc index f634627f033..8e1dcc542ec 100644 --- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc +++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc @@ -49,6 +49,6 @@ GRPCAPI grpc_channel* grpc_cronet_secure_channel_create( grpc_transport* ct = grpc_create_cronet_transport(engine, target, args, reserved); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; return grpc_channel_create(target, args, GRPC_CLIENT_DIRECT_CHANNEL, ct); } diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc index 3411acc5639..971071e3879 100644 --- a/src/core/ext/transport/cronet/transport/cronet_transport.cc +++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -398,7 +398,7 @@ static void execute_from_storage(stream_obj* s) { */ static void on_failed(bidirectional_stream* stream, int net_error) { CRONET_LOG(GPR_DEBUG, "on_failed(%p, %d)", stream, net_error); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; gpr_mu_lock(&s->mu); @@ -424,7 +424,7 @@ static void on_failed(bidirectional_stream* stream, int net_error) { */ static void on_canceled(bidirectional_stream* stream) { CRONET_LOG(GPR_DEBUG, "on_canceled(%p)", stream); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; gpr_mu_lock(&s->mu); @@ -450,7 +450,7 @@ static void on_canceled(bidirectional_stream* stream) { */ static void on_succeeded(bidirectional_stream* stream) { CRONET_LOG(GPR_DEBUG, "on_succeeded(%p)", stream); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; gpr_mu_lock(&s->mu); @@ -468,7 +468,7 @@ static void on_succeeded(bidirectional_stream* stream) { */ static void on_stream_ready(bidirectional_stream* stream) { CRONET_LOG(GPR_DEBUG, "W: on_stream_ready(%p)", stream); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; grpc_cronet_transport* t = (grpc_cronet_transport*)s->curr_ct; gpr_mu_lock(&s->mu); @@ -498,7 +498,7 @@ static void on_response_headers_received( bidirectional_stream* stream, const bidirectional_stream_header_array* headers, const char* negotiated_protocol) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; CRONET_LOG(GPR_DEBUG, "R: on_response_headers_received(%p, %p, %s)", stream, headers, negotiated_protocol); stream_obj* s = (stream_obj*)stream->annotation; @@ -550,7 +550,7 @@ static void on_response_headers_received( Cronet callback */ static void on_write_completed(bidirectional_stream* stream, const char* data) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; CRONET_LOG(GPR_DEBUG, "W: on_write_completed(%p, %s)", stream, data); gpr_mu_lock(&s->mu); @@ -568,7 +568,7 @@ static void on_write_completed(bidirectional_stream* stream, const char* data) { */ static void on_read_completed(bidirectional_stream* stream, char* data, int count) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; CRONET_LOG(GPR_DEBUG, "R: on_read_completed(%p, %p, %d)", stream, data, count); @@ -610,7 +610,7 @@ static void on_read_completed(bidirectional_stream* stream, char* data, static void on_response_trailers_received( bidirectional_stream* stream, const bidirectional_stream_header_array* trailers) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; CRONET_LOG(GPR_DEBUG, "R: on_response_trailers_received(%p,%p)", stream, trailers); stream_obj* s = (stream_obj*)stream->annotation; diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index a79b2b26b02..e303f5ac0d0 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -1091,7 +1091,7 @@ static grpc_endpoint* get_endpoint(grpc_transport* t) { return NULL; } static void do_nothing(void* arg, grpc_error* error) {} void grpc_inproc_transport_init(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CLOSURE_INIT(&do_nothing_closure, do_nothing, NULL, grpc_schedule_on_exec_ctx); g_empty_slice = grpc_slice_from_static_buffer(NULL, 0); @@ -1155,7 +1155,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, GRPC_API_TRACE("grpc_inproc_channel_create(server=%p, args=%p)", 2, (server, args)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; const grpc_channel_args* server_args = grpc_server_get_channel_args(server); @@ -1186,7 +1186,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, } void grpc_inproc_transport_shutdown(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_unref_internal(g_empty_slice); grpc_slice_unref_internal(g_fake_path_key); grpc_slice_unref_internal(g_fake_path_value); diff --git a/src/core/lib/backoff/backoff.cc b/src/core/lib/backoff/backoff.cc index b75ce79d464..da3b9b1b2d2 100644 --- a/src/core/lib/backoff/backoff.cc +++ b/src/core/lib/backoff/backoff.cc @@ -36,7 +36,7 @@ grpc_backoff_result grpc_backoff_begin(grpc_backoff* backoff) { backoff->current_backoff = backoff->initial_backoff; const grpc_millis initial_timeout = GPR_MAX(backoff->initial_backoff, backoff->min_connect_timeout); - const grpc_millis now = ExecCtx::Get()->Now(); + const grpc_millis now = grpc_core::ExecCtx::Get()->Now(); const grpc_backoff_result result = {now + initial_timeout, now + backoff->current_backoff}; return result; @@ -67,7 +67,7 @@ grpc_backoff_result grpc_backoff_step(grpc_backoff* backoff) { backoff->min_connect_timeout); const grpc_millis next_timeout = GPR_MIN( (grpc_millis)(backoff->current_backoff + jitter), backoff->max_backoff); - const grpc_millis now = ExecCtx::Get()->Now(); + const grpc_millis now = grpc_core::ExecCtx::Get()->Now(); const grpc_backoff_result result = {now + current_timeout, now + next_timeout}; return result; diff --git a/src/core/lib/compression/stream_compression_gzip.cc b/src/core/lib/compression/stream_compression_gzip.cc index 3fae3490cee..4aaef4e1286 100644 --- a/src/core/lib/compression/stream_compression_gzip.cc +++ b/src/core/lib/compression/stream_compression_gzip.cc @@ -40,7 +40,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx, /* Full flush is not allowed when inflating. */ GPR_ASSERT(!(ctx->flate == inflate && (flush == Z_FINISH))); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; int r; bool eoc = false; size_t original_max_output_size = max_output_size; diff --git a/src/core/lib/debug/stats.h b/src/core/lib/debug/stats.h index 24b00841302..6b36f67172b 100644 --- a/src/core/lib/debug/stats.h +++ b/src/core/lib/debug/stats.h @@ -35,7 +35,7 @@ typedef struct grpc_stats_data { extern grpc_stats_data* grpc_stats_per_cpu_storage; #define GRPC_THREAD_STATS_DATA() \ - (&grpc_stats_per_cpu_storage[ExecCtx::Get()->starting_cpu()]) + (&grpc_stats_per_cpu_storage[grpc_core::ExecCtx::Get()->starting_cpu()]) #define GRPC_STATS_INC_COUNTER(ctr) \ (gpr_atm_no_barrier_fetch_add(&GRPC_THREAD_STATS_DATA()->counters[(ctr)], 1)) diff --git a/src/core/lib/iomgr/block_annotate.h b/src/core/lib/iomgr/block_annotate.h index 7783da0c148..55bde3eaac7 100644 --- a/src/core/lib/iomgr/block_annotate.h +++ b/src/core/lib/iomgr/block_annotate.h @@ -41,18 +41,18 @@ void gpr_thd_end_blocking_region(); do { \ gpr_thd_start_blocking_region(); \ } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION \ - do { \ - gpr_thd_end_blocking_region(); \ - ExecCtx::Get()->InvalidateNow(); \ +#define GRPC_SCHEDULING_END_BLOCKING_REGION \ + do { \ + gpr_thd_end_blocking_region(); \ + grpc_core::ExecCtx::Get()->InvalidateNow(); \ } while (0) #else #define GRPC_SCHEDULING_START_BLOCKING_REGION \ do { \ } while (0) -#define GRPC_SCHEDULING_END_BLOCKING_REGION \ - do { \ - ExecCtx::Get()->InvalidateNow(); \ +#define GRPC_SCHEDULING_END_BLOCKING_REGION \ + do { \ + grpc_core::ExecCtx::Get()->InvalidateNow(); \ } while (0) #endif diff --git a/src/core/lib/iomgr/combiner.cc b/src/core/lib/iomgr/combiner.cc index c9f5448630a..6cc4eef1d8d 100644 --- a/src/core/lib/iomgr/combiner.cc +++ b/src/core/lib/iomgr/combiner.cc @@ -129,23 +129,23 @@ grpc_combiner* grpc_combiner_ref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) { static void push_last_on_exec_ctx(grpc_combiner* lock) { lock->next_combiner_on_this_exec_ctx = nullptr; - if (ExecCtx::Get()->combiner_data()->active_combiner == nullptr) { - ExecCtx::Get()->combiner_data()->active_combiner = - ExecCtx::Get()->combiner_data()->last_combiner = lock; + if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner == nullptr) { + grpc_core::ExecCtx::Get()->combiner_data()->active_combiner = + grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = lock; } else { - ExecCtx::Get() + grpc_core::ExecCtx::Get() ->combiner_data() ->last_combiner->next_combiner_on_this_exec_ctx = lock; - ExecCtx::Get()->combiner_data()->last_combiner = lock; + grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = lock; } } static void push_first_on_exec_ctx(grpc_combiner* lock) { lock->next_combiner_on_this_exec_ctx = - ExecCtx::Get()->combiner_data()->active_combiner; - ExecCtx::Get()->combiner_data()->active_combiner = lock; + grpc_core::ExecCtx::Get()->combiner_data()->active_combiner; + grpc_core::ExecCtx::Get()->combiner_data()->active_combiner = lock; if (lock->next_combiner_on_this_exec_ctx == NULL) { - ExecCtx::Get()->combiner_data()->last_combiner = lock; + grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = lock; } } @@ -165,7 +165,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(); GPR_TIMER_MARK("combiner.initiated", 0); gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, - (gpr_atm)ExecCtx::Get()); + (gpr_atm)grpc_core::ExecCtx::Get()); // first element on this list: add it to the list of combiner locks // executing within this exec_ctx push_last_on_exec_ctx(lock); @@ -174,7 +174,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { // offload for one or two actions, and that's fine gpr_atm initiator = gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null); - if (initiator != 0 && initiator != (gpr_atm)ExecCtx::Get()) { + if (initiator != 0 && initiator != (gpr_atm)grpc_core::ExecCtx::Get()) { gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0); } } @@ -186,12 +186,12 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) { } static void move_next() { - ExecCtx::Get()->combiner_data()->active_combiner = - ExecCtx::Get() + grpc_core::ExecCtx::Get()->combiner_data()->active_combiner = + grpc_core::ExecCtx::Get() ->combiner_data() ->active_combiner->next_combiner_on_this_exec_ctx; - if (ExecCtx::Get()->combiner_data()->active_combiner == NULL) { - ExecCtx::Get()->combiner_data()->last_combiner = NULL; + if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner == NULL) { + grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = NULL; } } @@ -209,7 +209,8 @@ static void queue_offload(grpc_combiner* lock) { bool grpc_combiner_continue_exec_ctx() { GPR_TIMER_BEGIN("combiner.continue_exec_ctx", 0); - grpc_combiner* lock = ExecCtx::Get()->combiner_data()->active_combiner; + grpc_combiner* lock = + grpc_core::ExecCtx::Get()->combiner_data()->active_combiner; if (lock == NULL) { GPR_TIMER_END("combiner.continue_exec_ctx", 0); return false; @@ -224,10 +225,10 @@ bool grpc_combiner_continue_exec_ctx() { "exec_ctx_ready_to_finish=%d " "time_to_execute_final_list=%d", lock, contended, - ExecCtx::Get()->IsReadyToFinish(), + grpc_core::ExecCtx::Get()->IsReadyToFinish(), lock->time_to_execute_final_list)); - if (contended && ExecCtx::Get()->IsReadyToFinish() && + if (contended && grpc_core::ExecCtx::Get()->IsReadyToFinish() && grpc_executor_is_threaded()) { GPR_TIMER_MARK("offload_from_finished_exec_ctx", 0); // this execution context wants to move on: schedule remaining work to be @@ -333,11 +334,11 @@ static void combiner_finally_exec(grpc_closure* closure, grpc_error* error) { GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(); grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler); - GRPC_COMBINER_TRACE( - gpr_log(GPR_DEBUG, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock, - closure, ExecCtx::Get()->combiner_data()->active_combiner)); + GRPC_COMBINER_TRACE(gpr_log( + GPR_DEBUG, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock, + closure, grpc_core::ExecCtx::Get()->combiner_data()->active_combiner)); GPR_TIMER_BEGIN("combiner.execute_finally", 0); - if (ExecCtx::Get()->combiner_data()->active_combiner != lock) { + if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner != lock) { GPR_TIMER_MARK("slowpath", 0); GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(enqueue_finally, closure, grpc_combiner_scheduler(lock)), diff --git a/src/core/lib/iomgr/endpoint_pair_posix.cc b/src/core/lib/iomgr/endpoint_pair_posix.cc index 1a281322a84..65db4a9675f 100644 --- a/src/core/lib/iomgr/endpoint_pair_posix.cc +++ b/src/core/lib/iomgr/endpoint_pair_posix.cc @@ -54,7 +54,7 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name, char* final_name; create_sockets(sv); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_asprintf(&final_name, "%s:client", name); p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name), args, diff --git a/src/core/lib/iomgr/endpoint_pair_windows.cc b/src/core/lib/iomgr/endpoint_pair_windows.cc index e0f211cdf91..afd91c9932b 100644 --- a/src/core/lib/iomgr/endpoint_pair_windows.cc +++ b/src/core/lib/iomgr/endpoint_pair_windows.cc @@ -72,7 +72,7 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair( SOCKET sv[2]; grpc_endpoint_pair p; create_sockets(sv); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"), channel_args, "endpoint:server"); p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"), diff --git a/src/core/lib/iomgr/ev_epoll1_linux.cc b/src/core/lib/iomgr/ev_epoll1_linux.cc index 2b486887b81..f22fb82797d 100644 --- a/src/core/lib/iomgr/ev_epoll1_linux.cc +++ b/src/core/lib/iomgr/ev_epoll1_linux.cc @@ -554,7 +554,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - ExecCtx::Get()->Now(); + grpc_millis delta = millis - grpc_core::ExecCtx::Get()->Now(); if (delta > INT_MAX) { return INT_MAX; } else if (delta < 0) { @@ -743,7 +743,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, SET_KICK_STATE(worker, KICKED); } } - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); } if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -848,7 +848,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, /* Make sure we appear kicked */ SET_KICK_STATE(worker, KICKED); grpc_closure_list_move(&worker->schedule_on_end_work, - ExecCtx::Get()->closure_list()); + grpc_core::ExecCtx::Get()->closure_list()); if (gpr_atm_no_barrier_load(&g_active_poller) == (gpr_atm)worker) { if (worker->next != worker && worker->next->state == UNKICKED) { if (GRPC_TRACER_ON(grpc_polling_trace)) { @@ -859,9 +859,9 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, SET_KICK_STATE(worker->next, DESIGNATED_POLLER); GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(); gpr_cv_signal(&worker->next->cv); - if (ExecCtx::Get()->HasWork()) { + if (grpc_core::ExecCtx::Get()->HasWork()) { gpr_mu_unlock(&pollset->mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } } else { @@ -892,12 +892,12 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, found_worker = check_neighborhood_for_available_poller(neighborhood); gpr_mu_unlock(&neighborhood->mu); } - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } - } else if (ExecCtx::Get()->HasWork()) { + } else if (grpc_core::ExecCtx::Get()->HasWork()) { gpr_mu_unlock(&pollset->mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } if (worker->initialized_cv) { @@ -948,8 +948,8 @@ static grpc_error* pollset_work(grpc_pollset* ps, process_epoll_events() returns very quickly: It just queues the work on exec_ctx but does not execute it (the actual exectution or more - accurately ExecCtx::Get()->Flush() happens in end_worker() AFTER - selecting a designated poller). So we are not waiting long periods + accurately grpc_core::ExecCtx::Get()->Flush() happens in end_worker() + AFTER selecting a designated poller). So we are not waiting long periods without a designated poller */ if (gpr_atm_acq_load(&g_epoll_set.cursor) == gpr_atm_acq_load(&g_epoll_set.num_events)) { diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc index 385b5f68d06..5b4edd1e74f 100644 --- a/src/core/lib/iomgr/ev_epollex_linux.cc +++ b/src/core/lib/iomgr/ev_epollex_linux.cc @@ -682,7 +682,7 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - ExecCtx::Get()->Now(); + grpc_millis delta = millis - grpc_core::ExecCtx::Get()->Now(); if (delta > INT_MAX) return INT_MAX; else if (delta < 0) @@ -902,7 +902,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, worker->pollable_obj, worker); } } - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); } else { gpr_mu_unlock(&pollset->mu); } @@ -970,8 +970,8 @@ static grpc_error* pollset_work(grpc_pollset* pollset, gpr_log(GPR_DEBUG, "PS:%p work hdl=%p worker=%p now=%" PRIdPTR " deadline=%" PRIdPTR " kwp=%d pollable=%p", - pollset, worker_hdl, WORKER_PTR, ExecCtx::Get()->Now(), deadline, - pollset->kicked_without_poller, pollset->active_pollable); + pollset, worker_hdl, WORKER_PTR, grpc_core::ExecCtx::Get()->Now(), + deadline, pollset->kicked_without_poller, pollset->active_pollable); } static const char* err_desc = "pollset_work"; grpc_error* error = GRPC_ERROR_NONE; @@ -990,7 +990,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, &error, pollable_process_events(pollset, WORKER_PTR->pollable_obj, false), err_desc); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_tls_set(&g_current_thread_pollset, 0); gpr_tls_set(&g_current_thread_worker, 0); } diff --git a/src/core/lib/iomgr/ev_epollsig_linux.cc b/src/core/lib/iomgr/ev_epollsig_linux.cc index a9b094a2fab..4ded7c0211c 100644 --- a/src/core/lib/iomgr/ev_epollsig_linux.cc +++ b/src/core/lib/iomgr/ev_epollsig_linux.cc @@ -1090,7 +1090,7 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { static int poll_deadline_to_millis_timeout(grpc_millis millis) { if (millis == GRPC_MILLIS_INF_FUTURE) return -1; - grpc_millis delta = millis - ExecCtx::Get()->Now(); + grpc_millis delta = millis - grpc_core::ExecCtx::Get()->Now(); if (delta > INT_MAX) return INT_MAX; else if (delta < 0) @@ -1350,7 +1350,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, pollset_work_and_unlock(pollset, &worker, timeout_ms, &g_orig_sigmask, &error); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->po.mu); @@ -1373,7 +1373,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, finish_shutdown_locked(pollset); gpr_mu_unlock(&pollset->po.mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->po.mu); } diff --git a/src/core/lib/iomgr/ev_poll_posix.cc b/src/core/lib/iomgr/ev_poll_posix.cc index cab4f7547c4..b6546aa4b46 100644 --- a/src/core/lib/iomgr/ev_poll_posix.cc +++ b/src/core/lib/iomgr/ev_poll_posix.cc @@ -1040,7 +1040,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, worker list, which means nobody could ask us to re-evaluate polling). */ done: if (!locked) { - queued_work |= ExecCtx::Get()->Flush(); + queued_work |= grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); locked = 1; } @@ -1074,7 +1074,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, pollset->called_shutdown = 1; gpr_mu_unlock(&pollset->mu); finish_shutdown(pollset); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Continuing to access pollset here is safe -- it is the caller's * responsibility to not destroy when it has outstanding calls to * pollset_work. @@ -1083,7 +1083,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, } else if (!grpc_closure_list_empty(pollset->idle_jobs)) { GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs); gpr_mu_unlock(&pollset->mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&pollset->mu); } } @@ -1110,7 +1110,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { static int poll_deadline_to_millis_timeout(grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) return -1; if (deadline == 0) return 0; - grpc_millis n = deadline - ExecCtx::Get()->Now(); + grpc_millis n = deadline - grpc_core::ExecCtx::Get()->Now(); if (n < 0) return 0; if (n > INT_MAX) return -1; return (int)n; diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index fe5a0e7e2de..de71c1cf9c8 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -25,29 +25,6 @@ #include "src/core/lib/iomgr/combiner.h" #include "src/core/lib/profiling/timers.h" -thread_local ExecCtx* exec_ctx = nullptr; - -ExecCtx::ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { exec_ctx = this; } -ExecCtx::ExecCtx(uintptr_t fl) : flags_(fl) { exec_ctx = this; } -ExecCtx::~ExecCtx() { - GPR_ASSERT(exec_ctx == this); - flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; - Flush(); - exec_ctx = last_exec_ctx_; -} - -bool ExecCtx::IsReadyToFinish() { - if ((flags_ & GRPC_EXEC_CTX_FLAG_IS_FINISHED) == 0) { - if (CheckReadyToFinish()) { - flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; - return true; - } - return false; - } else { - return true; - } -} - void exec_ctx_run(grpc_closure* closure, grpc_error* error) { #ifndef NDEBUG closure->scheduled = false; @@ -67,48 +44,16 @@ void exec_ctx_run(grpc_closure* closure, grpc_error* error) { GRPC_ERROR_UNREF(error); } -bool ExecCtx::Flush() { - bool did_something = 0; - GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0); - for (;;) { - if (!grpc_closure_list_empty(closure_list_)) { - grpc_closure* c = closure_list_.head; - closure_list_.head = closure_list_.tail = NULL; - while (c != NULL) { - grpc_closure* next = c->next_data.next; - grpc_error* error = c->error_data.error; - did_something = true; - exec_ctx_run(c, error); - c = next; - } - } else if (!grpc_combiner_continue_exec_ctx()) { - break; - } - } - GPR_ASSERT(combiner_data_.active_combiner == nullptr); - GPR_TIMER_END("grpc_exec_ctx_flush", 0); - return did_something; -} - -void exec_ctx_sched(grpc_closure* closure, grpc_error* error) { - grpc_closure_list_append(exec_ctx->closure_list(), closure, error); -} - static gpr_timespec g_start_time[GPR_TIMESPAN + 1]; // assumes GPR_TIMESPAN is the // last enum value in // gpr_clock_type -void ExecCtx::GlobalInit(void) { - for (int i = 0; i < GPR_TIMESPAN; i++) { - g_start_time[i] = gpr_now((gpr_clock_type)i); - } - // allows uniform treatment in conversion functions - g_start_time[GPR_TIMESPAN] = gpr_time_0(GPR_TIMESPAN); +void exec_ctx_sched(grpc_closure* closure, grpc_error* error) { + grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure, + error); } -void ExecCtx::GlobalShutdown(void) {} - static gpr_atm timespec_to_atm_round_down(gpr_timespec ts) { ts = gpr_time_sub(ts, g_start_time[ts.clock_type]); double x = @@ -154,6 +99,47 @@ grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec ts) { return timespec_to_atm_round_up(ts); } +static const grpc_closure_scheduler_vtable exec_ctx_scheduler_vtable = { + exec_ctx_run, exec_ctx_sched, "exec_ctx"}; +static grpc_closure_scheduler exec_ctx_scheduler = {&exec_ctx_scheduler_vtable}; +grpc_closure_scheduler* grpc_schedule_on_exec_ctx = &exec_ctx_scheduler; + +namespace grpc_core { +thread_local ExecCtx* ExecCtx::exec_ctx_ = nullptr; + +bool ExecCtx::Flush() { + bool did_something = 0; + GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0); + for (;;) { + if (!grpc_closure_list_empty(closure_list_)) { + grpc_closure* c = closure_list_.head; + closure_list_.head = closure_list_.tail = NULL; + while (c != NULL) { + grpc_closure* next = c->next_data.next; + grpc_error* error = c->error_data.error; + did_something = true; + exec_ctx_run(c, error); + c = next; + } + } else if (!grpc_combiner_continue_exec_ctx()) { + break; + } + } + GPR_ASSERT(combiner_data_.active_combiner == nullptr); + GPR_TIMER_END("grpc_exec_ctx_flush", 0); + return did_something; +} + +void ExecCtx::GlobalInit(void) { + for (int i = 0; i < GPR_TIMESPAN; i++) { + g_start_time[i] = gpr_now((gpr_clock_type)i); + } + // allows uniform treatment in conversion functions + g_start_time[GPR_TIMESPAN] = gpr_time_0(GPR_TIMESPAN); +} + +void ExecCtx::GlobalShutdown(void) {} + grpc_millis ExecCtx::Now() { if (!now_is_valid_) { now_ = timespec_to_atm_round_down(gpr_now(GPR_CLOCK_MONOTONIC)); @@ -162,9 +148,4 @@ grpc_millis ExecCtx::Now() { return now_; } -ExecCtx* ExecCtx::Get() { return exec_ctx; } - -static const grpc_closure_scheduler_vtable exec_ctx_scheduler_vtable = { - exec_ctx_run, exec_ctx_sched, "exec_ctx"}; -static grpc_closure_scheduler exec_ctx_scheduler = {&exec_ctx_scheduler_vtable}; -grpc_closure_scheduler* grpc_schedule_on_exec_ctx = &exec_ctx_scheduler; +} // namespace grpc_core diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index a71e43e178c..7b8da2f0af6 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -46,6 +46,7 @@ typedef struct grpc_combiner grpc_combiner; should be given to not delete said call/channel from this exec_ctx */ #define GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP 2 +namespace grpc_core { /** Execution context. * A bag of data that collects information along a callstack. * Generally created at public API entry points, and passed down as @@ -68,10 +69,25 @@ typedef struct grpc_combiner grpc_combiner; */ class ExecCtx { public: - ExecCtx(); - ExecCtx(uintptr_t fl); - ~ExecCtx(); + /** Default Constructor */ + ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { exec_ctx_ = this; } + + /** Parameterised Constructor */ + ExecCtx(uintptr_t fl) : flags_(fl) { exec_ctx_ = this; } + + /** Destructor */ + ~ExecCtx() { + GPR_ASSERT(exec_ctx_ == this); + flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; + Flush(); + exec_ctx_ = last_exec_ctx_; + } + + /** Disallow copy and assignment operators */ + ExecCtx(const ExecCtx&) = delete; + ExecCtx& operator=(const ExecCtx&) = delete; + /** Return starting_cpu */ unsigned starting_cpu() const { return starting_cpu_; } struct CombinerData { @@ -84,8 +100,13 @@ class ExecCtx { /** Only to be used by grpc-combiner code */ CombinerData* combiner_data() { return &combiner_data_; } + /** Return pointer to grpc_closure_list */ grpc_closure_list* closure_list() { return &closure_list_; } + /** Return flags */ + uintptr_t flags() { return flags_; } + + /** Checks if there is work to be done */ bool HasWork() { return combiner_data_.active_combiner != NULL || !grpc_closure_list_empty(closure_list_); @@ -99,32 +120,59 @@ class ExecCtx { /** Returns true if we'd like to leave this execution context as soon as possible: useful for deciding whether to do something more or not depending on outside context */ - bool IsReadyToFinish(); + bool IsReadyToFinish() { + if ((flags_ & GRPC_EXEC_CTX_FLAG_IS_FINISHED) == 0) { + if (CheckReadyToFinish()) { + flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; + return true; + } + return false; + } else { + return true; + } + } + /** Returns the stored current time relative to start if valid, + * otherwise refreshes the stored time, sets it valid and returns the new + * value */ grpc_millis Now(); + /** Invalidates the stored time value. A new time value will be set on calling + * Now() */ void InvalidateNow() { now_is_valid_ = false; } - void SetNow(grpc_millis new_val) { - now_ = new_val; + /** To be used only by shutdown code in iomgr */ + void SetNowIomgrShutdown() { + now_ = GRPC_MILLIS_INF_FUTURE; now_is_valid_ = true; } - uintptr_t flags() { return flags_; } + /** To be used only for testing. + * Sets the now value + */ + void TestOnlySetNow(grpc_millis new_val) { + now_ = new_val; + now_is_valid_ = true; + } /** Finish any pending work for a grpc_exec_ctx. Must be called before * the instance is destroyed, or work may be lost. */ void Finish(); + /** Global initialization for ExecCtx. Called by iomgr */ static void GlobalInit(void); + /** Global shutdown for ExecCtx. Called by iomgr */ static void GlobalShutdown(void); - static ExecCtx* Get(); + /** Gets pointer to current exec_ctx */ + static ExecCtx* Get() { return exec_ctx_; } protected: + /** Check if ready to finish */ virtual bool CheckReadyToFinish() { return false; } + private: grpc_closure_list closure_list_ = GRPC_CLOSURE_LIST_INIT; CombinerData combiner_data_ = {nullptr, nullptr}; uintptr_t flags_; @@ -133,8 +181,10 @@ on outside context */ bool now_is_valid_ = false; grpc_millis now_ = 0; - ExecCtx* last_exec_ctx_ = Get(); + static thread_local ExecCtx* exec_ctx_; + ExecCtx* last_exec_ctx_ = exec_ctx_; }; +} // namespace grpc_core extern grpc_closure_scheduler* grpc_schedule_on_exec_ctx; diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index bf8805a2cdd..4db298c1c54 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -78,7 +78,7 @@ static size_t run_closures(grpc_closure_list list) { GRPC_ERROR_UNREF(error); c = next; n++; - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } return n; @@ -145,7 +145,7 @@ static void executor_thread(void* arg) { thread_state* ts = (thread_state*)arg; gpr_tls_set(&g_this_thread_state, (intptr_t)ts); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; size_t subtract_depth = 0; for (;;) { @@ -175,7 +175,7 @@ static void executor_thread(void* arg) { gpr_log(GPR_DEBUG, "EXECUTOR[%d]: execute", (int)(ts - g_thread_state)); } - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); subtract_depth = run_closures(exec); } } @@ -200,12 +200,14 @@ static void executor_push(grpc_closure* closure, grpc_error* error, gpr_log(GPR_DEBUG, "EXECUTOR: schedule %p inline", closure); #endif } - grpc_closure_list_append(ExecCtx::Get()->closure_list(), closure, error); + grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), + closure, error); return; } thread_state* ts = (thread_state*)gpr_tls_get(&g_this_thread_state); if (ts == NULL) { - ts = &g_thread_state[GPR_HASH_POINTER(ExecCtx::Get(), cur_thread_count)]; + ts = &g_thread_state[GPR_HASH_POINTER(grpc_core::ExecCtx::Get(), + cur_thread_count)]; } else { GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF(); } diff --git a/src/core/lib/iomgr/iocp_windows.cc b/src/core/lib/iomgr/iocp_windows.cc index 1686bf28727..f5c6297438b 100644 --- a/src/core/lib/iomgr/iocp_windows.cc +++ b/src/core/lib/iomgr/iocp_windows.cc @@ -46,7 +46,7 @@ static DWORD deadline_to_millis_timeout(grpc_millis deadline) { if (deadline == GRPC_MILLIS_INF_FUTURE) { return INFINITE; } - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); if (deadline < now) return 0; grpc_millis timeout = deadline - now; if (timeout > std::numeric_limits<DWORD>::max()) return INFINITE; @@ -65,7 +65,7 @@ grpc_iocp_work_status grpc_iocp_work(grpc_millis deadline) { success = GetQueuedCompletionStatus(g_iocp, &bytes, &completion_key, &overlapped, deadline_to_millis_timeout(deadline)); - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); if (success == 0 && overlapped == NULL) { return GRPC_IOCP_WORK_TIMEOUT; } @@ -113,19 +113,20 @@ void grpc_iocp_kick(void) { } void grpc_iocp_flush(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_iocp_work_status work_status; do { work_status = grpc_iocp_work(GRPC_MILLIS_INF_PAST); - } while (work_status == GRPC_IOCP_WORK_KICK || ExecCtx::Get()->Flush()); + } while (work_status == GRPC_IOCP_WORK_KICK || + grpc_core::ExecCtx::Get()->Flush()); } void grpc_iocp_shutdown(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (gpr_atm_acq_load(&g_custom_events)) { grpc_iocp_work(GRPC_MILLIS_INF_FUTURE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GPR_ASSERT(CloseHandle(g_iocp)); diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index a1add4a303a..9c74b5d1c3a 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -49,7 +49,7 @@ void grpc_iomgr_init() { g_shutdown = 0; gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); - ExecCtx::GlobalInit(); + grpc_core::ExecCtx::GlobalInit(); grpc_executor_init(); grpc_timer_list_init(); g_root_object.next = g_root_object.prev = &g_root_object; @@ -98,10 +98,10 @@ void grpc_iomgr_shutdown() { } last_warning_time = gpr_now(GPR_CLOCK_REALTIME); } - ExecCtx::Get()->SetNow(GRPC_MILLIS_INF_FUTURE); + grpc_core::ExecCtx::Get()->SetNowIomgrShutdown(); if (grpc_timer_check(NULL) == GRPC_TIMERS_FIRED) { gpr_mu_unlock(&g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_iomgr_platform_flush(); gpr_mu_lock(&g_mu); continue; @@ -136,14 +136,14 @@ void grpc_iomgr_shutdown() { gpr_mu_unlock(&g_mu); grpc_timer_list_shutdown(); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* ensure all threads have left g_mu */ gpr_mu_lock(&g_mu); gpr_mu_unlock(&g_mu); grpc_iomgr_platform_shutdown(); - ExecCtx::GlobalShutdown(); + grpc_core::ExecCtx::GlobalShutdown(); grpc_network_status_shutdown(); gpr_mu_destroy(&g_mu); gpr_cv_destroy(&g_rcv); diff --git a/src/core/lib/iomgr/iomgr_uv.cc b/src/core/lib/iomgr/iomgr_uv.cc index 2ab414252a3..5823bb7ec2a 100644 --- a/src/core/lib/iomgr/iomgr_uv.cc +++ b/src/core/lib/iomgr/iomgr_uv.cc @@ -29,7 +29,7 @@ gpr_thd_id g_init_thread; void grpc_iomgr_platform_init(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_global_init(); grpc_register_tracer(&grpc_tcp_trace); grpc_executor_set_threading(false); diff --git a/src/core/lib/iomgr/pollset_uv.cc b/src/core/lib/iomgr/pollset_uv.cc index a68ad4a6e3f..89d28a0f9d5 100644 --- a/src/core/lib/iomgr/pollset_uv.cc +++ b/src/core/lib/iomgr/pollset_uv.cc @@ -124,7 +124,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, GRPC_UV_ASSERT_SAME_THREAD(); gpr_mu_unlock(&grpc_polling_mu); if (grpc_pollset_work_run_loop) { - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); if (deadline >= now) { timeout = deadline - now; } else { @@ -143,7 +143,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, } } if (!grpc_closure_list_empty(exec_ctx->closure_list)) { - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } gpr_mu_lock(&grpc_polling_mu); return GRPC_ERROR_NONE; diff --git a/src/core/lib/iomgr/pollset_windows.cc b/src/core/lib/iomgr/pollset_windows.cc index 5ff3e7cb3a3..81e1d009ca6 100644 --- a/src/core/lib/iomgr/pollset_windows.cc +++ b/src/core/lib/iomgr/pollset_windows.cc @@ -129,7 +129,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, g_active_poller = &worker; gpr_mu_unlock(&grpc_polling_mu); grpc_iocp_work(deadline); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&grpc_polling_mu); pollset->is_iocp_worker = 0; g_active_poller = NULL; @@ -160,10 +160,10 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, while (!worker.kicked) { if (gpr_cv_wait(&worker.cv, &grpc_polling_mu, grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME))) { - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); break; } - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); } } else { pollset->kicked_without_pollers = 0; @@ -171,7 +171,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, done: if (!grpc_closure_list_empty(exec_ctx->closure_list)) { gpr_mu_unlock(&grpc_polling_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&grpc_polling_mu); } if (added_worker) { diff --git a/src/core/lib/iomgr/resolve_address_uv.cc b/src/core/lib/iomgr/resolve_address_uv.cc index ffd70c4f35e..54adf9b9f6b 100644 --- a/src/core/lib/iomgr/resolve_address_uv.cc +++ b/src/core/lib/iomgr/resolve_address_uv.cc @@ -114,7 +114,7 @@ static grpc_error* handle_addrinfo_result(int status, struct addrinfo* result, static void getaddrinfo_callback(uv_getaddrinfo_t* req, int status, struct addrinfo* res) { request* r = (request*)req->data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_error* error; int retry_status; char* port = r->port; diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc index 8fee585f4bb..11cb5ddbeeb 100644 --- a/src/core/lib/iomgr/resource_quota.cc +++ b/src/core/lib/iomgr/resource_quota.cc @@ -622,7 +622,7 @@ void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota) { /* Public API */ void grpc_resource_quota_unref(grpc_resource_quota* resource_quota) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_quota_unref_internal(resource_quota); } @@ -647,7 +647,7 @@ double grpc_resource_quota_get_memory_pressure( /* Public API */ void grpc_resource_quota_resize(grpc_resource_quota* resource_quota, size_t size) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; rq_resize_args* a = (rq_resize_args*)gpr_malloc(sizeof(*a)); a->resource_quota = grpc_resource_quota_ref_internal(resource_quota); a->size = (int64_t)size; diff --git a/src/core/lib/iomgr/tcp_client_uv.cc b/src/core/lib/iomgr/tcp_client_uv.cc index 7454b014451..0bf3a043df7 100644 --- a/src/core/lib/iomgr/tcp_client_uv.cc +++ b/src/core/lib/iomgr/tcp_client_uv.cc @@ -76,7 +76,7 @@ static void uv_tc_on_alarm(void* acp, grpc_error* error) { static void uv_tc_on_connect(uv_connect_t* req, int status) { grpc_uv_tcp_connect* connect = (grpc_uv_tcp_connect*)req->data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_error* error = GRPC_ERROR_NONE; int done; grpc_closure* closure = connect->closure; @@ -105,7 +105,7 @@ static void uv_tc_on_connect(uv_connect_t* req, int status) { } done = (--connect->refs == 0); if (done) { - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); uv_tcp_connect_cleanup(connect); } GRPC_CLOSURE_SCHED(closure, error); diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index de3dabd7fc6..04d4440f9e6 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -130,7 +130,7 @@ static void run_poller(void* bp, grpc_error* error_ignored) { gpr_log(GPR_DEBUG, "BACKUP_POLLER:%p run", p); } gpr_mu_lock(p->pollset_mu); - grpc_millis deadline = ExecCtx::Get()->Now() + 13 * GPR_MS_PER_SEC; + grpc_millis deadline = grpc_core::ExecCtx::Get()->Now() + 13 * GPR_MS_PER_SEC; GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS(); GRPC_LOG_IF_ERROR( "backup_poller:pollset_work", diff --git a/src/core/lib/iomgr/tcp_server_uv.cc b/src/core/lib/iomgr/tcp_server_uv.cc index 9db2cbe58d0..daa7afe95fd 100644 --- a/src/core/lib/iomgr/tcp_server_uv.cc +++ b/src/core/lib/iomgr/tcp_server_uv.cc @@ -137,7 +137,7 @@ static void finish_shutdown(grpc_tcp_server* s) { static void handle_close_callback(uv_handle_t* handle) { grpc_tcp_listener* sp = (grpc_tcp_listener*)handle->data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; sp->server->open_ports--; if (sp->server->open_ports == 0 && sp->server->shutdown) { finish_shutdown(sp->server); @@ -174,9 +174,9 @@ void grpc_tcp_server_unref(grpc_tcp_server* s) { GRPC_UV_ASSERT_SAME_THREAD(); if (gpr_unref(&s->refs)) { /* Complete shutdown_starting work before destroying. */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); tcp_server_destroy(s); } } @@ -223,7 +223,7 @@ static void finish_accept(grpc_tcp_listener* sp) { static void on_connect(uv_stream_t* server, int status) { grpc_tcp_listener* sp = (grpc_tcp_listener*)server->data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (status < 0) { switch (status) { diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index 3ea96748407..742ab9a754c 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -112,7 +112,7 @@ static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); } #endif static void uv_close_callback(uv_handle_t* handle) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp* tcp = (grpc_tcp*)handle->data; TCP_UNREF(tcp, "destroy"); } @@ -124,7 +124,7 @@ static grpc_slice alloc_read_slice(grpc_resource_user* resource_user) { static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size, uv_buf_t* buf) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp* tcp = (grpc_tcp*)handle->data; (void)suggested_size; buf->base = (char*)GRPC_SLICE_START_PTR(tcp->read_slice); @@ -135,7 +135,7 @@ static void read_callback(uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) { grpc_slice sub; grpc_error* error; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp* tcp = (grpc_tcp*)stream->data; grpc_closure* cb = tcp->read_cb; if (nread == 0) { @@ -204,7 +204,7 @@ static void uv_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices, static void write_callback(uv_write_t* req, int status) { grpc_tcp* tcp = (grpc_tcp*)req->data; grpc_error* error; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure* cb = tcp->write_cb; tcp->write_cb = NULL; TCP_UNREF(tcp, "write"); @@ -355,7 +355,7 @@ grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle, grpc_resource_quota* resource_quota, char* peer_string) { grpc_tcp* tcp = (grpc_tcp*)gpr_malloc(sizeof(grpc_tcp)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (GRPC_TRACER_ON(grpc_tcp_trace)) { gpr_log(GPR_DEBUG, "Creating TCP endpoint %p", tcp); diff --git a/src/core/lib/iomgr/timer_generic.cc b/src/core/lib/iomgr/timer_generic.cc index d5e6066f35e..ae827016760 100644 --- a/src/core/lib/iomgr/timer_generic.cc +++ b/src/core/lib/iomgr/timer_generic.cc @@ -249,7 +249,7 @@ void grpc_timer_list_init() { g_shared_mutables.initialized = true; g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER; gpr_mu_init(&g_shared_mutables.mu); - g_shared_mutables.min_timer = ExecCtx::Get()->Now(); + g_shared_mutables.min_timer = grpc_core::ExecCtx::Get()->Now(); gpr_tls_init(&g_last_seen_min_timer); gpr_tls_set(&g_last_seen_min_timer, 0); grpc_register_tracer(&grpc_timer_trace); @@ -341,7 +341,7 @@ void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, if (GRPC_TRACER_ON(grpc_timer_trace)) { gpr_log(GPR_DEBUG, "TIMER %p: SET %" PRIdPTR " now %" PRIdPTR " call %p[%p]", timer, - deadline, ExecCtx::Get()->Now(), closure, closure->cb); + deadline, grpc_core::ExecCtx::Get()->Now(), closure, closure->cb); } if (!g_shared_mutables.initialized) { @@ -354,7 +354,7 @@ void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, gpr_mu_lock(&shard->mu); timer->pending = true; - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); if (deadline <= now) { timer->pending = false; GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); @@ -607,7 +607,7 @@ static grpc_timer_check_result run_some_expired_timers(gpr_atm now, grpc_timer_check_result grpc_timer_check(grpc_millis* next) { // prelude - grpc_millis now = ExecCtx::Get()->Now(); + grpc_millis now = grpc_core::ExecCtx::Get()->Now(); /* fetch from a thread-local first: this avoids contention on a globally mutable cacheline in the common case */ diff --git a/src/core/lib/iomgr/timer_manager.cc b/src/core/lib/iomgr/timer_manager.cc index 69adb673d86..6a43f4fadb2 100644 --- a/src/core/lib/iomgr/timer_manager.cc +++ b/src/core/lib/iomgr/timer_manager.cc @@ -98,7 +98,7 @@ static void start_timer_thread_and_unlock(void) { } void grpc_timer_manager_tick() { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_millis next = GRPC_MILLIS_INF_FUTURE; grpc_timer_check(&next); } @@ -125,7 +125,7 @@ static void run_some_timers() { if (GRPC_TRACER_ON(grpc_timer_check_trace)) { gpr_log(GPR_DEBUG, "flush exec_ctx"); } - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&g_mu); // garbage collect any threads hanging out that are dead gc_completed_threads(); @@ -178,7 +178,7 @@ static bool wait_until(grpc_millis next) { g_timed_waiter_deadline = next; if (GRPC_TRACER_ON(grpc_timer_check_trace)) { - grpc_millis wait_time = next - ExecCtx::Get()->Now(); + grpc_millis wait_time = next - grpc_core::ExecCtx::Get()->Now(); gpr_log(GPR_DEBUG, "sleep for a %" PRIdPTR " milliseconds", wait_time); } @@ -223,7 +223,7 @@ static bool wait_until(grpc_millis next) { static void timer_main_loop() { for (;;) { grpc_millis next = GRPC_MILLIS_INF_FUTURE; - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); // check timer state, updates next to the next time to run a check switch (grpc_timer_check(&next)) { case GRPC_TIMERS_FIRED: @@ -273,7 +273,7 @@ static void timer_thread_cleanup(completed_thread* ct) { static void timer_thread(void* completed_thread_ptr) { // this threads exec_ctx: we try to run things through to completion here // since it's easy to spin up new threads - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; timer_main_loop(); timer_thread_cleanup((completed_thread*)completed_thread_ptr); diff --git a/src/core/lib/iomgr/timer_uv.cc b/src/core/lib/iomgr/timer_uv.cc index 6edd4169f12..1432eba51ef 100644 --- a/src/core/lib/iomgr/timer_uv.cc +++ b/src/core/lib/iomgr/timer_uv.cc @@ -45,7 +45,7 @@ static void stop_uv_timer(uv_timer_t* handle) { void run_expired_timer(uv_timer_t* handle) { grpc_timer* timer = (grpc_timer*)handle->data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_UV_ASSERT_SAME_THREAD(); GPR_ASSERT(timer->pending); timer->pending = 0; @@ -59,13 +59,13 @@ void grpc_timer_init(grpc_timer* timer, grpc_millis deadline, uv_timer_t* uv_timer; GRPC_UV_ASSERT_SAME_THREAD(); timer->closure = closure; - if (deadline <= ExecCtx::Get()->Now()) { + if (deadline <= grpc_core::ExecCtx::Get()->Now()) { timer->pending = 0; GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE); return; } timer->pending = 1; - timeout = (uint64_t)(deadline - ExecCtx::Get()->Now()); + timeout = (uint64_t)(deadline - grpc_core::ExecCtx::Get()->Now()); uv_timer = (uv_timer_t*)gpr_malloc(sizeof(uv_timer_t)); uv_timer_init(uv_default_loop(), uv_timer); uv_timer->data = timer; diff --git a/src/core/lib/security/context/security_context.cc b/src/core/lib/security/context/security_context.cc index 9b58b3657fd..570db788824 100644 --- a/src/core/lib/security/context/security_context.cc +++ b/src/core/lib/security/context/security_context.cc @@ -38,7 +38,7 @@ grpc_tracer_flag grpc_trace_auth_context_refcount = grpc_call_error grpc_call_set_credentials(grpc_call* call, grpc_call_credentials* creds) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_client_security_context* ctx = NULL; GRPC_API_TRACE("grpc_call_set_credentials(call=%p, creds=%p)", 2, (call, creds)); @@ -87,7 +87,7 @@ grpc_client_security_context* grpc_client_security_context_create(void) { } void grpc_client_security_context_destroy(void* ctx) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_client_security_context* c = (grpc_client_security_context*)ctx; grpc_call_credentials_unref(c->creds); GRPC_AUTH_CONTEXT_UNREF(c->auth_context, "client_security_context"); diff --git a/src/core/lib/security/credentials/credentials.cc b/src/core/lib/security/credentials/credentials.cc index 6a272653f80..5181f7f2600 100644 --- a/src/core/lib/security/credentials/credentials.cc +++ b/src/core/lib/security/credentials/credentials.cc @@ -72,7 +72,7 @@ void grpc_channel_credentials_unref(grpc_channel_credentials* creds) { void grpc_channel_credentials_release(grpc_channel_credentials* creds) { GRPC_API_TRACE("grpc_channel_credentials_release(creds=%p)", 1, (creds)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_credentials_unref(creds); } @@ -94,7 +94,7 @@ void grpc_call_credentials_unref(grpc_call_credentials* creds) { void grpc_call_credentials_release(grpc_call_credentials* creds) { GRPC_API_TRACE("grpc_call_credentials_release(creds=%p)", 1, (creds)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_call_credentials_unref(creds); } @@ -209,7 +209,7 @@ void grpc_server_credentials_unref(grpc_server_credentials* creds) { void grpc_server_credentials_release(grpc_server_credentials* creds) { GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_server_credentials_unref(creds); } diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/src/core/lib/security/credentials/google_default/google_default_credentials.cc index 03ec4bc3b3d..a8991943b01 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.cc +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc @@ -114,13 +114,13 @@ static int is_stack_running_on_compute_engine() { grpc_resource_quota_create("google_default_credentials"); grpc_httpcli_get( &context, &detector.pollent, resource_quota, &request, - ExecCtx::Get()->Now() + max_detection_delay, + grpc_core::ExecCtx::Get()->Now() + max_detection_delay, GRPC_CLOSURE_CREATE(on_compute_engine_detection_http_response, &detector, grpc_schedule_on_exec_ctx), &detector.response); grpc_resource_quota_unref_internal(resource_quota); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Block until we get the response. This is not ideal but this should only be called once for the lifetime of the process by the default credentials. */ @@ -144,7 +144,7 @@ static int is_stack_running_on_compute_engine() { grpc_pollset_shutdown(grpc_polling_entity_pollset(&detector.pollent), &destroy_closure); g_polling_mu = NULL; - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_free(grpc_polling_entity_pollset(&detector.pollent)); grpc_http_response_destroy(&detector.response); @@ -220,7 +220,7 @@ grpc_channel_credentials* grpc_google_default_credentials_create(void) { grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Failed to create Google credentials"); grpc_error* err; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_google_default_credentials_create(void)", 0, ()); @@ -290,7 +290,7 @@ end: } void grpc_flush_cached_google_default_credentials(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_once_init(&g_once, init_default_credentials); gpr_mu_lock(&g_state_mu); if (default_credentials != NULL) { diff --git a/src/core/lib/security/credentials/iam/iam_credentials.cc b/src/core/lib/security/credentials/iam/iam_credentials.cc index 4d9da0cbe3d..9f3a86877bf 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.cc +++ b/src/core/lib/security/credentials/iam/iam_credentials.cc @@ -54,7 +54,7 @@ static grpc_call_credentials_vtable iam_vtable = { grpc_call_credentials* grpc_google_iam_credentials_create( const char* token, const char* authority_selector, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_iam_credentials_create(token=%s, authority_selector=%s, " "reserved=%p)", diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/src/core/lib/security/credentials/jwt/jwt_credentials.cc index ccc3f4aeed5..3facce17985 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.cc +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc @@ -181,7 +181,7 @@ grpc_call_credentials* grpc_service_account_jwt_access_credentials_create( gpr_free(clean_json); } GPR_ASSERT(reserved == NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_call_credentials* creds = grpc_service_account_jwt_access_credentials_create_from_auth_json_key( grpc_auth_json_key_create_from_string(json_key), token_lifetime); diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/src/core/lib/security/credentials/jwt/jwt_verifier.cc index 5246e1f9859..dd0d206b019 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.cc +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc @@ -347,7 +347,7 @@ static verifier_cb_ctx* verifier_cb_ctx_create( grpc_jwt_claims* claims, const char* audience, grpc_slice signature, const char* signed_jwt, size_t signed_jwt_len, void* user_data, grpc_jwt_verification_done_cb cb) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; verifier_cb_ctx* ctx = (verifier_cb_ctx*)gpr_zalloc(sizeof(verifier_cb_ctx)); ctx->verifier = verifier; ctx->pollent = grpc_polling_entity_create_from_pollset(pollset); @@ -702,7 +702,7 @@ static void on_openid_config_retrieved(void* user_data, grpc_error* error) { resource_quota = grpc_resource_quota_create("jwt_verifier"); grpc_httpcli_get( &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req, - ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, + grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx), &ctx->responses[HTTP_RESPONSE_KEYS]); grpc_resource_quota_unref_internal(resource_quota); @@ -827,9 +827,10 @@ static void retrieve_key_and_verify(verifier_cb_ctx* ctx) { channel. This would allow us to cancel an authentication query when under extreme memory pressure. */ resource_quota = grpc_resource_quota_create("jwt_verifier"); - grpc_httpcli_get(&ctx->verifier->http_ctx, &ctx->pollent, resource_quota, - &req, ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, - http_cb, &ctx->responses[rsp_idx]); + grpc_httpcli_get( + &ctx->verifier->http_ctx, &ctx->pollent, resource_quota, &req, + grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, http_cb, + &ctx->responses[rsp_idx]); grpc_resource_quota_unref_internal(resource_quota); gpr_free(req.host); gpr_free(req.http.path); diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc index b6537056093..71be15a46eb 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc @@ -217,7 +217,7 @@ static void on_oauth2_token_fetcher_http_response(void* user_data, c->token_fetch_pending = false; c->access_token_md = GRPC_MDELEM_REF(access_token_md); c->token_expiration = status == GRPC_CREDENTIALS_OK - ? ExecCtx::Get()->Now() + token_lifetime + ? grpc_core::ExecCtx::Get()->Now() + token_lifetime : 0; grpc_oauth2_pending_get_request_metadata* pending_request = c->pending_requests; @@ -256,7 +256,8 @@ static bool oauth2_token_fetcher_get_request_metadata( grpc_mdelem cached_access_token_md = GRPC_MDNULL; gpr_mu_lock(&c->mu); if (!GRPC_MDISNULL(c->access_token_md) && - (c->token_expiration - ExecCtx::Get()->Now() > refresh_threshold)) { + (c->token_expiration - grpc_core::ExecCtx::Get()->Now() > + refresh_threshold)) { cached_access_token_md = GRPC_MDELEM_REF(c->access_token_md); } if (!GRPC_MDISNULL(cached_access_token_md)) { @@ -288,7 +289,7 @@ static bool oauth2_token_fetcher_get_request_metadata( c->fetch_func(grpc_credentials_metadata_request_create(creds), &c->httpcli_context, &c->pollent, on_oauth2_token_fetcher_http_response, - ExecCtx::Get()->Now() + refresh_threshold); + grpc_core::ExecCtx::Get()->Now() + refresh_threshold); } return false; } @@ -514,7 +515,7 @@ grpc_call_credentials* grpc_access_token_credentials_create( gpr_ref_init(&c->base.refcount, 1); char* token_md_value; gpr_asprintf(&token_md_value, "Bearer %s", access_token); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; c->access_token_md = grpc_mdelem_from_slices( grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), grpc_slice_from_copied_string(token_md_value)); diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc index 025d024617b..7634cadc3a9 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc @@ -116,8 +116,8 @@ static void plugin_md_request_metadata_ready(void* request, grpc_status_code status, const char* error_details) { /* called from application code */ - ExecCtx _local_exec_ctx(GRPC_EXEC_CTX_FLAG_IS_FINISHED | - GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP); + grpc_core::ExecCtx _local_exec_ctx(GRPC_EXEC_CTX_FLAG_IS_FINISHED | + GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP); grpc_plugin_credentials_pending_request* r = (grpc_plugin_credentials_pending_request*)request; if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) { diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc index 4ed2ec55bd8..0df3375d342 100644 --- a/src/core/lib/security/transport/security_handshaker.cc +++ b/src/core/lib/security/transport/security_handshaker.cc @@ -255,7 +255,7 @@ static void on_handshake_next_done_grpc_wrapper( security_handshaker* h = (security_handshaker*)user_data; // This callback will be invoked by TSI in a non-grpc thread, so it's // safe to create our own exec_ctx here. - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_mu_lock(&h->mu); grpc_error* error = on_handshake_next_done_locked( h, result, bytes_to_send, bytes_to_send_size, handshaker_result); diff --git a/src/core/lib/security/transport/server_auth_filter.cc b/src/core/lib/security/transport/server_auth_filter.cc index 86817076f83..5f5ff7c09cc 100644 --- a/src/core/lib/security/transport/server_auth_filter.cc +++ b/src/core/lib/security/transport/server_auth_filter.cc @@ -118,7 +118,7 @@ static void on_md_processing_done( grpc_status_code status, const char* error_details) { grpc_call_element* elem = (grpc_call_element*)user_data; call_data* calld = (call_data*)elem->call_data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; // If the call was not cancelled while we were in flight, process the result. if (gpr_atm_full_cas(&calld->state, (gpr_atm)STATE_INIT, (gpr_atm)STATE_DONE)) { diff --git a/src/core/lib/slice/slice.cc b/src/core/lib/slice/slice.cc index 6e1554d471e..3604bb77a8e 100644 --- a/src/core/lib/slice/slice.cc +++ b/src/core/lib/slice/slice.cc @@ -67,7 +67,7 @@ grpc_slice grpc_slice_ref(grpc_slice slice) { /* Public API */ void grpc_slice_unref(grpc_slice slice) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_unref_internal(slice); } diff --git a/src/core/lib/slice/slice_buffer.cc b/src/core/lib/slice/slice_buffer.cc index 4bc54c303f6..0a4d48f1140 100644 --- a/src/core/lib/slice/slice_buffer.cc +++ b/src/core/lib/slice/slice_buffer.cc @@ -73,7 +73,7 @@ void grpc_slice_buffer_destroy_internal(grpc_slice_buffer* sb) { } void grpc_slice_buffer_destroy(grpc_slice_buffer* sb) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(sb); } @@ -172,7 +172,7 @@ void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer* sb) { } void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_buffer_reset_and_unref_internal(sb); } diff --git a/src/core/lib/surface/alarm.cc b/src/core/lib/surface/alarm.cc index 7aee100f3f5..8dcfb1ddb5c 100644 --- a/src/core/lib/surface/alarm.cc +++ b/src/core/lib/surface/alarm.cc @@ -47,7 +47,7 @@ static void alarm_ref(grpc_alarm* alarm) { gpr_ref(&alarm->refs); } static void alarm_unref(grpc_alarm* alarm) { if (gpr_unref(&alarm->refs)) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (alarm->cq != NULL) { GRPC_CQ_INTERNAL_UNREF(alarm->cq, "alarm"); } @@ -117,7 +117,7 @@ grpc_alarm* grpc_alarm_create(void* reserved) { void grpc_alarm_set(grpc_alarm* alarm, grpc_completion_queue* cq, gpr_timespec deadline, void* tag, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CQ_INTERNAL_REF(cq, "alarm"); alarm->cq = cq; @@ -129,7 +129,7 @@ void grpc_alarm_set(grpc_alarm* alarm, grpc_completion_queue* cq, } void grpc_alarm_cancel(grpc_alarm* alarm, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_timer_cancel(&alarm->alarm); } diff --git a/src/core/lib/surface/byte_buffer.cc b/src/core/lib/surface/byte_buffer.cc index 6a9b13bb416..03097c6896a 100644 --- a/src/core/lib/surface/byte_buffer.cc +++ b/src/core/lib/surface/byte_buffer.cc @@ -71,7 +71,7 @@ grpc_byte_buffer* grpc_byte_buffer_copy(grpc_byte_buffer* bb) { void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) { if (!bb) return; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; switch (bb->type) { case GRPC_BB_RAW: grpc_slice_buffer_destroy_internal(&bb->data.raw.slice_buffer); diff --git a/src/core/lib/surface/byte_buffer_reader.cc b/src/core/lib/surface/byte_buffer_reader.cc index 9a9e26ecdc8..c5f8df3ddab 100644 --- a/src/core/lib/surface/byte_buffer_reader.cc +++ b/src/core/lib/surface/byte_buffer_reader.cc @@ -42,7 +42,7 @@ static int is_compressed(grpc_byte_buffer* buffer) { int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, grpc_byte_buffer* buffer) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_buffer decompressed_slices_buffer; reader->buffer_in = buffer; switch (reader->buffer_in->type) { @@ -110,7 +110,7 @@ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader) { grpc_slice out_slice = GRPC_SLICE_MALLOC(input_size); uint8_t* const outbuf = GRPC_SLICE_START_PTR(out_slice); /* just an alias */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (grpc_byte_buffer_reader_next(reader, &in_slice) != 0) { const size_t slice_length = GRPC_SLICE_LENGTH(in_slice); memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length); diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc index bbb7a39e294..cb858785f29 100644 --- a/src/core/lib/surface/call.cc +++ b/src/core/lib/surface/call.cc @@ -561,7 +561,7 @@ void grpc_call_unref(grpc_call* c) { if (!gpr_unref(&c->ext_ref)) return; child_call* cc = c->child; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_TIMER_BEGIN("grpc_call_unref", 0); GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c)); @@ -602,7 +602,7 @@ void grpc_call_unref(grpc_call* c) { grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) { GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved)); GPR_ASSERT(!reserved); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); return GRPC_CALL_OK; @@ -652,7 +652,7 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c, grpc_status_code status, const char* description, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE( "grpc_call_cancel_with_status(" "c=%p, status=%d, description=%s, reserved=%p)", @@ -2034,7 +2034,7 @@ done_with_error: grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops, size_t nops, void* tag, void* reserved) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_call_error err; GRPC_API_TRACE( diff --git a/src/core/lib/surface/call_details.cc b/src/core/lib/surface/call_details.cc index 03ce7f88fbc..7d81ba9e22a 100644 --- a/src/core/lib/surface/call_details.cc +++ b/src/core/lib/surface/call_details.cc @@ -34,7 +34,7 @@ void grpc_call_details_init(grpc_call_details* cd) { void grpc_call_details_destroy(grpc_call_details* cd) { GRPC_API_TRACE("grpc_call_details_destroy(cd=%p)", 1, (cd)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_unref_internal(cd->method); grpc_slice_unref_internal(cd->host); } diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index 7725351f74e..80ba47676e4 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -248,7 +248,7 @@ char* grpc_channel_get_target(grpc_channel* channel) { void grpc_channel_get_info(grpc_channel* channel, const grpc_channel_info* channel_info) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_element* elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0); elem->filter->get_channel_info(elem, channel_info); @@ -296,7 +296,7 @@ grpc_call* grpc_channel_create_call(grpc_channel* channel, grpc_slice method, const grpc_slice* host, gpr_timespec deadline, void* reserved) { GPR_ASSERT(!reserved); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_call* call = grpc_channel_create_call_internal( channel, parent_call, propagation_mask, cq, NULL, grpc_mdelem_from_slices(GRPC_MDSTR_PATH, grpc_slice_ref_internal(method)), @@ -329,7 +329,7 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method, "grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)", 4, (channel, method, host, reserved)); GPR_ASSERT(!reserved); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; rc->path = grpc_mdelem_from_slices( GRPC_MDSTR_PATH, @@ -364,7 +364,7 @@ grpc_call* grpc_channel_create_registered_call( registered_call_handle, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type, reserved)); GPR_ASSERT(!reserved); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_call* call = grpc_channel_create_call_internal( channel, parent_call, propagation_mask, completion_queue, NULL, GRPC_MDELEM_REF(rc->path), GRPC_MDELEM_REF(rc->authority), @@ -407,7 +407,7 @@ static void destroy_channel(void* arg, grpc_error* error) { void grpc_channel_destroy(grpc_channel* channel) { grpc_transport_op* op = grpc_make_transport_op(NULL); grpc_channel_element* elem; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (channel)); op->disconnect_with_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Destroyed"); diff --git a/src/core/lib/surface/channel_ping.cc b/src/core/lib/surface/channel_ping.cc index 06cdbf6c73d..545b8fe6eef 100644 --- a/src/core/lib/surface/channel_ping.cc +++ b/src/core/lib/surface/channel_ping.cc @@ -51,7 +51,7 @@ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq, ping_result* pr = (ping_result*)gpr_malloc(sizeof(*pr)); grpc_channel_element* top_elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(reserved == NULL); pr->tag = tag; pr->cq = cq; diff --git a/src/core/lib/surface/completion_queue.cc b/src/core/lib/surface/completion_queue.cc index 0b0a8d070d5..24c502881a4 100644 --- a/src/core/lib/surface/completion_queue.cc +++ b/src/core/lib/surface/completion_queue.cc @@ -124,7 +124,7 @@ static grpc_error* non_polling_poller_work(grpc_pollset* pollset, while (!npp->shutdown && !w.kicked && !gpr_cv_wait(&w.cv, &npp->mu, deadline_ts)) ; - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); if (&w == npp->root) { npp->root = w.next; if (&w == npp->root) { @@ -359,7 +359,7 @@ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq, if (storage != NULL && (grpc_completion_queue*)gpr_tls_get(&g_cached_cq) == cq) { *tag = storage->tag; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; *ok = (storage->next & (uintptr_t)(1)) == 1; storage->done(storage->done_arg, storage); ret = 1; @@ -395,7 +395,7 @@ static bool cq_event_queue_push(grpc_cq_event_queue* q, grpc_cq_completion* c) { static grpc_cq_completion* cq_event_queue_pop(grpc_cq_event_queue* q) { grpc_cq_completion* c = NULL; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (gpr_spinlock_trylock(&q->queue_lock)) { GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES(); @@ -440,7 +440,7 @@ grpc_completion_queue* grpc_completion_queue_create_internal( const cq_poller_vtable* poller_vtable = &g_poller_vtable_by_poller_type[polling_type]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_STATS_INC_CQS_CREATED(); cq = (grpc_completion_queue*)gpr_zalloc(sizeof(grpc_completion_queue) + @@ -790,7 +790,7 @@ typedef struct { bool first_loop; } cq_is_finished_arg; -class ExecCtxNext : public ExecCtx { +class ExecCtxNext : public grpc_core::ExecCtx { public: ExecCtxNext(void* arg) : ExecCtx(0), check_ready_to_finish_arg_(arg) {} @@ -818,7 +818,7 @@ class ExecCtxNext : public ExecCtx { return true; } } - return !a->first_loop && a->deadline < ExecCtx::Get()->Now(); + return !a->first_loop && a->deadline < grpc_core::ExecCtx::Get()->Now(); } private: @@ -929,7 +929,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, } if (!is_finished_arg.first_loop && - ExecCtx::Get()->Now() >= deadline_millis) { + grpc_core::ExecCtx::Get()->Now() >= deadline_millis) { memset(&ret, 0, sizeof(ret)); ret.type = GRPC_QUEUE_TIMEOUT; dump_pending_tags(cq); @@ -1045,7 +1045,7 @@ static void del_plucker(grpc_completion_queue* cq, void* tag, GPR_UNREACHABLE_CODE(return ); } -class ExecCtxPluck : public ExecCtx { +class ExecCtxPluck : public grpc_core::ExecCtx { public: ExecCtxPluck(void* arg) : ExecCtx(0), check_ready_to_finish_arg_(arg) {} @@ -1079,7 +1079,7 @@ class ExecCtxPluck : public ExecCtx { } gpr_mu_unlock(cq->mu); } - return !a->first_loop && a->deadline < ExecCtx::Get()->Now(); + return !a->first_loop && a->deadline < grpc_core::ExecCtx::Get()->Now(); } private: @@ -1169,7 +1169,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, break; } if (!is_finished_arg.first_loop && - ExecCtx::Get()->Now() >= deadline_millis) { + grpc_core::ExecCtx::Get()->Now() >= deadline_millis) { del_plucker(cq, tag, &worker); gpr_mu_unlock(cq->mu); memset(&ret, 0, sizeof(ret)); @@ -1250,7 +1250,7 @@ static void cq_shutdown_pluck(grpc_completion_queue* cq) { /* Shutdown simply drops a ref that we reserved at creation time; if we drop to zero here, then enter shutdown mode and wake up any waiters */ void grpc_completion_queue_shutdown(grpc_completion_queue* cq) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_TIMER_BEGIN("grpc_completion_queue_shutdown", 0); GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq)); cq->vtable->shutdown(cq); @@ -1263,7 +1263,7 @@ void grpc_completion_queue_destroy(grpc_completion_queue* cq) { GPR_TIMER_BEGIN("grpc_completion_queue_destroy", 0); grpc_completion_queue_shutdown(cq); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CQ_INTERNAL_UNREF(cq, "destroy"); GPR_TIMER_END("grpc_completion_queue_destroy", 0); diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 20e17a7f60b..fdbf926f77b 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -116,7 +116,7 @@ void grpc_init(void) { int i; gpr_once_init(&g_basic_init, do_basic_init); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_mu_lock(&g_init_mu); if (++g_initializations == 1) { gpr_time_init(); @@ -175,7 +175,7 @@ void grpc_init(void) { void grpc_shutdown(void) { int i; GRPC_API_TRACE("grpc_shutdown(void)", 0, ()); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { grpc_executor_shutdown(); diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index da081e68cbd..3bbdd212854 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -156,7 +156,7 @@ extern "C" const grpc_channel_filter grpc_lame_filter = { grpc_channel* grpc_lame_client_channel_create(const char* target, grpc_status_code error_code, const char* error_message) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_element* elem; grpc_channel* channel = grpc_channel_create(target, NULL, GRPC_CLIENT_LAME_CHANNEL, NULL); diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc index 0d4435d5563..835e4954955 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/lib/surface/server.cc @@ -1022,7 +1022,7 @@ static void start_listeners(void* s, grpc_error* error) { void grpc_server_start(grpc_server* server) { size_t i; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_start(server=%p)", 1, (server)); @@ -1168,7 +1168,7 @@ void grpc_server_shutdown_and_notify(grpc_server* server, listener* l; shutdown_tag* sdt; channel_broadcaster broadcaster; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_shutdown_and_notify(server=%p, cq=%p, tag=%p)", 3, (server, cq, tag)); @@ -1227,7 +1227,7 @@ void grpc_server_shutdown_and_notify(grpc_server* server, void grpc_server_cancel_all_calls(grpc_server* server) { channel_broadcaster broadcaster; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_cancel_all_calls(server=%p)", 1, (server)); @@ -1242,7 +1242,7 @@ void grpc_server_cancel_all_calls(grpc_server* server) { void grpc_server_destroy(grpc_server* server) { listener* l; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_API_TRACE("grpc_server_destroy(server=%p)", 1, (server)); @@ -1324,7 +1324,7 @@ grpc_call_error grpc_server_request_call( grpc_completion_queue* cq_bound_to_call, grpc_completion_queue* cq_for_notification, void* tag) { grpc_call_error error; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; requested_call* rc = (requested_call*)gpr_malloc(sizeof(*rc)); GRPC_STATS_INC_SERVER_REQUESTED_CALLS(); GRPC_API_TRACE( @@ -1371,7 +1371,7 @@ grpc_call_error grpc_server_request_registered_call( grpc_completion_queue* cq_bound_to_call, grpc_completion_queue* cq_for_notification, void* tag) { grpc_call_error error; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; requested_call* rc = (requested_call*)gpr_malloc(sizeof(*rc)); registered_method* rm = (registered_method*)rmp; GRPC_STATS_INC_SERVER_REQUESTED_CALLS(); diff --git a/src/core/lib/transport/bdp_estimator.cc b/src/core/lib/transport/bdp_estimator.cc index 4e279b4d94a..d2b6e5db258 100644 --- a/src/core/lib/transport/bdp_estimator.cc +++ b/src/core/lib/transport/bdp_estimator.cc @@ -79,7 +79,7 @@ grpc_millis BdpEstimator::CompletePing() { } ping_state_ = PingState::UNSCHEDULED; accumulator_ = 0; - return ExecCtx::Get()->Now() + inter_ping_delay_; + return grpc_core::ExecCtx::Get()->Now() + inter_ping_delay_; } } // namespace grpc_core diff --git a/src/core/lib/transport/status_conversion.cc b/src/core/lib/transport/status_conversion.cc index 61470b8c784..46cba4292b4 100644 --- a/src/core/lib/transport/status_conversion.cc +++ b/src/core/lib/transport/status_conversion.cc @@ -46,8 +46,9 @@ grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error, case GRPC_HTTP2_CANCEL: /* http2 cancel translates to STATUS_CANCELLED iff deadline hasn't been * exceeded */ - return ExecCtx::Get()->Now() > deadline ? GRPC_STATUS_DEADLINE_EXCEEDED - : GRPC_STATUS_CANCELLED; + return grpc_core::ExecCtx::Get()->Now() > deadline + ? GRPC_STATUS_DEADLINE_EXCEEDED + : GRPC_STATUS_CANCELLED; case GRPC_HTTP2_ENHANCE_YOUR_CALM: return GRPC_STATUS_RESOURCE_EXHAUSTED; case GRPC_HTTP2_INADEQUATE_SECURITY: diff --git a/src/core/lib/transport/transport.cc b/src/core/lib/transport/transport.cc index ca80a7404d3..ed2f02de550 100644 --- a/src/core/lib/transport/transport.cc +++ b/src/core/lib/transport/transport.cc @@ -62,7 +62,8 @@ void grpc_stream_unref(grpc_stream_refcount* refcount, const char* reason) { void grpc_stream_unref(grpc_stream_refcount* refcount) { #endif if (gpr_unref(&refcount->refs)) { - if (ExecCtx::Get()->flags() & GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP) { + if (grpc_core::ExecCtx::Get()->flags() & + GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP) { /* Ick. The thread we're running on MAY be owned (indirectly) by a call-stack. If that's the case, destroying the call-stack MAY try to destroy the diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc index 0bcfac28459..82d687c530d 100644 --- a/src/cpp/common/channel_arguments.cc +++ b/src/cpp/common/channel_arguments.cc @@ -67,7 +67,7 @@ ChannelArguments::ChannelArguments(const ChannelArguments& other) } ChannelArguments::~ChannelArguments() { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; for (auto it = args_.begin(); it != args_.end(); ++it) { if (it->type == GRPC_ARG_POINTER) { it->value.pointer.vtable->destroy(it->value.pointer.p); @@ -95,7 +95,7 @@ void ChannelArguments::SetSocketMutator(grpc_socket_mutator* mutator) { } grpc_arg mutator_arg = grpc_socket_mutator_to_arg(mutator); bool replaced = false; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; for (auto it = args_.begin(); it != args_.end(); ++it) { if (it->type == mutator_arg.type && grpc::string(it->key) == grpc::string(mutator_arg.key)) { diff --git a/test/core/backoff/backoff_test.cc b/test/core/backoff/backoff_test.cc index 739ab86bb23..76a9f39c35a 100644 --- a/test/core/backoff/backoff_test.cc +++ b/test/core/backoff/backoff_test.cc @@ -32,19 +32,23 @@ static void test_constant_backoff(void) { const grpc_millis max_backoff = 1000; grpc_backoff_init(&backoff, initial_backoff, multiplier, jitter, min_connect_timeout, max_backoff); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); - GPR_ASSERT(next_deadlines.current_deadline - ExecCtx::Get()->Now() == + GPR_ASSERT(next_deadlines.current_deadline - + grpc_core::ExecCtx::Get()->Now() == initial_backoff); - GPR_ASSERT(next_deadlines.next_attempt_start_time - ExecCtx::Get()->Now() == + GPR_ASSERT(next_deadlines.next_attempt_start_time - + grpc_core::ExecCtx::Get()->Now() == initial_backoff); for (int i = 0; i < 10000; i++) { next_deadlines = grpc_backoff_step(&backoff); - GPR_ASSERT(next_deadlines.current_deadline - ExecCtx::Get()->Now() == + GPR_ASSERT(next_deadlines.current_deadline - + grpc_core::ExecCtx::Get()->Now() == initial_backoff); - GPR_ASSERT(next_deadlines.next_attempt_start_time - ExecCtx::Get()->Now() == + GPR_ASSERT(next_deadlines.next_attempt_start_time - + grpc_core::ExecCtx::Get()->Now() == initial_backoff); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); } } @@ -57,15 +61,15 @@ static void test_min_connect(void) { const grpc_millis max_backoff = 1000; grpc_backoff_init(&backoff, initial_backoff, multiplier, jitter, min_connect_timeout, max_backoff); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_backoff_result next = grpc_backoff_begin(&backoff); // Because the min_connect_timeout > initial_backoff, current_deadline is used // as the deadline for the current attempt. - GPR_ASSERT(next.current_deadline - ExecCtx::Get()->Now() == + GPR_ASSERT(next.current_deadline - grpc_core::ExecCtx::Get()->Now() == min_connect_timeout); // ... while, if the current attempt fails, the next one will happen after // initial_backoff. - GPR_ASSERT(next.next_attempt_start_time - ExecCtx::Get()->Now() == + GPR_ASSERT(next.next_attempt_start_time - grpc_core::ExecCtx::Get()->Now() == initial_backoff); } @@ -80,45 +84,45 @@ static void test_no_jitter_backoff(void) { min_connect_timeout, max_backoff); // x_1 = 2 // x_n = 2**i + x_{i-1} ( = 2**(n+1) - 2 ) - ExecCtx _local_exec_ctx; - ExecCtx::Get()->SetNow(0); + grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx::Get()->TestOnlySetNow(0); grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); GPR_ASSERT(next_deadlines.current_deadline == next_deadlines.next_attempt_start_time); GPR_ASSERT(next_deadlines.current_deadline == 2); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 6); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 14); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 30); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 62); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 126); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 254); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 510); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 1022); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); // Hit the maximum timeout. From this point onwards, retries will increase // only by max timeout. GPR_ASSERT(next_deadlines.current_deadline == 1535); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 2048); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); next_deadlines = grpc_backoff_step(&backoff); GPR_ASSERT(next_deadlines.current_deadline == 2561); } @@ -136,11 +140,13 @@ static void test_jitter_backoff(void) { backoff.rng_state = 0; // force consistent PRNG - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); - GPR_ASSERT(next_deadlines.current_deadline - ExecCtx::Get()->Now() == + GPR_ASSERT(next_deadlines.current_deadline - + grpc_core::ExecCtx::Get()->Now() == initial_backoff); - GPR_ASSERT(next_deadlines.next_attempt_start_time - ExecCtx::Get()->Now() == + GPR_ASSERT(next_deadlines.next_attempt_start_time - + grpc_core::ExecCtx::Get()->Now() == initial_backoff); grpc_millis expected_next_lower_bound = @@ -153,7 +159,7 @@ static void test_jitter_backoff(void) { // next-now must be within (jitter*100)% of the current backoff (which // increases by * multiplier up to max_backoff). const grpc_millis timeout_millis = - next_deadlines.current_deadline - ExecCtx::Get()->Now(); + next_deadlines.current_deadline - grpc_core::ExecCtx::Get()->Now(); GPR_ASSERT(timeout_millis >= expected_next_lower_bound); GPR_ASSERT(timeout_millis <= expected_next_upper_bound); current_backoff = GPR_MIN( @@ -162,7 +168,7 @@ static void test_jitter_backoff(void) { (grpc_millis)((double)current_backoff * (1 - jitter)); expected_next_upper_bound = (grpc_millis)((double)current_backoff * (1 + jitter)); - ExecCtx::Get()->SetNow(next_deadlines.current_deadline); + grpc_core::ExecCtx::Get()->TestOnlySetNow(next_deadlines.current_deadline); } } diff --git a/test/core/bad_client/bad_client.cc b/test/core/bad_client/bad_client.cc index bc9e65089c8..b7c9404638a 100644 --- a/test/core/bad_client/bad_client.cc +++ b/test/core/bad_client/bad_client.cc @@ -57,7 +57,7 @@ static void done_write(void* arg, grpc_error* error) { static void server_setup_transport(void* ts, grpc_transport* transport) { thd_args* a = (thd_args*)ts; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_server_setup_transport(a->server, transport, NULL, grpc_server_get_channel_args(a->server)); } @@ -80,7 +80,7 @@ void grpc_run_bad_client_test( grpc_slice_from_copied_buffer(client_payload, client_payload_length); grpc_slice_buffer outgoing; grpc_closure done_write_closure; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_completion_queue* shutdown_cq; if (client_payload_length < 4 * 1024) { diff --git a/test/core/channel/channel_args_test.cc b/test/core/channel/channel_args_test.cc index f0393b0f400..eb2654e6a91 100644 --- a/test/core/channel/channel_args_test.cc +++ b/test/core/channel/channel_args_test.cc @@ -26,7 +26,7 @@ #include "test/core/util/test_config.h" static void test_create(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_arg arg_int; grpc_arg arg_string; @@ -59,7 +59,7 @@ static void test_create(void) { } static void test_set_compression_algorithm(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args* ch_args; ch_args = @@ -73,7 +73,7 @@ static void test_set_compression_algorithm(void) { } static void test_compression_algorithm_states(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args *ch_args, *ch_args_wo_gzip, *ch_args_wo_gzip_deflate; unsigned states_bitset; size_t i; @@ -134,7 +134,7 @@ static void test_set_socket_mutator(void) { GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_POINTER); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(ch_args); } } diff --git a/test/core/channel/channel_stack_test.cc b/test/core/channel/channel_stack_test.cc index 66ee2948b1c..21d7e89cb02 100644 --- a/test/core/channel/channel_stack_test.cc +++ b/test/core/channel/channel_stack_test.cc @@ -95,7 +95,7 @@ static void test_create_channel_stack(void) { grpc_channel_args chan_args; int* channel_data; int* call_data; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice path = grpc_slice_from_static_string("/service/method"); arg.type = GRPC_ARG_INTEGER; @@ -138,7 +138,7 @@ static void test_create_channel_stack(void) { GPR_ASSERT(*channel_data == 1); GRPC_CALL_STACK_UNREF(call_stack, "done"); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(*channel_data == 2); GRPC_CHANNEL_STACK_UNREF(channel_stack, "done"); diff --git a/test/core/channel/minimal_stack_is_minimal_test.cc b/test/core/channel/minimal_stack_is_minimal_test.cc index dd3c70a261c..5aab969276a 100644 --- a/test/core/channel/minimal_stack_is_minimal_test.cc +++ b/test/core/channel/minimal_stack_is_minimal_test.cc @@ -124,7 +124,7 @@ static int check_stack(const char* file, int line, const char* transport_name, grpc_channel_stack_builder_set_transport(builder, &fake_transport); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_stack_builder_set_channel_arguments(builder, channel_args); GPR_ASSERT(grpc_channel_init_create_stack( builder, (grpc_channel_stack_type)channel_stack_type)); @@ -209,7 +209,7 @@ static int check_stack(const char* file, int line, const char* transport_name, gpr_free(expect); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_stack_builder_destroy(builder); grpc_channel_args_destroy(channel_args); } diff --git a/test/core/client_channel/lb_policies_test.cc b/test/core/client_channel/lb_policies_test.cc index 5b412cc6229..88e12ed8e1f 100644 --- a/test/core/client_channel/lb_policies_test.cc +++ b/test/core/client_channel/lb_policies_test.cc @@ -651,7 +651,7 @@ static void test_get_channel_info() { grpc_channel_args* args = grpc_channel_args_copy_and_add(NULL, &arg, 1); channel = grpc_insecure_channel_create("ipv4:127.0.0.1:1234", args, NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); } // Ensures that resolver returns. @@ -958,7 +958,7 @@ static void verify_rebirth_round_robin(const servers_fixture* f, } int main(int argc, char** argv) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; test_spec* spec; size_t i; const size_t NUM_ITERS = 10; diff --git a/test/core/client_channel/parse_address_test.cc b/test/core/client_channel/parse_address_test.cc index 597a1212c14..8f880830450 100644 --- a/test/core/client_channel/parse_address_test.cc +++ b/test/core/client_channel/parse_address_test.cc @@ -33,7 +33,7 @@ #ifdef GRPC_HAVE_UNIX_SOCKET static void test_grpc_parse_unix(const char* uri_text, const char* pathname) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; @@ -53,7 +53,7 @@ static void test_grpc_parse_unix(const char* uri_text, const char* pathname) {} static void test_grpc_parse_ipv4(const char* uri_text, const char* host, unsigned short port) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; char ntop_buf[INET_ADDRSTRLEN]; @@ -71,7 +71,7 @@ static void test_grpc_parse_ipv4(const char* uri_text, const char* host, static void test_grpc_parse_ipv6(const char* uri_text, const char* host, unsigned short port, uint32_t scope_id) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; char ntop_buf[INET6_ADDRSTRLEN]; diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc index c7a0e029f22..1f00d9ab439 100644 --- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc @@ -104,7 +104,7 @@ static bool wait_loop(int deadline_seconds, gpr_event* ev) { if (gpr_event_wait(ev, grpc_timeout_seconds_to_deadline(1))) return true; deadline_seconds--; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_timer_check(NULL); } return false; @@ -146,14 +146,14 @@ int main(int argc, char** argv) { grpc_dns_lookup_ares = my_dns_lookup_ares; grpc_channel_args* result = (grpc_channel_args*)1; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolver* resolver = create_resolver("dns:test"); gpr_event ev1; gpr_event_init(&ev1); call_resolver_next_after_locking( resolver, &result, GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(wait_loop(5, &ev1)); GPR_ASSERT(result == NULL); @@ -162,7 +162,7 @@ int main(int argc, char** argv) { call_resolver_next_after_locking( resolver, &result, GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(wait_loop(30, &ev2)); GPR_ASSERT(result != NULL); diff --git a/test/core/client_channel/resolvers/dns_resolver_test.cc b/test/core/client_channel/resolvers/dns_resolver_test.cc index 33916b59ec8..e8900ab1bb7 100644 --- a/test/core/client_channel/resolvers/dns_resolver_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_test.cc @@ -28,7 +28,7 @@ static grpc_combiner* g_combiner; static void test_succeeds(grpc_resolver_factory* factory, const char* string) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -45,7 +45,7 @@ static void test_succeeds(grpc_resolver_factory* factory, const char* string) { } static void test_fails(grpc_resolver_factory* factory, const char* string) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -80,7 +80,7 @@ int main(int argc, char** argv) { grpc_resolver_factory_unref(dns); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(g_combiner, "test"); } grpc_shutdown(); diff --git a/test/core/client_channel/resolvers/fake_resolver_test.cc b/test/core/client_channel/resolvers/fake_resolver_test.cc index 9a1971561cf..1595313f36e 100644 --- a/test/core/client_channel/resolvers/fake_resolver_test.cc +++ b/test/core/client_channel/resolvers/fake_resolver_test.cc @@ -72,7 +72,7 @@ void on_resolution_cb(void* arg, grpc_error* error) { } static void test_fake_resolver() { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); // Create resolver. grpc_fake_resolver_response_generator* response_generator = @@ -109,7 +109,7 @@ static void test_fake_resolver() { results); grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg.ev, grpc_timeout_seconds_to_deadline(5)) != NULL); @@ -144,7 +144,7 @@ static void test_fake_resolver() { results_update); grpc_resolver_next_locked(resolver, &on_res_arg_update.resolver_result, on_resolution); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg_update.ev, grpc_timeout_seconds_to_deadline(5)) != NULL); @@ -153,7 +153,7 @@ static void test_fake_resolver() { memset(&on_res_arg, 0, sizeof(on_res_arg)); grpc_resolver_next_locked(resolver, &on_res_arg.resolver_result, on_resolution); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&on_res_arg.ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); diff --git a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc index 70b3cbf5b75..75849018133 100644 --- a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc +++ b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc @@ -41,7 +41,7 @@ void on_resolution_cb(void* arg, grpc_error* error) { } static void test_succeeds(grpc_resolver_factory* factory, const char* string) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -68,7 +68,7 @@ static void test_succeeds(grpc_resolver_factory* factory, const char* string) { } static void test_fails(grpc_resolver_factory* factory, const char* string) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -111,7 +111,7 @@ int main(int argc, char** argv) { grpc_resolver_factory_unref(ipv6); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(g_combiner, "test"); } grpc_shutdown(); diff --git a/test/core/client_channel/uri_fuzzer_test.cc b/test/core/client_channel/uri_fuzzer_test.cc index 6c1e8cb137c..484676e4720 100644 --- a/test/core/client_channel/uri_fuzzer_test.cc +++ b/test/core/client_channel/uri_fuzzer_test.cc @@ -33,7 +33,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { memcpy(s, data, size); s[size] = 0; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* x; if ((x = grpc_uri_parse(s, 1))) { grpc_uri_destroy(x); diff --git a/test/core/client_channel/uri_parser_test.cc b/test/core/client_channel/uri_parser_test.cc index 024c30faee0..61418ae7d89 100644 --- a/test/core/client_channel/uri_parser_test.cc +++ b/test/core/client_channel/uri_parser_test.cc @@ -28,7 +28,7 @@ static void test_succeeds(const char* uri_text, const char* scheme, const char* authority, const char* path, const char* query, const char* fragment) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); GPR_ASSERT(0 == strcmp(scheme, uri->scheme)); @@ -41,13 +41,13 @@ static void test_succeeds(const char* uri_text, const char* scheme, } static void test_fails(const char* uri_text) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(NULL == grpc_uri_parse(uri_text, 0)); } static void test_query_parts() { { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; const char* uri_text = "http://foo/path?a&b=B&c=&#frag"; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); @@ -81,7 +81,7 @@ static void test_query_parts() { } { /* test the current behavior of multiple query part values */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; const char* uri_text = "http://auth/path?foo=bar=baz&foobar=="; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); @@ -99,7 +99,7 @@ static void test_query_parts() { } { /* empty query */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; const char* uri_text = "http://foo/path"; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); diff --git a/test/core/compression/algorithm_test.cc b/test/core/compression/algorithm_test.cc index 9ae6363d97f..a6fc55e682e 100644 --- a/test/core/compression/algorithm_test.cc +++ b/test/core/compression/algorithm_test.cc @@ -39,7 +39,7 @@ static void test_algorithm_mesh(void) { grpc_compression_algorithm parsed; grpc_slice mdstr; grpc_mdelem mdelem; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT( grpc_compression_algorithm_name((grpc_compression_algorithm)i, &name)); GPR_ASSERT(grpc_compression_algorithm_parse( @@ -61,7 +61,7 @@ static void test_algorithm_mesh(void) { } static void test_algorithm_failure(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice mdstr; gpr_log(GPR_DEBUG, "test_algorithm_failure"); diff --git a/test/core/compression/message_compress_test.cc b/test/core/compression/message_compress_test.cc index a5dfdc884fc..0145b4f4020 100644 --- a/test/core/compression/message_compress_test.cc +++ b/test/core/compression/message_compress_test.cc @@ -70,7 +70,7 @@ static void assert_passthrough(grpc_slice value, grpc_split_slices_to_buffer(uncompressed_split_mode, &value, 1, &input); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; was_compressed = grpc_msg_compress(algorithm, &input, &compressed_raw); } GPR_ASSERT(input.count > 0); @@ -90,7 +90,7 @@ static void assert_passthrough(grpc_slice value, grpc_split_slice_buffer(compressed_split_mode, &compressed_raw, &compressed); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_msg_decompress( was_compressed ? algorithm : GRPC_COMPRESS_NONE, &compressed, &output)); } @@ -152,7 +152,7 @@ static void test_tiny_data_compress(void) { for (int i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { if (i == GRPC_COMPRESS_NONE) continue; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(0 == grpc_msg_compress(static_cast<grpc_compression_algorithm>(i), &input, &output)); @@ -176,7 +176,7 @@ static void test_bad_decompression_data_crc(void) { grpc_slice_buffer_init(&output); grpc_slice_buffer_add(&input, create_test_value(ONE_MB_A)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* compress it */ grpc_msg_compress(GRPC_COMPRESS_GZIP, &input, &corrupted); /* corrupt the output by smashing the CRC */ @@ -205,7 +205,7 @@ static void test_bad_decompression_data_trailing_garbage(void) { "\x78\xda\x63\x60\x60\x60\x00\x00\x00\x04\x00\x01\x99", 13)); /* try (and fail) to decompress the invalid compresed buffer */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); grpc_slice_buffer_destroy(&input); @@ -222,7 +222,7 @@ static void test_bad_decompression_data_stream(void) { grpc_slice_from_copied_buffer("\x78\xda\xff\xff", 4)); /* try (and fail) to decompress the invalid compresed buffer */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); grpc_slice_buffer_destroy(&input); @@ -239,7 +239,7 @@ static void test_bad_compression_algorithm(void) { grpc_slice_buffer_add( &input, grpc_slice_from_copied_string("Never gonna give you up")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; was_compressed = grpc_msg_compress(GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); GPR_ASSERT(0 == was_compressed); @@ -263,7 +263,7 @@ static void test_bad_decompression_algorithm(void) { grpc_slice_buffer_add(&input, grpc_slice_from_copied_string( "I'm not really compressed but it doesn't matter")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; was_decompressed = grpc_msg_decompress(GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); GPR_ASSERT(0 == was_decompressed); diff --git a/test/core/debug/stats_test.cc b/test/core/debug/stats_test.cc index c7aaf68dd3e..a3bb44f496a 100644 --- a/test/core/debug/stats_test.cc +++ b/test/core/debug/stats_test.cc @@ -49,7 +49,7 @@ TEST(StatsTest, IncCounters) { for (int i = 0; i < GRPC_STATS_COUNTER_COUNT; i++) { Snapshot snapshot; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_STATS_INC_COUNTER((grpc_stats_counters)i); EXPECT_EQ(snapshot.delta().counters[i], 1); @@ -59,7 +59,7 @@ TEST(StatsTest, IncCounters) { TEST(StatsTest, IncSpecificCounter) { Snapshot snapshot; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_STATS_INC_SYSCALL_POLL(); EXPECT_EQ(snapshot.delta().counters[GRPC_STATS_COUNTER_SYSCALL_POLL], 1); @@ -92,7 +92,7 @@ TEST_P(HistogramTest, IncHistogram) { for (auto j : test_values) { Snapshot snapshot; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_stats_inc_histogram[kHistogram](j); auto delta = snapshot.delta(); diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc index 5e7e12643e2..bb192267c70 100644 --- a/test/core/end2end/bad_server_response_test.cc +++ b/test/core/end2end/bad_server_response_test.cc @@ -269,7 +269,7 @@ static void run_test(const char* response_payload, grpc_status_code expected_status, const char* expected_detail) { test_tcp_server test_server; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_event ev; grpc_init(); diff --git a/test/core/end2end/connection_refused_test.cc b/test/core/end2end/connection_refused_test.cc index 1372c5a7463..2c4163ea028 100644 --- a/test/core/end2end/connection_refused_test.cc +++ b/test/core/end2end/connection_refused_test.cc @@ -131,7 +131,7 @@ static void run_test(bool wait_for_ready, bool use_service_config) { grpc_metadata_array_destroy(&trailing_metadata_recv); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (args != NULL) grpc_channel_args_destroy(args); } diff --git a/test/core/end2end/fixtures/h2_census.cc b/test/core/end2end/fixtures/h2_census.cc index a43d963c54e..885b2b22b9e 100644 --- a/test/core/end2end/fixtures/h2_census.cc +++ b/test/core/end2end/fixtures/h2_census.cc @@ -74,7 +74,7 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f, f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL); GPR_ASSERT(f->client); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); } } @@ -90,7 +90,7 @@ void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f, server_args = grpc_channel_args_copy_and_add(server_args, &arg, 1); f->server = grpc_server_create(server_args, NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(server_args); } grpc_server_register_completion_queue(f->server, f->cq, NULL); diff --git a/test/core/end2end/fixtures/h2_compress.cc b/test/core/end2end/fixtures/h2_compress.cc index 3f9a87d0fcd..6fea4d40e05 100644 --- a/test/core/end2end/fixtures/h2_compress.cc +++ b/test/core/end2end/fixtures/h2_compress.cc @@ -66,7 +66,7 @@ void chttp2_init_client_fullstack_compression(grpc_end2end_test_fixture* f, fullstack_compression_fixture_data* ffd = static_cast<fullstack_compression_fixture_data*>(f->fixture_data); if (ffd->client_args_compression != NULL) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(ffd->client_args_compression); } ffd->client_args_compression = grpc_channel_args_set_compression_algorithm( @@ -80,7 +80,7 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture* f, fullstack_compression_fixture_data* ffd = static_cast<fullstack_compression_fixture_data*>(f->fixture_data); if (ffd->server_args_compression != NULL) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(ffd->server_args_compression); } ffd->server_args_compression = grpc_channel_args_set_compression_algorithm( @@ -95,7 +95,7 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture* f, } void chttp2_tear_down_fullstack_compression(grpc_end2end_test_fixture* f) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; fullstack_compression_fixture_data* ffd = static_cast<fullstack_compression_fixture_data*>(f->fixture_data); grpc_channel_args_destroy(ffd->client_args_compression); diff --git a/test/core/end2end/fixtures/h2_fd.cc b/test/core/end2end/fixtures/h2_fd.cc index 99bced86514..62cc0f6f8f1 100644 --- a/test/core/end2end/fixtures/h2_fd.cc +++ b/test/core/end2end/fixtures/h2_fd.cc @@ -68,7 +68,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; sp_fixture_data* sfd = static_cast<sp_fixture_data*>(f->fixture_data); GPR_ASSERT(!f->client); @@ -79,7 +79,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; sp_fixture_data* sfd = static_cast<sp_fixture_data*>(f->fixture_data); GPR_ASSERT(!f->server); f->server = grpc_server_create(server_args, NULL); diff --git a/test/core/end2end/fixtures/h2_full+workarounds.cc b/test/core/end2end/fixtures/h2_full+workarounds.cc index e98df083f23..074ba289c94 100644 --- a/test/core/end2end/fixtures/h2_full+workarounds.cc +++ b/test/core/end2end/fixtures/h2_full+workarounds.cc @@ -71,7 +71,7 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f, void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { int i; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(f->fixture_data); grpc_arg args[GRPC_MAX_WORKAROUND_ID]; diff --git a/test/core/end2end/fixtures/h2_load_reporting.cc b/test/core/end2end/fixtures/h2_load_reporting.cc index 84eb9e45139..846319285ea 100644 --- a/test/core/end2end/fixtures/h2_load_reporting.cc +++ b/test/core/end2end/fixtures/h2_load_reporting.cc @@ -77,7 +77,7 @@ void chttp2_init_server_load_reporting(grpc_end2end_test_fixture* f, server_args = grpc_channel_args_copy_and_add(server_args, &arg, 1); f->server = grpc_server_create(server_args, NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(server_args); } grpc_server_register_completion_queue(f->server, f->cq, NULL); diff --git a/test/core/end2end/fixtures/h2_oauth2.cc b/test/core/end2end/fixtures/h2_oauth2.cc index 9ffc5b7b7e0..b648a1be4dc 100644 --- a/test/core/end2end/fixtures/h2_oauth2.cc +++ b/test/core/end2end/fixtures/h2_oauth2.cc @@ -143,7 +143,7 @@ void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture* f) { static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_credentials* ssl_creds = grpc_ssl_credentials_create(test_root_cert, NULL, NULL); grpc_call_credentials* oauth2_creds = grpc_md_only_test_credentials_create( diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.cc b/test/core/end2end/fixtures/h2_sockpair+trace.cc index 9e87a229625..c18f815f9fa 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.cc +++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc @@ -50,7 +50,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, NULL, @@ -87,7 +87,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; sp_client_setup cs; @@ -101,7 +101,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; GPR_ASSERT(!f->server); @@ -126,7 +126,7 @@ static grpc_end2end_test_config configs[] = { int main(int argc, char** argv) { size_t i; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* force tracing on, with a value to force many code paths in trace.c to be taken */ diff --git a/test/core/end2end/fixtures/h2_sockpair.cc b/test/core/end2end/fixtures/h2_sockpair.cc index fa69ad84cf3..6c34dbba6fb 100644 --- a/test/core/end2end/fixtures/h2_sockpair.cc +++ b/test/core/end2end/fixtures/h2_sockpair.cc @@ -44,7 +44,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, NULL, @@ -81,7 +81,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; sp_client_setup cs; @@ -95,7 +95,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; GPR_ASSERT(!f->server); diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.cc b/test/core/end2end/fixtures/h2_sockpair_1byte.cc index a12d60575bf..909a2db8aa0 100644 --- a/test/core/end2end/fixtures/h2_sockpair_1byte.cc +++ b/test/core/end2end/fixtures/h2_sockpair_1byte.cc @@ -44,7 +44,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, NULL, @@ -92,7 +92,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; sp_client_setup cs; @@ -106,7 +106,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; GPR_ASSERT(!f->server); diff --git a/test/core/end2end/fixtures/h2_ssl.cc b/test/core/end2end/fixtures/h2_ssl.cc index c137cec8b9a..ea8286c9e70 100644 --- a/test/core/end2end/fixtures/h2_ssl.cc +++ b/test/core/end2end/fixtures/h2_ssl.cc @@ -110,7 +110,7 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); } } diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.cc b/test/core/end2end/fixtures/h2_ssl_proxy.cc index 0c130d6ae1b..d50cd5c9e31 100644 --- a/test/core/end2end/fixtures/h2_ssl_proxy.cc +++ b/test/core/end2end/fixtures/h2_ssl_proxy.cc @@ -66,7 +66,7 @@ static grpc_channel* create_proxy_client(const char* target, grpc_secure_channel_create(ssl_creds, target, new_client_args, NULL); grpc_channel_credentials_release(ssl_creds); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); } return channel; @@ -147,7 +147,7 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); } } diff --git a/test/core/end2end/fixtures/http_proxy_fixture.cc b/test/core/end2end/fixtures/http_proxy_fixture.cc index 73a3e2c444e..698282d9906 100644 --- a/test/core/end2end/fixtures/http_proxy_fixture.cc +++ b/test/core/end2end/fixtures/http_proxy_fixture.cc @@ -391,7 +391,8 @@ static void on_read_request_done(void* arg, grpc_error* error) { GPR_ASSERT(resolved_addresses->naddrs >= 1); // Connect to requested address. // The connection callback inherits our reference to conn. - const grpc_millis deadline = ExecCtx::Get()->Now() + 10 * GPR_MS_PER_SEC; + const grpc_millis deadline = + grpc_core::ExecCtx::Get()->Now() + 10 * GPR_MS_PER_SEC; grpc_tcp_client_connect(&conn->on_server_connect_done, &conn->server_endpoint, conn->pollset_set, NULL, &resolved_addresses->addrs[0], deadline); @@ -444,7 +445,7 @@ static void on_accept(void* arg, grpc_endpoint* endpoint, static void thread_main(void* arg) { grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)arg; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; do { gpr_ref(&proxy->users); grpc_pollset_worker* worker = NULL; @@ -452,15 +453,15 @@ static void thread_main(void* arg) { GRPC_LOG_IF_ERROR( "grpc_pollset_work", grpc_pollset_work(proxy->pollset, &worker, - ExecCtx::Get()->Now() + GPR_MS_PER_SEC)); + grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC)); gpr_mu_unlock(proxy->mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } while (!gpr_unref(&proxy->users)); } grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( grpc_channel_args* args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)gpr_malloc(sizeof(*proxy)); memset(proxy, 0, sizeof(*proxy)); @@ -505,7 +506,7 @@ static void destroy_pollset(void* arg, grpc_error* error) { void grpc_end2end_http_proxy_destroy(grpc_end2end_http_proxy* proxy) { gpr_unref(&proxy->users); // Signal proxy thread to shutdown. - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_thd_join(proxy->thd); grpc_tcp_server_shutdown_listeners(proxy->server); grpc_tcp_server_unref(proxy->server); diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc index 1d22ba3a42f..3fb6d0fdb6f 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.cc +++ b/test/core/end2end/fuzzers/api_fuzzer.cc @@ -411,7 +411,7 @@ void my_resolve_address(const char* addr, const char* default_port, r->addrs = addresses; r->lb_addrs = NULL; grpc_timer_init( - &r->timer, GPR_MS_PER_SEC + ExecCtx::Get()->Now(), + &r->timer, GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now(), GRPC_CLOSURE_CREATE(finish_resolve, r, grpc_schedule_on_exec_ctx)); } @@ -428,7 +428,7 @@ grpc_ares_request* my_dns_lookup_ares(const char* dns_server, const char* addr, r->addrs = NULL; r->lb_addrs = lb_addrs; grpc_timer_init( - &r->timer, GPR_MS_PER_SEC + ExecCtx::Get()->Now(), + &r->timer, GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now(), GRPC_CLOSURE_CREATE(finish_resolve, r, grpc_schedule_on_exec_ctx)); return NULL; } @@ -488,7 +488,7 @@ static void sched_connect(grpc_closure* closure, grpc_endpoint** ep, fc->ep = ep; fc->deadline = deadline; grpc_timer_init( - &fc->timer, GPR_MS_PER_SEC + ExecCtx::Get()->Now(), + &fc->timer, GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now(), GRPC_CLOSURE_CREATE(do_connect, fc, grpc_schedule_on_exec_ctx)); } @@ -743,7 +743,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_init(); grpc_timer_manager_set_threading(false); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_executor_set_threading(false); } grpc_resolve_address = my_resolve_address; @@ -837,7 +837,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { g_channel = grpc_insecure_channel_create(target_uri, args, NULL); GPR_ASSERT(g_channel != NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); } gpr_free(target_uri); @@ -864,7 +864,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { g_server = grpc_server_create(args, NULL); GPR_ASSERT(g_server != NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); } grpc_server_register_completion_queue(g_server, cq, NULL); @@ -1192,7 +1192,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { g_channel = grpc_secure_channel_create(creds, target_uri, args, NULL); GPR_ASSERT(g_channel != NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); } gpr_free(target_uri); diff --git a/test/core/end2end/fuzzers/client_fuzzer.cc b/test/core/end2end/fuzzers/client_fuzzer.cc index 95ed2fcdac9..318e8129d07 100644 --- a/test/core/end2end/fuzzers/client_fuzzer.cc +++ b/test/core/end2end/fuzzers/client_fuzzer.cc @@ -43,7 +43,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_executor_set_threading(false); grpc_resource_quota* resource_quota = @@ -111,7 +111,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_event ev; while (1) { - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); switch (ev.type) { case GRPC_QUEUE_TIMEOUT: diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc index 21778c0a679..dca3ff498ed 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.cc +++ b/test/core/end2end/fuzzers/server_fuzzer.cc @@ -41,7 +41,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_executor_set_threading(false); grpc_resource_quota* resource_quota = @@ -78,7 +78,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_event ev; while (1) { - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL); switch (ev.type) { case GRPC_QUEUE_TIMEOUT: diff --git a/test/core/end2end/h2_ssl_cert_test.cc b/test/core/end2end/h2_ssl_cert_test.cc index e0da548a75d..97c06927112 100644 --- a/test/core/end2end/h2_ssl_cert_test.cc +++ b/test/core/end2end/h2_ssl_cert_test.cc @@ -181,7 +181,7 @@ typedef enum { NONE, SELF_SIGNED, SIGNED, BAD_CERT_PAIR } certtype; grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); \ chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); \ { \ - ExecCtx _local_exec_ctx; \ + grpc_core::ExecCtx _local_exec_ctx; \ grpc_channel_args_destroy(new_client_args); \ } \ } diff --git a/test/core/end2end/tests/cancel_after_accept.cc b/test/core/end2end/tests/cancel_after_accept.cc index ffafb1f1e9b..45ea2b9906d 100644 --- a/test/core/end2end/tests/cancel_after_accept.cc +++ b/test/core/end2end/tests/cancel_after_accept.cc @@ -245,7 +245,7 @@ static void test_cancel_after_accept(grpc_end2end_test_config config, grpc_call_unref(s); if (args != NULL) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); } diff --git a/test/core/end2end/tests/cancel_after_round_trip.cc b/test/core/end2end/tests/cancel_after_round_trip.cc index 7e20487f8b9..231aa7abbcc 100644 --- a/test/core/end2end/tests/cancel_after_round_trip.cc +++ b/test/core/end2end/tests/cancel_after_round_trip.cc @@ -277,7 +277,7 @@ static void test_cancel_after_round_trip(grpc_end2end_test_config config, grpc_call_unref(s); if (args != NULL) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(args); } diff --git a/test/core/end2end/tests/compressed_payload.cc b/test/core/end2end/tests/compressed_payload.cc index f04addbe9e7..aa3523a9878 100644 --- a/test/core/end2end/tests/compressed_payload.cc +++ b/test/core/end2end/tests/compressed_payload.cc @@ -129,7 +129,7 @@ static void request_for_disabled_algorithm( server_args = grpc_channel_args_set_compression_algorithm(NULL, GRPC_COMPRESS_NONE); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; server_args = grpc_channel_args_compression_algorithm_set_state( &server_args, algorithm_to_disable, false); } @@ -256,7 +256,7 @@ static void request_for_disabled_algorithm( grpc_byte_buffer_destroy(request_payload_recv); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } @@ -534,7 +534,7 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/load_reporting_hook.cc b/test/core/end2end/tests/load_reporting_hook.cc index 6ce22d77c61..34c046d364b 100644 --- a/test/core/end2end/tests/load_reporting_hook.cc +++ b/test/core/end2end/tests/load_reporting_hook.cc @@ -300,7 +300,7 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) { &trailing_lr_metadata); end_test(&f); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(lr_server_args); } config.tear_down_data(&f); diff --git a/test/core/end2end/tests/max_message_length.cc b/test/core/end2end/tests/max_message_length.cc index f884d8b11f9..808cf470e1f 100644 --- a/test/core/end2end/tests/max_message_length.cc +++ b/test/core/end2end/tests/max_message_length.cc @@ -173,7 +173,7 @@ static void test_max_message_length_on_request(grpc_end2end_test_config config, f = begin_test(config, "test_max_request_message_length", client_args, server_args); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (client_args != NULL) grpc_channel_args_destroy(client_args); if (server_args != NULL) grpc_channel_args_destroy(server_args); } @@ -363,7 +363,7 @@ static void test_max_message_length_on_response(grpc_end2end_test_config config, f = begin_test(config, "test_max_response_message_length", client_args, server_args); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; if (client_args != NULL) grpc_channel_args_destroy(client_args); if (server_args != NULL) grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/stream_compression_compressed_payload.cc b/test/core/end2end/tests/stream_compression_compressed_payload.cc index cec46305bd3..d118aceeb1d 100644 --- a/test/core/end2end/tests/stream_compression_compressed_payload.cc +++ b/test/core/end2end/tests/stream_compression_compressed_payload.cc @@ -129,7 +129,7 @@ static void request_for_disabled_algorithm( server_args = grpc_channel_args_set_stream_compression_algorithm( NULL, GRPC_STREAM_COMPRESS_NONE); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; server_args = grpc_channel_args_stream_compression_algorithm_set_state( &server_args, algorithm_to_disable, false); } @@ -257,7 +257,7 @@ static void request_for_disabled_algorithm( grpc_byte_buffer_destroy(request_payload_recv); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } @@ -542,7 +542,7 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/stream_compression_payload.cc b/test/core/end2end/tests/stream_compression_payload.cc index c304c990d79..6bd1e99ca1a 100644 --- a/test/core/end2end/tests/stream_compression_payload.cc +++ b/test/core/end2end/tests/stream_compression_payload.cc @@ -277,7 +277,7 @@ static void test_invoke_request_response_with_payload( end_test(&f); config.tear_down_data(&f); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc index f4b737d7a32..2504c791e68 100644 --- a/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc +++ b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc @@ -273,7 +273,7 @@ static void test_pingpong_streaming(grpc_end2end_test_config config, end_test(&f); config.tear_down_data(&f); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/workaround_cronet_compression.cc b/test/core/end2end/tests/workaround_cronet_compression.cc index 100f393b8ed..723d3274e24 100644 --- a/test/core/end2end/tests/workaround_cronet_compression.cc +++ b/test/core/end2end/tests/workaround_cronet_compression.cc @@ -142,7 +142,7 @@ static void request_with_payload_template( NULL, default_server_channel_compression_algorithm); if (user_agent_override) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args* client_args_old = client_args; grpc_arg arg; arg.key = const_cast<char*>(GRPC_ARG_PRIMARY_USER_AGENT_STRING); @@ -348,7 +348,7 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc index dfa328360d7..4f9421e6d43 100644 --- a/test/core/http/httpcli_test.cc +++ b/test/core/http/httpcli_test.cc @@ -60,7 +60,7 @@ static void on_finish(void* arg, grpc_error* error) { static void test_get(int port) { grpc_httpcli_request req; char* host; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_get"); @@ -99,7 +99,7 @@ static void test_get(int port) { static void test_post(int port) { grpc_httpcli_request req; char* host; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_post"); @@ -142,7 +142,7 @@ static void destroy_pops(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_subprocess* server; char* me = argv[0]; char* lslash = strrchr(me, '/'); diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc index ff082e8367b..fb69fc97d1f 100644 --- a/test/core/http/httpscli_test.cc +++ b/test/core/http/httpscli_test.cc @@ -60,7 +60,7 @@ static void on_finish(void* arg, grpc_error* error) { static void test_get(int port) { grpc_httpcli_request req; char* host; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_get"); @@ -100,7 +100,7 @@ static void test_get(int port) { static void test_post(int port) { grpc_httpcli_request req; char* host; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_post"); @@ -144,7 +144,7 @@ static void destroy_pops(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_subprocess* server; char* me = argv[0]; char* lslash = strrchr(me, '/'); diff --git a/test/core/iomgr/combiner_test.cc b/test/core/iomgr/combiner_test.cc index df8d55f1f69..cf2bc0ce066 100644 --- a/test/core/iomgr/combiner_test.cc +++ b/test/core/iomgr/combiner_test.cc @@ -28,7 +28,7 @@ static void test_no_op(void) { gpr_log(GPR_DEBUG, "test_no_op"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(grpc_combiner_create(), "test_no_op"); } @@ -42,11 +42,11 @@ static void test_execute_one(void) { grpc_combiner* lock = grpc_combiner_create(); gpr_event done; gpr_event_init(&done); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(set_event_to_true, &done, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&done, grpc_timeout_seconds_to_deadline(5)) != NULL); GRPC_COMBINER_UNREF(lock, "test_execute_one"); @@ -72,7 +72,7 @@ static void check_one(void* a, grpc_error* error) { static void execute_many_loop(void* a) { thd_args* args = static_cast<thd_args*>(a); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; size_t n = 1; for (size_t i = 0; i < 10; i++) { for (size_t j = 0; j < 10000; j++) { @@ -82,7 +82,7 @@ static void execute_many_loop(void* a) { GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE( check_one, c, grpc_combiner_scheduler(args->lock)), GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } // sleep for a little bit, to test a combiner draining and another thread // picking it up @@ -112,7 +112,7 @@ static void test_execute_many(void) { gpr_inf_future(GPR_CLOCK_REALTIME)) != NULL); gpr_thd_join(thds[i]); } - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_COMBINER_UNREF(lock, "test_execute_many"); } @@ -133,12 +133,12 @@ static void test_execute_finally(void) { gpr_log(GPR_DEBUG, "test_execute_finally"); grpc_combiner* lock = grpc_combiner_create(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_event_init(&got_in_finally); GRPC_CLOSURE_SCHED( GRPC_CLOSURE_CREATE(add_finally, lock, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&got_in_finally, grpc_timeout_seconds_to_deadline(5)) != NULL); GRPC_COMBINER_UNREF(lock, "test_execute_finally"); diff --git a/test/core/iomgr/endpoint_pair_test.cc b/test/core/iomgr/endpoint_pair_test.cc index 72833a8dbe8..658971b9fb0 100644 --- a/test/core/iomgr/endpoint_pair_test.cc +++ b/test/core/iomgr/endpoint_pair_test.cc @@ -32,7 +32,7 @@ static void clean_up(void) {} static grpc_endpoint_test_fixture create_fixture_endpoint_pair( size_t slice_size) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_test_fixture f; grpc_arg a[1]; a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE); @@ -59,7 +59,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); diff --git a/test/core/iomgr/endpoint_tests.cc b/test/core/iomgr/endpoint_tests.cc index 5c156ef5248..e000eb289b8 100644 --- a/test/core/iomgr/endpoint_tests.cc +++ b/test/core/iomgr/endpoint_tests.cc @@ -173,7 +173,7 @@ static void read_and_write_test(grpc_endpoint_test_config config, struct read_and_write_test_state state; grpc_endpoint_test_fixture f = begin_test(config, "read_and_write_test", slice_size); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); gpr_log(GPR_DEBUG, @@ -213,7 +213,7 @@ static void read_and_write_test(grpc_endpoint_test_config config, even when bytes_written is unsigned. */ state.bytes_written -= state.current_write_size; read_and_write_test_write_handler(&state, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_endpoint_read(state.read_ep, &state.incoming, &state.done_read); @@ -225,17 +225,17 @@ static void read_and_write_test(grpc_endpoint_test_config config, grpc_endpoint_shutdown( state.write_ep, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); } - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); while (!state.read_done || !state.write_done) { grpc_pollset_worker* worker = NULL; - GPR_ASSERT(ExecCtx::Get()->Now() < deadline); + GPR_ASSERT(grpc_core::ExecCtx::Get()->Now() < deadline); GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); } gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); end_test(config); grpc_slice_buffer_destroy_internal(&state.outgoing); @@ -252,16 +252,17 @@ static void inc_on_failure(void* arg, grpc_error* error) { } static void wait_for_fail_count(int* fail_count, int want_fail_count) { - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(10)); - while (ExecCtx::Get()->Now() < deadline && *fail_count < want_fail_count) { + while (grpc_core::ExecCtx::Get()->Now() < deadline && + *fail_count < want_fail_count) { grpc_pollset_worker* worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(*fail_count == want_fail_count); @@ -276,7 +277,7 @@ static void multiple_shutdown_test(grpc_endpoint_test_config config) { grpc_slice_buffer slice_buffer; grpc_slice_buffer_init(&slice_buffer); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); grpc_endpoint_read(f.client_ep, &slice_buffer, GRPC_CLOSURE_CREATE(inc_on_failure, &fail_count, diff --git a/test/core/iomgr/ev_epollsig_linux_test.cc b/test/core/iomgr/ev_epollsig_linux_test.cc index 5c71bc6152f..8aa68c6f6fd 100644 --- a/test/core/iomgr/ev_epollsig_linux_test.cc +++ b/test/core/iomgr/ev_epollsig_linux_test.cc @@ -77,11 +77,11 @@ static void test_fd_cleanup(test_fd* tfds, int num_fds) { for (i = 0; i < num_fds; i++) { grpc_fd_shutdown(tfds[i].fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_fd_cleanup")); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_fd_orphan(tfds[i].fd, NULL, &release_fd, false /* already_closed */, "test_fd_cleanup"); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(release_fd == tfds[i].inner_fd); close(tfds[i].inner_fd); @@ -110,7 +110,7 @@ static void test_pollset_cleanup(test_pollset* pollsets, int num_pollsets) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(pollsets[i].pollset, &destroyed); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_free(pollsets[i].pollset); } } @@ -130,7 +130,7 @@ static void test_pollset_cleanup(test_pollset* pollsets, int num_pollsets) { #define NUM_POLLSETS 4 static void test_add_fd_to_pollset() { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; test_fd tfds[NUM_FDS]; int fds[NUM_FDS]; test_pollset pollsets[NUM_POLLSETS]; @@ -168,32 +168,32 @@ static void test_add_fd_to_pollset() { /* == Step 1 == */ for (i = 0; i <= 2; i++) { grpc_pollset_add_fd(pollsets[0].pollset, tfds[i].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } for (i = 3; i <= 4; i++) { grpc_pollset_add_fd(pollsets[1].pollset, tfds[i].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } for (i = 5; i <= 7; i++) { grpc_pollset_add_fd(pollsets[2].pollset, tfds[i].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } /* == Step 2 == */ for (i = 0; i <= 1; i++) { grpc_pollset_add_fd(pollsets[3].pollset, tfds[i].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } /* == Step 3 == */ grpc_pollset_add_fd(pollsets[1].pollset, tfds[0].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* == Step 4 == */ grpc_pollset_add_fd(pollsets[2].pollset, tfds[3].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* All polling islands are merged at this point */ @@ -231,7 +231,7 @@ static __thread int thread_wakeups = 0; static void test_threading_loop(void* arg) { threading_shared* shared = static_cast<threading_shared*>(arg); while (thread_wakeups < 1000000) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_worker* worker; gpr_mu_lock(shared->mu); GPR_ASSERT(GRPC_LOG_IF_ERROR( @@ -271,7 +271,7 @@ static void test_threading(void) { shared.wakeup_desc = grpc_fd_create(fd.read_fd, "wakeup"); shared.wakeups = 0; { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_add_fd(shared.pollset, shared.wakeup_desc); grpc_fd_notify_on_read( shared.wakeup_desc, @@ -286,7 +286,7 @@ static void test_threading(void) { fd.read_fd = 0; grpc_wakeup_fd_destroy(&fd); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_fd_shutdown(shared.wakeup_desc, GRPC_ERROR_CANCELLED); grpc_fd_orphan(shared.wakeup_desc, NULL, NULL, false /* already_closed */, "done"); @@ -301,7 +301,7 @@ int main(int argc, char** argv) { const char* poll_strategy = NULL; grpc_test_init(argc, argv); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; poll_strategy = grpc_get_poll_strategy_name(); if (poll_strategy != NULL && strcmp(poll_strategy, "epollsig") == 0) { diff --git a/test/core/iomgr/fd_conservation_posix_test.cc b/test/core/iomgr/fd_conservation_posix_test.cc index 7f3420269ed..11e664d8ff8 100644 --- a/test/core/iomgr/fd_conservation_posix_test.cc +++ b/test/core/iomgr/fd_conservation_posix_test.cc @@ -31,7 +31,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* set max # of file descriptors to a low value, and verify we can create and destroy many more than this number @@ -45,7 +45,7 @@ int main(int argc, char** argv) { p = grpc_iomgr_create_endpoint_pair("test", NULL); grpc_endpoint_destroy(p.client); grpc_endpoint_destroy(p.server); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } grpc_resource_quota_unref(resource_quota); diff --git a/test/core/iomgr/fd_posix_test.cc b/test/core/iomgr/fd_posix_test.cc index d22cb5f4f62..160cfd4e991 100644 --- a/test/core/iomgr/fd_posix_test.cc +++ b/test/core/iomgr/fd_posix_test.cc @@ -246,7 +246,7 @@ static int server_start(server* sv) { static void server_wait_and_shutdown(server* sv) { gpr_mu_lock(g_mu); while (!sv->done) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_worker* worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", @@ -362,7 +362,7 @@ static void client_wait_and_shutdown(client* cl) { gpr_mu_lock(g_mu); while (!cl->done) { grpc_pollset_worker* worker = NULL; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); @@ -380,7 +380,7 @@ static void test_grpc_fd(void) { server sv; client cl; int port; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; server_init(&sv); port = server_start(&sv); @@ -436,7 +436,7 @@ static void test_grpc_fd_change(void) { ssize_t result; grpc_closure first_closure; grpc_closure second_closure; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CLOSURE_INIT(&first_closure, first_read_callback, &a, grpc_schedule_on_exec_ctx); @@ -513,7 +513,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); @@ -523,7 +523,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_free(g_pollset); grpc_shutdown(); diff --git a/test/core/iomgr/pollset_set_test.cc b/test/core/iomgr/pollset_set_test.cc index e9b46f59e32..bc9aafd5bdd 100644 --- a/test/core/iomgr/pollset_set_test.cc +++ b/test/core/iomgr/pollset_set_test.cc @@ -84,7 +84,7 @@ static void cleanup_test_pollsets(test_pollset* pollsets, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(pollsets[i].ps, &destroyed); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_free(pollsets[i].ps); pollsets[i].ps = NULL; } @@ -129,7 +129,7 @@ static void cleanup_test_fds(test_fd* tfds, const int num_fds) { for (int i = 0; i < num_fds; i++) { grpc_fd_shutdown(tfds[i].fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("fd cleanup")); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* grpc_fd_orphan frees the memory allocated for grpc_fd. Normally it also * calls close() on the underlying fd. In our case, we are using @@ -138,7 +138,7 @@ static void cleanup_test_fds(test_fd* tfds, const int num_fds) { * underlying fd, call it with a non-NULL 'release_fd' parameter */ grpc_fd_orphan(tfds[i].fd, NULL, &release_fd, false /* already_closed */, "test_fd_cleanup"); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_wakeup_fd_destroy(&tfds[i].wakeup_fd); } @@ -199,7 +199,7 @@ static void pollset_set_test_basic() { * | * +---> FD9 (Added after PS2 is added to PSS0) */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_worker* worker; grpc_millis deadline; @@ -236,7 +236,7 @@ static void pollset_set_test_basic() { grpc_pollset_add_fd(pollsets[1].ps, tfds[8].fd); grpc_pollset_add_fd(pollsets[2].ps, tfds[9].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Test that if any FD in the above structure is readable, it is observable by * doing grpc_pollset_work on any pollset @@ -259,10 +259,10 @@ static void pollset_set_test_basic() { grpc_pollset_work(pollsets[i].ps, &worker, deadline)); gpr_mu_unlock(pollsets[i].mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); verify_readable_and_reset(tfds, num_fds); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } /* Test tear down */ @@ -270,14 +270,14 @@ static void pollset_set_test_basic() { grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[5].fd); grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[1].fd); grpc_pollset_set_del_fd(pollset_sets[1].pss, tfds[6].fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_pollset_set_del_pollset(pollset_sets[1].pss, pollsets[0].ps); grpc_pollset_set_del_pollset(pollset_sets[0].pss, pollsets[1].ps); grpc_pollset_set_del_pollset(pollset_sets[0].pss, pollsets[2].ps); grpc_pollset_set_del_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); cleanup_test_fds(tfds, num_fds); cleanup_test_pollsets(pollsets, num_ps); @@ -301,7 +301,7 @@ void pollset_set_test_dup_fds() { * | +--> FD2 * +---> FD1 */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_worker* worker; grpc_millis deadline; @@ -337,10 +337,10 @@ void pollset_set_test_dup_fds() { GPR_ASSERT(GRPC_ERROR_NONE == grpc_pollset_work(pollset.ps, &worker, deadline)); gpr_mu_unlock(pollset.mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); verify_readable_and_reset(tfds, num_fds); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Tear down */ grpc_pollset_set_del_fd(pollset_sets[0].pss, tfds[0].fd); @@ -349,7 +349,7 @@ void pollset_set_test_dup_fds() { grpc_pollset_set_del_pollset(pollset_sets[1].pss, pollset.ps); grpc_pollset_set_del_pollset_set(pollset_sets[0].pss, pollset_sets[1].pss); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); cleanup_test_fds(tfds, num_fds); cleanup_test_pollsets(&pollset, num_ps); @@ -371,7 +371,7 @@ void pollset_set_test_empty_pollset() { * | * +---> FD2 */ - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_worker* worker; grpc_millis deadline; @@ -404,16 +404,16 @@ void pollset_set_test_empty_pollset() { GPR_ASSERT(GRPC_ERROR_NONE == grpc_pollset_work(pollsets[0].ps, &worker, deadline)); gpr_mu_unlock(pollsets[0].mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); verify_readable_and_reset(tfds, num_fds); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Tear down */ grpc_pollset_set_del_fd(pollset_set.pss, tfds[0].fd); grpc_pollset_set_del_pollset(pollset_set.pss, pollsets[0].ps); grpc_pollset_set_del_pollset(pollset_set.pss, pollsets[1].ps); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); cleanup_test_fds(tfds, num_fds); cleanup_test_pollsets(pollsets, num_ps); @@ -421,7 +421,7 @@ void pollset_set_test_empty_pollset() { } int main(int argc, char** argv) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); const char* poll_strategy = grpc_get_poll_strategy_name(); diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index 9870d7aa73b..4da5cd7a1f0 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -67,7 +67,7 @@ void args_finish(args_struct* args) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(args->pollset, &do_nothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); } @@ -79,14 +79,14 @@ static grpc_millis n_sec_deadline(int seconds) { static void actually_poll(void* argsp) { args_struct* args = static_cast<args_struct*>(argsp); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_millis deadline = n_sec_deadline(10); while (true) { bool done = gpr_atm_acq_load(&args->done_atm) != 0; if (done) { break; } - grpc_millis time_left = deadline - ExecCtx::Get()->Now(); + grpc_millis time_left = deadline - grpc_core::ExecCtx::Get()->Now(); gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRIdPTR, done, time_left); GPR_ASSERT(time_left >= 0); grpc_pollset_worker* worker = NULL; @@ -94,7 +94,7 @@ static void actually_poll(void* argsp) { GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, n_sec_deadline(1))); gpr_mu_unlock(args->mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } gpr_event_set(&args->ev, (void*)1); } @@ -120,7 +120,7 @@ static void must_fail(void* argsp, grpc_error* err) { } static void test_unix_socket(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); poll_pollset_until_request_done(&args); @@ -132,7 +132,7 @@ static void test_unix_socket(void) { } static void test_unix_socket_path_name_too_long(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); const char prefix[] = "unix:/path/name"; @@ -156,7 +156,7 @@ static void test_unix_socket_path_name_too_long(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; test_unix_socket(); test_unix_socket_path_name_too_long(); grpc_executor_shutdown(); diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc index dbc825884d6..035d99cf5e3 100644 --- a/test/core/iomgr/resolve_address_test.cc +++ b/test/core/iomgr/resolve_address_test.cc @@ -63,7 +63,7 @@ void args_finish(args_struct* args) { grpc_pollset_shutdown(args->pollset, &do_nothing_cb); gpr_mu_unlock(args->mu); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); } @@ -74,14 +74,14 @@ static grpc_millis n_sec_deadline(int seconds) { } static void poll_pollset_until_request_done(args_struct* args) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_millis deadline = n_sec_deadline(10); while (true) { bool done = gpr_atm_acq_load(&args->done_atm) != 0; if (done) { break; } - grpc_millis time_left = deadline - ExecCtx::Get()->Now(); + grpc_millis time_left = deadline - grpc_core::ExecCtx::Get()->Now(); gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRIdPTR, done, time_left); GPR_ASSERT(time_left >= 0); grpc_pollset_worker* worker = NULL; @@ -89,7 +89,7 @@ static void poll_pollset_until_request_done(args_struct* args) { GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, n_sec_deadline(1))); gpr_mu_unlock(args->mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } gpr_event_set(&args->ev, (void*)1); } @@ -115,66 +115,66 @@ static void must_fail(void* argsp, grpc_error* err) { } static void test_localhost(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( "localhost:1", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } static void test_default_port(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( "localhost", "1", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } static void test_non_numeric_default_port(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( "localhost", "https", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } static void test_missing_default_port(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( "localhost", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } static void test_ipv6_with_port(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( "[2001:db8::1]:1", NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } @@ -187,14 +187,14 @@ static void test_ipv6_without_port(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( kCases[i], "80", args.pollset_set, GRPC_CLOSURE_CREATE(must_succeed, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } @@ -207,14 +207,14 @@ static void test_invalid_ip_addresses(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( kCases[i], NULL, args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } @@ -226,14 +226,14 @@ static void test_unparseable_hostports(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( kCases[i], "1", args.pollset_set, GRPC_CLOSURE_CREATE(must_fail, &args, grpc_schedule_on_exec_ctx), &args.addrs); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); poll_pollset_until_request_done(&args); args_finish(&args); } @@ -242,7 +242,7 @@ static void test_unparseable_hostports(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; test_localhost(); test_default_port(); test_non_numeric_default_port(); diff --git a/test/core/iomgr/resource_quota_test.cc b/test/core/iomgr/resource_quota_test.cc index 40beadc5d6c..c4f68868367 100644 --- a/test/core/iomgr/resource_quota_test.cc +++ b/test/core/iomgr/resource_quota_test.cc @@ -84,7 +84,7 @@ grpc_closure* make_unused_reclaimer(grpc_closure* then) { } static void destroy_user(grpc_resource_user* usr) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); } @@ -117,11 +117,11 @@ static void test_instant_alloc_then_free(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user* usr = grpc_resource_user_create(q, "usr"); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -135,7 +135,7 @@ static void test_instant_alloc_free_pair(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user* usr = grpc_resource_user_create(q, "usr"); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); grpc_resource_user_free(usr, 1024); } @@ -152,14 +152,14 @@ static void test_simple_async_alloc(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -175,7 +175,7 @@ static void test_async_alloc_blocked_by_size(void) { gpr_event ev; gpr_event_init(&ev); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait( @@ -185,7 +185,7 @@ static void test_async_alloc_blocked_by_size(void) { GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != NULL); ; { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -201,7 +201,7 @@ static void test_scavenge(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -209,13 +209,13 @@ static void test_scavenge(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr1, 1024); } { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -223,7 +223,7 @@ static void test_scavenge(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr2, 1024); } grpc_resource_quota_unref(q); @@ -240,7 +240,7 @@ static void test_scavenge_blocked(void) { gpr_event ev; { gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -249,14 +249,14 @@ static void test_scavenge_blocked(void) { } { gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr1, 1024); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -264,7 +264,7 @@ static void test_scavenge_blocked(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr2, 1024); } grpc_resource_quota_unref(q); @@ -281,7 +281,7 @@ static void test_blocked_until_scheduled_reclaim(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -291,14 +291,14 @@ static void test_blocked_until_scheduled_reclaim(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaim_done))); } { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&reclaim_done, @@ -308,7 +308,7 @@ static void test_blocked_until_scheduled_reclaim(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -325,7 +325,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -335,14 +335,14 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr1, false, make_reclaimer(usr1, 1024, set_event(&reclaim_done))); } { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&reclaim_done, @@ -352,7 +352,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr2, 1024); } grpc_resource_quota_unref(q); @@ -369,7 +369,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -379,14 +379,14 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, true, make_reclaimer(usr, 1024, set_event(&reclaim_done))); } { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&reclaim_done, @@ -396,7 +396,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -414,7 +414,7 @@ static void test_unused_reclaim_is_cancelled(void) { gpr_event destructive_done; gpr_event_init(&destructive_done); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_unused_reclaimer(set_event(&benign_done))); grpc_resource_user_post_reclaimer( @@ -448,7 +448,7 @@ static void test_benign_reclaim_is_preferred(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -456,7 +456,7 @@ static void test_benign_reclaim_is_preferred(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&benign_done))); grpc_resource_user_post_reclaimer( @@ -472,7 +472,7 @@ static void test_benign_reclaim_is_preferred(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&benign_done, @@ -484,7 +484,7 @@ static void test_benign_reclaim_is_preferred(void) { NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -508,7 +508,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -516,7 +516,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 512, set_event(&benign_done))); grpc_resource_user_post_reclaimer( @@ -532,7 +532,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { { gpr_event ev; gpr_event_init(&ev); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); GPR_ASSERT(gpr_event_wait(&benign_done, @@ -544,7 +544,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { ; } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -563,16 +563,16 @@ static void test_resource_user_stays_allocated_until_memory_released(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user* usr = grpc_resource_user_create(q, "usr"); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_quota_unref(q); grpc_resource_user_unref(usr); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } } @@ -593,7 +593,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( gpr_event reclaimer_cancelled; gpr_event_init(&reclaimer_cancelled); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_unused_reclaimer(set_event(&reclaimer_cancelled))); @@ -604,7 +604,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { gpr_event allocated; gpr_event_init(&allocated); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); GPR_ASSERT(gpr_event_wait(&allocated, @@ -614,7 +614,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -622,7 +622,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( NULL); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -641,7 +641,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { gpr_event allocated; gpr_event_init(&allocated); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); GPR_ASSERT(gpr_event_wait(&allocated, @@ -651,7 +651,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event reclaimer_done; gpr_event_init(&reclaimer_done); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaimer_done))); @@ -662,7 +662,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { gpr_event allocated; gpr_event_init(&allocated); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); GPR_ASSERT(gpr_event_wait(&allocated, @@ -672,7 +672,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { } } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); } destroy_user(usr); @@ -696,14 +696,14 @@ static void test_one_slice(void) { { const int start_allocs = num_allocs; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); assert_counter_becomes(&num_allocs, start_allocs + 1); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); } destroy_user(usr); @@ -728,20 +728,20 @@ static void test_one_slice_deleted_late(void) { { const int start_allocs = num_allocs; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); assert_counter_becomes(&num_allocs, start_allocs + 1); } { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); } grpc_resource_quota_unref(q); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); } } @@ -770,7 +770,7 @@ static void test_negative_rq_free_pool(void) { { const int start_allocs = num_allocs; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); assert_counter_becomes(&num_allocs, start_allocs + 1); @@ -783,13 +783,13 @@ static void test_negative_rq_free_pool(void) { GPR_ASSERT(grpc_resource_quota_get_memory_pressure(q) > 1 - eps); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); } grpc_resource_quota_unref(q); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); } } diff --git a/test/core/iomgr/tcp_client_posix_test.cc b/test/core/iomgr/tcp_client_posix_test.cc index abefecba335..d736d08a45c 100644 --- a/test/core/iomgr/tcp_client_posix_test.cc +++ b/test/core/iomgr/tcp_client_posix_test.cc @@ -53,7 +53,7 @@ static grpc_millis test_deadline(void) { static void finish_connection() { gpr_mu_lock(g_mu); g_connections_complete++; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT( GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, NULL))); @@ -83,7 +83,7 @@ void test_succeeds(void) { int r; int connections_complete_before; grpc_closure done; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_succeeds"); @@ -127,7 +127,7 @@ void test_succeeds(void) { grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(5))))); gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } @@ -139,7 +139,7 @@ void test_fails(void) { struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; int connections_complete_before; grpc_closure done; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_fails"); @@ -175,7 +175,7 @@ void test_fails(void) { break; } gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } @@ -188,7 +188,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset_set = grpc_pollset_set_create(); diff --git a/test/core/iomgr/tcp_client_uv_test.cc b/test/core/iomgr/tcp_client_uv_test.cc index 0355896b858..344478ea975 100644 --- a/test/core/iomgr/tcp_client_uv_test.cc +++ b/test/core/iomgr/tcp_client_uv_test.cc @@ -87,7 +87,7 @@ void test_succeeds(void) { uv_tcp_t* svr_handle = static_cast<uv_tcp_t*>(gpr_malloc(sizeof(uv_tcp_t))); int connections_complete_before; grpc_closure done; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_succeeds"); @@ -121,7 +121,7 @@ void test_succeeds(void) { grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(5))))); gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } @@ -136,7 +136,7 @@ void test_fails(void) { struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; int connections_complete_before; grpc_closure done; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_fails"); @@ -173,7 +173,7 @@ void test_fails(void) { break; } gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } @@ -186,7 +186,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size())); diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc index 678e1c3638d..c12e695fb6e 100644 --- a/test/core/iomgr/tcp_posix_test.cc +++ b/test/core/iomgr/tcp_posix_test.cc @@ -162,7 +162,7 @@ static void read_test(size_t num_bytes, size_t slice_size) { size_t written_bytes; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "Read test of size %" PRIuPTR ", slice size %" PRIuPTR, num_bytes, slice_size); @@ -212,7 +212,7 @@ static void large_read_test(size_t slice_size) { ssize_t written_bytes; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "Start large read test, slice size %" PRIuPTR, slice_size); @@ -300,7 +300,7 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { int flags; int current = 0; int i; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; flags = fcntl(fd, F_GETFL, 0); GPR_ASSERT(fcntl(fd, F_SETFL, flags & ~O_NONBLOCK) == 0); @@ -347,7 +347,7 @@ static void write_test(size_t num_bytes, size_t slice_size) { grpc_closure write_done_closure; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "Start write test with %" PRIuPTR " bytes, slice size %" PRIuPTR, @@ -410,7 +410,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { int fd; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure fd_released_cb; int fd_released_done = 0; GRPC_CLOSURE_INIT(&fd_released_cb, &on_fd_released, &fd_released_done, @@ -450,7 +450,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { gpr_log(GPR_DEBUG, "wakeup: read=%" PRIdPTR " target=%" PRIdPTR, state.read_bytes, state.target_read_bytes); gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(state.read_bytes == state.target_read_bytes); @@ -458,7 +458,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { grpc_slice_buffer_destroy_internal(&state.incoming); grpc_tcp_destroy_and_release_fd(ep, &fd, &fd_released_cb); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); while (!fd_released_done) { grpc_pollset_worker* worker = NULL; @@ -506,7 +506,7 @@ static grpc_endpoint_test_fixture create_fixture_tcp_socketpair( size_t slice_size) { int sv[2]; grpc_endpoint_test_fixture f; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; create_sockets(sv); grpc_resource_quota* resource_quota = @@ -537,7 +537,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc index 1c3f4490d5c..7b3219320e9 100644 --- a/test/core/iomgr/tcp_server_posix_test.cc +++ b/test/core/iomgr/tcp_server_posix_test.cc @@ -163,14 +163,14 @@ static void on_connect(void* arg, grpc_endpoint* tcp, grpc_pollset* pollset, } static void test_no_op(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); grpc_tcp_server_unref(s); } static void test_no_op_with_start(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_start"); @@ -179,7 +179,7 @@ static void test_no_op_with_start(void) { } static void test_no_op_with_port(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -198,7 +198,7 @@ static void test_no_op_with_port(void) { } static void test_no_op_with_port_and_start(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -243,7 +243,8 @@ static grpc_error* tcp_connect(const test_addr* remote, return GRPC_OS_ERROR(errno, "connect"); } gpr_log(GPR_DEBUG, "wait"); - while (g_nconnects == nconnects_before && deadline > ExecCtx::Get()->Now()) { + while (g_nconnects == nconnects_before && + deadline > grpc_core::ExecCtx::Get()->Now()) { grpc_pollset_worker* worker = NULL; grpc_error* err; if ((err = grpc_pollset_work(g_pollset, &worker, deadline)) != @@ -281,7 +282,7 @@ static grpc_error* tcp_connect(const test_addr* remote, static void test_connect(size_t num_connects, const grpc_channel_args* channel_args, test_addrs* dst_addrs, bool test_dst_addrs) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; grpc_resolved_address resolved_addr1; struct sockaddr_storage* const addr = @@ -420,7 +421,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_arg chan_args[1]; chan_args[0].type = GRPC_ARG_INTEGER; chan_args[0].key = const_cast<char*>(GRPC_ARG_EXPAND_WILDCARD_ADDRS); diff --git a/test/core/iomgr/tcp_server_uv_test.cc b/test/core/iomgr/tcp_server_uv_test.cc index 50042af37f5..07b1fb15799 100644 --- a/test/core/iomgr/tcp_server_uv_test.cc +++ b/test/core/iomgr/tcp_server_uv_test.cc @@ -115,14 +115,14 @@ static void on_connect(void* arg, grpc_endpoint* tcp, grpc_pollset* pollset, } static void test_no_op(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); grpc_tcp_server_unref(s); } static void test_no_op_with_start(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_start"); @@ -131,7 +131,7 @@ static void test_no_op_with_start(void) { } static void test_no_op_with_port(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -150,7 +150,7 @@ static void test_no_op_with_port(void) { } static void test_no_op_with_port_and_start(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -214,7 +214,7 @@ static void tcp_connect(const struct sockaddr* remote, socklen_t remote_len, /* Tests a tcp server with multiple ports. */ static void test_connect(unsigned n) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; grpc_resolved_address resolved_addr1; struct sockaddr_storage* addr = (struct sockaddr_storage*)resolved_addr.addr; @@ -284,7 +284,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size())); diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc index 7281f55b854..537733150fe 100644 --- a/test/core/iomgr/timer_list_test.cc +++ b/test/core/iomgr/timer_list_test.cc @@ -43,7 +43,7 @@ static void cb(void* arg, grpc_error* error) { static void add_test(void) { int i; grpc_timer timers[20]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "add_test"); @@ -52,7 +52,7 @@ static void add_test(void) { grpc_timer_check_trace.value = 1; memset(cb_called, 0, sizeof(cb_called)); - grpc_millis start = ExecCtx::Get()->Now(); + grpc_millis start = grpc_core::ExecCtx::Get()->Now(); /* 10 ms timers. will expire in the current epoch */ for (i = 0; i < 10; i++) { @@ -69,7 +69,7 @@ static void add_test(void) { } /* collect timers. Only the first batch should be ready. */ - ExecCtx::Get()->SetNow(start + 500); + grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 500); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); for (i = 0; i < 20; i++) { @@ -77,7 +77,7 @@ static void add_test(void) { GPR_ASSERT(cb_called[i][0] == 0); } - ExecCtx::Get()->SetNow(start + 600); + grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 600); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_CHECKED_AND_EMPTY); for (i = 0; i < 30; i++) { @@ -86,7 +86,7 @@ static void add_test(void) { } /* collect the rest of the timers */ - ExecCtx::Get()->SetNow(start + 1500); + grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 1500); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); for (i = 0; i < 30; i++) { @@ -94,7 +94,7 @@ static void add_test(void) { GPR_ASSERT(cb_called[i][0] == 0); } - ExecCtx::Get()->SetNow(start + 1600); + grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 1600); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_CHECKED_AND_EMPTY); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 20)); @@ -107,11 +107,11 @@ static void add_test(void) { /* Cleaning up a list with pending timers. */ void destruction_test(void) { grpc_timer timers[5]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "destruction_test"); - ExecCtx::Get()->SetNow(0); + grpc_core::ExecCtx::Get()->TestOnlySetNow(0); grpc_timer_list_init(); grpc_timer_trace.value = 1; grpc_timer_check_trace.value = 1; @@ -132,7 +132,7 @@ void destruction_test(void) { grpc_timer_init( &timers[4], 1, GRPC_CLOSURE_CREATE(cb, (void*)(intptr_t)4, grpc_schedule_on_exec_ctx)); - ExecCtx::Get()->SetNow(2); + grpc_core::ExecCtx::Get()->TestOnlySetNow(2); GPR_ASSERT(grpc_timer_check(NULL) == GRPC_TIMERS_FIRED); GPR_ASSERT(1 == cb_called[4][1]); diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc index 47e5cf02545..0afd8367445 100644 --- a/test/core/iomgr/udp_server_test.cc +++ b/test/core/iomgr/udp_server_test.cc @@ -127,13 +127,13 @@ static test_socket_factory* test_socket_factory_create(void) { } static void test_no_op(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_udp_server* s = grpc_udp_server_create(NULL); grpc_udp_server_destroy(s, NULL); } static void test_no_op_with_start(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_udp_server* s = grpc_udp_server_create(NULL); LOG_TEST("test_no_op_with_start"); grpc_udp_server_start(s, NULL, 0, NULL); @@ -142,7 +142,7 @@ static void test_no_op_with_start(void) { static void test_no_op_with_port(void) { g_number_of_orphan_calls = 0; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_udp_server* s = grpc_udp_server_create(NULL); @@ -162,7 +162,7 @@ static void test_no_op_with_port(void) { static void test_no_op_with_port_and_socket_factory(void) { g_number_of_orphan_calls = 0; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; @@ -194,7 +194,7 @@ static void test_no_op_with_port_and_socket_factory(void) { static void test_no_op_with_port_and_start(void) { g_number_of_orphan_calls = 0; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_udp_server* s = grpc_udp_server_create(NULL); @@ -216,7 +216,7 @@ static void test_no_op_with_port_and_start(void) { } static void test_receive(int number_of_clients) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_storage* addr = (struct sockaddr_storage*)resolved_addr.addr; int clifd, svrfd; @@ -260,12 +260,12 @@ static void test_receive(int number_of_clients) { (socklen_t)resolved_addr.len) == 0); GPR_ASSERT(5 == write(clifd, "hello", 5)); while (g_number_of_reads == number_of_reads_before && - deadline > ExecCtx::Get()->Now()) { + deadline > grpc_core::ExecCtx::Get()->Now()) { grpc_pollset_worker* worker = NULL; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, deadline))); gpr_mu_unlock(g_mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } GPR_ASSERT(g_number_of_reads == number_of_reads_before + 1); @@ -291,7 +291,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); diff --git a/test/core/security/credentials_test.cc b/test/core/security/credentials_test.cc index 029171c931e..639f4e50561 100644 --- a/test/core/security/credentials_test.cc +++ b/test/core/security/credentials_test.cc @@ -148,7 +148,7 @@ static grpc_httpcli_response http_response(int status, const char* body) { /* -- Tests. -- */ static void test_empty_md_array(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); GPR_ASSERT(md_array.md == NULL); @@ -157,7 +157,7 @@ static void test_empty_md_array(void) { } static void test_add_to_empty_md_array(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); const char* key = "hello"; @@ -172,7 +172,7 @@ static void test_add_to_empty_md_array(void) { } static void test_add_abunch_to_md_array(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); const char* key = "hello"; @@ -191,7 +191,7 @@ static void test_add_abunch_to_md_array(void) { } static void test_oauth2_token_fetcher_creds_parsing_ok(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -208,7 +208,7 @@ static void test_oauth2_token_fetcher_creds_parsing_ok(void) { } static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -220,7 +220,7 @@ static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { } static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, ""); @@ -231,7 +231,7 @@ static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { } static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -246,7 +246,7 @@ static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { } static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, @@ -260,7 +260,7 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { } static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -276,7 +276,7 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime( void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -378,7 +378,7 @@ static void run_request_metadata_test(grpc_call_credentials* creds, } static void test_google_iam_creds(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; expected_md emd[] = {{GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY, test_google_iam_authorization_token}, {GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY, @@ -395,7 +395,7 @@ static void test_google_iam_creds(void) { } static void test_access_token_creds(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; expected_md emd[] = {{GRPC_AUTHORIZATION_METADATA_KEY, "Bearer blah"}}; request_metadata_state* state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); @@ -419,7 +419,7 @@ static grpc_security_status check_channel_oauth2_create_security_connector( } static void test_channel_oauth2_composite_creds(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args* new_args; grpc_channel_credentials_vtable vtable = { NULL, check_channel_oauth2_create_security_connector, NULL}; @@ -439,7 +439,7 @@ static void test_channel_oauth2_composite_creds(void) { } static void test_oauth2_google_iam_composite_creds(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; expected_md emd[] = { {GRPC_AUTHORIZATION_METADATA_KEY, test_oauth2_bearer_token}, {GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY, @@ -492,7 +492,7 @@ check_channel_oauth2_google_iam_create_security_connector( } static void test_channel_oauth2_google_iam_composite_creds(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args* new_args; grpc_channel_credentials_vtable vtable = { NULL, check_channel_oauth2_google_iam_create_security_connector, NULL}; @@ -569,7 +569,7 @@ static int httpcli_get_should_not_be_called(const grpc_httpcli_request* request, } static void test_compute_engine_creds_success(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; grpc_call_credentials* creds = @@ -583,7 +583,7 @@ static void test_compute_engine_creds_success(void) { grpc_httpcli_set_override(compute_engine_httpcli_get_success_override, httpcli_post_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Second request: the cached token should be served directly. */ state = @@ -591,14 +591,14 @@ static void test_compute_engine_creds_success(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); } static void test_compute_engine_creds_failure(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; request_metadata_state* state = make_request_metadata_state( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Error occured when fetching oauth2 token."), @@ -658,7 +658,7 @@ static int refresh_token_httpcli_post_failure( } static void test_refresh_token_creds_success(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, @@ -672,7 +672,7 @@ static void test_refresh_token_creds_success(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, refresh_token_httpcli_post_success); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Second request: the cached token should be served directly. */ state = @@ -680,14 +680,14 @@ static void test_refresh_token_creds_success(void) { grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_call_credentials_unref(creds); grpc_httpcli_set_override(NULL, NULL); } static void test_refresh_token_creds_failure(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; request_metadata_state* state = make_request_metadata_state( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Error occured when fetching oauth2 token."), @@ -790,7 +790,7 @@ static void test_jwt_creds_lifetime(void) { static void test_jwt_creds_success(void) { char* json_key_string = test_json_key_str(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; char* expected_md_value; @@ -805,7 +805,7 @@ static void test_jwt_creds_success(void) { make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_success); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Second request: the cached token should be served directly. */ state = @@ -813,7 +813,7 @@ static void test_jwt_creds_success(void) { grpc_jwt_encode_and_sign_set_override( encode_and_sign_jwt_should_not_be_called); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Third request: Different service url so jwt_encode_and_sign should be called again (no caching). */ @@ -822,7 +822,7 @@ static void test_jwt_creds_success(void) { auth_md_ctx.service_url = other_test_service_url; grpc_jwt_encode_and_sign_set_override(encode_and_sign_jwt_success); run_request_metadata_test(creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_call_credentials_unref(creds); gpr_free(json_key_string); @@ -832,7 +832,7 @@ static void test_jwt_creds_success(void) { static void test_jwt_creds_signing_failure(void) { char* json_key_string = test_json_key_str(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; request_metadata_state* state = make_request_metadata_state( @@ -863,7 +863,7 @@ static void set_google_default_creds_env_var_with_file_contents( } static void test_google_default_creds_auth_key(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_service_account_jwt_access_credentials* jwt; grpc_composite_channel_credentials* creds; char* json_key = test_json_key_str(); @@ -884,7 +884,7 @@ static void test_google_default_creds_auth_key(void) { } static void test_google_default_creds_refresh_token(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_google_refresh_token_credentials* refresh; grpc_composite_channel_credentials* creds; grpc_flush_cached_google_default_credentials(); @@ -919,7 +919,7 @@ static int default_creds_gce_detection_httpcli_get_success_override( static char* null_well_known_creds_path_getter(void) { return NULL; } static void test_google_default_creds_gce(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; request_metadata_state* state = @@ -945,7 +945,7 @@ static void test_google_default_creds_gce(void) { grpc_httpcli_set_override(compute_engine_httpcli_get_success_override, httpcli_post_should_not_be_called); run_request_metadata_test(creds->call_creds, auth_md_ctx, state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); /* Check that we get a cached creds if we call grpc_google_default_credentials_create again. @@ -1054,7 +1054,7 @@ static void plugin_destroy(void* state) { static void test_metadata_plugin_success(void) { plugin_state state = PLUGIN_INITIAL_STATE; grpc_metadata_credentials_plugin plugin; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; request_metadata_state* md_state = make_request_metadata_state( @@ -1077,7 +1077,7 @@ static void test_metadata_plugin_success(void) { static void test_metadata_plugin_failure(void) { plugin_state state = PLUGIN_INITIAL_STATE; grpc_metadata_credentials_plugin plugin; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL, NULL}; char* expected_error; @@ -1119,7 +1119,7 @@ static void test_get_well_known_google_credentials_file_path(void) { } static void test_channel_creds_duplicate_without_call_creds(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_credentials* channel_creds = grpc_fake_transport_security_credentials_create(); diff --git a/test/core/security/json_token_test.cc b/test/core/security/json_token_test.cc index 9eac2b92541..a139f3776f1 100644 --- a/test/core/security/json_token_test.cc +++ b/test/core/security/json_token_test.cc @@ -206,7 +206,7 @@ static void test_parse_json_key_failure_no_private_key(void) { static grpc_json* parse_json_part_from_jwt(const char* str, size_t len, char** scratchpad) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; char* b64; char* decoded; grpc_json* json; @@ -326,7 +326,7 @@ static void check_jwt_claim(grpc_json* claim, const char* expected_audience, static void check_jwt_signature(const char* b64_signature, RSA* rsa_key, const char* signed_data, size_t signed_data_size) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; EVP_MD_CTX* md_ctx = EVP_MD_CTX_create(); EVP_PKEY* key = EVP_PKEY_new(); diff --git a/test/core/security/jwt_verifier_test.cc b/test/core/security/jwt_verifier_test.cc index 7485aa10b4e..55e28e6eb2c 100644 --- a/test/core/security/jwt_verifier_test.cc +++ b/test/core/security/jwt_verifier_test.cc @@ -209,7 +209,7 @@ static void test_claims_success(void) { grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_json(claims) == json); @@ -231,7 +231,7 @@ static void test_expired_claims_failure(void) { gpr_timespec exp_exp = {120, 0, GPR_CLOCK_REALTIME}; gpr_timespec exp_nbf = {60, 0, GPR_CLOCK_REALTIME}; GPR_ASSERT(json != NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_json(claims) == json); @@ -252,7 +252,7 @@ static void test_invalid_claims_failure(void) { grpc_slice s = grpc_slice_from_copied_string(invalid_claims); grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_jwt_claims_from_json(json, s) == NULL); } @@ -262,7 +262,7 @@ static void test_bad_audience_claims_failure(void) { grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://bar.com") == @@ -276,7 +276,7 @@ static void test_bad_subject_claims_failure(void) { grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != NULL); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == @@ -350,7 +350,7 @@ static void on_verification_success(void* user_data, } static void test_jwt_verifier_google_email_issuer_success(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(NULL, 0); char* jwt = NULL; char* key_str = json_key_str(json_key_str_part3_for_google_email_issuer); @@ -383,7 +383,7 @@ static int httpcli_get_custom_keys_for_email( } static void test_jwt_verifier_custom_email_issuer_success(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(&custom_mapping, 1); char* jwt = NULL; char* key_str = json_key_str(json_key_str_part3_for_custom_email_issuer); @@ -430,7 +430,7 @@ static int httpcli_get_openid_config(const grpc_httpcli_request* request, } static void test_jwt_verifier_url_issuer_success(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(NULL, 0); char* jwt = NULL; char* key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -469,7 +469,7 @@ static int httpcli_get_bad_json(const grpc_httpcli_request* request, } static void test_jwt_verifier_url_issuer_bad_config(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(NULL, 0); char* jwt = NULL; char* key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -492,7 +492,7 @@ static void test_jwt_verifier_url_issuer_bad_config(void) { } static void test_jwt_verifier_bad_json_key(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(NULL, 0); char* jwt = NULL; char* key_str = json_key_str(json_key_str_part3_for_google_email_issuer); @@ -521,7 +521,7 @@ static void corrupt_jwt_sig(char* jwt) { char* last_dot = strrchr(jwt, '.'); GPR_ASSERT(last_dot != NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; sig = grpc_base64_decode(last_dot + 1, 1); } GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(sig)); @@ -543,7 +543,7 @@ static void on_verification_bad_signature(void* user_data, } static void test_jwt_verifier_bad_signature(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(NULL, 0); char* jwt = NULL; char* key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -583,7 +583,7 @@ static void on_verification_bad_format(void* user_data, } static void test_jwt_verifier_bad_format(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(NULL, 0); grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); diff --git a/test/core/security/oauth2_utils.cc b/test/core/security/oauth2_utils.cc index f4a52aaba0c..e24ccbc1073 100644 --- a/test/core/security/oauth2_utils.cc +++ b/test/core/security/oauth2_utils.cc @@ -69,7 +69,7 @@ char* grpc_test_fetch_oauth2_token_with_credentials( grpc_call_credentials* creds) { oauth2_request request; memset(&request, 0, sizeof(request)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure do_nothing_closure; grpc_auth_metadata_context null_ctx = {"", "", NULL, NULL}; @@ -92,7 +92,7 @@ char* grpc_test_fetch_oauth2_token_with_credentials( on_oauth2_response(&request, error); GRPC_ERROR_UNREF(error); } - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(request.mu); while (!request.is_done) { diff --git a/test/core/security/print_google_default_creds_token.cc b/test/core/security/print_google_default_creds_token.cc index 6153e8a9cb0..29201afe40a 100644 --- a/test/core/security/print_google_default_creds_token.cc +++ b/test/core/security/print_google_default_creds_token.cc @@ -62,7 +62,7 @@ static void on_metadata_response(void* arg, grpc_error* error) { int main(int argc, char** argv) { int result = 0; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; synchronizer sync; grpc_channel_credentials* creds = NULL; const char* service_url = "https://test.foo.google.com/Foo"; @@ -111,7 +111,7 @@ int main(int argc, char** argv) { GRPC_MILLIS_INF_FUTURE))) sync.is_done = true; gpr_mu_unlock(sync.mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(sync.mu); } gpr_mu_unlock(sync.mu); diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc index a49bf1a0b4b..7cee0dd3fe4 100644 --- a/test/core/security/secure_endpoint_test.cc +++ b/test/core/security/secure_endpoint_test.cc @@ -38,7 +38,7 @@ static grpc_pollset* g_pollset; static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair( size_t slice_size, grpc_slice* leftover_slices, size_t leftover_nslices, bool use_zero_copy_protector) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; tsi_frame_protector* fake_read_protector = tsi_create_fake_frame_protector(NULL); tsi_frame_protector* fake_write_protector = @@ -170,7 +170,7 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { grpc_slice_buffer incoming; grpc_slice s = grpc_slice_from_copied_string("hello world 12345678900987654321"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; int n = 0; grpc_closure done_closure; gpr_log(GPR_INFO, "Start test left over"); @@ -202,7 +202,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); diff --git a/test/core/security/ssl_server_fuzzer.cc b/test/core/security/ssl_server_fuzzer.cc index 84a42546c67..b9198279e3f 100644 --- a/test/core/security/ssl_server_fuzzer.cc +++ b/test/core/security/ssl_server_fuzzer.cc @@ -55,7 +55,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resource_quota* resource_quota = grpc_resource_quota_create("ssl_server_fuzzer"); @@ -83,7 +83,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_security_status status = grpc_server_credentials_create_security_connector(creds, &sc); GPR_ASSERT(status == GRPC_SECURITY_OK); - grpc_millis deadline = GPR_MS_PER_SEC + ExecCtx::Get()->Now(); + grpc_millis deadline = GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now(); struct handshake_state state; state.done_callback_called = false; @@ -92,7 +92,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_handshake_manager_do_handshake( handshake_mgr, mock_endpoint, NULL /* channel_args */, deadline, NULL /* acceptor */, on_handshake_done, &state); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); // If the given string happens to be part of the correct client hello, the // server will wait for more data. Explicitly fail the server by shutting down @@ -100,7 +100,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (!state.done_callback_called) { grpc_endpoint_shutdown( mock_endpoint, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close")); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GPR_ASSERT(state.done_callback_called); @@ -111,7 +111,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_slice_unref(cert_slice); grpc_slice_unref(key_slice); grpc_slice_unref(ca_slice); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_shutdown(); if (leak_check) { diff --git a/test/core/security/verify_jwt.cc b/test/core/security/verify_jwt.cc index f3e89666257..c4c3541d198 100644 --- a/test/core/security/verify_jwt.cc +++ b/test/core/security/verify_jwt.cc @@ -76,7 +76,7 @@ int main(int argc, char** argv) { gpr_cmdline* cl; const char* jwt = NULL; const char* aud = NULL; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_init(); cl = gpr_cmdline_create("JWT verifier tool"); @@ -106,7 +106,7 @@ int main(int argc, char** argv) { grpc_pollset_work(sync.pollset, &worker, GRPC_MILLIS_INF_FUTURE))) sync.is_done = true; gpr_mu_unlock(sync.mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(sync.mu); } gpr_mu_unlock(sync.mu); diff --git a/test/core/slice/b64_test.cc b/test/core/slice/b64_test.cc index 5ed99107405..08a5770b2af 100644 --- a/test/core/slice/b64_test.cc +++ b/test/core/slice/b64_test.cc @@ -44,7 +44,7 @@ static void test_simple_encode_decode_b64(int url_safe, int multiline) { const char* hello = "hello"; char* hello_b64 = grpc_base64_encode(hello, strlen(hello), url_safe, multiline); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice hello_slice = grpc_base64_decode(hello_b64, url_safe); GPR_ASSERT(GRPC_SLICE_LENGTH(hello_slice) == strlen(hello)); GPR_ASSERT(strncmp((const char*)GRPC_SLICE_START_PTR(hello_slice), hello, @@ -64,7 +64,7 @@ static void test_full_range_encode_decode_b64(int url_safe, int multiline) { /* Try all the different paddings. */ for (i = 0; i < 3; i++) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; b64 = grpc_base64_encode(orig, sizeof(orig) - i, url_safe, multiline); orig_decoded = grpc_base64_decode(b64, url_safe); GPR_ASSERT(GRPC_SLICE_LENGTH(orig_decoded) == (sizeof(orig) - i)); @@ -115,7 +115,7 @@ static void test_url_safe_unsafe_mismatch_failure(void) { int url_safe = 1; for (i = 0; i < sizeof(orig); i++) orig[i] = (uint8_t)i; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; b64 = grpc_base64_encode(orig, sizeof(orig), url_safe, 0); orig_decoded = grpc_base64_decode(b64, !url_safe); GPR_ASSERT(GRPC_SLICE_IS_EMPTY(orig_decoded)); @@ -164,7 +164,7 @@ static void test_rfc4648_test_vectors(void) { static void test_unpadded_decode(void) { grpc_slice decoded; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; decoded = grpc_base64_decode("Zm9vYmFy", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "foobar") == 0); diff --git a/test/core/slice/slice_hash_table_test.cc b/test/core/slice/slice_hash_table_test.cc index 89fc33a7bf0..ea00688af0b 100644 --- a/test/core/slice/slice_hash_table_test.cc +++ b/test/core/slice/slice_hash_table_test.cc @@ -119,7 +119,7 @@ static void test_slice_hash_table() { check_values(test_entries, num_entries, table); check_non_existent_value("XX", table); // Clean up. - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_hash_table_unref(table); } @@ -146,7 +146,7 @@ static void test_slice_hash_table_eq() { create_table_from_entries(test_entries_b, num_entries_b, value_cmp_fn); GPR_ASSERT(grpc_slice_hash_table_cmp(table_a, table_b) == 0); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_hash_table_unref(table_a); grpc_slice_hash_table_unref(table_b); } @@ -217,7 +217,7 @@ static void test_slice_hash_table_not_eq() { create_table_from_entries(test_entries_h, num_entries_h, pointer_cmp_fn); GPR_ASSERT(grpc_slice_hash_table_cmp(table_g, table_h) != 0); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_slice_hash_table_unref(table_a); grpc_slice_hash_table_unref(table_b_larger); grpc_slice_hash_table_unref(table_b_smaller); diff --git a/test/core/surface/byte_buffer_reader_test.cc b/test/core/surface/byte_buffer_reader_test.cc index 1f3a83efe64..f9ce98da218 100644 --- a/test/core/surface/byte_buffer_reader_test.cc +++ b/test/core/surface/byte_buffer_reader_test.cc @@ -132,7 +132,7 @@ static void read_compressed_slice(grpc_compression_algorithm algorithm, memset(GRPC_SLICE_START_PTR(input_slice), 'a', input_size); grpc_slice_buffer_add(&sliceb_in, input_slice); /* takes ownership */ { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_msg_compress(algorithm, &sliceb_in, &sliceb_out)); } diff --git a/test/core/surface/channel_create_test.cc b/test/core/surface/channel_create_test.cc index ece06e4968b..3e7dd311db0 100644 --- a/test/core/surface/channel_create_test.cc +++ b/test/core/surface/channel_create_test.cc @@ -35,7 +35,7 @@ void test_unknown_scheme_target(void) { chan = grpc_insecure_channel_create("blah://blah", NULL, NULL); GPR_ASSERT(chan != NULL); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); diff --git a/test/core/surface/completion_queue_test.cc b/test/core/surface/completion_queue_test.cc index 39aedeba026..e38b087a4b0 100644 --- a/test/core/surface/completion_queue_test.cc +++ b/test/core/surface/completion_queue_test.cc @@ -136,7 +136,7 @@ static void test_cq_end_op(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); @@ -170,7 +170,7 @@ static void test_cq_tls_cache_full(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - ExecCtx _local_exec_ctx; // Reset exec_ctx + grpc_core::ExecCtx _local_exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); @@ -208,7 +208,7 @@ static void test_cq_tls_cache_empty(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - ExecCtx _local_exec_ctx; // Reset exec_ctx + grpc_core::ExecCtx _local_exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); @@ -289,7 +289,7 @@ static void test_pluck(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_PLUCK; for (size_t pidx = 0; pidx < GPR_ARRAY_SIZE(polling_types); pidx++) { - ExecCtx _local_exec_ctx; // reset exec_ctx + grpc_core::ExecCtx _local_exec_ctx; // reset exec_ctx attr.cq_polling_type = polling_types[pidx]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, NULL); diff --git a/test/core/surface/completion_queue_threading_test.cc b/test/core/surface/completion_queue_threading_test.cc index 6625e7e09f1..0c818e02813 100644 --- a/test/core/surface/completion_queue_threading_test.cc +++ b/test/core/surface/completion_queue_threading_test.cc @@ -80,7 +80,7 @@ static void test_too_many_plucks(void) { gpr_thd_id thread_ids[GPR_ARRAY_SIZE(tags)]; struct thread_state thread_states[GPR_ARRAY_SIZE(tags)]; gpr_thd_options thread_options = gpr_thd_options_default(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; unsigned i, j; LOG_TEST("test_too_many_plucks"); @@ -142,7 +142,7 @@ static void free_completion(void* arg, grpc_cq_completion* completion) { static void producer_thread(void* arg) { test_thread_options* opt = static_cast<test_thread_options*>(arg); int i; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "producer %d started", opt->id); gpr_event_set(&opt->on_started, (void*)(intptr_t)1); diff --git a/test/core/surface/concurrent_connectivity_test.cc b/test/core/surface/concurrent_connectivity_test.cc index b3999b481f5..18d7f2f9856 100644 --- a/test/core/surface/concurrent_connectivity_test.cc +++ b/test/core/surface/concurrent_connectivity_test.cc @@ -115,7 +115,7 @@ static void on_connect(void* vargs, grpc_endpoint* tcp, void bad_server_thread(void* vargs) { struct server_thread_args* args = (struct server_thread_args*)vargs; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_storage* addr = (struct sockaddr_storage*)resolved_addr.addr; int port; @@ -134,7 +134,7 @@ void bad_server_thread(void* vargs) { gpr_mu_lock(args->mu); while (gpr_atm_acq_load(&args->stop) == 0) { - grpc_millis deadline = ExecCtx::Get()->Now() + 100; + grpc_millis deadline = grpc_core::ExecCtx::Get()->Now() + 100; grpc_pollset_worker* worker = NULL; if (!GRPC_LOG_IF_ERROR( @@ -222,7 +222,7 @@ int run_concurrent_connectivity_test() { gpr_atm_rel_store(&args.stop, 1); gpr_thd_join(server); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_pollset_shutdown(args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset, grpc_schedule_on_exec_ctx)); diff --git a/test/core/surface/lame_client_test.cc b/test/core/surface/lame_client_test.cc index dd14a035771..54d55bf4404 100644 --- a/test/core/surface/lame_client_test.cc +++ b/test/core/surface/lame_client_test.cc @@ -44,7 +44,7 @@ void test_transport_op(grpc_channel* channel) { grpc_transport_op* op; grpc_channel_element* elem; grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CLOSURE_INIT(&transport_op_cb, verify_connectivity, &state, grpc_schedule_on_exec_ctx); diff --git a/test/core/surface/num_external_connectivity_watchers_test.cc b/test/core/surface/num_external_connectivity_watchers_test.cc index bf51dac6ddb..59fecf2d502 100644 --- a/test/core/surface/num_external_connectivity_watchers_test.cc +++ b/test/core/surface/num_external_connectivity_watchers_test.cc @@ -178,7 +178,7 @@ static grpc_channel* secure_test_create_channel(const char* addr) { grpc_channel* channel = grpc_secure_channel_create(ssl_creds, addr, new_client_args, NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); } grpc_channel_credentials_release(ssl_creds); diff --git a/test/core/surface/secure_channel_create_test.cc b/test/core/surface/secure_channel_create_test.cc index dd9f907652a..14afa6f18e3 100644 --- a/test/core/surface/secure_channel_create_test.cc +++ b/test/core/surface/secure_channel_create_test.cc @@ -37,7 +37,7 @@ void test_unknown_scheme_target(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); grpc_channel_credentials_unref(creds); } @@ -54,7 +54,7 @@ void test_security_connector_already_in_arg(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); } @@ -63,7 +63,7 @@ void test_null_creds(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); } diff --git a/test/core/surface/sequential_connectivity_test.cc b/test/core/surface/sequential_connectivity_test.cc index aae418cedbe..5ad9ce65d19 100644 --- a/test/core/surface/sequential_connectivity_test.cc +++ b/test/core/surface/sequential_connectivity_test.cc @@ -156,7 +156,7 @@ static grpc_channel* secure_test_create_channel(const char* addr) { grpc_channel* channel = grpc_secure_channel_create(ssl_creds, addr, new_client_args, NULL); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_channel_args_destroy(new_client_args); } grpc_channel_credentials_release(ssl_creds); diff --git a/test/core/transport/bdp_estimator_test.cc b/test/core/transport/bdp_estimator_test.cc index 4d41ece875f..168807adde7 100644 --- a/test/core/transport/bdp_estimator_test.cc +++ b/test/core/transport/bdp_estimator_test.cc @@ -58,7 +58,7 @@ namespace { void AddSamples(BdpEstimator* estimator, int64_t* samples, size_t n) { estimator->AddIncomingBytes(1234567); inc_time(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; estimator->SchedulePing(); estimator->StartPing(); for (size_t i = 0; i < n; i++) { @@ -66,7 +66,7 @@ void AddSamples(BdpEstimator* estimator, int64_t* samples, size_t n) { } gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(1, GPR_TIMESPAN))); - ExecCtx::Get()->InvalidateNow(); + grpc_core::ExecCtx::Get()->InvalidateNow(); estimator->CompletePing(); } diff --git a/test/core/transport/byte_stream_test.cc b/test/core/transport/byte_stream_test.cc index 12a933f3327..08dd91e4ec0 100644 --- a/test/core/transport/byte_stream_test.cc +++ b/test/core/transport/byte_stream_test.cc @@ -36,7 +36,7 @@ static void not_called_closure(void* arg, grpc_error* error) { static void test_slice_buffer_stream_basic(void) { gpr_log(GPR_DEBUG, "test_slice_buffer_stream_basic"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; // Create and populate slice buffer. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -70,7 +70,7 @@ static void test_slice_buffer_stream_basic(void) { static void test_slice_buffer_stream_shutdown(void) { gpr_log(GPR_DEBUG, "test_slice_buffer_stream_shutdown"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; // Create and populate slice buffer. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -116,7 +116,7 @@ static void test_slice_buffer_stream_shutdown(void) { static void test_caching_byte_stream_basic(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_basic"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -155,7 +155,7 @@ static void test_caching_byte_stream_basic(void) { static void test_caching_byte_stream_reset(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_reset"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -201,7 +201,7 @@ static void test_caching_byte_stream_reset(void) { static void test_caching_byte_stream_shared_cache(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_shared_cache"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); diff --git a/test/core/transport/chttp2/bin_decoder_test.cc b/test/core/transport/chttp2/bin_decoder_test.cc index 3d463c40a53..897d3008b9a 100644 --- a/test/core/transport/chttp2/bin_decoder_test.cc +++ b/test/core/transport/chttp2/bin_decoder_test.cc @@ -76,7 +76,7 @@ static grpc_slice base64_decode_with_length(const char* s, s, grpc_chttp2_base64_decode_with_length(base64_encode(s), strlen(s))); int main(int argc, char** argv) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which takes encoded base64 strings without pad chars, but output length is diff --git a/test/core/transport/chttp2/hpack_encoder_test.cc b/test/core/transport/chttp2/hpack_encoder_test.cc index fe4538339e9..91e2ca376ef 100644 --- a/test/core/transport/chttp2/hpack_encoder_test.cc +++ b/test/core/transport/chttp2/hpack_encoder_test.cc @@ -257,7 +257,7 @@ static void test_interned_key_indexed() { static void run_test(void (*test)(), const char* name) { gpr_log(GPR_INFO, "RUN TEST: %s", name); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hpack_compressor_init(&g_compressor); test(); grpc_chttp2_hpack_compressor_destroy(&g_compressor); diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc index feb27fc0ff6..0dfd5ecc2d8 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc @@ -37,7 +37,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); grpc_init(); grpc_chttp2_hpack_parser parser; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hpack_parser_init(&parser); parser.on_header = onhdr; GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse( diff --git a/test/core/transport/chttp2/hpack_parser_test.cc b/test/core/transport/chttp2/hpack_parser_test.cc index 69a13108f94..1bd3644faba 100644 --- a/test/core/transport/chttp2/hpack_parser_test.cc +++ b/test/core/transport/chttp2/hpack_parser_test.cc @@ -62,7 +62,7 @@ static void test_vector(grpc_chttp2_hpack_parser* parser, grpc_slice_unref(input); for (i = 0; i < nslices; i++) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_chttp2_hpack_parser_parse(parser, slices[i]) == GRPC_ERROR_NONE); } @@ -79,7 +79,7 @@ static void test_vector(grpc_chttp2_hpack_parser* parser, static void test_vectors(grpc_slice_split_mode mode) { grpc_chttp2_hpack_parser parser; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hpack_parser_init(&parser); /* D.2.1 */ diff --git a/test/core/transport/chttp2/hpack_table_test.cc b/test/core/transport/chttp2/hpack_table_test.cc index fd5604d8576..97e1a02621b 100644 --- a/test/core/transport/chttp2/hpack_table_test.cc +++ b/test/core/transport/chttp2/hpack_table_test.cc @@ -44,7 +44,7 @@ static void assert_index(const grpc_chttp2_hptbl* tbl, uint32_t idx, } static void test_static_lookup(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hptbl tbl; grpc_chttp2_hptbl_init(&tbl); @@ -123,7 +123,7 @@ static void test_many_additions(void) { LOG_TEST("test_many_additions"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hptbl_init(&tbl); for (i = 0; i < 100000; i++) { @@ -152,7 +152,7 @@ static void test_many_additions(void) { static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl* tbl, const char* key, const char* value) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem md = grpc_mdelem_from_slices( grpc_slice_from_copied_string(key), grpc_slice_from_copied_string(value)); grpc_chttp2_hptbl_find_result r = grpc_chttp2_hptbl_find(tbl, md); @@ -162,7 +162,7 @@ static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl* tbl, } static void test_find(void) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hptbl tbl; uint32_t i; char buffer[32]; diff --git a/test/core/transport/connectivity_state_test.cc b/test/core/transport/connectivity_state_test.cc index 8ddd8bb2dfe..0ccf7ba2887 100644 --- a/test/core/transport/connectivity_state_test.cc +++ b/test/core/transport/connectivity_state_test.cc @@ -57,7 +57,7 @@ static void test_connectivity_state_name(void) { static void test_check(void) { grpc_connectivity_state_tracker tracker; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_error* error; gpr_log(GPR_DEBUG, "test_check"); grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); @@ -73,17 +73,17 @@ static void test_subscribe_then_unsubscribe(void) { grpc_closure* closure = GRPC_CLOSURE_CREATE(must_fail, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_subscribe_then_unsubscribe"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&tracker, &state, closure)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_notify_on_state_change(&tracker, NULL, closure); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 1); @@ -95,13 +95,13 @@ static void test_subscribe_then_destroy(void) { grpc_closure* closure = GRPC_CLOSURE_CREATE(must_succeed, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_subscribe_then_destroy"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); GPR_ASSERT(grpc_connectivity_state_notify_on_state_change(&tracker, &state, closure)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_IDLE); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_destroy(&tracker); @@ -115,13 +115,13 @@ static void test_subscribe_with_failure_then_destroy(void) { grpc_closure* closure = GRPC_CLOSURE_CREATE(must_fail, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_SHUTDOWN; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_DEBUG, "test_subscribe_with_failure_then_destroy"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_SHUTDOWN, "xxx"); GPR_ASSERT(0 == grpc_connectivity_state_notify_on_state_change( &tracker, &state, closure)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_destroy(&tracker); diff --git a/test/core/transport/metadata_test.cc b/test/core/transport/metadata_test.cc index 3d7034e4cea..e5bdc5901d6 100644 --- a/test/core/transport/metadata_test.cc +++ b/test/core/transport/metadata_test.cc @@ -60,7 +60,7 @@ static void test_create_metadata(bool intern_keys, bool intern_values) { intern_keys, intern_values); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; m1 = grpc_mdelem_from_slices( maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); @@ -95,7 +95,7 @@ static void test_create_many_ephemeral_metadata(bool intern_keys, intern_keys, intern_values); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* add, and immediately delete a bunch of different elements */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); @@ -117,7 +117,7 @@ static void test_create_many_persistant_metadata(void) { gpr_log(GPR_INFO, "test_create_many_persistant_metadata"); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* add phase */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); @@ -151,7 +151,7 @@ static void test_spin_creating_the_same_thing(bool intern_keys, intern_keys, intern_values); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem a, b, c; GRPC_MDELEM_UNREF( a = grpc_mdelem_from_slices( @@ -178,7 +178,7 @@ static void test_identity_laws(bool intern_keys, bool intern_values) { intern_keys, intern_values); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem a, b, c; a = grpc_mdelem_from_slices( maybe_intern(grpc_slice_from_static_string("a"), intern_keys), @@ -225,7 +225,7 @@ static void test_things_stick_around(void) { gpr_log(GPR_INFO, "test_things_stick_around"); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; for (i = 0; i < nstrs; i++) { gpr_asprintf(&buffer, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%" PRIuPTR "x", i); @@ -271,7 +271,7 @@ static void test_user_data_works(void) { gpr_log(GPR_INFO, "test_user_data_works"); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; ud1 = static_cast<int*>(gpr_malloc(sizeof(int))); *ud1 = 1; ud2 = static_cast<int*>(gpr_malloc(sizeof(int))); @@ -322,7 +322,7 @@ static void test_mdelem_sizes_in_hpack(bool intern_key, bool intern_value) { gpr_log(GPR_INFO, "test_mdelem_size: intern_key=%d intern_value=%d", intern_key, intern_value); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; uint8_t binary_value[BUFFER_SIZE] = {0}; for (uint8_t i = 0; i < BUFFER_SIZE; i++) { @@ -346,7 +346,7 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) { gpr_log(GPR_INFO, "test_static_metadata: dup_key=%d dup_value=%d", dup_key, dup_value); grpc_init(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; for (size_t i = 0; i < GRPC_STATIC_MDELEM_COUNT; i++) { grpc_mdelem p = GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[i], diff --git a/test/core/transport/status_conversion_test.cc b/test/core/transport/status_conversion_test.cc index 16ecd076a30..2a192e04ef8 100644 --- a/test/core/transport/status_conversion_test.cc +++ b/test/core/transport/status_conversion_test.cc @@ -24,7 +24,7 @@ GPR_ASSERT(grpc_status_to_http2_error(a) == (b)) #define HTTP2_ERROR_TO_GRPC_STATUS(a, deadline, b) \ do { \ - ExecCtx _local_exec_ctx; \ + grpc_core::ExecCtx _local_exec_ctx; \ GPR_ASSERT(grpc_http2_error_to_grpc_status(a, deadline) == (b)); \ \ } while (0) diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc index 4e68ee3744d..8e61145a265 100644 --- a/test/core/util/port_server_client.cc +++ b/test/core/util/port_server_client.cc @@ -62,7 +62,7 @@ void grpc_free_port_using_server(int port) { grpc_httpcli_response rsp; freereq pr; char* path; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure* shutdown_closure; grpc_init(); @@ -85,19 +85,20 @@ void grpc_free_port_using_server(int port) { grpc_resource_quota* resource_quota = grpc_resource_quota_create("port_server_client/free"); grpc_httpcli_get(&context, &pr.pops, resource_quota, &req, - ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, + grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(freed_port_from_server, &pr, grpc_schedule_on_exec_ctx), &rsp); grpc_resource_quota_unref_internal(resource_quota); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(pr.mu); while (!pr.done) { grpc_pollset_worker* worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(grpc_polling_entity_pollset(&pr.pops), &worker, - ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { + grpc_pollset_work( + grpc_polling_entity_pollset(&pr.pops), &worker, + grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { pr.done = 1; } } @@ -167,7 +168,7 @@ static void got_port_from_server(void* arg, grpc_error* error) { grpc_resource_quota* resource_quota = grpc_resource_quota_create("port_server_client/pick_retry"); grpc_httpcli_get(pr->ctx, &pr->pops, resource_quota, &req, - ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, + grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(got_port_from_server, pr, grpc_schedule_on_exec_ctx), &pr->response); @@ -193,7 +194,7 @@ int grpc_pick_port_using_server(void) { grpc_httpcli_context context; grpc_httpcli_request req; portreq pr; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure* shutdown_closure; grpc_init(); @@ -217,18 +218,19 @@ int grpc_pick_port_using_server(void) { grpc_resource_quota_create("port_server_client/pick"); grpc_httpcli_get( &context, &pr.pops, resource_quota, &req, - ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, + grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, GRPC_CLOSURE_CREATE(got_port_from_server, &pr, grpc_schedule_on_exec_ctx), &pr.response); grpc_resource_quota_unref_internal(resource_quota); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(pr.mu); while (pr.port == -1) { grpc_pollset_worker* worker = NULL; if (!GRPC_LOG_IF_ERROR( "pollset_work", - grpc_pollset_work(grpc_polling_entity_pollset(&pr.pops), &worker, - ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { + grpc_pollset_work( + grpc_polling_entity_pollset(&pr.pops), &worker, + grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { pr.port = 0; } } diff --git a/test/core/util/test_tcp_server.cc b/test/core/util/test_tcp_server.cc index 7e17ff1f532..6418a7dfaa2 100644 --- a/test/core/util/test_tcp_server.cc +++ b/test/core/util/test_tcp_server.cc @@ -55,7 +55,7 @@ void test_tcp_server_start(test_tcp_server* server, int port) { grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; int port_added; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; addr->sin_family = AF_INET; addr->sin_port = htons((uint16_t)port); @@ -76,7 +76,7 @@ void test_tcp_server_start(test_tcp_server* server, int port) { void test_tcp_server_poll(test_tcp_server* server, int seconds) { grpc_pollset_worker* worker = NULL; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_millis deadline = grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(seconds)); gpr_mu_lock(server->mu); @@ -91,7 +91,7 @@ static void finish_pollset(void* arg, grpc_error* error) { } void test_tcp_server_destroy(test_tcp_server* server) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_timespec shutdown_deadline; grpc_closure do_nothing_cb; grpc_tcp_server_unref(server->tcp_server); diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc index 4cf39eab482..d4289850341 100644 --- a/test/cpp/end2end/client_lb_end2end_test.cc +++ b/test/cpp/end2end/client_lb_end2end_test.cc @@ -112,7 +112,7 @@ class ClientLbEnd2endTest : public ::testing::Test { } void SetNextResolution(const std::vector<int>& ports) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(ports.size(), NULL); for (size_t i = 0; i < ports.size(); ++i) { char* lb_uri_str; diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index 962d5a7e688..c5c53b8b8a8 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -451,7 +451,7 @@ class GrpclbEnd2endTest : public ::testing::Test { }; void SetNextResolution(const std::vector<AddressData>& address_data) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(address_data.size(), nullptr); for (size_t i = 0; i < address_data.size(); ++i) { diff --git a/test/cpp/grpclb/grpclb_test.cc b/test/cpp/grpclb/grpclb_test.cc index 6f6dd3c4df7..31103d9696e 100644 --- a/test/cpp/grpclb/grpclb_test.cc +++ b/test/cpp/grpclb/grpclb_test.cc @@ -558,7 +558,7 @@ static void perform_request(client_fixture* cf) { #define BALANCERS_NAME "lb.name" static void setup_client(const server_fixture* lb_server, const server_fixture* backends, client_fixture* cf) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; char* expected_target_names = NULL; const char* backends_name = lb_server->servers_hostport; diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index 47b984bc280..bb76a2e762b 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -521,7 +521,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { label << " #has_dummy_filter"; } - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; size_t channel_size = grpc_channel_stack_size( filters.size() == 0 ? NULL : &filters[0], filters.size()); grpc_channel_stack* channel_stack = @@ -534,7 +534,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { ? &dummy_transport::dummy_transport : nullptr, "CHANNEL", channel_stack))); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_call_stack* call_stack = static_cast<grpc_call_stack*>(gpr_zalloc(channel_stack->call_stack_size)); grpc_millis deadline = GRPC_MILLIS_INF_FUTURE; @@ -558,7 +558,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { typename TestOp::Op op(&test_op_data, call_stack); grpc_call_stack_destroy(call_stack, &final_info, NULL); op.Finish(); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); // recreate arena every 64k iterations to avoid oom if (0 == (state.iterations() & 0xffff)) { gpr_arena_destroy(call_args.arena); @@ -691,7 +691,7 @@ class IsolatedCallFixture : public TrackCounters { GPR_ASSERT(grpc_channel_stack_builder_append_filter( builder, &isolated_call_filter::isolated_call_filter, NULL, NULL)); { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; channel_ = grpc_channel_create_with_builder(builder, GRPC_CLIENT_CHANNEL); } cq_ = grpc_completion_queue_create_for_next(NULL); diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index f822f095a78..d4f78e60b7b 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -50,12 +50,12 @@ static grpc_slice MakeSlice(std::vector<uint8_t> bytes) { static void BM_HpackEncoderInitDestroy(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hpack_compressor c; while (state.KeepRunning()) { grpc_chttp2_hpack_compressor_init(&c); grpc_chttp2_hpack_compressor_destroy(&c); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -64,8 +64,8 @@ BENCHMARK(BM_HpackEncoderInitDestroy); static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; - grpc_millis saved_now = ExecCtx::Get()->Now(); + grpc_core::ExecCtx _local_exec_ctx; + grpc_millis saved_now = grpc_core::ExecCtx::Get()->Now(); grpc_metadata_batch b; grpc_metadata_batch_init(&b); @@ -87,7 +87,7 @@ static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { }; grpc_chttp2_encode_header(&c, NULL, 0, &b, &hopt, &outbuf); grpc_slice_buffer_reset_and_unref_internal(&outbuf); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } grpc_metadata_batch_destroy(&b); grpc_chttp2_hpack_compressor_destroy(&c); @@ -108,7 +108,7 @@ BENCHMARK(BM_HpackEncoderEncodeDeadline); template <class Fixture> static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; static bool logged_representative_output = false; grpc_metadata_batch b; @@ -144,7 +144,7 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { } } grpc_slice_buffer_reset_and_unref_internal(&outbuf); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } grpc_metadata_batch_destroy(&b); grpc_chttp2_hpack_compressor_destroy(&c); @@ -425,12 +425,12 @@ BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, static void BM_HpackParserInitDestroy(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_chttp2_hpack_parser p; while (state.KeepRunning()) { grpc_chttp2_hpack_parser_init(&p); grpc_chttp2_hpack_parser_destroy(&p); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -444,7 +444,7 @@ static void UnrefHeader(void* user_data, grpc_mdelem md) { template <class Fixture, void (*OnHeader)(void*, grpc_mdelem)> static void BM_HpackParserParseHeader(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; std::vector<grpc_slice> init_slices = Fixture::GetInitSlices(); std::vector<grpc_slice> benchmark_slices = Fixture::GetBenchmarkSlices(); grpc_chttp2_hpack_parser p; @@ -458,7 +458,7 @@ static void BM_HpackParserParseHeader(benchmark::State& state) { for (auto slice : benchmark_slices) { GPR_ASSERT(GRPC_ERROR_NONE == grpc_chttp2_hpack_parser_parse(&p, slice)); } - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } for (auto slice : init_slices) grpc_slice_unref(slice); for (auto slice : benchmark_slices) grpc_slice_unref(slice); diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index f6e4c2bcc43..caccde0cd9d 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -136,7 +136,7 @@ class Fixture { FlushExecCtx(); } - void FlushExecCtx() { ExecCtx::Get()->Flush(); } + void FlushExecCtx() { grpc_core::ExecCtx::Get()->Flush(); } ~Fixture() { grpc_transport_destroy(t_); } @@ -257,7 +257,7 @@ class Stream { static void BM_StreamCreateDestroy(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); grpc_transport_stream_op_batch op; @@ -303,7 +303,7 @@ class RepresentativeClientInitialMetadata { template <class Metadata> static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); grpc_transport_stream_op_batch op; @@ -354,7 +354,7 @@ BENCHMARK_TEMPLATE(BM_StreamCreateSendInitialMetadataDestroy, static void BM_TransportEmptyOp(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); s.Init(state); @@ -387,7 +387,7 @@ std::vector<std::unique_ptr<gpr_event>> done_events; static void BM_TransportStreamSend(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); auto s = std::unique_ptr<Stream>(new Stream(&f)); s->Init(state); @@ -517,7 +517,7 @@ static grpc_slice CreateIncomingDataSlice(size_t length, size_t frame_size) { static void BM_TransportStreamRecv(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); s.Init(state); diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc index ce8a0545153..64925fd3f9e 100644 --- a/test/cpp/microbenchmarks/bm_closure.cc +++ b/test/cpp/microbenchmarks/bm_closure.cc @@ -34,7 +34,7 @@ auto& force_library_initialization = Library::get(); static void BM_NoOpExecCtx(benchmark::State& state) { TrackCounters track_counters; while (state.KeepRunning()) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; } track_counters.Finish(state); } @@ -42,9 +42,9 @@ BENCHMARK(BM_NoOpExecCtx); static void BM_WellFlushed(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -68,7 +68,7 @@ static void BM_ClosureInitAgainstCombiner(benchmark::State& state) { TrackCounters track_counters; grpc_combiner* combiner = grpc_combiner_create(); grpc_closure c; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { benchmark::DoNotOptimize(GRPC_CLOSURE_INIT( &c, DoNothing, NULL, grpc_combiner_scheduler(combiner))); @@ -83,10 +83,10 @@ static void BM_ClosureRunOnExecCtx(benchmark::State& state) { TrackCounters track_counters; grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_RUN(&c, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -95,7 +95,7 @@ BENCHMARK(BM_ClosureRunOnExecCtx); static void BM_ClosureCreateAndRun(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_RUN( GRPC_CLOSURE_CREATE(DoNothing, NULL, grpc_schedule_on_exec_ctx), @@ -108,7 +108,7 @@ BENCHMARK(BM_ClosureCreateAndRun); static void BM_ClosureInitAndRun(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure c; while (state.KeepRunning()) { GRPC_CLOSURE_RUN( @@ -124,10 +124,10 @@ static void BM_ClosureSchedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -140,11 +140,11 @@ static void BM_ClosureSched2OnExecCtx(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_schedule_on_exec_ctx); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -159,12 +159,12 @@ static void BM_ClosureSched3OnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_schedule_on_exec_ctx); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } track_counters.Finish(state); @@ -176,7 +176,7 @@ static void BM_AcquireMutex(benchmark::State& state) { // for comparison with the combiner stuff below gpr_mu mu; gpr_mu_init(&mu); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { gpr_mu_lock(&mu); DoNothing(NULL, GRPC_ERROR_NONE); @@ -192,7 +192,7 @@ static void BM_TryAcquireMutex(benchmark::State& state) { // for comparison with the combiner stuff below gpr_mu mu; gpr_mu_init(&mu); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { if (gpr_mu_trylock(&mu)) { DoNothing(NULL, GRPC_ERROR_NONE); @@ -210,7 +210,7 @@ static void BM_AcquireSpinlock(benchmark::State& state) { TrackCounters track_counters; // for comparison with the combiner stuff below gpr_spinlock mu = GPR_SPINLOCK_INITIALIZER; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { gpr_spinlock_lock(&mu); DoNothing(NULL, GRPC_ERROR_NONE); @@ -225,7 +225,7 @@ static void BM_TryAcquireSpinlock(benchmark::State& state) { TrackCounters track_counters; // for comparison with the combiner stuff below gpr_spinlock mu = GPR_SPINLOCK_INITIALIZER; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { if (gpr_spinlock_trylock(&mu)) { DoNothing(NULL, GRPC_ERROR_NONE); @@ -244,10 +244,10 @@ static void BM_ClosureSchedOnCombiner(benchmark::State& state) { grpc_combiner* combiner = grpc_combiner_create(); grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, NULL, grpc_combiner_scheduler(combiner)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner, "finished"); @@ -262,11 +262,11 @@ static void BM_ClosureSched2OnCombiner(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner, "finished"); @@ -283,12 +283,12 @@ static void BM_ClosureSched3OnCombiner(benchmark::State& state) { GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner, "finished"); @@ -304,11 +304,11 @@ static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner1)); GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner1, "finished"); GRPC_COMBINER_UNREF(combiner2, "finished"); @@ -329,13 +329,13 @@ static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) { GRPC_CLOSURE_INIT(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); GRPC_CLOSURE_INIT(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner1)); GRPC_CLOSURE_INIT(&c4, DoNothing, NULL, grpc_combiner_scheduler(combiner2)); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c3, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c4, GRPC_ERROR_NONE); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } GRPC_COMBINER_UNREF(combiner1, "finished"); GRPC_COMBINER_UNREF(combiner2, "finished"); @@ -375,7 +375,7 @@ class Rescheduler { static void BM_ClosureReschedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; Rescheduler r(state, grpc_schedule_on_exec_ctx); r.ScheduleFirst(); @@ -385,11 +385,11 @@ BENCHMARK(BM_ClosureReschedOnExecCtx); static void BM_ClosureReschedOnCombiner(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_scheduler(combiner)); r.ScheduleFirst(); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GRPC_COMBINER_UNREF(combiner, "finished"); track_counters.Finish(state); @@ -398,11 +398,11 @@ BENCHMARK(BM_ClosureReschedOnCombiner); static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_finally_scheduler(combiner)); r.ScheduleFirstAgainstDifferentScheduler(grpc_combiner_scheduler(combiner)); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); GRPC_COMBINER_UNREF(combiner, "finished"); track_counters.Finish(state); diff --git a/test/cpp/microbenchmarks/bm_cq.cc b/test/cpp/microbenchmarks/bm_cq.cc index 9fb603213ac..85248ef91ac 100644 --- a/test/cpp/microbenchmarks/bm_cq.cc +++ b/test/cpp/microbenchmarks/bm_cq.cc @@ -80,7 +80,7 @@ static void BM_Pass1Cpp(benchmark::State& state) { while (state.KeepRunning()) { grpc_cq_completion completion; DummyTag dummy_tag; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(c_cq, &dummy_tag)); grpc_cq_end_op(c_cq, &dummy_tag, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, &completion); @@ -100,7 +100,7 @@ static void BM_Pass1Core(benchmark::State& state) { gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); while (state.KeepRunning()) { grpc_cq_completion completion; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, &completion); @@ -119,7 +119,7 @@ static void BM_Pluck1Core(benchmark::State& state) { gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); while (state.KeepRunning()) { grpc_cq_completion completion; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, NULL)); grpc_cq_end_op(cq, NULL, GRPC_ERROR_NONE, DoneWithCompletionOnStack, NULL, &completion); diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc index 0cd9a2c3613..aeeba0963f1 100644 --- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc @@ -76,7 +76,7 @@ static grpc_error* pollset_work(grpc_pollset* ps, grpc_pollset_worker** worker, GPR_ASSERT(grpc_cq_begin_op(g_cq, g_tag)); grpc_cq_end_op(g_cq, g_tag, GRPC_ERROR_NONE, cq_done_cb, NULL, (grpc_cq_completion*)gpr_malloc(sizeof(grpc_cq_completion))); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&ps->mu); return GRPC_ERROR_NONE; } diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index 8dc98ab9238..d6dba1d82f3 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -246,7 +246,7 @@ template <class Fixture> static void BM_ErrorGetStatus(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_status_code status; grpc_slice slice; @@ -261,7 +261,7 @@ template <class Fixture> static void BM_ErrorGetStatusCode(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_status_code status; grpc_error_get_status(fixture.error(), fixture.deadline(), &status, NULL, @@ -275,7 +275,7 @@ template <class Fixture> static void BM_ErrorHttpError(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { grpc_http2_error_code error; grpc_error_get_status(fixture.error(), fixture.deadline(), NULL, NULL, diff --git a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc index 191c93c58de..7b04909ee11 100644 --- a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc +++ b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc @@ -177,7 +177,7 @@ class TrickledCHTTP2 : public EndpointPairFixture { } void Step(bool update_stats) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; inc_time(); size_t client_backlog = grpc_trickle_endpoint_trickle(endpoint_pair_.client); diff --git a/test/cpp/microbenchmarks/bm_metadata.cc b/test/cpp/microbenchmarks/bm_metadata.cc index 07fcf6af991..3a00db7a133 100644 --- a/test/cpp/microbenchmarks/bm_metadata.cc +++ b/test/cpp/microbenchmarks/bm_metadata.cc @@ -90,7 +90,7 @@ static void BM_MetadataFromNonInternedSlices(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_from_static_string("key"); gpr_slice v = grpc_slice_from_static_string("value"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } @@ -103,7 +103,7 @@ static void BM_MetadataFromInternedSlices(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } @@ -119,7 +119,7 @@ static void BM_MetadataFromInternedSlicesAlreadyInIndex( TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem seed = grpc_mdelem_create(k, v, NULL); while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); @@ -136,7 +136,7 @@ static void BM_MetadataFromInternedKey(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_from_static_string("value"); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } @@ -152,7 +152,7 @@ static void BM_MetadataFromNonInternedSlicesWithBackingStore( gpr_slice k = grpc_slice_from_static_string("key"); gpr_slice v = grpc_slice_from_static_string("value"); char backing_store[sizeof(grpc_mdelem_data)]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); @@ -168,7 +168,7 @@ static void BM_MetadataFromInternedSlicesWithBackingStore( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); char backing_store[sizeof(grpc_mdelem_data)]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); @@ -186,7 +186,7 @@ static void BM_MetadataFromInternedKeyWithBackingStore( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_from_static_string("value"); char backing_store[sizeof(grpc_mdelem_data)]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); @@ -201,7 +201,7 @@ static void BM_MetadataFromStaticMetadataStrings(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = GRPC_MDSTR_STATUS; gpr_slice v = GRPC_MDSTR_200; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } @@ -216,7 +216,7 @@ static void BM_MetadataFromStaticMetadataStringsNotIndexed( TrackCounters track_counters; gpr_slice k = GRPC_MDSTR_STATUS; gpr_slice v = GRPC_MDSTR_GZIP; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, NULL)); } @@ -229,7 +229,7 @@ BENCHMARK(BM_MetadataFromStaticMetadataStringsNotIndexed); static void BM_MetadataRefUnrefExternal(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem el = grpc_mdelem_create( grpc_slice_from_static_string("a"), grpc_slice_from_static_string("b"), reinterpret_cast<grpc_mdelem_data*>(backing_store)); @@ -245,7 +245,7 @@ BENCHMARK(BM_MetadataRefUnrefExternal); static void BM_MetadataRefUnrefInterned(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); grpc_mdelem el = grpc_mdelem_create( @@ -263,7 +263,7 @@ BENCHMARK(BM_MetadataRefUnrefInterned); static void BM_MetadataRefUnrefAllocated(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem el = grpc_mdelem_create(grpc_slice_from_static_string("a"), grpc_slice_from_static_string("b"), NULL); while (state.KeepRunning()) { @@ -277,7 +277,7 @@ BENCHMARK(BM_MetadataRefUnrefAllocated); static void BM_MetadataRefUnrefStatic(benchmark::State& state) { TrackCounters track_counters; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_mdelem el = grpc_mdelem_create(GRPC_MDSTR_STATUS, GRPC_MDSTR_200, NULL); while (state.KeepRunning()) { GRPC_MDELEM_UNREF(GRPC_MDELEM_REF(el)); diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index 7ddca45eca2..59ee937fe42 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -50,7 +50,7 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { size_t ps_sz = grpc_pollset_size(); grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_malloc(ps_sz)); gpr_mu* mu; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); @@ -60,7 +60,7 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { gpr_mu_lock(mu); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } gpr_free(ps); @@ -114,7 +114,7 @@ static void BM_PollEmptyPollset(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_mu_lock(mu); while (state.KeepRunning()) { GRPC_ERROR_UNREF(grpc_pollset_work(ps, NULL, 0)); @@ -136,14 +136,14 @@ static void BM_PollAddFd(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_wakeup_fd wakeup_fd; GPR_ASSERT( GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd))); grpc_fd* fd = grpc_fd_create(wakeup_fd.read_fd, "xxx"); while (state.KeepRunning()) { grpc_pollset_add_fd(ps, fd); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); } grpc_fd_orphan(fd, NULL, NULL, false /* already_closed */, "xxx"); grpc_closure shutdown_ps_closure; @@ -218,7 +218,7 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; grpc_wakeup_fd wakeup_fd; GRPC_ERROR_UNREF(grpc_wakeup_fd_init(&wakeup_fd)); grpc_fd* wakeup = grpc_fd_create(wakeup_fd.read_fd, "wakeup_read"); diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index 075064eca73..4efcafa8e1e 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -166,7 +166,7 @@ class EndpointPairFixture : public BaseFixture { fixture_configuration.ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* add server endpoint to server_ * */ diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 8ba8be0ea48..ca8c26092af 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -171,7 +171,7 @@ void ArgsFinish(ArgsStruct* args) { grpc_pollset_shutdown(args->pollset, &DoNothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() grpc_channel_args_destroy(args->channel_args); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); GRPC_COMBINER_UNREF(args->lock, NULL); @@ -195,7 +195,7 @@ void PollPollsetUntilRequestDone(ArgsStruct* args) { time_left.tv_sec, time_left.tv_nsec); GPR_ASSERT(gpr_time_cmp(time_left, gpr_time_0(GPR_TIMESPAN)) >= 0); grpc_pollset_worker* worker = NULL; - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; gpr_mu_lock(args->mu); GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, @@ -274,7 +274,7 @@ void CheckResolverResultLocked(void* argsp, grpc_error* err) { } TEST(ResolverComponentTest, TestResolvesRelevantRecords) { - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; ArgsStruct args; ArgsInit(&args); args.expected_addrs = ParseExpectedAddrs(FLAGS_expected_addrs); @@ -294,7 +294,7 @@ TEST(ResolverComponentTest, TestResolvesRelevantRecords) { (void*)&args, grpc_combiner_scheduler(args.lock)); grpc_resolver_next_locked(resolver, &args.channel_args, &on_resolver_result_changed); - ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); PollPollsetUntilRequestDone(&args); GRPC_RESOLVER_UNREF(resolver, NULL); ArgsFinish(&args); diff --git a/test/cpp/performance/writes_per_rpc_test.cc b/test/cpp/performance/writes_per_rpc_test.cc index b9514e63066..ae658ff87c3 100644 --- a/test/cpp/performance/writes_per_rpc_test.cc +++ b/test/cpp/performance/writes_per_rpc_test.cc @@ -82,7 +82,7 @@ class EndpointPairFixture { ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; /* add server endpoint to server_ */ { From 995aa91bbbc68deb6dfd7c667cfee3af2bedec08 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Tue, 14 Nov 2017 18:21:18 -0800 Subject: [PATCH 09/22] Maintain exec_ctx flags initialization as it was before --- src/core/lib/iomgr/executor.cc | 2 +- src/core/lib/iomgr/timer_manager.cc | 2 +- src/core/lib/surface/init.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index 4db298c1c54..d26b89aea30 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -145,7 +145,7 @@ static void executor_thread(void* arg) { thread_state* ts = (thread_state*)arg; gpr_tls_set(&g_this_thread_state, (intptr_t)ts); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx(0); size_t subtract_depth = 0; for (;;) { diff --git a/src/core/lib/iomgr/timer_manager.cc b/src/core/lib/iomgr/timer_manager.cc index 6a43f4fadb2..ed03e48b32f 100644 --- a/src/core/lib/iomgr/timer_manager.cc +++ b/src/core/lib/iomgr/timer_manager.cc @@ -273,7 +273,7 @@ static void timer_thread_cleanup(completed_thread* ct) { static void timer_thread(void* completed_thread_ptr) { // this threads exec_ctx: we try to run things through to completion here // since it's easy to spin up new threads - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx(0); timer_main_loop(); timer_thread_cleanup((completed_thread*)completed_thread_ptr); diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index fdbf926f77b..16187b8478d 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -175,7 +175,7 @@ void grpc_init(void) { void grpc_shutdown(void) { int i; GRPC_API_TRACE("grpc_shutdown(void)", 0, ()); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx(0); gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { grpc_executor_shutdown(); From d48981221542a5bd760b64e5af379adb0e846bba Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Mon, 20 Nov 2017 13:04:30 -0800 Subject: [PATCH 10/22] changes for macos --- src/core/lib/iomgr/exec_ctx.cc | 11 ++++++- src/core/lib/iomgr/exec_ctx.h | 32 +++++++++++++++---- .../readahead_handshaker_server_ssl.cc | 18 ++++------- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index 8a4b489ebba..a5d65f3d2c7 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -161,7 +161,9 @@ static grpc_closure_scheduler exec_ctx_scheduler = {&exec_ctx_scheduler_vtable}; grpc_closure_scheduler* grpc_schedule_on_exec_ctx = &exec_ctx_scheduler; namespace grpc_core { +#ifndef GPR_PTHREAD_TLS thread_local ExecCtx* ExecCtx::exec_ctx_ = nullptr; +#endif bool ExecCtx::Flush() { bool did_something = 0; @@ -192,9 +194,16 @@ void ExecCtx::GlobalInit(void) { } // allows uniform treatment in conversion functions time_atm_pair_store(&g_start_time[GPR_TIMESPAN], gpr_time_0(GPR_TIMESPAN)); +#ifdef GPR_PTHREAD_TLS + gpr_tls_init(&exec_ctx_); +#endif } -void ExecCtx::GlobalShutdown(void) {} +void ExecCtx::GlobalShutdown(void) { +#ifdef GPR_PTHREAD_TLS + gpr_tls_destroy(&exec_ctx_); +#endif +} grpc_millis ExecCtx::Now() { if (!now_is_valid_) { diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index 0f2ee8d4faa..6320e13acb5 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -22,6 +22,7 @@ #include <grpc/support/atm.h> #include <grpc/support/cpu.h> #include <grpc/support/log.h> +#include <grpc/support/tls.h> #include "src/core/lib/iomgr/closure.h" @@ -70,17 +71,17 @@ namespace grpc_core { class ExecCtx { public: /** Default Constructor */ - ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { exec_ctx_ = this; } + ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { Set(this); } /** Parameterised Constructor */ - ExecCtx(uintptr_t fl) : flags_(fl) { exec_ctx_ = this; } + ExecCtx(uintptr_t fl) : flags_(fl) { Set(this); } /** Destructor */ ~ExecCtx() { - GPR_ASSERT(exec_ctx_ == this); + GPR_ASSERT(Get() == this); flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; Flush(); - exec_ctx_ = last_exec_ctx_; + Set(last_exec_ctx_); } /** Disallow copy and assignment operators */ @@ -166,13 +167,28 @@ on outside context */ static void GlobalShutdown(void); /** Gets pointer to current exec_ctx */ - static ExecCtx* Get() { return exec_ctx_; } + static ExecCtx* Get() { +#ifdef GPR_PTHREAD_TLS + return (ExecCtx*)gpr_tls_get(&exec_ctx_); +#else + return exec_ctx_; +#endif + } protected: /** Check if ready to finish */ virtual bool CheckReadyToFinish() { return false; } private: + /** Set exec_ctx_ to exec_ctx */ + void Set(ExecCtx* exec_ctx) { +#ifdef GPR_PTHREAD_THS + gpr_tls_set(&exec_ctx_, exec_ctx); +#else + exec_ctx_ = exec_ctx; +#endif + } + grpc_closure_list closure_list_ = GRPC_CLOSURE_LIST_INIT; CombinerData combiner_data_ = {nullptr, nullptr}; uintptr_t flags_; @@ -181,8 +197,12 @@ on outside context */ bool now_is_valid_ = false; grpc_millis now_ = 0; +#ifdef GPR_PTHREAD_TLS + GPR_TLS_DECL(exec_ctx_); +#else static thread_local ExecCtx* exec_ctx_; - ExecCtx* last_exec_ctx_ = exec_ctx_; +#endif + ExecCtx* last_exec_ctx_ = Get(); }; } // namespace grpc_core diff --git a/test/core/handshake/readahead_handshaker_server_ssl.cc b/test/core/handshake/readahead_handshaker_server_ssl.cc index f271200b7bc..599e0e16e2d 100644 --- a/test/core/handshake/readahead_handshaker_server_ssl.cc +++ b/test/core/handshake/readahead_handshaker_server_ssl.cc @@ -49,19 +49,16 @@ * to the security_handshaker). This test is meant to protect code relying on * this functionality that lives outside of this repo. */ -static void readahead_handshaker_destroy( - grpc_handshaker* handshaker) { +static void readahead_handshaker_destroy(grpc_handshaker* handshaker) { gpr_free(handshaker); } -static void readahead_handshaker_shutdown( - grpc_handshaker* handshaker, +static void readahead_handshaker_shutdown(grpc_handshaker* handshaker, grpc_error* error) {} static void readahead_handshaker_do_handshake( - grpc_handshaker* handshaker, - grpc_tcp_server_acceptor* acceptor, grpc_closure* on_handshake_done, - grpc_handshaker_args* args) { + grpc_handshaker* handshaker, grpc_tcp_server_acceptor* acceptor, + grpc_closure* on_handshake_done, grpc_handshaker_args* args) { grpc_endpoint_read(args->endpoint, args->read_buffer, on_handshake_done); } @@ -76,10 +73,9 @@ static grpc_handshaker* readahead_handshaker_create() { } static void readahead_handshaker_factory_add_handshakers( - grpc_handshaker_factory* hf, - const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) { - grpc_handshake_manager_add(handshake_mgr, - readahead_handshaker_create()); + grpc_handshaker_factory* hf, const grpc_channel_args* args, + grpc_handshake_manager* handshake_mgr) { + grpc_handshake_manager_add(handshake_mgr, readahead_handshaker_create()); } static void readahead_handshaker_factory_destroy( From a13a8c0f3ea9bdf70680c0c8b5667186c832a412 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Tue, 21 Nov 2017 19:38:09 -0800 Subject: [PATCH 11/22] A few src/core fixes due to missing exec_ctx_finish --- include/grpc/support/tls_gcc.h | 7 +++ include/grpc/support/tls_msvc.h | 3 + include/grpc/support/tls_pthread.h | 1 + src/core/lib/iomgr/ev_posix.cc | 2 +- src/core/lib/iomgr/resolve_address_posix.cc | 1 + src/core/lib/iomgr/tcp_uv.cc | 19 ++---- src/core/lib/surface/init.cc | 3 + test/core/bad_client/bad_client.cc | 6 +- test/core/end2end/bad_server_response_test.cc | 2 +- test/core/iomgr/resource_quota_test.cc | 60 +++++++++---------- test/core/iomgr/tcp_posix_test.cc | 1 + test/core/iomgr/tcp_server_posix_test.cc | 1 + test/core/iomgr/timer_list_test.cc | 12 ++-- test/core/iomgr/udp_server_test.cc | 2 +- test/core/security/jwt_verifier_test.cc | 14 ++--- test/core/security/secure_endpoint_test.cc | 1 + .../core/transport/connectivity_state_test.cc | 3 +- test/core/util/port_server_client.cc | 1 + test/cpp/client/client_channel_stress_test.cc | 11 ++-- 19 files changed, 82 insertions(+), 68 deletions(-) diff --git a/include/grpc/support/tls_gcc.h b/include/grpc/support/tls_gcc.h index 019acdf122e..170baf82ca4 100644 --- a/include/grpc/support/tls_gcc.h +++ b/include/grpc/support/tls_gcc.h @@ -37,6 +37,10 @@ struct gpr_gcc_thread_local { static bool name##_inited = false; \ static __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} +#define GPR_TLS_NON_STATIC_DECL(name) \ + bool name##_inited = false; \ + __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} + #define gpr_tls_init(tls) \ do { \ GPR_ASSERT(*((tls)->inited) == false); \ @@ -71,6 +75,9 @@ struct gpr_gcc_thread_local { #define GPR_TLS_DECL(name) \ static __thread struct gpr_gcc_thread_local name = {0} +#define GPR_TLS_NON_STATIC_DECL(name) \ + __thread struct gpr_gcc_thread_local name = {0} + #define gpr_tls_init(tls) \ do { \ } while (0) diff --git a/include/grpc/support/tls_msvc.h b/include/grpc/support/tls_msvc.h index e5f2205fc15..e3a0921912b 100644 --- a/include/grpc/support/tls_msvc.h +++ b/include/grpc/support/tls_msvc.h @@ -29,6 +29,9 @@ struct gpr_msvc_thread_local { #define GPR_TLS_DECL(name) \ static __declspec(thread) struct gpr_msvc_thread_local name = {0} +#define GPR_TLS_NON_STATIC_DECL(name) \ + __declspec(thread) struct gpr_msvc_thread_local name = {0} + #define gpr_tls_init(tls) \ do { \ } while (0) diff --git a/include/grpc/support/tls_pthread.h b/include/grpc/support/tls_pthread.h index fb0edd8e744..09768d84238 100644 --- a/include/grpc/support/tls_pthread.h +++ b/include/grpc/support/tls_pthread.h @@ -30,6 +30,7 @@ struct gpr_pthread_thread_local { }; #define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0} +#define GPR_TLS_NON_STATIC_DECL(name) struct gpr_pthread_thread_local name = {0} #define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL)) #define gpr_tls_destroy(tls) pthread_key_delete((tls)->key) diff --git a/src/core/lib/iomgr/ev_posix.cc b/src/core/lib/iomgr/ev_posix.cc index 6dd7dcea30c..d8a349fd30f 100644 --- a/src/core/lib/iomgr/ev_posix.cc +++ b/src/core/lib/iomgr/ev_posix.cc @@ -46,7 +46,7 @@ grpc_poll_function_type grpc_poll_function = poll; grpc_wakeup_fd grpc_global_wakeup_fd; -static const grpc_event_engine_vtable* g_event_engine; +static const grpc_event_engine_vtable* g_event_engine = nullptr; static const char* g_poll_strategy_name = nullptr; typedef const grpc_event_engine_vtable* (*event_engine_factory_fn)( diff --git a/src/core/lib/iomgr/resolve_address_posix.cc b/src/core/lib/iomgr/resolve_address_posix.cc index 6c9534a291e..cc3d4fd7cfa 100644 --- a/src/core/lib/iomgr/resolve_address_posix.cc +++ b/src/core/lib/iomgr/resolve_address_posix.cc @@ -42,6 +42,7 @@ static grpc_error* blocking_resolve_address_impl( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { + grpc_core::ExecCtx exec_ctx; struct addrinfo hints; struct addrinfo *result = nullptr, *resp; char* host; diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index d1e91357ea2..18037d77b4e 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -65,7 +65,7 @@ typedef struct { grpc_pollset* pollset; } grpc_tcp; -static void tcp_free(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp) { +static void tcp_free(grpc_tcp* tcp) { grpc_resource_user_unref(tcp->resource_user); gpr_free(tcp->handle); gpr_free(tcp->peer_string); @@ -126,11 +126,9 @@ static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size, * allocation was successful. So slices[0] should always exist here */ buf->base = (char*)GRPC_SLICE_START_PTR(tcp->read_slices->slices[0]); buf->len = GRPC_SLICE_LENGTH(tcp->read_slices->slices[0]); - grpc_exec_ctx_finish(); } -static void call_read_cb(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp, - grpc_error* error) { +static void call_read_cb(grpc_tcp* tcp, grpc_error* error) { grpc_closure* cb = tcp->read_cb; if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg); @@ -147,7 +145,7 @@ static void call_read_cb(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp, } tcp->read_slices = NULL; tcp->read_cb = NULL; - GRPC_CLOSURE_RUN(exec_ctx, cb, error); + GRPC_CLOSURE_RUN(, cb, error); } static void read_callback(uv_stream_t* stream, ssize_t nread, @@ -165,7 +163,7 @@ static void read_callback(uv_stream_t* stream, ssize_t nread, uv_read_stop(stream); if (nread == UV_EOF) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"); - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, tcp->read_slices); + grpc_slice_buffer_reset_and_unref_internal(tcp->read_slices); } else if (nread > 0) { // Successful read error = GRPC_ERROR_NONE; @@ -175,15 +173,14 @@ static void read_callback(uv_stream_t* stream, ssize_t nread, grpc_slice_buffer_init(&garbage); grpc_slice_buffer_trim_end( tcp->read_slices, tcp->read_slices->length - (size_t)nread, &garbage); - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &garbage); + grpc_slice_buffer_reset_and_unref_internal(&garbage); } } else { // nread < 0: Error error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed"); - grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, tcp->read_slices); + grpc_slice_buffer_reset_and_unref_internal(tcp->read_slices); } call_read_cb(tcp, error); - grpc_exec_ctx_finish(); } static void tcp_read_allocation_done(void* tcpp, grpc_error* error) { @@ -246,7 +243,6 @@ static void write_callback(uv_write_t* req, int status) { } gpr_free(tcp->write_buffers); GRPC_CLOSURE_SCHED(cb, error); - grpc_exec_ctx_finish(); } static void uv_endpoint_write(grpc_endpoint* ep, @@ -306,7 +302,6 @@ static void uv_endpoint_write(grpc_endpoint* ep, static void uv_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) { // No-op. We're ignoring pollsets currently - (void)exec_ctx; (void)ep; (void)pollset; grpc_tcp* tcp = (grpc_tcp*)ep; @@ -316,7 +311,6 @@ static void uv_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) { static void uv_add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pollset) { // No-op. We're ignoring pollsets currently - (void)exec_ctx; (void)ep; (void)pollset; } @@ -324,7 +318,6 @@ static void uv_add_to_pollset_set(grpc_endpoint* ep, static void uv_delete_from_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pollset) { // No-op. We're ignoring pollsets currently - (void)exec_ctx; (void)ep; (void)pollset; } diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 678f837cb72..cdbe01e1d45 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -151,6 +151,9 @@ void grpc_init(void) { void grpc_shutdown(void) { int i; GRPC_API_TRACE("grpc_shutdown(void)", 0, ()); + if (grpc_core::ExecCtx::Get()) { + grpc_core::ExecCtx::Get()->Flush(); + } grpc_core::ExecCtx _local_exec_ctx(0); gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { diff --git a/test/core/bad_client/bad_client.cc b/test/core/bad_client/bad_client.cc index 313c43f9b32..267933ff623 100644 --- a/test/core/bad_client/bad_client.cc +++ b/test/core/bad_client/bad_client.cc @@ -135,6 +135,7 @@ void grpc_run_bad_client_test( /* Write data */ grpc_endpoint_write(sfd.client, &outgoing, &done_write_closure); + grpc_core::ExecCtx::Get()->Flush(); /* Await completion, unless the request is large and write may not finish * before the peer shuts down. */ @@ -147,7 +148,7 @@ void grpc_run_bad_client_test( grpc_endpoint_shutdown( sfd.client, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Disconnect")); grpc_endpoint_destroy(sfd.client); - + grpc_core::ExecCtx::Get()->Flush(); sfd.client = nullptr; } @@ -167,7 +168,7 @@ void grpc_run_bad_client_test( GRPC_CLOSURE_INIT(&read_done_closure, read_done, &read_done_event, grpc_schedule_on_exec_ctx); grpc_endpoint_read(sfd.client, &incoming, &read_done_closure); - + grpc_core::ExecCtx::Get()->Flush(); do { GPR_ASSERT(gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) > 0); GPR_ASSERT( @@ -186,6 +187,7 @@ void grpc_run_bad_client_test( grpc_endpoint_shutdown( sfd.client, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); grpc_endpoint_destroy(sfd.client); + grpc_core::ExecCtx::Get()->Flush(); } GPR_ASSERT( diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc index 576d39b319d..d3237839254 100644 --- a/test/core/end2end/bad_server_response_test.cc +++ b/test/core/end2end/bad_server_response_test.cc @@ -290,7 +290,7 @@ static void run_test(const char* response_payload, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown")); grpc_endpoint_destroy(state.tcp); cleanup_rpc(); - + grpc_core::ExecCtx::Get()->Flush(); test_tcp_server_destroy(&test_server); grpc_shutdown(); diff --git a/test/core/iomgr/resource_quota_test.cc b/test/core/iomgr/resource_quota_test.cc index b44e8ce1be8..7d793937b26 100644 --- a/test/core/iomgr/resource_quota_test.cc +++ b/test/core/iomgr/resource_quota_test.cc @@ -154,7 +154,7 @@ static void test_simple_async_alloc(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); } @@ -177,7 +177,7 @@ static void test_async_alloc_blocked_by_size(void) { { grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); } @@ -204,7 +204,7 @@ static void test_scavenge(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -218,7 +218,7 @@ static void test_scavenge(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -243,7 +243,7 @@ static void test_scavenge_blocked(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -252,14 +252,14 @@ static void test_scavenge_blocked(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); } { grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr1, 1024); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -284,7 +284,7 @@ static void test_blocked_until_scheduled_reclaim(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -301,7 +301,7 @@ static void test_blocked_until_scheduled_reclaim(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != nullptr); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -328,7 +328,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -345,7 +345,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != nullptr); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -372,7 +372,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -389,7 +389,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaim_done, grpc_timeout_seconds_to_deadline(5)) != nullptr); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -420,7 +420,7 @@ static void test_unused_reclaim_is_cancelled(void) { usr, false, make_unused_reclaimer(set_event(&benign_done))); grpc_resource_user_post_reclaimer( usr, true, make_unused_reclaimer(set_event(&destructive_done))); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); @@ -451,7 +451,7 @@ static void test_benign_reclaim_is_preferred(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -462,7 +462,7 @@ static void test_benign_reclaim_is_preferred(void) { usr, false, make_reclaimer(usr, 1024, set_event(&benign_done))); grpc_resource_user_post_reclaimer( usr, true, make_unused_reclaimer(set_event(&destructive_done))); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); @@ -475,7 +475,7 @@ static void test_benign_reclaim_is_preferred(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_seconds_to_deadline(5)) != nullptr); GPR_ASSERT(gpr_event_wait(&destructive_done, @@ -511,7 +511,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); ; @@ -522,7 +522,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { usr, false, make_reclaimer(usr, 512, set_event(&benign_done))); grpc_resource_user_post_reclaimer( usr, true, make_reclaimer(usr, 512, set_event(&destructive_done))); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); @@ -535,7 +535,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { gpr_event_init(&ev); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, grpc_timeout_seconds_to_deadline(5)) != nullptr); GPR_ASSERT(gpr_event_wait(&destructive_done, @@ -597,7 +597,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_unused_reclaimer(set_event(&reclaimer_cancelled))); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); @@ -607,7 +607,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( gpr_event_init(&allocated); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -617,7 +617,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_unref(usr); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); @@ -625,7 +625,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_free(usr, 1024); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, grpc_timeout_seconds_to_deadline(5)) != nullptr); @@ -645,7 +645,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event_init(&allocated); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != nullptr); } @@ -656,7 +656,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaimer_done))); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaimer_done, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); @@ -666,7 +666,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event_init(&allocated); grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&allocated, grpc_timeout_seconds_to_deadline(5)) != NULL); GPR_ASSERT(gpr_event_wait(&reclaimer_done, @@ -701,7 +701,7 @@ static void test_one_slice(void) { const int start_allocs = num_allocs; grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); - + grpc_core::ExecCtx::Get()->Flush(); assert_counter_becomes(&num_allocs, start_allocs + 1); } @@ -733,7 +733,7 @@ static void test_one_slice_deleted_late(void) { const int start_allocs = num_allocs; grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); - + grpc_core::ExecCtx::Get()->Flush(); assert_counter_becomes(&num_allocs, start_allocs + 1); } @@ -775,7 +775,7 @@ static void test_negative_rq_free_pool(void) { const int start_allocs = num_allocs; grpc_core::ExecCtx _local_exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); - + grpc_core::ExecCtx::Get()->Flush(); assert_counter_becomes(&num_allocs, start_allocs + 1); } diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc index 4018fe50bda..614ceaa02d3 100644 --- a/test/core/iomgr/tcp_posix_test.cc +++ b/test/core/iomgr/tcp_posix_test.cc @@ -549,6 +549,7 @@ int main(int argc, char** argv) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_core::ExecCtx::Get()->Flush(); grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc index ba9fe92c9c5..a4dfa9e7725 100644 --- a/test/core/iomgr/tcp_server_posix_test.cc +++ b/test/core/iomgr/tcp_server_posix_test.cc @@ -411,6 +411,7 @@ static void test_connect(size_t num_connects, GPR_ASSERT(grpc_tcp_server_port_fd(s, 0, 0) >= 0); grpc_tcp_server_unref(s); + grpc_core::ExecCtx::Get()->Flush(); /* Weak ref lost. */ GPR_ASSERT(weak_ref.server == nullptr); diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc index a4a53a0e46c..329b767f326 100644 --- a/test/core/iomgr/timer_list_test.cc +++ b/test/core/iomgr/timer_list_test.cc @@ -72,7 +72,7 @@ static void add_test(void) { /* collect timers. Only the first batch should be ready. */ grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 500); GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED); - + grpc_core::ExecCtx::Get()->Flush(); for (i = 0; i < 20; i++) { GPR_ASSERT(cb_called[i][1] == (i < 10)); GPR_ASSERT(cb_called[i][0] == 0); @@ -80,7 +80,7 @@ static void add_test(void) { grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 600); GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_CHECKED_AND_EMPTY); - + grpc_core::ExecCtx::Get()->Flush(); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 10)); GPR_ASSERT(cb_called[i][0] == 0); @@ -89,7 +89,7 @@ static void add_test(void) { /* collect the rest of the timers */ grpc_core::ExecCtx::Get()->TestOnlySetNow(start + 1500); GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED); - + grpc_core::ExecCtx::Get()->Flush(); for (i = 0; i < 30; i++) { GPR_ASSERT(cb_called[i][1] == (i < 20)); GPR_ASSERT(cb_called[i][0] == 0); @@ -135,16 +135,16 @@ void destruction_test(void) { GRPC_CLOSURE_CREATE(cb, (void*)(intptr_t)4, grpc_schedule_on_exec_ctx)); grpc_core::ExecCtx::Get()->TestOnlySetNow(2); GPR_ASSERT(grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(1 == cb_called[4][1]); grpc_timer_cancel(&timers[0]); grpc_timer_cancel(&timers[3]); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(1 == cb_called[0][0]); GPR_ASSERT(1 == cb_called[3][0]); grpc_timer_list_shutdown(); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(1 == cb_called[1][0]); GPR_ASSERT(1 == cb_called[2][0]); } diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc index 2c5719f4ae6..e271acbeef4 100644 --- a/test/core/iomgr/udp_server_test.cc +++ b/test/core/iomgr/udp_server_test.cc @@ -308,7 +308,7 @@ int main(int argc, char** argv) { GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(g_pollset, &destroyed); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(g_pollset); grpc_shutdown(); return 0; diff --git a/test/core/security/jwt_verifier_test.cc b/test/core/security/jwt_verifier_test.cc index dd798ec1d1c..ec14fec6978 100644 --- a/test/core/security/jwt_verifier_test.cc +++ b/test/core/security/jwt_verifier_test.cc @@ -366,7 +366,7 @@ static void test_jwt_verifier_google_email_issuer_success(void) { grpc_jwt_verifier_verify(verifier, nullptr, jwt, expected_audience, on_verification_success, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(jwt); grpc_httpcli_set_override(nullptr, nullptr); } @@ -399,7 +399,7 @@ static void test_jwt_verifier_custom_email_issuer_success(void) { grpc_jwt_verifier_verify(verifier, nullptr, jwt, expected_audience, on_verification_success, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(jwt); grpc_httpcli_set_override(nullptr, nullptr); } @@ -446,7 +446,7 @@ static void test_jwt_verifier_url_issuer_success(void) { grpc_jwt_verifier_verify(verifier, nullptr, jwt, expected_audience, on_verification_success, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(jwt); grpc_httpcli_set_override(nullptr, nullptr); } @@ -486,7 +486,7 @@ static void test_jwt_verifier_url_issuer_bad_config(void) { on_verification_key_retrieval_error, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(jwt); grpc_httpcli_set_override(nullptr, nullptr); } @@ -509,7 +509,7 @@ static void test_jwt_verifier_bad_json_key(void) { on_verification_key_retrieval_error, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(jwt); grpc_httpcli_set_override(nullptr, nullptr); } @@ -562,7 +562,7 @@ static void test_jwt_verifier_bad_signature(void) { (void*)expected_user_data); gpr_free(jwt); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); grpc_httpcli_set_override(nullptr, nullptr); } @@ -591,7 +591,7 @@ static void test_jwt_verifier_bad_format(void) { on_verification_bad_format, (void*)expected_user_data); grpc_jwt_verifier_destroy(verifier); - + grpc_core::ExecCtx::Get()->Flush(); grpc_httpcli_set_override(nullptr, nullptr); } diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc index 14ca0a89275..694a8584ea0 100644 --- a/test/core/security/secure_endpoint_test.cc +++ b/test/core/security/secure_endpoint_test.cc @@ -181,6 +181,7 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { GRPC_CLOSURE_INIT(&done_closure, inc_call_ctr, &n, grpc_schedule_on_exec_ctx); grpc_endpoint_read(f.client_ep, &incoming, &done_closure); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(n == 1); GPR_ASSERT(incoming.count == 1); GPR_ASSERT(grpc_slice_eq(s, incoming.slices[0])); diff --git a/test/core/transport/connectivity_state_test.cc b/test/core/transport/connectivity_state_test.cc index feb603cd235..99bd0fc65f0 100644 --- a/test/core/transport/connectivity_state_test.cc +++ b/test/core/transport/connectivity_state_test.cc @@ -107,6 +107,7 @@ static void test_subscribe_then_destroy(void) { GPR_ASSERT(g_counter == 0); grpc_connectivity_state_destroy(&tracker); + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 1); } @@ -126,7 +127,7 @@ static void test_subscribe_with_failure_then_destroy(void) { GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 0); grpc_connectivity_state_destroy(&tracker); - + grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(state == GRPC_CHANNEL_SHUTDOWN); GPR_ASSERT(g_counter == 1); } diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc index 7efa951862b..9d0cb20bbda 100644 --- a/test/core/util/port_server_client.cc +++ b/test/core/util/port_server_client.cc @@ -241,6 +241,7 @@ int grpc_pick_port_using_server(void) { grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), shutdown_closure); + grpc_core::ExecCtx::Get()->Flush(); grpc_shutdown(); return pr.port; diff --git a/test/cpp/client/client_channel_stress_test.cc b/test/cpp/client/client_channel_stress_test.cc index 8940f6ff9e8..bdb0441bd7c 100644 --- a/test/cpp/client/client_channel_stress_test.cc +++ b/test/cpp/client/client_channel_stress_test.cc @@ -214,13 +214,13 @@ class ClientChannelStressTest { }; void SetNextResolution(const std::vector<AddressData>& address_data) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_core::ExecCtx exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(address_data.size(), nullptr); for (size_t i = 0; i < address_data.size(); ++i) { char* lb_uri_str; gpr_asprintf(&lb_uri_str, "ipv4:127.0.0.1:%d", address_data[i].port); - grpc_uri* lb_uri = grpc_uri_parse(&exec_ctx, lb_uri_str, true); + grpc_uri* lb_uri = grpc_uri_parse(lb_uri_str, true); GPR_ASSERT(lb_uri != nullptr); grpc_lb_addresses_set_address_from_uri( addresses, i, lb_uri, address_data[i].is_balancer, @@ -230,10 +230,9 @@ class ClientChannelStressTest { } grpc_arg fake_addresses = grpc_lb_addresses_create_channel_arg(addresses); grpc_channel_args fake_result = {1, &fake_addresses}; - grpc_fake_resolver_response_generator_set_response( - &exec_ctx, response_generator_, &fake_result); - grpc_lb_addresses_destroy(&exec_ctx, addresses); - grpc_exec_ctx_finish(&exec_ctx); + grpc_fake_resolver_response_generator_set_response(response_generator_, + &fake_result); + grpc_lb_addresses_destroy(addresses); } void KeepSendingRequests() { From eaf67dbdf67821b76e67066f201f2fafe1f5859c Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Wed, 22 Nov 2017 16:03:32 -0800 Subject: [PATCH 12/22] Fixing errors and minor bugs --- src/core/lib/iomgr/exec_ctx.cc | 20 +++++++------------- src/core/lib/iomgr/exec_ctx.h | 20 +++++++++++--------- src/core/lib/iomgr/pollset_uv.cc | 2 +- src/core/lib/iomgr/pollset_windows.cc | 2 +- test/core/util/test_tcp_server.cc | 2 +- test/cpp/microbenchmarks/bm_pollset.cc | 8 ++++---- 6 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index 4bd92a41419..25ff686188f 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -108,6 +108,13 @@ namespace grpc_core { thread_local ExecCtx* ExecCtx::exec_ctx_ = nullptr; #endif +void ExecCtx::GlobalInit(void) { + g_start_time = gpr_now(GPR_CLOCK_MONOTONIC); +#ifdef GPR_PTHREAD_TLS + gpr_tls_init(&exec_ctx_); +#endif +} + bool ExecCtx::Flush() { bool did_something = 0; GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0); @@ -131,19 +138,6 @@ bool ExecCtx::Flush() { return did_something; } -void ExecCtx::GlobalInit(void) { - g_start_time = gpr_now(GPR_CLOCK_MONOTONIC); -#ifdef GPR_PTHREAD_TLS - gpr_tls_init(&exec_ctx_); -#endif -} - -void ExecCtx::GlobalShutdown(void) { -#ifdef GPR_PTHREAD_TLS - gpr_tls_destroy(&exec_ctx_); -#endif -} - grpc_millis ExecCtx::Now() { if (!now_is_valid_) { now_ = timespec_to_atm_round_down(gpr_now(GPR_CLOCK_MONOTONIC)); diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index 6320e13acb5..6c310a4fd61 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -47,6 +47,12 @@ typedef struct grpc_combiner grpc_combiner; should be given to not delete said call/channel from this exec_ctx */ #define GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP 2 +extern grpc_closure_scheduler* grpc_schedule_on_exec_ctx; + +gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock); +grpc_millis grpc_timespec_to_millis_round_down(gpr_timespec timespec); +grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec timespec); + namespace grpc_core { /** Execution context. * A bag of data that collects information along a callstack. @@ -164,7 +170,11 @@ on outside context */ static void GlobalInit(void); /** Global shutdown for ExecCtx. Called by iomgr */ - static void GlobalShutdown(void); + static void GlobalShutdown(void) { +#ifdef GPR_PTHREAD_TLS + gpr_tls_destroy(&exec_ctx_); +#endif + } /** Gets pointer to current exec_ctx */ static ExecCtx* Get() { @@ -206,14 +216,6 @@ on outside context */ }; } // namespace grpc_core -extern grpc_closure_scheduler* grpc_schedule_on_exec_ctx; - -gpr_timespec grpc_millis_to_timespec(grpc_millis millis, gpr_clock_type clock); -grpc_millis grpc_timespec_to_millis_round_down(gpr_timespec timespec); -grpc_millis grpc_timespec_to_millis_round_up(gpr_timespec timespec); - -void grpc_exec_ctx_maybe_update_start_time(); - #ifdef __cplusplus } #endif diff --git a/src/core/lib/iomgr/pollset_uv.cc b/src/core/lib/iomgr/pollset_uv.cc index d040c0cccb6..d9e5ad81be4 100644 --- a/src/core/lib/iomgr/pollset_uv.cc +++ b/src/core/lib/iomgr/pollset_uv.cc @@ -139,7 +139,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, uv_run(uv_default_loop(), UV_RUN_NOWAIT); } } - if (!grpc_closure_list_empty(exec_ctx->closure_list)) { + if (!grpc_closure_list_empty(*grpc_core::ExecCtx::Get()->closure_list())) { grpc_core::ExecCtx::Get()->Flush(); } gpr_mu_lock(&grpc_polling_mu); diff --git a/src/core/lib/iomgr/pollset_windows.cc b/src/core/lib/iomgr/pollset_windows.cc index 162037a8da4..6ef949aad70 100644 --- a/src/core/lib/iomgr/pollset_windows.cc +++ b/src/core/lib/iomgr/pollset_windows.cc @@ -166,7 +166,7 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset, pollset->kicked_without_pollers = 0; } done: - if (!grpc_closure_list_empty(exec_ctx->closure_list)) { + if (!grpc_closure_list_empty(*grpc_core::ExecCtx::Get()->closure_list())) { gpr_mu_unlock(&grpc_polling_mu); grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(&grpc_polling_mu); diff --git a/test/core/util/test_tcp_server.cc b/test/core/util/test_tcp_server.cc index 71e6f3af2c7..b94297addab 100644 --- a/test/core/util/test_tcp_server.cc +++ b/test/core/util/test_tcp_server.cc @@ -106,7 +106,7 @@ void test_tcp_server_destroy(test_tcp_server* server) { grpc_pollset_shutdown(server->pollset, GRPC_CLOSURE_CREATE(finish_pollset, server->pollset, grpc_schedule_on_exec_ctx)); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(server->pollset); grpc_shutdown(); } diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index ec0bf4e4b9b..9a859b51eac 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -62,7 +62,7 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { gpr_mu_unlock(mu); grpc_core::ExecCtx::Get()->Flush(); } - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(ps); track_counters.Finish(state); } @@ -124,7 +124,7 @@ static void BM_PollEmptyPollset(benchmark::State& state) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(ps); track_counters.Finish(state); } @@ -152,7 +152,7 @@ static void BM_PollAddFd(benchmark::State& state) { gpr_mu_lock(mu); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - + grpc_core::ExecCtx::Get()->Flush(); gpr_free(ps); track_counters.Finish(state); } @@ -248,7 +248,7 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { grpc_schedule_on_exec_ctx); grpc_pollset_shutdown(ps, &shutdown_ps_closure); gpr_mu_unlock(mu); - + grpc_core::ExecCtx::Get()->Flush(); grpc_wakeup_fd_destroy(&wakeup_fd); gpr_free(ps); track_counters.Finish(state); From ba0689fa2a7fa5f0684d6ce0cde61f453d565ef5 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Mon, 27 Nov 2017 09:22:38 -0800 Subject: [PATCH 13/22] tls macro changes and UV fix --- include/grpc/impl/codegen/port_platform.h | 1 + include/grpc/support/tls_gcc.h | 16 ++++++++++++---- include/grpc/support/tls_msvc.h | 8 +++++++- include/grpc/support/tls_pthread.h | 10 +++++++++- src/core/lib/iomgr/exec_ctx.cc | 6 ++++-- src/core/lib/iomgr/exec_ctx.h | 14 +++++++------- src/core/lib/iomgr/tcp_uv.cc | 2 +- 7 files changed, 41 insertions(+), 16 deletions(-) diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index 1906886d5e2..de27a53e268 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -182,6 +182,7 @@ #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif +#define TLS_NO_SUPPORT 1 #if TARGET_OS_IPHONE #define GPR_PLATFORM_STRING "ios" #define GPR_CPU_IPHONE 1 diff --git a/include/grpc/support/tls_gcc.h b/include/grpc/support/tls_gcc.h index 170baf82ca4..c926400e8e6 100644 --- a/include/grpc/support/tls_gcc.h +++ b/include/grpc/support/tls_gcc.h @@ -33,12 +33,18 @@ struct gpr_gcc_thread_local { bool* inited; }; +/** Use GPR_TLS_DECL to declare tls static variables outside a class */ #define GPR_TLS_DECL(name) \ static bool name##_inited = false; \ static __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} -#define GPR_TLS_NON_STATIC_DECL(name) \ - bool name##_inited = false; \ +/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DECL(name) \ + static bool name##_inited = false; \ + static __thread struct gpr_gcc_thread_local name + +#define GPR_TLS_CLASS_DEF(name) \ __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} #define gpr_tls_init(tls) \ @@ -75,8 +81,10 @@ struct gpr_gcc_thread_local { #define GPR_TLS_DECL(name) \ static __thread struct gpr_gcc_thread_local name = {0} -#define GPR_TLS_NON_STATIC_DECL(name) \ - __thread struct gpr_gcc_thread_local name = {0} +#define GPR_TLS_CLASS_DECL(name) \ + static __thread struct gpr_gcc_thread_local name + +#define GPR_TLS_CLASS_DEF(name) __thread struct gpr_gcc_thread_local name = {0} #define gpr_tls_init(tls) \ do { \ diff --git a/include/grpc/support/tls_msvc.h b/include/grpc/support/tls_msvc.h index e3a0921912b..68a411f5d46 100644 --- a/include/grpc/support/tls_msvc.h +++ b/include/grpc/support/tls_msvc.h @@ -26,10 +26,16 @@ struct gpr_msvc_thread_local { intptr_t value; }; +/** Use GPR_TLS_DECL to declare tls static variables outside a class */ #define GPR_TLS_DECL(name) \ static __declspec(thread) struct gpr_msvc_thread_local name = {0} -#define GPR_TLS_NON_STATIC_DECL(name) \ +/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DECL(name) \ + static __declspec(thread) struct gpr_msvc_thread_local name + +#define GPR_TLS_CLASS_DEF(name) \ __declspec(thread) struct gpr_msvc_thread_local name = {0} #define gpr_tls_init(tls) \ diff --git a/include/grpc/support/tls_pthread.h b/include/grpc/support/tls_pthread.h index 09768d84238..249c8b16f85 100644 --- a/include/grpc/support/tls_pthread.h +++ b/include/grpc/support/tls_pthread.h @@ -29,8 +29,16 @@ struct gpr_pthread_thread_local { pthread_key_t key; }; +/** Use GPR_TLS_DECL to declare tls static variables outside a class */ #define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0} -#define GPR_TLS_NON_STATIC_DECL(name) struct gpr_pthread_thread_local name = {0} + +/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DECL(name) static struct gpr_pthread_thread_local name + +/** Use GPR_TLS_CLASS_DEF to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DEF(name) struct gpr_pthread_thread_local name = {0} #define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL)) #define gpr_tls_destroy(tls) pthread_key_delete((tls)->key) diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index 25ff686188f..f4247db754d 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -104,13 +104,15 @@ static grpc_closure_scheduler exec_ctx_scheduler = {&exec_ctx_scheduler_vtable}; grpc_closure_scheduler* grpc_schedule_on_exec_ctx = &exec_ctx_scheduler; namespace grpc_core { -#ifndef GPR_PTHREAD_TLS +#ifdef TLS_NO_SUPPORT +GPR_TLS_CLASS_DEF(ExecCtx::exec_ctx_); +#else thread_local ExecCtx* ExecCtx::exec_ctx_ = nullptr; #endif void ExecCtx::GlobalInit(void) { g_start_time = gpr_now(GPR_CLOCK_MONOTONIC); -#ifdef GPR_PTHREAD_TLS +#ifdef TLS_NO_SUPPORT gpr_tls_init(&exec_ctx_); #endif } diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index 6c310a4fd61..3a44d691b73 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -171,15 +171,15 @@ on outside context */ /** Global shutdown for ExecCtx. Called by iomgr */ static void GlobalShutdown(void) { -#ifdef GPR_PTHREAD_TLS +#ifdef TLS_NO_SUPPORT gpr_tls_destroy(&exec_ctx_); #endif } /** Gets pointer to current exec_ctx */ static ExecCtx* Get() { -#ifdef GPR_PTHREAD_TLS - return (ExecCtx*)gpr_tls_get(&exec_ctx_); +#ifdef TLS_NO_SUPPORT + return reinterpret_cast<ExecCtx*>(gpr_tls_get(&exec_ctx_)); #else return exec_ctx_; #endif @@ -192,8 +192,8 @@ on outside context */ private: /** Set exec_ctx_ to exec_ctx */ void Set(ExecCtx* exec_ctx) { -#ifdef GPR_PTHREAD_THS - gpr_tls_set(&exec_ctx_, exec_ctx); +#ifdef TLS_NO_SUPPORT + gpr_tls_set(&exec_ctx_, reinterpret_cast<intptr_t>(exec_ctx)); #else exec_ctx_ = exec_ctx; #endif @@ -207,8 +207,8 @@ on outside context */ bool now_is_valid_ = false; grpc_millis now_ = 0; -#ifdef GPR_PTHREAD_TLS - GPR_TLS_DECL(exec_ctx_); +#ifdef TLS_NO_SUPPORT + GPR_TLS_CLASS_DECL(exec_ctx_); #else static thread_local ExecCtx* exec_ctx_; #endif diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index 18037d77b4e..d41ddaf4280 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -145,7 +145,7 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error* error) { } tcp->read_slices = NULL; tcp->read_cb = NULL; - GRPC_CLOSURE_RUN(, cb, error); + GRPC_CLOSURE_RUN(cb, error); } static void read_callback(uv_stream_t* stream, ssize_t nread, From 6fbe010851bd2041e98468f5befef5d6e3d598b0 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Mon, 27 Nov 2017 13:46:18 -0800 Subject: [PATCH 14/22] minor objc test change --- .../tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm | 5 ++--- tools/codegen/core/gen_static_metadata.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm index d5e668a858a..55c5105de4c 100644 --- a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm +++ b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm @@ -110,13 +110,12 @@ static void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) { static void cronet_init_client_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx ctx = GRPC_EXEC_CTX_INIT; + grpc_exec_ctx _local_exec_ctx; stream_engine *cronetEngine = [Cronet getGlobalEngine]; grpc_channel_args *new_client_args = grpc_channel_args_copy(client_args); cronet_init_client_secure_fullstack(f, new_client_args, cronetEngine); - grpc_channel_args_destroy(&ctx, new_client_args); - grpc_exec_ctx_finish(&ctx); + grpc_channel_args_destroy(new_client_args); } static int fail_server_auth_check(grpc_channel_args *server_args) { diff --git a/tools/codegen/core/gen_static_metadata.py b/tools/codegen/core/gen_static_metadata.py index 355f3f4e232..7847b8ed1de 100755 --- a/tools/codegen/core/gen_static_metadata.py +++ b/tools/codegen/core/gen_static_metadata.py @@ -395,7 +395,7 @@ print >> C, 'static uint8_t g_bytes[] = {%s};' % ( ','.join('%d' % ord(c) for c in ''.join(all_strs))) print >> C print >> C, 'static void static_ref(void *unused) {}' -print >> C, 'static void static_unref(grpc_exec_ctx *exec_ctx, void *unused) {}' +print >> C, 'static void static_unref(void *unused) {}' print >> C, ('static const grpc_slice_refcount_vtable static_sub_vtable = ' '{static_ref, static_unref, grpc_slice_default_eq_impl, ' 'grpc_slice_default_hash_impl};') From 45b7ad5cf51ad97314d769ed70cfcda53d41b9d1 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Mon, 27 Nov 2017 15:35:21 -0800 Subject: [PATCH 15/22] GPR_TLS Macro fix, and windows resolve_address fix --- include/grpc/support/tls_gcc.h | 3 ++- src/core/lib/iomgr/resolve_address_windows.cc | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/grpc/support/tls_gcc.h b/include/grpc/support/tls_gcc.h index c926400e8e6..136cb75dac7 100644 --- a/include/grpc/support/tls_gcc.h +++ b/include/grpc/support/tls_gcc.h @@ -41,10 +41,11 @@ struct gpr_gcc_thread_local { /** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. * GPR_TLS_CLASS_DEF needs to be called to define this member. */ #define GPR_TLS_CLASS_DECL(name) \ - static bool name##_inited = false; \ + static bool name##_inited; \ static __thread struct gpr_gcc_thread_local name #define GPR_TLS_CLASS_DEF(name) \ + bool name##_inited = false; \ __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} #define gpr_tls_init(tls) \ diff --git a/src/core/lib/iomgr/resolve_address_windows.cc b/src/core/lib/iomgr/resolve_address_windows.cc index 4e2bc7b5cab..ccb1dae689c 100644 --- a/src/core/lib/iomgr/resolve_address_windows.cc +++ b/src/core/lib/iomgr/resolve_address_windows.cc @@ -51,6 +51,7 @@ typedef struct { static grpc_error* blocking_resolve_address_impl( const char* name, const char* default_port, grpc_resolved_addresses** addresses) { + grpc_core::ExecCtx exec_ctx; struct addrinfo hints; struct addrinfo *result = NULL, *resp; char* host; From 3285f4c7329bf4305133be74f88dd4b10d5e2052 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Mon, 27 Nov 2017 15:58:44 -0800 Subject: [PATCH 16/22] Fix grpc_init by removing exec_ctx usage before init --- include/grpc/support/tls_gcc.h | 6 +++--- src/core/lib/iomgr/iomgr.cc | 7 +++++-- src/core/lib/surface/init.cc | 1 - 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/grpc/support/tls_gcc.h b/include/grpc/support/tls_gcc.h index 136cb75dac7..e0ef6b2789b 100644 --- a/include/grpc/support/tls_gcc.h +++ b/include/grpc/support/tls_gcc.h @@ -40,12 +40,12 @@ struct gpr_gcc_thread_local { /** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. * GPR_TLS_CLASS_DEF needs to be called to define this member. */ -#define GPR_TLS_CLASS_DECL(name) \ - static bool name##_inited; \ +#define GPR_TLS_CLASS_DECL(name) \ + static bool name##_inited; \ static __thread struct gpr_gcc_thread_local name #define GPR_TLS_CLASS_DEF(name) \ - bool name##_inited = false; \ + bool name##_inited = false; \ __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)} #define gpr_tls_init(tls) \ diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index f3f080e3157..3bad17a54ec 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -50,8 +50,11 @@ void grpc_iomgr_init() { gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); grpc_core::ExecCtx::GlobalInit(); - grpc_executor_init(); - grpc_timer_list_init(); + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_executor_init(); + grpc_timer_list_init(); + } g_root_object.next = g_root_object.prev = &g_root_object; g_root_object.name = (char*)"root"; grpc_network_status_init(); diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index cdbe01e1d45..da641e1cf5f 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -116,7 +116,6 @@ void grpc_init(void) { int i; gpr_once_init(&g_basic_init, do_basic_init); - grpc_core::ExecCtx _local_exec_ctx; gpr_mu_lock(&g_init_mu); if (++g_initializations == 1) { gpr_time_init(); From 81fc8c9c336fab7a71b448f748a32d680301277c Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Tue, 28 Nov 2017 13:23:36 -0800 Subject: [PATCH 17/22] Fix tests to call grpc_init and grpc_shutdown before using exec_ctx --- include/grpc/impl/codegen/port_platform.h | 2 +- include/grpc/support/tls.h | 6 + src/core/lib/iomgr/block_annotate.h | 8 + src/core/lib/iomgr/exec_ctx.h | 2 +- src/core/lib/iomgr/iomgr.cc | 102 +++++---- src/core/lib/iomgr/load_file.cc | 3 +- src/core/lib/surface/init.cc | 31 +-- test/core/backoff/backoff_test.cc | 3 + test/core/bad_client/tests/badreq.cc | 4 + .../bad_client/tests/connection_prefix.cc | 3 + .../bad_client/tests/head_of_line_blocking.cc | 3 + test/core/bad_client/tests/headers.cc | 2 + .../tests/initial_settings_frame.cc | 2 + .../tests/server_registered_method.cc | 2 + test/core/bad_client/tests/simple_request.cc | 4 + test/core/bad_client/tests/unknown_frame.cc | 2 + test/core/bad_client/tests/window_overflow.cc | 3 + .../core/client_channel/parse_address_test.cc | 4 + .../dns_resolver_connectivity_test.cc | 48 ++-- test/core/client_channel/uri_fuzzer_test.cc | 17 +- test/core/client_channel/uri_parser_test.cc | 3 + test/core/end2end/bad_server_response_test.cc | 2 + .../end2end/fixtures/h2_sockpair+trace.cc | 1 - test/core/end2end/fuzzers/api_fuzzer.cc | 2 +- test/core/end2end/fuzzers/client_fuzzer.cc | 209 +++++++++--------- test/core/end2end/fuzzers/server_fuzzer.cc | 134 +++++------ test/core/http/format_request_test.cc | 2 + test/core/http/httpcli_test.cc | 107 ++++----- test/core/http/httpscli_test.cc | 11 +- test/core/http/parser_test.cc | 3 + test/core/iomgr/endpoint_pair_test.cc | 17 +- test/core/iomgr/ev_epollsig_linux_test.cc | 22 +- test/core/iomgr/fd_conservation_posix_test.cc | 36 +-- test/core/iomgr/fd_posix_test.cc | 23 +- test/core/iomgr/load_file_test.cc | 3 + test/core/iomgr/pollset_set_test.cc | 31 +-- test/core/iomgr/resolve_address_posix_test.cc | 10 +- test/core/iomgr/resolve_address_test.cc | 22 +- test/core/iomgr/tcp_client_posix_test.cc | 29 +-- test/core/iomgr/tcp_posix_test.cc | 20 +- test/core/iomgr/tcp_server_posix_test.cc | 98 ++++---- test/core/iomgr/timer_list_test.cc | 3 + test/core/iomgr/udp_server_test.cc | 36 +-- test/core/security/json_token_test.cc | 2 + test/core/security/secure_endpoint_test.cc | 24 +- test/core/security/ssl_server_fuzzer.cc | 115 +++++----- test/core/slice/b64_test.cc | 3 + test/core/slice/percent_encoding_test.cc | 3 + test/core/slice/slice_buffer_test.cc | 3 + test/core/slice/slice_hash_table_test.cc | 2 + test/core/slice/slice_string_helpers_test.cc | 3 + test/core/slice/slice_test.cc | 2 + test/core/surface/byte_buffer_reader_test.cc | 2 + .../surface/concurrent_connectivity_test.cc | 10 +- test/core/transport/byte_stream_test.cc | 3 + .../core/transport/chttp2/bin_decoder_test.cc | 110 ++++----- .../core/transport/chttp2/bin_encoder_test.cc | 3 + .../chttp2/hpack_parser_fuzzer_test.cc | 15 +- test/core/transport/chttp2/varint_test.cc | 3 + .../core/transport/connectivity_state_test.cc | 2 + test/core/transport/metadata_test.cc | 2 + .../core/transport/stream_owned_slice_test.cc | 3 + test/core/util/one_corpus_entry_fuzzer.cc | 10 + test/core/util/port_server_client.cc | 83 +++---- 64 files changed, 822 insertions(+), 656 deletions(-) diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index de27a53e268..1a93be38e01 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -182,7 +182,7 @@ #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif -#define TLS_NO_SUPPORT 1 +#define TLS_NO_SUPPORT 1 /* thread-local storage not supported. Use GPR_TLS */ #if TARGET_OS_IPHONE #define GPR_PLATFORM_STRING "ios" #define GPR_CPU_IPHONE 1 diff --git a/include/grpc/support/tls.h b/include/grpc/support/tls.h index 8519a8350bc..4c9e79b6cff 100644 --- a/include/grpc/support/tls.h +++ b/include/grpc/support/tls.h @@ -32,6 +32,12 @@ GPR_TLS_DECL(foo); Thread locals always have static scope. + Declaring a thread local class variable 'foo': + GPR_TLS_CLASS_DECL(foo); + + Defining the thread local class variable: + GPR_TLS_CLASS_DEF(foo); + Initializing a thread local (must be done at library initialization time): gpr_tls_init(&foo); diff --git a/src/core/lib/iomgr/block_annotate.h b/src/core/lib/iomgr/block_annotate.h index 55bde3eaac7..e3d4368d176 100644 --- a/src/core/lib/iomgr/block_annotate.h +++ b/src/core/lib/iomgr/block_annotate.h @@ -46,6 +46,11 @@ void gpr_thd_end_blocking_region(); gpr_thd_end_blocking_region(); \ grpc_core::ExecCtx::Get()->InvalidateNow(); \ } while (0) +#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \ + do { \ + gpr_thd_end_blocking_region(); \ + } while (0) + #else #define GRPC_SCHEDULING_START_BLOCKING_REGION \ do { \ @@ -54,6 +59,9 @@ void gpr_thd_end_blocking_region(); do { \ grpc_core::ExecCtx::Get()->InvalidateNow(); \ } while (0) +#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \ + do { \ + } while (0) #endif #endif /* GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H */ diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index 3a44d691b73..b04aab61fab 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -77,6 +77,7 @@ namespace grpc_core { class ExecCtx { public: /** Default Constructor */ + ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { Set(this); } /** Parameterised Constructor */ @@ -84,7 +85,6 @@ class ExecCtx { /** Destructor */ ~ExecCtx() { - GPR_ASSERT(Get() == this); flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED; Flush(); Set(last_exec_ctx_); diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index 3bad17a54ec..570d97443d8 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -84,62 +84,66 @@ void grpc_iomgr_shutdown() { gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_seconds(10, GPR_TIMESPAN)); gpr_timespec last_warning_time = gpr_now(GPR_CLOCK_REALTIME); - grpc_timer_manager_shutdown(); - grpc_iomgr_platform_flush(); - grpc_executor_shutdown(); - - gpr_mu_lock(&g_mu); - g_shutdown = 1; - while (g_root_object.next != &g_root_object) { - if (gpr_time_cmp( - gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), last_warning_time), - gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) { - if (g_root_object.next != &g_root_object) { - gpr_log(GPR_DEBUG, - "Waiting for %" PRIuPTR " iomgr objects to be destroyed", - count_objects()); + { + grpc_core::ExecCtx _local_exec_ctx(0); + grpc_timer_manager_shutdown(); + grpc_iomgr_platform_flush(); + grpc_executor_shutdown(); + + gpr_mu_lock(&g_mu); + g_shutdown = 1; + while (g_root_object.next != &g_root_object) { + if (gpr_time_cmp( + gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), last_warning_time), + gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) { + if (g_root_object.next != &g_root_object) { + gpr_log(GPR_DEBUG, + "Waiting for %" PRIuPTR " iomgr objects to be destroyed", + count_objects()); + } + last_warning_time = gpr_now(GPR_CLOCK_REALTIME); } - last_warning_time = gpr_now(GPR_CLOCK_REALTIME); - } - grpc_core::ExecCtx::Get()->SetNowIomgrShutdown(); - if (grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED) { - gpr_mu_unlock(&g_mu); - grpc_core::ExecCtx::Get()->Flush(); - grpc_iomgr_platform_flush(); - gpr_mu_lock(&g_mu); - continue; - } - if (g_root_object.next != &g_root_object) { - if (grpc_iomgr_abort_on_leaks()) { - gpr_log(GPR_DEBUG, - "Failed to free %" PRIuPTR - " iomgr objects before shutdown deadline: " - "memory leaks are likely", - count_objects()); - dump_objects("LEAKED"); - abort(); + grpc_core::ExecCtx::Get()->SetNowIomgrShutdown(); + if (grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED) { + gpr_mu_unlock(&g_mu); + grpc_core::ExecCtx::Get()->Flush(); + grpc_iomgr_platform_flush(); + gpr_mu_lock(&g_mu); + continue; } - gpr_timespec short_deadline = gpr_time_add( - gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(100, GPR_TIMESPAN)); - if (gpr_cv_wait(&g_rcv, &g_mu, short_deadline)) { - if (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), shutdown_deadline) > 0) { - if (g_root_object.next != &g_root_object) { - gpr_log(GPR_DEBUG, - "Failed to free %" PRIuPTR - " iomgr objects before shutdown deadline: " - "memory leaks are likely", - count_objects()); - dump_objects("LEAKED"); + if (g_root_object.next != &g_root_object) { + if (grpc_iomgr_abort_on_leaks()) { + gpr_log(GPR_DEBUG, + "Failed to free %" PRIuPTR + " iomgr objects before shutdown deadline: " + "memory leaks are likely", + count_objects()); + dump_objects("LEAKED"); + abort(); + } + gpr_timespec short_deadline = + gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), + gpr_time_from_millis(100, GPR_TIMESPAN)); + if (gpr_cv_wait(&g_rcv, &g_mu, short_deadline)) { + if (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), shutdown_deadline) > + 0) { + if (g_root_object.next != &g_root_object) { + gpr_log(GPR_DEBUG, + "Failed to free %" PRIuPTR + " iomgr objects before shutdown deadline: " + "memory leaks are likely", + count_objects()); + dump_objects("LEAKED"); + } + break; } - break; } } } - } - gpr_mu_unlock(&g_mu); + gpr_mu_unlock(&g_mu); - grpc_timer_list_shutdown(); - grpc_core::ExecCtx::Get()->Flush(); + grpc_timer_list_shutdown(); + } /* ensure all threads have left g_mu */ gpr_mu_lock(&g_mu); diff --git a/src/core/lib/iomgr/load_file.cc b/src/core/lib/iomgr/load_file.cc index 1afe6ba96dd..4a05de1410c 100644 --- a/src/core/lib/iomgr/load_file.cc +++ b/src/core/lib/iomgr/load_file.cc @@ -30,7 +30,6 @@ grpc_error* grpc_load_file(const char* filename, int add_null_terminator, grpc_slice* output) { - grpc_core::ExecCtx exec_ctx; unsigned char* contents = nullptr; size_t contents_size = 0; grpc_slice result = grpc_empty_slice(); @@ -74,6 +73,6 @@ end: GRPC_ERROR_UNREF(error); error = error_out; } - GRPC_SCHEDULING_END_BLOCKING_REGION; + GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX; return error; } diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index da641e1cf5f..2d7a33e147b 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -153,23 +153,28 @@ void grpc_shutdown(void) { if (grpc_core::ExecCtx::Get()) { grpc_core::ExecCtx::Get()->Flush(); } - grpc_core::ExecCtx _local_exec_ctx(0); gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { - grpc_executor_shutdown(); - grpc_timer_manager_set_threading(false); // shutdown timer_manager thread - for (i = g_number_of_plugins; i >= 0; i--) { - if (g_all_of_the_plugins[i].destroy != nullptr) { - g_all_of_the_plugins[i].destroy(); + { + { + grpc_core::ExecCtx _local_exec_ctx(0); + grpc_executor_shutdown(); + grpc_timer_manager_set_threading( + false); // shutdown timer_manager thread + for (i = g_number_of_plugins; i >= 0; i--) { + if (g_all_of_the_plugins[i].destroy != nullptr) { + g_all_of_the_plugins[i].destroy(); + } + } + grpc_mdctx_global_shutdown(); + grpc_handshaker_factory_registry_shutdown(); } + grpc_iomgr_shutdown(); + gpr_timers_global_destroy(); + grpc_tracer_shutdown(); + grpc_slice_intern_shutdown(); + grpc_stats_shutdown(); } - grpc_iomgr_shutdown(); - gpr_timers_global_destroy(); - grpc_tracer_shutdown(); - grpc_mdctx_global_shutdown(); - grpc_handshaker_factory_registry_shutdown(); - grpc_slice_intern_shutdown(); - grpc_stats_shutdown(); } gpr_mu_unlock(&g_init_mu); } diff --git a/test/core/backoff/backoff_test.cc b/test/core/backoff/backoff_test.cc index 76a9f39c35a..2cd97d80556 100644 --- a/test/core/backoff/backoff_test.cc +++ b/test/core/backoff/backoff_test.cc @@ -18,6 +18,7 @@ #include "src/core/lib/backoff/backoff.h" +#include <grpc/grpc.h> #include <grpc/support/log.h> #include <grpc/support/useful.h> @@ -174,6 +175,7 @@ static void test_jitter_backoff(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); gpr_time_init(); test_constant_backoff(); @@ -181,5 +183,6 @@ int main(int argc, char** argv) { test_no_jitter_backoff(); test_jitter_backoff(); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/badreq.cc b/test/core/bad_client/tests/badreq.cc index c30244e0cdd..eeaf4c99748 100644 --- a/test/core/bad_client/tests/badreq.cc +++ b/test/core/bad_client/tests/badreq.cc @@ -20,6 +20,8 @@ #include <string.h> +#include <grpc/grpc.h> + #include "src/core/lib/surface/server.h" #include "test/core/end2end/cq_verifier.h" @@ -38,6 +40,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); /* invalid content type */ GRPC_RUN_BAD_CLIENT_TEST( @@ -126,5 +129,6 @@ int main(int argc, char** argv) { "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)", GRPC_BAD_CLIENT_DISCONNECT); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/connection_prefix.cc b/test/core/bad_client/tests/connection_prefix.cc index 47252f9f105..4aab234d3e5 100644 --- a/test/core/bad_client/tests/connection_prefix.cc +++ b/test/core/bad_client/tests/connection_prefix.cc @@ -30,6 +30,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, "X", 0); GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, "PX", 0); @@ -57,5 +58,7 @@ int main(int argc, char** argv) { 0); GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, "PRI * HTTP/2.0\r\n\r\nSM\r\n\rX", 0); + + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/head_of_line_blocking.cc b/test/core/bad_client/tests/head_of_line_blocking.cc index bbc56119914..f56c4d71dd6 100644 --- a/test/core/bad_client/tests/head_of_line_blocking.cc +++ b/test/core/bad_client/tests/head_of_line_blocking.cc @@ -20,6 +20,7 @@ #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/lib/surface/server.h" @@ -109,6 +110,7 @@ static void addbuf(const void* data, size_t len) { int main(int argc, char** argv) { int i; grpc_test_init(argc, argv); + grpc_init(); #define NUM_FRAMES 10 #define FRAME_SIZE 1000 @@ -131,6 +133,7 @@ int main(int argc, char** argv) { } grpc_run_bad_client_test(verifier, nullptr, g_buffer, g_count, 0); gpr_free(g_buffer); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/headers.cc b/test/core/bad_client/tests/headers.cc index 50bb72c493a..2aa1b280cee 100644 --- a/test/core/bad_client/tests/headers.cc +++ b/test/core/bad_client/tests/headers.cc @@ -34,6 +34,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); /* partial http2 header prefixes */ GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, PFX_STR "\x00", @@ -335,5 +336,6 @@ int main(int argc, char** argv) { "15 seconds", GRPC_BAD_CLIENT_DISCONNECT); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/initial_settings_frame.cc b/test/core/bad_client/tests/initial_settings_frame.cc index edc52f503e5..0220000ecea 100644 --- a/test/core/bad_client/tests/initial_settings_frame.cc +++ b/test/core/bad_client/tests/initial_settings_frame.cc @@ -33,6 +33,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); /* various partial prefixes */ GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, PFX_STR "\x00", @@ -106,5 +107,6 @@ int main(int argc, char** argv) { PFX_STR ONE_SETTING_HDR "\x00\x99\x00\x00\x00\x00", GRPC_BAD_CLIENT_DISCONNECT); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/server_registered_method.cc b/test/core/bad_client/tests/server_registered_method.cc index 6613c94b419..c2dc9c66af1 100644 --- a/test/core/bad_client/tests/server_registered_method.cc +++ b/test/core/bad_client/tests/server_registered_method.cc @@ -77,6 +77,7 @@ static void verifier_fails(grpc_server* server, grpc_completion_queue* cq, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); /* body generated with * tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */ @@ -123,5 +124,6 @@ int main(int argc, char** argv) { "\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00", 0); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/simple_request.cc b/test/core/bad_client/tests/simple_request.cc index 9f4a03e69b3..c80fc5cb4af 100644 --- a/test/core/bad_client/tests/simple_request.cc +++ b/test/core/bad_client/tests/simple_request.cc @@ -20,6 +20,8 @@ #include <string.h> +#include <grpc/grpc.h> + #include "src/core/lib/surface/server.h" #include "test/core/end2end/cq_verifier.h" @@ -122,6 +124,7 @@ static void failure_verifier(grpc_server* server, grpc_completion_queue* cq, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); /* basic request: check that things are working */ GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, PFX_STR, 0); @@ -164,5 +167,6 @@ int main(int argc, char** argv) { GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, nullptr, PFX_STR "\x00\x00\x00\x03\x10\x00\x00\x00\x01", 0); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/unknown_frame.cc b/test/core/bad_client/tests/unknown_frame.cc index d962a4244d0..b1b618a43f3 100644 --- a/test/core/bad_client/tests/unknown_frame.cc +++ b/test/core/bad_client/tests/unknown_frame.cc @@ -33,6 +33,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq, } int main(int argc, char** argv) { + grpc_init(); grpc_test_init(argc, argv); /* test adding prioritization data */ @@ -40,5 +41,6 @@ int main(int argc, char** argv) { PFX_STR "\x00\x00\x00\x88\x00\x00\x00\x00\x01", GRPC_BAD_CLIENT_DISCONNECT); + grpc_shutdown(); return 0; } diff --git a/test/core/bad_client/tests/window_overflow.cc b/test/core/bad_client/tests/window_overflow.cc index f4bd81828be..ed8279c9519 100644 --- a/test/core/bad_client/tests/window_overflow.cc +++ b/test/core/bad_client/tests/window_overflow.cc @@ -20,6 +20,7 @@ #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/lib/surface/server.h" @@ -72,6 +73,7 @@ int main(int argc, char** argv) { #define SEND_SIZE (6 * 1024 * 1024) #define NUM_FRAMES (SEND_SIZE / FRAME_SIZE + 1) grpc_test_init(argc, argv); + grpc_init(); addbuf(PFX_STR, sizeof(PFX_STR) - 1); for (i = 0; i < NUM_FRAMES; i++) { @@ -93,6 +95,7 @@ int main(int argc, char** argv) { grpc_run_bad_client_test(verifier, nullptr, g_buffer, g_count, GRPC_BAD_CLIENT_LARGE_REQUEST); gpr_free(g_buffer); + grpc_shutdown(); return 0; } diff --git a/test/core/client_channel/parse_address_test.cc b/test/core/client_channel/parse_address_test.cc index f64b092743a..21c86d01f1a 100644 --- a/test/core/client_channel/parse_address_test.cc +++ b/test/core/client_channel/parse_address_test.cc @@ -24,6 +24,7 @@ #include <sys/un.h> #endif +#include <grpc/grpc.h> #include <grpc/support/log.h> #include "src/core/lib/iomgr/exec_ctx.h" @@ -90,9 +91,12 @@ static void test_grpc_parse_ipv6(const char* uri_text, const char* host, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_grpc_parse_unix("unix:/path/name", "/path/name"); test_grpc_parse_ipv4("ipv4:192.0.2.1:12345", "192.0.2.1", 12345); test_grpc_parse_ipv6("ipv6:[2001:db8::1]:12345", "2001:db8::1", 12345, 0); test_grpc_parse_ipv6("ipv6:[2001:db8::1%252]:12345", "2001:db8::1", 12345, 2); + + grpc_shutdown(); } diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc index 08ce148efea..f6d7731a6d3 100644 --- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc @@ -147,29 +147,31 @@ int main(int argc, char** argv) { grpc_dns_lookup_ares = my_dns_lookup_ares; grpc_channel_args* result = (grpc_channel_args*)1; - grpc_core::ExecCtx _local_exec_ctx; - grpc_resolver* resolver = create_resolver("dns:test"); - gpr_event ev1; - gpr_event_init(&ev1); - call_resolver_next_after_locking( - resolver, &result, - GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx)); - grpc_core::ExecCtx::Get()->Flush(); - GPR_ASSERT(wait_loop(5, &ev1)); - GPR_ASSERT(result == nullptr); - - gpr_event ev2; - gpr_event_init(&ev2); - call_resolver_next_after_locking( - resolver, &result, - GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx)); - grpc_core::ExecCtx::Get()->Flush(); - GPR_ASSERT(wait_loop(30, &ev2)); - GPR_ASSERT(result != nullptr); - - grpc_channel_args_destroy(result); - GRPC_RESOLVER_UNREF(resolver, "test"); - GRPC_COMBINER_UNREF(g_combiner, "test"); + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_resolver* resolver = create_resolver("dns:test"); + gpr_event ev1; + gpr_event_init(&ev1); + call_resolver_next_after_locking( + resolver, &result, + GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx)); + grpc_core::ExecCtx::Get()->Flush(); + GPR_ASSERT(wait_loop(5, &ev1)); + GPR_ASSERT(result == nullptr); + + gpr_event ev2; + gpr_event_init(&ev2); + call_resolver_next_after_locking( + resolver, &result, + GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx)); + grpc_core::ExecCtx::Get()->Flush(); + GPR_ASSERT(wait_loop(30, &ev2)); + GPR_ASSERT(result != nullptr); + + grpc_channel_args_destroy(result); + GRPC_RESOLVER_UNREF(resolver, "test"); + GRPC_COMBINER_UNREF(g_combiner, "test"); + } grpc_shutdown(); gpr_mu_destroy(&g_mu); diff --git a/test/core/client_channel/uri_fuzzer_test.cc b/test/core/client_channel/uri_fuzzer_test.cc index 484676e4720..8f1f5e2eda2 100644 --- a/test/core/client_channel/uri_fuzzer_test.cc +++ b/test/core/client_channel/uri_fuzzer_test.cc @@ -20,6 +20,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/ext/filters/client_channel/uri_parser.h" @@ -33,12 +34,18 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { memcpy(s, data, size); s[size] = 0; - grpc_core::ExecCtx _local_exec_ctx; - grpc_uri* x; - if ((x = grpc_uri_parse(s, 1))) { - grpc_uri_destroy(x); + grpc_init(); + + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_uri* x; + if ((x = grpc_uri_parse(s, 1))) { + grpc_uri_destroy(x); + } + + gpr_free(s); } - gpr_free(s); + grpc_shutdown(); return 0; } diff --git a/test/core/client_channel/uri_parser_test.cc b/test/core/client_channel/uri_parser_test.cc index 1694f2363dc..33cf82d17c7 100644 --- a/test/core/client_channel/uri_parser_test.cc +++ b/test/core/client_channel/uri_parser_test.cc @@ -20,6 +20,7 @@ #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/log.h> #include "src/core/lib/iomgr/exec_ctx.h" @@ -119,6 +120,7 @@ static void test_query_parts() { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_succeeds("http://www.google.com", "http", "www.google.com", "", "", ""); test_succeeds("dns:///foo", "dns", "", "/foo", "", ""); test_succeeds("http://www.google.com:90", "http", "www.google.com:90", "", "", @@ -146,5 +148,6 @@ int main(int argc, char** argv) { test_fails("http://foo?bar#lol#"); test_query_parts(); + grpc_shutdown(); return 0; } diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc index d3237839254..b65ba522ac5 100644 --- a/test/core/end2end/bad_server_response_test.cc +++ b/test/core/end2end/bad_server_response_test.cc @@ -298,6 +298,7 @@ static void run_test(const char* response_payload, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); /* status defined in hpack static table */ run_test(HTTP2_RESP(204), sizeof(HTTP2_RESP(204)) - 1, GRPC_STATUS_CANCELLED, @@ -336,5 +337,6 @@ int main(int argc, char** argv) { run_test(HTTP1_RESP, sizeof(HTTP1_RESP) - 1, GRPC_STATUS_UNAVAILABLE, HTTP1_DETAIL_MSG); + grpc_shutdown(); return 0; } diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.cc b/test/core/end2end/fixtures/h2_sockpair+trace.cc index b8b18e2a956..574b7555397 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.cc +++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc @@ -126,7 +126,6 @@ static grpc_end2end_test_config configs[] = { int main(int argc, char** argv) { size_t i; - grpc_core::ExecCtx _local_exec_ctx; /* force tracing on, with a value to force many code paths in trace.c to be taken */ diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc index ce916bd3414..f3127e92cc4 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.cc +++ b/test/core/end2end/fuzzers/api_fuzzer.cc @@ -745,8 +745,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { input_stream inp = {data, data + size}; grpc_tcp_client_connect_impl = my_tcp_client_connect; gpr_now_impl = now_impl; - grpc_init(); grpc_timer_manager_set_threading(false); + grpc_init(); { grpc_core::ExecCtx _local_exec_ctx; grpc_executor_set_threading(false); diff --git a/test/core/end2end/fuzzers/client_fuzzer.cc b/test/core/end2end/fuzzers/client_fuzzer.cc index 1298dd4e4f4..e2fb13936a9 100644 --- a/test/core/end2end/fuzzers/client_fuzzer.cc +++ b/test/core/end2end/fuzzers/client_fuzzer.cc @@ -43,111 +43,114 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; - grpc_executor_set_threading(false); - - grpc_resource_quota* resource_quota = - grpc_resource_quota_create("client_fuzzer"); - grpc_endpoint* mock_endpoint = - grpc_mock_endpoint_create(discard_write, resource_quota); - grpc_resource_quota_unref_internal(resource_quota); - - grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); - grpc_transport* transport = - grpc_create_chttp2_transport(nullptr, mock_endpoint, 1); - grpc_chttp2_transport_start_reading(transport, nullptr); - - grpc_channel* channel = grpc_channel_create( - "test-target", nullptr, GRPC_CLIENT_DIRECT_CHANNEL, transport); - grpc_slice host = grpc_slice_from_static_string("localhost"); - grpc_call* call = grpc_channel_create_call( - channel, nullptr, 0, cq, grpc_slice_from_static_string("/foo"), &host, - gpr_inf_future(GPR_CLOCK_REALTIME), nullptr); - - grpc_metadata_array initial_metadata_recv; - grpc_metadata_array_init(&initial_metadata_recv); - grpc_byte_buffer* response_payload_recv = nullptr; - grpc_metadata_array trailing_metadata_recv; - grpc_metadata_array_init(&trailing_metadata_recv); - grpc_status_code status; - grpc_slice details = grpc_empty_slice(); - - grpc_op ops[6]; - memset(ops, 0, sizeof(ops)); - grpc_op* op = ops; - op->op = GRPC_OP_SEND_INITIAL_METADATA; - op->data.send_initial_metadata.count = 0; - op->flags = 0; - op->reserved = nullptr; - op++; - op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; - op->flags = 0; - op->reserved = nullptr; - op++; - op->op = GRPC_OP_RECV_INITIAL_METADATA; - op->data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_recv; - op->flags = 0; - op->reserved = nullptr; - op++; - op->op = GRPC_OP_RECV_MESSAGE; - op->data.recv_message.recv_message = &response_payload_recv; - op->flags = 0; - op->reserved = nullptr; - op++; - op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; - op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; - op->data.recv_status_on_client.status = &status; - op->data.recv_status_on_client.status_details = &details; - op->flags = 0; - op->reserved = nullptr; - op++; - grpc_call_error error = - grpc_call_start_batch(call, ops, (size_t)(op - ops), tag(1), nullptr); - int requested_calls = 1; - GPR_ASSERT(GRPC_CALL_OK == error); - - grpc_mock_endpoint_put_read( - mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size)); - - grpc_event ev; - while (1) { - grpc_core::ExecCtx::Get()->Flush(); - ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), - nullptr); - switch (ev.type) { - case GRPC_QUEUE_TIMEOUT: - goto done; - case GRPC_QUEUE_SHUTDOWN: - break; - case GRPC_OP_COMPLETE: - requested_calls--; - break; + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_executor_set_threading(false); + + grpc_resource_quota* resource_quota = + grpc_resource_quota_create("client_fuzzer"); + grpc_endpoint* mock_endpoint = + grpc_mock_endpoint_create(discard_write, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); + + grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); + grpc_transport* transport = + grpc_create_chttp2_transport(nullptr, mock_endpoint, 1); + grpc_chttp2_transport_start_reading(transport, nullptr); + + grpc_channel* channel = grpc_channel_create( + "test-target", nullptr, GRPC_CLIENT_DIRECT_CHANNEL, transport); + grpc_slice host = grpc_slice_from_static_string("localhost"); + grpc_call* call = grpc_channel_create_call( + channel, nullptr, 0, cq, grpc_slice_from_static_string("/foo"), &host, + gpr_inf_future(GPR_CLOCK_REALTIME), nullptr); + + grpc_metadata_array initial_metadata_recv; + grpc_metadata_array_init(&initial_metadata_recv); + grpc_byte_buffer* response_payload_recv = nullptr; + grpc_metadata_array trailing_metadata_recv; + grpc_metadata_array_init(&trailing_metadata_recv); + grpc_status_code status; + grpc_slice details = grpc_empty_slice(); + + grpc_op ops[6]; + memset(ops, 0, sizeof(ops)); + grpc_op* op = ops; + op->op = GRPC_OP_SEND_INITIAL_METADATA; + op->data.send_initial_metadata.count = 0; + op->flags = 0; + op->reserved = nullptr; + op++; + op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; + op->flags = 0; + op->reserved = nullptr; + op++; + op->op = GRPC_OP_RECV_INITIAL_METADATA; + op->data.recv_initial_metadata.recv_initial_metadata = + &initial_metadata_recv; + op->flags = 0; + op->reserved = nullptr; + op++; + op->op = GRPC_OP_RECV_MESSAGE; + op->data.recv_message.recv_message = &response_payload_recv; + op->flags = 0; + op->reserved = nullptr; + op++; + op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; + op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; + op->data.recv_status_on_client.status = &status; + op->data.recv_status_on_client.status_details = &details; + op->flags = 0; + op->reserved = nullptr; + op++; + grpc_call_error error = + grpc_call_start_batch(call, ops, (size_t)(op - ops), tag(1), nullptr); + int requested_calls = 1; + GPR_ASSERT(GRPC_CALL_OK == error); + + grpc_mock_endpoint_put_read( + mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size)); + + grpc_event ev; + while (1) { + grpc_core::ExecCtx::Get()->Flush(); + ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), + nullptr); + switch (ev.type) { + case GRPC_QUEUE_TIMEOUT: + goto done; + case GRPC_QUEUE_SHUTDOWN: + break; + case GRPC_OP_COMPLETE: + requested_calls--; + break; + } } - } -done: - if (requested_calls) { - grpc_call_cancel(call, nullptr); - } - for (int i = 0; i < requested_calls; i++) { - ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), - nullptr); - GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); - } - grpc_completion_queue_shutdown(cq); - for (int i = 0; i < requested_calls; i++) { - ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), - nullptr); - GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN); - } - grpc_call_unref(call); - grpc_completion_queue_destroy(cq); - grpc_metadata_array_destroy(&initial_metadata_recv); - grpc_metadata_array_destroy(&trailing_metadata_recv); - grpc_slice_unref(details); - grpc_channel_destroy(channel); - if (response_payload_recv != nullptr) { - grpc_byte_buffer_destroy(response_payload_recv); + done: + if (requested_calls) { + grpc_call_cancel(call, nullptr); + } + for (int i = 0; i < requested_calls; i++) { + ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), + nullptr); + GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); + } + grpc_completion_queue_shutdown(cq); + for (int i = 0; i < requested_calls; i++) { + ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), + nullptr); + GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN); + } + grpc_call_unref(call); + grpc_completion_queue_destroy(cq); + grpc_metadata_array_destroy(&initial_metadata_recv); + grpc_metadata_array_destroy(&trailing_metadata_recv); + grpc_slice_unref(details); + grpc_channel_destroy(channel); + if (response_payload_recv != nullptr) { + grpc_byte_buffer_destroy(response_payload_recv); + } } grpc_shutdown(); if (leak_check) { diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc index 2cb6c984c54..4506ff5c0b2 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.cc +++ b/test/core/end2end/fuzzers/server_fuzzer.cc @@ -41,80 +41,82 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; - grpc_executor_set_threading(false); + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_executor_set_threading(false); - grpc_resource_quota* resource_quota = - grpc_resource_quota_create("server_fuzzer"); - grpc_endpoint* mock_endpoint = - grpc_mock_endpoint_create(discard_write, resource_quota); - grpc_resource_quota_unref_internal(resource_quota); - grpc_mock_endpoint_put_read( - mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size)); + grpc_resource_quota* resource_quota = + grpc_resource_quota_create("server_fuzzer"); + grpc_endpoint* mock_endpoint = + grpc_mock_endpoint_create(discard_write, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); + grpc_mock_endpoint_put_read( + mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size)); - grpc_server* server = grpc_server_create(nullptr, nullptr); - grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); - grpc_server_register_completion_queue(server, cq, nullptr); - // TODO(ctiller): add registered methods (one for POST, one for PUT) - // void *registered_method = - // grpc_server_register_method(server, "/reg", NULL, 0); - grpc_server_start(server); - grpc_transport* transport = - grpc_create_chttp2_transport(nullptr, mock_endpoint, 0); - grpc_server_setup_transport(server, transport, nullptr, nullptr); - grpc_chttp2_transport_start_reading(transport, nullptr); + grpc_server* server = grpc_server_create(nullptr, nullptr); + grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + // TODO(ctiller): add registered methods (one for POST, one for PUT) + // void *registered_method = + // grpc_server_register_method(server, "/reg", NULL, 0); + grpc_server_start(server); + grpc_transport* transport = + grpc_create_chttp2_transport(nullptr, mock_endpoint, 0); + grpc_server_setup_transport(server, transport, nullptr, nullptr); + grpc_chttp2_transport_start_reading(transport, nullptr); - grpc_call* call1 = nullptr; - grpc_call_details call_details1; - grpc_metadata_array request_metadata1; - grpc_call_details_init(&call_details1); - grpc_metadata_array_init(&request_metadata1); - int requested_calls = 0; + grpc_call* call1 = nullptr; + grpc_call_details call_details1; + grpc_metadata_array request_metadata1; + grpc_call_details_init(&call_details1); + grpc_metadata_array_init(&request_metadata1); + int requested_calls = 0; - GPR_ASSERT(GRPC_CALL_OK == - grpc_server_request_call(server, &call1, &call_details1, - &request_metadata1, cq, cq, tag(1))); - requested_calls++; + GPR_ASSERT(GRPC_CALL_OK == + grpc_server_request_call(server, &call1, &call_details1, + &request_metadata1, cq, cq, tag(1))); + requested_calls++; - grpc_event ev; - while (1) { - grpc_core::ExecCtx::Get()->Flush(); - ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), - nullptr); - switch (ev.type) { - case GRPC_QUEUE_TIMEOUT: - goto done; - case GRPC_QUEUE_SHUTDOWN: - break; - case GRPC_OP_COMPLETE: - switch (detag(ev.tag)) { - case 1: - requested_calls--; - // TODO(ctiller): keep reading that call! - break; - } + grpc_event ev; + while (1) { + grpc_core::ExecCtx::Get()->Flush(); + ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), + nullptr); + switch (ev.type) { + case GRPC_QUEUE_TIMEOUT: + goto done; + case GRPC_QUEUE_SHUTDOWN: + break; + case GRPC_OP_COMPLETE: + switch (detag(ev.tag)) { + case 1: + requested_calls--; + // TODO(ctiller): keep reading that call! + break; + } + } } - } -done: - if (call1 != nullptr) grpc_call_unref(call1); - grpc_call_details_destroy(&call_details1); - grpc_metadata_array_destroy(&request_metadata1); - grpc_server_shutdown_and_notify(server, cq, tag(0xdead)); - grpc_server_cancel_all_calls(server); - for (int i = 0; i <= requested_calls; i++) { - ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), - nullptr); - GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); - } - grpc_completion_queue_shutdown(cq); - for (int i = 0; i <= requested_calls; i++) { - ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), - nullptr); - GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN); + done: + if (call1 != nullptr) grpc_call_unref(call1); + grpc_call_details_destroy(&call_details1); + grpc_metadata_array_destroy(&request_metadata1); + grpc_server_shutdown_and_notify(server, cq, tag(0xdead)); + grpc_server_cancel_all_calls(server); + for (int i = 0; i <= requested_calls; i++) { + ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), + nullptr); + GPR_ASSERT(ev.type == GRPC_OP_COMPLETE); + } + grpc_completion_queue_shutdown(cq); + for (int i = 0; i <= requested_calls; i++) { + ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), + nullptr); + GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN); + } + grpc_server_destroy(server); + grpc_completion_queue_destroy(cq); } - grpc_server_destroy(server); - grpc_completion_queue_destroy(cq); grpc_shutdown(); if (leak_check) { counters = grpc_memory_counters_snapshot(); diff --git a/test/core/http/format_request_test.cc b/test/core/http/format_request_test.cc index 684738a9973..353e138b2a1 100644 --- a/test/core/http/format_request_test.cc +++ b/test/core/http/format_request_test.cc @@ -139,11 +139,13 @@ static void test_format_post_request_content_type_override(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_format_get_request(); test_format_post_request(); test_format_post_request_no_body(); test_format_post_request_content_type_override(); + grpc_shutdown(); return 0; } diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc index d354ad35707..ed5c03558f3 100644 --- a/test/core/http/httpcli_test.cc +++ b/test/core/http/httpcli_test.cc @@ -141,62 +141,63 @@ static void destroy_pops(void* p, grpc_error* error) { } int main(int argc, char** argv) { - grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; gpr_subprocess* server; - char* me = argv[0]; - char* lslash = strrchr(me, '/'); - char* args[4]; - int port = grpc_pick_unused_port_or_die(); - int arg_shift = 0; - /* figure out where we are */ - char* root; - if (lslash) { - root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1))); - memcpy(root, me, (size_t)(lslash - me)); - root[lslash - me] = 0; - } else { - root = gpr_strdup("."); - } - - GPR_ASSERT(argc <= 2); - if (argc == 2) { - args[0] = gpr_strdup(argv[1]); - } else { - arg_shift = 1; - gpr_asprintf(&args[0], "%s/../../tools/distrib/python_wrapper.sh", root); - gpr_asprintf(&args[1], "%s/../../test/core/http/test_server.py", root); - } - - /* start the server */ - args[1 + arg_shift] = const_cast<char*>("--port"); - gpr_asprintf(&args[2 + arg_shift], "%d", port); - server = gpr_subprocess_create(3 + arg_shift, (const char**)args); - GPR_ASSERT(server); - gpr_free(args[0]); - if (arg_shift) gpr_free(args[1]); - gpr_free(args[2 + arg_shift]); - gpr_free(root); - - gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), - gpr_time_from_seconds(5, GPR_TIMESPAN))); - grpc_test_init(argc, argv); grpc_init(); - grpc_httpcli_context_init(&g_context); - grpc_pollset* pollset = - static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); - grpc_pollset_init(pollset, &g_mu); - g_pops = grpc_polling_entity_create_from_pollset(pollset); - - test_get(port); - test_post(port); - - grpc_httpcli_context_destroy(&g_context); - GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); - + { + grpc_closure destroyed; + grpc_core::ExecCtx _local_exec_ctx; + char* me = argv[0]; + char* lslash = strrchr(me, '/'); + char* args[4]; + int port = grpc_pick_unused_port_or_die(); + int arg_shift = 0; + /* figure out where we are */ + char* root; + if (lslash) { + root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1))); + memcpy(root, me, (size_t)(lslash - me)); + root[lslash - me] = 0; + } else { + root = gpr_strdup("."); + } + + GPR_ASSERT(argc <= 2); + if (argc == 2) { + args[0] = gpr_strdup(argv[1]); + } else { + arg_shift = 1; + gpr_asprintf(&args[0], "%s/../../tools/distrib/python_wrapper.sh", root); + gpr_asprintf(&args[1], "%s/../../test/core/http/test_server.py", root); + } + + /* start the server */ + args[1 + arg_shift] = const_cast<char*>("--port"); + gpr_asprintf(&args[2 + arg_shift], "%d", port); + server = gpr_subprocess_create(3 + arg_shift, (const char**)args); + GPR_ASSERT(server); + gpr_free(args[0]); + if (arg_shift) gpr_free(args[1]); + gpr_free(args[2 + arg_shift]); + gpr_free(root); + + gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), + gpr_time_from_seconds(5, GPR_TIMESPAN))); + + grpc_httpcli_context_init(&g_context); + grpc_pollset* pollset = + static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); + grpc_pollset_init(pollset, &g_mu); + g_pops = grpc_polling_entity_create_from_pollset(pollset); + + test_get(port); + test_post(port); + + grpc_httpcli_context_destroy(&g_context); + GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); + } grpc_shutdown(); gpr_free(grpc_polling_entity_pollset(&g_pops)); diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc index 76bbd2d366e..ee2bff18dbb 100644 --- a/test/core/http/httpscli_test.cc +++ b/test/core/http/httpscli_test.cc @@ -195,11 +195,12 @@ int main(int argc, char** argv) { test_get(port); test_post(port); - grpc_httpcli_context_destroy(&g_context); - GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); - + { + grpc_httpcli_context_destroy(&g_context); + GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed); + } grpc_shutdown(); gpr_free(grpc_polling_entity_pollset(&g_pops)); diff --git a/test/core/http/parser_test.cc b/test/core/http/parser_test.cc index 0b60e369b79..18f19856bd9 100644 --- a/test/core/http/parser_test.cc +++ b/test/core/http/parser_test.cc @@ -21,6 +21,7 @@ #include <stdarg.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> @@ -217,6 +218,7 @@ int main(int argc, char** argv) { char *tmp1, *tmp2; grpc_test_init(argc, argv); + grpc_init(); for (i = 0; i < GPR_ARRAY_SIZE(split_modes); i++) { test_succeeds(split_modes[i], @@ -300,5 +302,6 @@ int main(int argc, char** argv) { gpr_free(tmp2); } + grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/endpoint_pair_test.cc b/test/core/iomgr/endpoint_pair_test.cc index 658971b9fb0..d895a270ada 100644 --- a/test/core/iomgr/endpoint_pair_test.cc +++ b/test/core/iomgr/endpoint_pair_test.cc @@ -59,16 +59,17 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); - g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); - grpc_pollset_init(g_pollset, &g_mu); - grpc_endpoint_tests(configs[0], g_pollset, g_mu); - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); - + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); + grpc_pollset_init(g_pollset, &g_mu); + grpc_endpoint_tests(configs[0], g_pollset, g_mu); + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + } grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/ev_epollsig_linux_test.cc b/test/core/iomgr/ev_epollsig_linux_test.cc index ae778344018..45c96ce12d0 100644 --- a/test/core/iomgr/ev_epollsig_linux_test.cc +++ b/test/core/iomgr/ev_epollsig_linux_test.cc @@ -301,17 +301,19 @@ int main(int argc, char** argv) { const char* poll_strategy = nullptr; grpc_test_init(argc, argv); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + { + grpc_core::ExecCtx _local_exec_ctx; - poll_strategy = grpc_get_poll_strategy_name(); - if (poll_strategy != nullptr && strcmp(poll_strategy, "epollsig") == 0) { - test_add_fd_to_pollset(); - test_threading(); - } else { - gpr_log(GPR_INFO, - "Skipping the test. The test is only relevant for 'epollsig' " - "strategy. and the current strategy is: '%s'", - poll_strategy); + poll_strategy = grpc_get_poll_strategy_name(); + if (poll_strategy != nullptr && strcmp(poll_strategy, "epollsig") == 0) { + test_add_fd_to_pollset(); + test_threading(); + } else { + gpr_log(GPR_INFO, + "Skipping the test. The test is only relevant for 'epollsig' " + "strategy. and the current strategy is: '%s'", + poll_strategy); + } } grpc_shutdown(); diff --git a/test/core/iomgr/fd_conservation_posix_test.cc b/test/core/iomgr/fd_conservation_posix_test.cc index 11e664d8ff8..f4c8e5a21f4 100644 --- a/test/core/iomgr/fd_conservation_posix_test.cc +++ b/test/core/iomgr/fd_conservation_posix_test.cc @@ -31,25 +31,27 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; - - /* set max # of file descriptors to a low value, and - verify we can create and destroy many more than this number - of descriptors */ - rlim.rlim_cur = rlim.rlim_max = 10; - GPR_ASSERT(0 == setrlimit(RLIMIT_NOFILE, &rlim)); - grpc_resource_quota* resource_quota = - grpc_resource_quota_create("fd_conservation_posix_test"); - - for (i = 0; i < 100; i++) { - p = grpc_iomgr_create_endpoint_pair("test", NULL); - grpc_endpoint_destroy(p.client); - grpc_endpoint_destroy(p.server); - grpc_core::ExecCtx::Get()->Flush(); + { + grpc_core::ExecCtx _local_exec_ctx; + + /* set max # of file descriptors to a low value, and + verify we can create and destroy many more than this number + of descriptors */ + rlim.rlim_cur = rlim.rlim_max = 10; + GPR_ASSERT(0 == setrlimit(RLIMIT_NOFILE, &rlim)); + grpc_resource_quota* resource_quota = + grpc_resource_quota_create("fd_conservation_posix_test"); + + for (i = 0; i < 100; i++) { + p = grpc_iomgr_create_endpoint_pair("test", NULL); + grpc_endpoint_destroy(p.client); + grpc_endpoint_destroy(p.server); + grpc_core::ExecCtx::Get()->Flush(); + } + + grpc_resource_quota_unref(resource_quota); } - grpc_resource_quota_unref(resource_quota); - grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/fd_posix_test.cc b/test/core/iomgr/fd_posix_test.cc index 3a9d801169a..8eda76cf9b1 100644 --- a/test/core/iomgr/fd_posix_test.cc +++ b/test/core/iomgr/fd_posix_test.cc @@ -513,19 +513,20 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); - g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); - grpc_pollset_init(g_pollset, &g_mu); - test_grpc_fd(); - test_grpc_fd_change(); - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_core::ExecCtx::Get()->Flush(); - gpr_free(g_pollset); - + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); + grpc_pollset_init(g_pollset, &g_mu); + test_grpc_fd(); + test_grpc_fd_change(); + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_core::ExecCtx::Get()->Flush(); + gpr_free(g_pollset); + } grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/load_file_test.cc b/test/core/iomgr/load_file_test.cc index 9f360badcc3..797d0ef1a4d 100644 --- a/test/core/iomgr/load_file_test.cc +++ b/test/core/iomgr/load_file_test.cc @@ -19,6 +19,7 @@ #include <stdio.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/slice.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -152,9 +153,11 @@ static void test_load_big_file(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_load_empty_file(); test_load_failure(); test_load_small_file(); test_load_big_file(); + grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/pollset_set_test.cc b/test/core/iomgr/pollset_set_test.cc index 502b40f2cfe..cf9c82b4821 100644 --- a/test/core/iomgr/pollset_set_test.cc +++ b/test/core/iomgr/pollset_set_test.cc @@ -421,24 +421,25 @@ void pollset_set_test_empty_pollset() { } int main(int argc, char** argv) { - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); - const char* poll_strategy = grpc_get_poll_strategy_name(); - - if (poll_strategy != nullptr && - (strcmp(poll_strategy, "epollsig") == 0 || - strcmp(poll_strategy, "epoll-threadpool") == 0)) { - pollset_set_test_basic(); - pollset_set_test_dup_fds(); - pollset_set_test_empty_pollset(); - } else { - gpr_log(GPR_INFO, - "Skipping the test. The test is only relevant for 'epoll' " - "strategy. and the current strategy is: '%s'", - poll_strategy); + { + grpc_core::ExecCtx _local_exec_ctx; + const char* poll_strategy = grpc_get_poll_strategy_name(); + + if (poll_strategy != nullptr && + (strcmp(poll_strategy, "epollsig") == 0 || + strcmp(poll_strategy, "epoll-threadpool") == 0)) { + pollset_set_test_basic(); + pollset_set_test_dup_fds(); + pollset_set_test_empty_pollset(); + } else { + gpr_log(GPR_INFO, + "Skipping the test. The test is only relevant for 'epoll' " + "strategy. and the current strategy is: '%s'", + poll_strategy); + } } - grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index 6fb6f72a000..0ea57e22023 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -156,10 +156,12 @@ static void test_unix_socket_path_name_too_long(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; - test_unix_socket(); - test_unix_socket_path_name_too_long(); - grpc_executor_shutdown(); + + { + grpc_core::ExecCtx _local_exec_ctx; + test_unix_socket(); + test_unix_socket_path_name_too_long(); + } grpc_shutdown(); return 0; diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc index e44d660dad3..e6986f332ba 100644 --- a/test/core/iomgr/resolve_address_test.cc +++ b/test/core/iomgr/resolve_address_test.cc @@ -242,16 +242,18 @@ static void test_unparseable_hostports(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; - test_localhost(); - test_default_port(); - test_non_numeric_default_port(); - test_missing_default_port(); - test_ipv6_with_port(); - test_ipv6_without_port(); - test_invalid_ip_addresses(); - test_unparseable_hostports(); - grpc_executor_shutdown(); + { + grpc_core::ExecCtx _local_exec_ctx; + test_localhost(); + test_default_port(); + test_non_numeric_default_port(); + test_missing_default_port(); + test_ipv6_with_port(); + test_ipv6_without_port(); + test_invalid_ip_addresses(); + test_unparseable_hostports(); + grpc_executor_shutdown(); + } grpc_shutdown(); return 0; diff --git a/test/core/iomgr/tcp_client_posix_test.cc b/test/core/iomgr/tcp_client_posix_test.cc index 12295ef1801..0cdf30590ef 100644 --- a/test/core/iomgr/tcp_client_posix_test.cc +++ b/test/core/iomgr/tcp_client_posix_test.cc @@ -188,21 +188,24 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); - g_pollset_set = grpc_pollset_set_create(); - g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); - grpc_pollset_init(g_pollset, &g_mu); - grpc_pollset_set_add_pollset(g_pollset_set, g_pollset); - - test_succeeds(); - gpr_log(GPR_ERROR, "End of first test"); - test_fails(); - grpc_pollset_set_destroy(g_pollset_set); - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); + + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset_set = grpc_pollset_set_create(); + g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); + grpc_pollset_init(g_pollset, &g_mu); + grpc_pollset_set_add_pollset(g_pollset_set, g_pollset); + + test_succeeds(); + gpr_log(GPR_ERROR, "End of first test"); + test_fails(); + grpc_pollset_set_destroy(g_pollset_set); + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + } grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc index 614ceaa02d3..b42fb588ebb 100644 --- a/test/core/iomgr/tcp_posix_test.cc +++ b/test/core/iomgr/tcp_posix_test.cc @@ -538,18 +538,20 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); - g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); - grpc_pollset_init(g_pollset, &g_mu); - grpc_endpoint_tests(configs[0], g_pollset, g_mu); - run_tests(); - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); + grpc_pollset_init(g_pollset, &g_mu); + grpc_endpoint_tests(configs[0], g_pollset, g_mu); + run_tests(); + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_core::ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); + } grpc_shutdown(); gpr_free(g_pollset); diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc index a4dfa9e7725..28fc3601ad9 100644 --- a/test/core/iomgr/tcp_server_posix_test.cc +++ b/test/core/iomgr/tcp_server_posix_test.cc @@ -423,7 +423,6 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_arg chan_args[1]; chan_args[0].type = GRPC_ARG_INTEGER; chan_args[0].key = const_cast<char*>(GRPC_ARG_EXPAND_WILDCARD_ADDRS); @@ -436,58 +435,61 @@ int main(int argc, char** argv) { static_cast<test_addrs*>(gpr_zalloc(sizeof(*dst_addrs))); grpc_test_init(argc, argv); grpc_init(); - g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); - grpc_pollset_init(g_pollset, &g_mu); - - test_no_op(); - test_no_op_with_start(); - test_no_op_with_port(); - test_no_op_with_port_and_start(); - - if (getifaddrs(&ifa) != 0 || ifa == nullptr) { - gpr_log(GPR_ERROR, "getifaddrs: %s", strerror(errno)); - return EXIT_FAILURE; - } - dst_addrs->naddrs = 0; - for (ifa_it = ifa; ifa_it != nullptr && dst_addrs->naddrs < MAX_ADDRS; - ifa_it = ifa_it->ifa_next) { - if (ifa_it->ifa_addr == nullptr) { - continue; - } else if (ifa_it->ifa_addr->sa_family == AF_INET) { - dst_addrs->addrs[dst_addrs->naddrs].addr.len = sizeof(struct sockaddr_in); - } else if (ifa_it->ifa_addr->sa_family == AF_INET6) { - dst_addrs->addrs[dst_addrs->naddrs].addr.len = - sizeof(struct sockaddr_in6); - } else { - continue; + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); + grpc_pollset_init(g_pollset, &g_mu); + + test_no_op(); + test_no_op_with_start(); + test_no_op_with_port(); + test_no_op_with_port_and_start(); + + if (getifaddrs(&ifa) != 0 || ifa == nullptr) { + gpr_log(GPR_ERROR, "getifaddrs: %s", strerror(errno)); + return EXIT_FAILURE; } - memcpy(dst_addrs->addrs[dst_addrs->naddrs].addr.addr, ifa_it->ifa_addr, - dst_addrs->addrs[dst_addrs->naddrs].addr.len); - GPR_ASSERT( - grpc_sockaddr_set_port(&dst_addrs->addrs[dst_addrs->naddrs].addr, 0)); - test_addr_init_str(&dst_addrs->addrs[dst_addrs->naddrs]); - ++dst_addrs->naddrs; - } - freeifaddrs(ifa); - ifa = nullptr; - - /* Connect to same addresses as listeners. */ - test_connect(1, nullptr, nullptr, false); - test_connect(10, nullptr, nullptr, false); + dst_addrs->naddrs = 0; + for (ifa_it = ifa; ifa_it != nullptr && dst_addrs->naddrs < MAX_ADDRS; + ifa_it = ifa_it->ifa_next) { + if (ifa_it->ifa_addr == nullptr) { + continue; + } else if (ifa_it->ifa_addr->sa_family == AF_INET) { + dst_addrs->addrs[dst_addrs->naddrs].addr.len = + sizeof(struct sockaddr_in); + } else if (ifa_it->ifa_addr->sa_family == AF_INET6) { + dst_addrs->addrs[dst_addrs->naddrs].addr.len = + sizeof(struct sockaddr_in6); + } else { + continue; + } + memcpy(dst_addrs->addrs[dst_addrs->naddrs].addr.addr, ifa_it->ifa_addr, + dst_addrs->addrs[dst_addrs->naddrs].addr.len); + GPR_ASSERT( + grpc_sockaddr_set_port(&dst_addrs->addrs[dst_addrs->naddrs].addr, 0)); + test_addr_init_str(&dst_addrs->addrs[dst_addrs->naddrs]); + ++dst_addrs->naddrs; + } + freeifaddrs(ifa); + ifa = nullptr; - /* Set dst_addrs->addrs[i].len=0 for dst_addrs that are unreachable with a - "::" listener. */ - test_connect(1, nullptr, dst_addrs, true); + /* Connect to same addresses as listeners. */ + test_connect(1, nullptr, nullptr, false); + test_connect(10, nullptr, nullptr, false); - /* Test connect(2) with dst_addrs. */ - test_connect(1, &channel_args, dst_addrs, false); - /* Test connect(2) with dst_addrs. */ - test_connect(10, &channel_args, dst_addrs, false); + /* Set dst_addrs->addrs[i].len=0 for dst_addrs that are unreachable with a + "::" listener. */ + test_connect(1, nullptr, dst_addrs, true); - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); + /* Test connect(2) with dst_addrs. */ + test_connect(1, &channel_args, dst_addrs, false); + /* Test connect(2) with dst_addrs. */ + test_connect(10, &channel_args, dst_addrs, false); + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + } grpc_shutdown(); gpr_free(dst_addrs); gpr_free(g_pollset); diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc index 329b767f326..7ab4c4415c5 100644 --- a/test/core/iomgr/timer_list_test.cc +++ b/test/core/iomgr/timer_list_test.cc @@ -25,6 +25,7 @@ #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/log.h> #include "src/core/lib/debug/trace.h" #include "test/core/util/test_config.h" @@ -151,9 +152,11 @@ void destruction_test(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_core::ExecCtx::GlobalInit(); gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG); add_test(); destruction_test(); + grpc_core::ExecCtx::GlobalShutdown(); return 0; } diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc index e271acbeef4..379c50c09da 100644 --- a/test/core/iomgr/udp_server_test.cc +++ b/test/core/iomgr/udp_server_test.cc @@ -291,25 +291,27 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); grpc_init(); - g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); - grpc_pollset_init(g_pollset, &g_mu); - - test_no_op(); - test_no_op_with_start(); - test_no_op_with_port(); - test_no_op_with_port_and_socket_factory(); - test_no_op_with_port_and_start(); - test_receive(1); - test_receive(10); - - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); - grpc_core::ExecCtx::Get()->Flush(); - gpr_free(g_pollset); + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); + grpc_pollset_init(g_pollset, &g_mu); + + test_no_op(); + test_no_op_with_start(); + test_no_op_with_port(); + test_no_op_with_port_and_socket_factory(); + test_no_op_with_port_and_start(); + test_receive(1); + test_receive(10); + + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + grpc_core::ExecCtx::Get()->Flush(); + gpr_free(g_pollset); + } grpc_shutdown(); return 0; } diff --git a/test/core/security/json_token_test.cc b/test/core/security/json_token_test.cc index b717de06d9c..57e2f4c9787 100644 --- a/test/core/security/json_token_test.cc +++ b/test/core/security/json_token_test.cc @@ -483,6 +483,7 @@ static void test_parse_refresh_token_failure_no_refresh_token(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_parse_json_key_success(); test_parse_json_key_failure_bad_json(); test_parse_json_key_failure_no_type(); @@ -497,5 +498,6 @@ int main(int argc, char** argv) { test_parse_refresh_token_failure_no_client_id(); test_parse_refresh_token_failure_no_client_secret(); test_parse_refresh_token_failure_no_refresh_token(); + grpc_shutdown(); return 0; } diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc index 694a8584ea0..c8f4f32538c 100644 --- a/test/core/security/secure_endpoint_test.cc +++ b/test/core/security/secure_endpoint_test.cc @@ -205,19 +205,21 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; grpc_test_init(argc, argv); - grpc_init(); - g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); - grpc_pollset_init(g_pollset, &g_mu); - grpc_endpoint_tests(configs[0], g_pollset, g_mu); - grpc_endpoint_tests(configs[1], g_pollset, g_mu); - test_leftover(configs[2], 1); - test_leftover(configs[3], 1); - GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, - grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(g_pollset, &destroyed); + + { + grpc_core::ExecCtx _local_exec_ctx; + g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); + grpc_pollset_init(g_pollset, &g_mu); + grpc_endpoint_tests(configs[0], g_pollset, g_mu); + grpc_endpoint_tests(configs[1], g_pollset, g_mu); + test_leftover(configs[2], 1); + test_leftover(configs[3], 1); + GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset, + grpc_schedule_on_exec_ctx); + grpc_pollset_shutdown(g_pollset, &destroyed); + } grpc_shutdown(); diff --git a/test/core/security/ssl_server_fuzzer.cc b/test/core/security/ssl_server_fuzzer.cc index df62dc17b82..9cf73fa8715 100644 --- a/test/core/security/ssl_server_fuzzer.cc +++ b/test/core/security/ssl_server_fuzzer.cc @@ -55,63 +55,68 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); if (leak_check) grpc_memory_counters_init(); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; - - grpc_resource_quota* resource_quota = - grpc_resource_quota_create("ssl_server_fuzzer"); - grpc_endpoint* mock_endpoint = - grpc_mock_endpoint_create(discard_write, resource_quota); - grpc_resource_quota_unref_internal(resource_quota); - - grpc_mock_endpoint_put_read( - mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size)); - - // Load key pair and establish server SSL credentials. - grpc_ssl_pem_key_cert_pair pem_key_cert_pair; - grpc_slice ca_slice, cert_slice, key_slice; - ca_slice = grpc_slice_from_static_string(test_root_cert); - cert_slice = grpc_slice_from_static_string(test_server1_cert); - key_slice = grpc_slice_from_static_string(test_server1_key); - const char* ca_cert = (const char*)GRPC_SLICE_START_PTR(ca_slice); - pem_key_cert_pair.private_key = (const char*)GRPC_SLICE_START_PTR(key_slice); - pem_key_cert_pair.cert_chain = (const char*)GRPC_SLICE_START_PTR(cert_slice); - grpc_server_credentials* creds = grpc_ssl_server_credentials_create( - ca_cert, &pem_key_cert_pair, 1, 0, nullptr); - - // Create security connector - grpc_server_security_connector* sc = nullptr; - grpc_security_status status = - grpc_server_credentials_create_security_connector(creds, &sc); - GPR_ASSERT(status == GRPC_SECURITY_OK); - grpc_millis deadline = GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now(); - - struct handshake_state state; - state.done_callback_called = false; - grpc_handshake_manager* handshake_mgr = grpc_handshake_manager_create(); - grpc_server_security_connector_add_handshakers(sc, handshake_mgr); - grpc_handshake_manager_do_handshake( - handshake_mgr, mock_endpoint, nullptr /* channel_args */, deadline, - nullptr /* acceptor */, on_handshake_done, &state); - grpc_core::ExecCtx::Get()->Flush(); - - // If the given string happens to be part of the correct client hello, the - // server will wait for more data. Explicitly fail the server by shutting down - // the endpoint. - if (!state.done_callback_called) { - grpc_endpoint_shutdown( - mock_endpoint, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close")); + { + grpc_core::ExecCtx _local_exec_ctx; + + grpc_resource_quota* resource_quota = + grpc_resource_quota_create("ssl_server_fuzzer"); + grpc_endpoint* mock_endpoint = + grpc_mock_endpoint_create(discard_write, resource_quota); + grpc_resource_quota_unref_internal(resource_quota); + + grpc_mock_endpoint_put_read( + mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size)); + + // Load key pair and establish server SSL credentials. + grpc_ssl_pem_key_cert_pair pem_key_cert_pair; + grpc_slice ca_slice, cert_slice, key_slice; + ca_slice = grpc_slice_from_static_string(test_root_cert); + cert_slice = grpc_slice_from_static_string(test_server1_cert); + key_slice = grpc_slice_from_static_string(test_server1_key); + const char* ca_cert = (const char*)GRPC_SLICE_START_PTR(ca_slice); + pem_key_cert_pair.private_key = + (const char*)GRPC_SLICE_START_PTR(key_slice); + pem_key_cert_pair.cert_chain = + (const char*)GRPC_SLICE_START_PTR(cert_slice); + grpc_server_credentials* creds = grpc_ssl_server_credentials_create( + ca_cert, &pem_key_cert_pair, 1, 0, nullptr); + + // Create security connector + grpc_server_security_connector* sc = nullptr; + grpc_security_status status = + grpc_server_credentials_create_security_connector(creds, &sc); + GPR_ASSERT(status == GRPC_SECURITY_OK); + grpc_millis deadline = GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now(); + + struct handshake_state state; + state.done_callback_called = false; + grpc_handshake_manager* handshake_mgr = grpc_handshake_manager_create(); + grpc_server_security_connector_add_handshakers(sc, handshake_mgr); + grpc_handshake_manager_do_handshake( + handshake_mgr, mock_endpoint, nullptr /* channel_args */, deadline, + nullptr /* acceptor */, on_handshake_done, &state); grpc_core::ExecCtx::Get()->Flush(); - } - - GPR_ASSERT(state.done_callback_called); - grpc_handshake_manager_destroy(handshake_mgr); - GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "test"); - grpc_server_credentials_release(creds); - grpc_slice_unref(cert_slice); - grpc_slice_unref(key_slice); - grpc_slice_unref(ca_slice); - grpc_core::ExecCtx::Get()->Flush(); + // If the given string happens to be part of the correct client hello, the + // server will wait for more data. Explicitly fail the server by shutting + // down the endpoint. + if (!state.done_callback_called) { + grpc_endpoint_shutdown( + mock_endpoint, + GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close")); + grpc_core::ExecCtx::Get()->Flush(); + } + + GPR_ASSERT(state.done_callback_called); + + grpc_handshake_manager_destroy(handshake_mgr); + GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "test"); + grpc_server_credentials_release(creds); + grpc_slice_unref(cert_slice); + grpc_slice_unref(key_slice); + grpc_slice_unref(ca_slice); + grpc_core::ExecCtx::Get()->Flush(); + } grpc_shutdown(); if (leak_check) { diff --git a/test/core/slice/b64_test.cc b/test/core/slice/b64_test.cc index 08a5770b2af..e0c7ed361dc 100644 --- a/test/core/slice/b64_test.cc +++ b/test/core/slice/b64_test.cc @@ -20,6 +20,7 @@ #include <string.h> +#include <grpc/grpc.h> #include <grpc/slice.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -201,6 +202,7 @@ static void test_unpadded_decode(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_simple_encode_decode_b64_no_multiline(); test_simple_encode_decode_b64_multiline(); test_simple_encode_decode_b64_urlsafe_no_multiline(); @@ -212,5 +214,6 @@ int main(int argc, char** argv) { test_url_safe_unsafe_mismatch_failure(); test_rfc4648_test_vectors(); test_unpadded_decode(); + grpc_shutdown(); return 0; } diff --git a/test/core/slice/percent_encoding_test.cc b/test/core/slice/percent_encoding_test.cc index 253240faad4..11f3995f98e 100644 --- a/test/core/slice/percent_encoding_test.cc +++ b/test/core/slice/percent_encoding_test.cc @@ -18,6 +18,7 @@ #include "src/core/lib/slice/percent_encoding.h" +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -118,6 +119,7 @@ static void test_nonconformant_vector(const char* encoded, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); TEST_VECTOR( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~", @@ -140,5 +142,6 @@ int main(int argc, char** argv) { grpc_url_percent_encoding_unreserved_bytes); TEST_NONCONFORMANT_VECTOR("\0", "\0", grpc_url_percent_encoding_unreserved_bytes); + grpc_shutdown(); return 0; } diff --git a/test/core/slice/slice_buffer_test.cc b/test/core/slice/slice_buffer_test.cc index 338e8079dc8..e59986730b8 100644 --- a/test/core/slice/slice_buffer_test.cc +++ b/test/core/slice/slice_buffer_test.cc @@ -16,6 +16,7 @@ * */ +#include <grpc/grpc.h> #include <grpc/slice_buffer.h> #include <grpc/support/log.h> #include "test/core/util/test_config.h" @@ -106,9 +107,11 @@ void test_slice_buffer_move_first() { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_slice_buffer_add(); test_slice_buffer_move_first(); + grpc_shutdown(); return 0; } diff --git a/test/core/slice/slice_hash_table_test.cc b/test/core/slice/slice_hash_table_test.cc index 26c2938782a..1cbb241a983 100644 --- a/test/core/slice/slice_hash_table_test.cc +++ b/test/core/slice/slice_hash_table_test.cc @@ -231,8 +231,10 @@ static void test_slice_hash_table_not_eq() { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_core::ExecCtx::GlobalInit(); test_slice_hash_table(); test_slice_hash_table_eq(); test_slice_hash_table_not_eq(); + grpc_core::ExecCtx::GlobalShutdown(); return 0; } diff --git a/test/core/slice/slice_string_helpers_test.cc b/test/core/slice/slice_string_helpers_test.cc index 260f8c80d5d..f1d470461a4 100644 --- a/test/core/slice/slice_string_helpers_test.cc +++ b/test/core/slice/slice_string_helpers_test.cc @@ -23,6 +23,7 @@ #include <stdlib.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/string_util.h> @@ -130,7 +131,9 @@ static void test_strsplit(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_dump_slice(); test_strsplit(); + grpc_shutdown(); return 0; } diff --git a/test/core/slice/slice_test.cc b/test/core/slice/slice_test.cc index 02f6b1ea79c..e40154dd0ee 100644 --- a/test/core/slice/slice_test.cc +++ b/test/core/slice/slice_test.cc @@ -292,6 +292,7 @@ static void test_static_slice_copy_interning(void) { int main(int argc, char** argv) { unsigned length; grpc_test_init(argc, argv); + grpc_init(); test_slice_malloc_returns_something_sensible(); test_slice_new_returns_something_sensible(); test_slice_new_with_user_data(); @@ -305,5 +306,6 @@ int main(int argc, char** argv) { test_slice_interning(); test_static_slice_interning(); test_static_slice_copy_interning(); + grpc_shutdown(); return 0; } diff --git a/test/core/surface/byte_buffer_reader_test.cc b/test/core/surface/byte_buffer_reader_test.cc index f9ce98da218..b762fed9412 100644 --- a/test/core/surface/byte_buffer_reader_test.cc +++ b/test/core/surface/byte_buffer_reader_test.cc @@ -265,6 +265,7 @@ static void test_byte_buffer_copy(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_read_one_slice(); test_read_one_slice_malloc(); test_read_none_compressed_slice(); @@ -274,5 +275,6 @@ int main(int argc, char** argv) { test_byte_buffer_from_reader(); test_byte_buffer_copy(); test_readall(); + grpc_shutdown(); return 0; } diff --git a/test/core/surface/concurrent_connectivity_test.cc b/test/core/surface/concurrent_connectivity_test.cc index 5771e2f2408..f21086847b8 100644 --- a/test/core/surface/concurrent_connectivity_test.cc +++ b/test/core/surface/concurrent_connectivity_test.cc @@ -224,10 +224,12 @@ int run_concurrent_connectivity_test() { gpr_atm_rel_store(&args.stop, 1); gpr_thd_join(server); - grpc_core::ExecCtx _local_exec_ctx; - grpc_pollset_shutdown(args.pollset, - GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset, - grpc_schedule_on_exec_ctx)); + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_pollset_shutdown( + args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset, + grpc_schedule_on_exec_ctx)); + } grpc_shutdown(); return 0; diff --git a/test/core/transport/byte_stream_test.cc b/test/core/transport/byte_stream_test.cc index 593c2ae141e..a0dbc79158f 100644 --- a/test/core/transport/byte_stream_test.cc +++ b/test/core/transport/byte_stream_test.cc @@ -18,6 +18,7 @@ #include "src/core/lib/transport/byte_stream.h" +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include <grpc/support/useful.h> @@ -253,11 +254,13 @@ static void test_caching_byte_stream_shared_cache(void) { } int main(int argc, char** argv) { + grpc_init(); grpc_test_init(argc, argv); test_slice_buffer_stream_basic(); test_slice_buffer_stream_shutdown(); test_caching_byte_stream_basic(); test_caching_byte_stream_reset(); test_caching_byte_stream_shared_cache(); + grpc_shutdown(); return 0; } diff --git a/test/core/transport/chttp2/bin_decoder_test.cc b/test/core/transport/chttp2/bin_decoder_test.cc index 897d3008b9a..4b65d7d3cac 100644 --- a/test/core/transport/chttp2/bin_decoder_test.cc +++ b/test/core/transport/chttp2/bin_decoder_test.cc @@ -20,6 +20,7 @@ #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> #include "src/core/ext/transport/chttp2/transport/bin_encoder.h" @@ -76,58 +77,61 @@ static grpc_slice base64_decode_with_length(const char* s, s, grpc_chttp2_base64_decode_with_length(base64_encode(s), strlen(s))); int main(int argc, char** argv) { - grpc_core::ExecCtx _local_exec_ctx; - - /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which - takes encoded base64 strings without pad chars, but output length is - required. */ - /* Base64 test vectors from RFC 4648 */ - ENCODE_AND_DECODE(""); - ENCODE_AND_DECODE("f"); - ENCODE_AND_DECODE("foo"); - ENCODE_AND_DECODE("fo"); - ENCODE_AND_DECODE("foob"); - ENCODE_AND_DECODE("fooba"); - ENCODE_AND_DECODE("foobar"); - - ENCODE_AND_DECODE("\xc0\xc1\xc2\xc3\xc4\xc5"); - - /* Base64 test vectors from RFC 4648, with pad chars */ - /* BASE64("") = "" */ - EXPECT_SLICE_EQ("", base64_decode("")); - /* BASE64("f") = "Zg==" */ - EXPECT_SLICE_EQ("f", base64_decode("Zg==")); - /* BASE64("fo") = "Zm8=" */ - EXPECT_SLICE_EQ("fo", base64_decode("Zm8=")); - /* BASE64("foo") = "Zm9v" */ - EXPECT_SLICE_EQ("foo", base64_decode("Zm9v")); - /* BASE64("foob") = "Zm9vYg==" */ - EXPECT_SLICE_EQ("foob", base64_decode("Zm9vYg==")); - /* BASE64("fooba") = "Zm9vYmE=" */ - EXPECT_SLICE_EQ("fooba", base64_decode("Zm9vYmE=")); - /* BASE64("foobar") = "Zm9vYmFy" */ - EXPECT_SLICE_EQ("foobar", base64_decode("Zm9vYmFy")); - - EXPECT_SLICE_EQ("\xc0\xc1\xc2\xc3\xc4\xc5", base64_decode("wMHCw8TF")); - - // Test illegal input length in grpc_chttp2_base64_decode - EXPECT_SLICE_EQ("", base64_decode("a")); - EXPECT_SLICE_EQ("", base64_decode("ab")); - EXPECT_SLICE_EQ("", base64_decode("abc")); - - // Test illegal charactors in grpc_chttp2_base64_decode - EXPECT_SLICE_EQ("", base64_decode("Zm:v")); - EXPECT_SLICE_EQ("", base64_decode("Zm=v")); - - // Test output_length longer than max possible output length in - // grpc_chttp2_base64_decode_with_length - EXPECT_SLICE_EQ("", base64_decode_with_length("Zg", 2)); - EXPECT_SLICE_EQ("", base64_decode_with_length("Zm8", 3)); - EXPECT_SLICE_EQ("", base64_decode_with_length("Zm9v", 4)); - - // Test illegal charactors in grpc_chttp2_base64_decode_with_length - EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3)); - EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3)); - + grpc_init(); + { + grpc_core::ExecCtx _local_exec_ctx; + + /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which + takes encoded base64 strings without pad chars, but output length is + required. */ + /* Base64 test vectors from RFC 4648 */ + ENCODE_AND_DECODE(""); + ENCODE_AND_DECODE("f"); + ENCODE_AND_DECODE("foo"); + ENCODE_AND_DECODE("fo"); + ENCODE_AND_DECODE("foob"); + ENCODE_AND_DECODE("fooba"); + ENCODE_AND_DECODE("foobar"); + + ENCODE_AND_DECODE("\xc0\xc1\xc2\xc3\xc4\xc5"); + + /* Base64 test vectors from RFC 4648, with pad chars */ + /* BASE64("") = "" */ + EXPECT_SLICE_EQ("", base64_decode("")); + /* BASE64("f") = "Zg==" */ + EXPECT_SLICE_EQ("f", base64_decode("Zg==")); + /* BASE64("fo") = "Zm8=" */ + EXPECT_SLICE_EQ("fo", base64_decode("Zm8=")); + /* BASE64("foo") = "Zm9v" */ + EXPECT_SLICE_EQ("foo", base64_decode("Zm9v")); + /* BASE64("foob") = "Zm9vYg==" */ + EXPECT_SLICE_EQ("foob", base64_decode("Zm9vYg==")); + /* BASE64("fooba") = "Zm9vYmE=" */ + EXPECT_SLICE_EQ("fooba", base64_decode("Zm9vYmE=")); + /* BASE64("foobar") = "Zm9vYmFy" */ + EXPECT_SLICE_EQ("foobar", base64_decode("Zm9vYmFy")); + + EXPECT_SLICE_EQ("\xc0\xc1\xc2\xc3\xc4\xc5", base64_decode("wMHCw8TF")); + + // Test illegal input length in grpc_chttp2_base64_decode + EXPECT_SLICE_EQ("", base64_decode("a")); + EXPECT_SLICE_EQ("", base64_decode("ab")); + EXPECT_SLICE_EQ("", base64_decode("abc")); + + // Test illegal charactors in grpc_chttp2_base64_decode + EXPECT_SLICE_EQ("", base64_decode("Zm:v")); + EXPECT_SLICE_EQ("", base64_decode("Zm=v")); + + // Test output_length longer than max possible output length in + // grpc_chttp2_base64_decode_with_length + EXPECT_SLICE_EQ("", base64_decode_with_length("Zg", 2)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm8", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm9v", 4)); + + // Test illegal charactors in grpc_chttp2_base64_decode_with_length + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3)); + EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3)); + } + grpc_shutdown(); return all_ok ? 0 : 1; } diff --git a/test/core/transport/chttp2/bin_encoder_test.cc b/test/core/transport/chttp2/bin_encoder_test.cc index 78b8808c413..44f5de8a50d 100644 --- a/test/core/transport/chttp2/bin_encoder_test.cc +++ b/test/core/transport/chttp2/bin_encoder_test.cc @@ -99,6 +99,8 @@ static void expect_binary_header(const char* hdr, int binary) { } int main(int argc, char** argv) { + grpc_init(); + /* Base64 test vectors from RFC 4648, with padding removed */ /* BASE64("") = "" */ EXPECT_SLICE_EQ("", B64("")); @@ -169,5 +171,6 @@ int main(int argc, char** argv) { expect_binary_header("foo-bar", 0); expect_binary_header("-bin", 0); + grpc_shutdown(); return all_ok ? 0 : 1; } diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc index 0dfd5ecc2d8..dcec8b2230e 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc @@ -37,13 +37,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (squelch) gpr_set_log_function(dont_log); grpc_init(); grpc_chttp2_hpack_parser parser; - grpc_core::ExecCtx _local_exec_ctx; - grpc_chttp2_hpack_parser_init(&parser); - parser.on_header = onhdr; - GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse( - &parser, grpc_slice_from_static_buffer(data, size))); - grpc_chttp2_hpack_parser_destroy(&parser); - + { + grpc_core::ExecCtx _local_exec_ctx; + grpc_chttp2_hpack_parser_init(&parser); + parser.on_header = onhdr; + GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse( + &parser, grpc_slice_from_static_buffer(data, size))); + grpc_chttp2_hpack_parser_destroy(&parser); + } grpc_shutdown(); return 0; } diff --git a/test/core/transport/chttp2/varint_test.cc b/test/core/transport/chttp2/varint_test.cc index 413b461b3af..36760d0c723 100644 --- a/test/core/transport/chttp2/varint_test.cc +++ b/test/core/transport/chttp2/varint_test.cc @@ -18,6 +18,7 @@ #include "src/core/ext/transport/chttp2/transport/varint.h" +#include <grpc/grpc.h> #include <grpc/slice.h> #include <grpc/support/log.h> @@ -44,11 +45,13 @@ static void test_varint(uint32_t value, uint32_t prefix_bits, uint8_t prefix_or, int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); TEST_VARINT(0, 1, 0, "\x00"); TEST_VARINT(128, 1, 0, "\x7f\x01"); TEST_VARINT(16384, 1, 0, "\x7f\x81\x7f"); TEST_VARINT(2097152, 1, 0, "\x7f\x81\xff\x7f"); TEST_VARINT(268435456, 1, 0, "\x7f\x81\xff\xff\x7f"); TEST_VARINT(0xffffffff, 1, 0, "\x7f\x80\xff\xff\xff\x0f"); + grpc_shutdown(); return 0; } diff --git a/test/core/transport/connectivity_state_test.cc b/test/core/transport/connectivity_state_test.cc index 99bd0fc65f0..e1bc0c4eb73 100644 --- a/test/core/transport/connectivity_state_test.cc +++ b/test/core/transport/connectivity_state_test.cc @@ -134,11 +134,13 @@ static void test_subscribe_with_failure_then_destroy(void) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); grpc_core::testing::grpc_tracer_enable_flag(&grpc_connectivity_state_trace); test_connectivity_state_name(); test_check(); test_subscribe_then_unsubscribe(); test_subscribe_then_destroy(); test_subscribe_with_failure_then_destroy(); + grpc_shutdown(); return 0; } diff --git a/test/core/transport/metadata_test.cc b/test/core/transport/metadata_test.cc index e5bdc5901d6..70d557b1287 100644 --- a/test/core/transport/metadata_test.cc +++ b/test/core/transport/metadata_test.cc @@ -369,6 +369,7 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) { int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); test_no_op(); for (int k = 0; k <= 1; k++) { for (int v = 0; v <= 1; v++) { @@ -383,5 +384,6 @@ int main(int argc, char** argv) { test_create_many_persistant_metadata(); test_things_stick_around(); test_user_data_works(); + grpc_shutdown(); return 0; } diff --git a/test/core/transport/stream_owned_slice_test.cc b/test/core/transport/stream_owned_slice_test.cc index d25d83c2c6c..7831f67a048 100644 --- a/test/core/transport/stream_owned_slice_test.cc +++ b/test/core/transport/stream_owned_slice_test.cc @@ -20,12 +20,14 @@ #include "test/core/util/test_config.h" +#include <grpc/grpc.h> #include <grpc/support/log.h> static void do_nothing(void* arg, grpc_error* error) {} int main(int argc, char** argv) { grpc_test_init(argc, argv); + grpc_init(); uint8_t buffer[] = "abc123"; grpc_stream_refcount r; @@ -39,5 +41,6 @@ int main(int argc, char** argv) { grpc_slice_unref(slice); GPR_ASSERT(r.refs.count == 1); + grpc_shutdown(); return 0; } diff --git a/test/core/util/one_corpus_entry_fuzzer.cc b/test/core/util/one_corpus_entry_fuzzer.cc index c0b67da1e26..fc75125a9bc 100644 --- a/test/core/util/one_corpus_entry_fuzzer.cc +++ b/test/core/util/one_corpus_entry_fuzzer.cc @@ -18,7 +18,10 @@ #include <stdbool.h> +#include <grpc/grpc.h> + #include <grpc/support/log.h> +#include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/load_file.h" extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); @@ -30,10 +33,17 @@ int main(int argc, char** argv) { grpc_slice buffer; squelch = false; leak_check = false; + /* TODO(yashkt) Calling grpc_init breaks tests. Fix the tests and replace + * grpc_core::ExecCtx::GlobalInit with grpc_init and GlobalShutdown with + * grpc_shutdown */ + grpc_core::ExecCtx::GlobalInit(); GPR_ASSERT( GRPC_LOG_IF_ERROR("load_file", grpc_load_file(argv[1], 0, &buffer))); LLVMFuzzerTestOneInput(GRPC_SLICE_START_PTR(buffer), GRPC_SLICE_LENGTH(buffer)); + grpc_core::ExecCtx::GlobalShutdown(); + grpc_core::ExecCtx::GlobalInit(); grpc_slice_unref(buffer); + grpc_core::ExecCtx::GlobalShutdown(); return 0; } diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc index 9d0cb20bbda..705286c6d4b 100644 --- a/test/core/util/port_server_client.cc +++ b/test/core/util/port_server_client.cc @@ -194,54 +194,55 @@ int grpc_pick_port_using_server(void) { grpc_httpcli_context context; grpc_httpcli_request req; portreq pr; - grpc_core::ExecCtx _local_exec_ctx; grpc_closure* shutdown_closure; grpc_init(); + { + grpc_core::ExecCtx _local_exec_ctx; + memset(&pr, 0, sizeof(pr)); + memset(&req, 0, sizeof(req)); + grpc_pollset* pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); + grpc_pollset_init(pollset, &pr.mu); + pr.pops = grpc_polling_entity_create_from_pollset(pollset); + shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops, + grpc_schedule_on_exec_ctx); + pr.port = -1; + pr.server = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS); + pr.ctx = &context; + + req.host = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS); + req.http.path = const_cast<char*>("/get"); - memset(&pr, 0, sizeof(pr)); - memset(&req, 0, sizeof(req)); - grpc_pollset* pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); - grpc_pollset_init(pollset, &pr.mu); - pr.pops = grpc_polling_entity_create_from_pollset(pollset); - shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops, - grpc_schedule_on_exec_ctx); - pr.port = -1; - pr.server = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS); - pr.ctx = &context; - - req.host = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS); - req.http.path = const_cast<char*>("/get"); - - grpc_httpcli_context_init(&context); - grpc_resource_quota* resource_quota = - grpc_resource_quota_create("port_server_client/pick"); - grpc_httpcli_get( - &context, &pr.pops, resource_quota, &req, - grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, - GRPC_CLOSURE_CREATE(got_port_from_server, &pr, grpc_schedule_on_exec_ctx), - &pr.response); - grpc_resource_quota_unref_internal(resource_quota); - grpc_core::ExecCtx::Get()->Flush(); - gpr_mu_lock(pr.mu); - while (pr.port == -1) { - grpc_pollset_worker* worker = nullptr; - if (!GRPC_LOG_IF_ERROR( - "pollset_work", - grpc_pollset_work( - grpc_polling_entity_pollset(&pr.pops), &worker, - grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { - pr.port = 0; + grpc_httpcli_context_init(&context); + grpc_resource_quota* resource_quota = + grpc_resource_quota_create("port_server_client/pick"); + grpc_httpcli_get(&context, &pr.pops, resource_quota, &req, + grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC, + GRPC_CLOSURE_CREATE(got_port_from_server, &pr, + grpc_schedule_on_exec_ctx), + &pr.response); + grpc_resource_quota_unref_internal(resource_quota); + grpc_core::ExecCtx::Get()->Flush(); + gpr_mu_lock(pr.mu); + while (pr.port == -1) { + grpc_pollset_worker* worker = nullptr; + if (!GRPC_LOG_IF_ERROR( + "pollset_work", + grpc_pollset_work( + grpc_polling_entity_pollset(&pr.pops), &worker, + grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) { + pr.port = 0; + } } - } - gpr_mu_unlock(pr.mu); + gpr_mu_unlock(pr.mu); - grpc_http_response_destroy(&pr.response); - grpc_httpcli_context_destroy(&context); - grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), - shutdown_closure); + grpc_http_response_destroy(&pr.response); + grpc_httpcli_context_destroy(&context); + grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops), + shutdown_closure); - grpc_core::ExecCtx::Get()->Flush(); + grpc_core::ExecCtx::Get()->Flush(); + } grpc_shutdown(); return pr.port; From 03412ee9de902e378bc4cea933397ebe5faddc29 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Tue, 28 Nov 2017 18:06:23 -0800 Subject: [PATCH 18/22] Remove TLS_NO_SUPPORT and always use GPR_TLS. Reorder statements in grpc_init and grpc_shutdown. Add grpc_init and grpc_shutdown in failing test/cpp tests --- include/grpc/impl/codegen/port_platform.h | 1 - src/core/lib/iomgr/exec_ctx.cc | 6 ------ src/core/lib/iomgr/exec_ctx.h | 18 +----------------- src/core/lib/iomgr/iomgr.cc | 13 ++++--------- src/core/lib/surface/init.cc | 10 ++++++---- .../CoreCronetEnd2EndTests.mm | 2 +- test/core/end2end/fuzzers/api_fuzzer.cc | 2 +- test/core/http/httpscli_test.cc | 6 +++--- test/core/slice/percent_decode_fuzzer.cc | 3 +++ test/core/slice/percent_encode_fuzzer.cc | 3 +++ test/core/util/one_corpus_entry_fuzzer.cc | 2 -- test/cpp/common/channel_arguments_test.cc | 5 ++++- test/cpp/grpclb/grpclb_api_test.cc | 6 +++++- test/cpp/server/server_builder_test.cc | 7 ++++++- test/cpp/util/byte_buffer_test.cc | 6 +++++- test/cpp/util/slice_test.cc | 6 +++++- 16 files changed, 47 insertions(+), 49 deletions(-) diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index 1a93be38e01..1906886d5e2 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -182,7 +182,6 @@ #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif -#define TLS_NO_SUPPORT 1 /* thread-local storage not supported. Use GPR_TLS */ #if TARGET_OS_IPHONE #define GPR_PLATFORM_STRING "ios" #define GPR_CPU_IPHONE 1 diff --git a/src/core/lib/iomgr/exec_ctx.cc b/src/core/lib/iomgr/exec_ctx.cc index f4247db754d..e005437e0a8 100644 --- a/src/core/lib/iomgr/exec_ctx.cc +++ b/src/core/lib/iomgr/exec_ctx.cc @@ -104,17 +104,11 @@ static grpc_closure_scheduler exec_ctx_scheduler = {&exec_ctx_scheduler_vtable}; grpc_closure_scheduler* grpc_schedule_on_exec_ctx = &exec_ctx_scheduler; namespace grpc_core { -#ifdef TLS_NO_SUPPORT GPR_TLS_CLASS_DEF(ExecCtx::exec_ctx_); -#else -thread_local ExecCtx* ExecCtx::exec_ctx_ = nullptr; -#endif void ExecCtx::GlobalInit(void) { g_start_time = gpr_now(GPR_CLOCK_MONOTONIC); -#ifdef TLS_NO_SUPPORT gpr_tls_init(&exec_ctx_); -#endif } bool ExecCtx::Flush() { diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h index b04aab61fab..c8700f33524 100644 --- a/src/core/lib/iomgr/exec_ctx.h +++ b/src/core/lib/iomgr/exec_ctx.h @@ -170,19 +170,11 @@ on outside context */ static void GlobalInit(void); /** Global shutdown for ExecCtx. Called by iomgr */ - static void GlobalShutdown(void) { -#ifdef TLS_NO_SUPPORT - gpr_tls_destroy(&exec_ctx_); -#endif - } + static void GlobalShutdown(void) { gpr_tls_destroy(&exec_ctx_); } /** Gets pointer to current exec_ctx */ static ExecCtx* Get() { -#ifdef TLS_NO_SUPPORT return reinterpret_cast<ExecCtx*>(gpr_tls_get(&exec_ctx_)); -#else - return exec_ctx_; -#endif } protected: @@ -192,11 +184,7 @@ on outside context */ private: /** Set exec_ctx_ to exec_ctx */ void Set(ExecCtx* exec_ctx) { -#ifdef TLS_NO_SUPPORT gpr_tls_set(&exec_ctx_, reinterpret_cast<intptr_t>(exec_ctx)); -#else - exec_ctx_ = exec_ctx; -#endif } grpc_closure_list closure_list_ = GRPC_CLOSURE_LIST_INIT; @@ -207,11 +195,7 @@ on outside context */ bool now_is_valid_ = false; grpc_millis now_ = 0; -#ifdef TLS_NO_SUPPORT GPR_TLS_CLASS_DECL(exec_ctx_); -#else - static thread_local ExecCtx* exec_ctx_; -#endif ExecCtx* last_exec_ctx_ = Get(); }; } // namespace grpc_core diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index 570d97443d8..27e93762720 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -46,15 +46,12 @@ static int g_shutdown; static grpc_iomgr_object g_root_object; void grpc_iomgr_init() { + grpc_core::ExecCtx _local_exec_ctx; g_shutdown = 0; gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); - grpc_core::ExecCtx::GlobalInit(); - { - grpc_core::ExecCtx _local_exec_ctx; - grpc_executor_init(); - grpc_timer_list_init(); - } + grpc_executor_init(); + grpc_timer_list_init(); g_root_object.next = g_root_object.prev = &g_root_object; g_root_object.name = (char*)"root"; grpc_network_status_init(); @@ -85,7 +82,6 @@ void grpc_iomgr_shutdown() { gpr_timespec last_warning_time = gpr_now(GPR_CLOCK_REALTIME); { - grpc_core::ExecCtx _local_exec_ctx(0); grpc_timer_manager_shutdown(); grpc_iomgr_platform_flush(); grpc_executor_shutdown(); @@ -141,8 +137,8 @@ void grpc_iomgr_shutdown() { } } gpr_mu_unlock(&g_mu); - grpc_timer_list_shutdown(); + grpc_core::ExecCtx::Get()->Flush(); } /* ensure all threads have left g_mu */ @@ -150,7 +146,6 @@ void grpc_iomgr_shutdown() { gpr_mu_unlock(&g_mu); grpc_iomgr_platform_shutdown(); - grpc_core::ExecCtx::GlobalShutdown(); grpc_network_status_shutdown(); gpr_mu_destroy(&g_mu); gpr_cv_destroy(&g_rcv); diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 2d7a33e147b..e6ff475a90a 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -124,6 +124,7 @@ void grpc_init(void) { grpc_mdctx_global_init(); grpc_channel_init_init(); grpc_security_pre_init(); + grpc_core::ExecCtx::GlobalInit(); grpc_iomgr_init(); gpr_timers_global_init(); grpc_handshaker_factory_registry_init(); @@ -156,8 +157,8 @@ void grpc_shutdown(void) { gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { { + grpc_core::ExecCtx _local_exec_ctx(0); { - grpc_core::ExecCtx _local_exec_ctx(0); grpc_executor_shutdown(); grpc_timer_manager_set_threading( false); // shutdown timer_manager thread @@ -166,15 +167,16 @@ void grpc_shutdown(void) { g_all_of_the_plugins[i].destroy(); } } - grpc_mdctx_global_shutdown(); - grpc_handshaker_factory_registry_shutdown(); } - grpc_iomgr_shutdown(); gpr_timers_global_destroy(); grpc_tracer_shutdown(); + grpc_handshaker_factory_registry_shutdown(); + grpc_iomgr_shutdown(); + grpc_mdctx_global_shutdown(); grpc_slice_intern_shutdown(); grpc_stats_shutdown(); } + grpc_core::ExecCtx::GlobalShutdown(); } gpr_mu_unlock(&g_init_mu); } diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm index 55c5105de4c..7a09e8f3952 100644 --- a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm +++ b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm @@ -110,7 +110,7 @@ static void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) { static void cronet_init_client_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_exec_ctx _local_exec_ctx; + grpc_core::ExecCtx _local_exec_ctx; stream_engine *cronetEngine = [Cronet getGlobalEngine]; grpc_channel_args *new_client_args = grpc_channel_args_copy(client_args); diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc index f3127e92cc4..ce916bd3414 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.cc +++ b/test/core/end2end/fuzzers/api_fuzzer.cc @@ -745,8 +745,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { input_stream inp = {data, data + size}; grpc_tcp_client_connect_impl = my_tcp_client_connect; gpr_now_impl = now_impl; - grpc_timer_manager_set_threading(false); grpc_init(); + grpc_timer_manager_set_threading(false); { grpc_core::ExecCtx _local_exec_ctx; grpc_executor_set_threading(false); diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc index ee2bff18dbb..418afb6992e 100644 --- a/test/core/http/httpscli_test.cc +++ b/test/core/http/httpscli_test.cc @@ -89,7 +89,7 @@ static void test_get(int port) { "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -129,7 +129,7 @@ static void test_post(int port) { "pollset_work", grpc_pollset_work(grpc_polling_entity_pollset(&g_pops), &worker, n_seconds_time(1)))); gpr_mu_unlock(g_mu); - + grpc_core::ExecCtx::Get()->Flush(); gpr_mu_lock(g_mu); } gpr_mu_unlock(g_mu); @@ -144,7 +144,6 @@ static void destroy_pops(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; gpr_subprocess* server; char* me = argv[0]; char* lslash = strrchr(me, '/'); @@ -196,6 +195,7 @@ int main(int argc, char** argv) { test_post(port); { + grpc_core::ExecCtx _local_exec_ctx; grpc_httpcli_context_destroy(&g_context); GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, grpc_schedule_on_exec_ctx); diff --git a/test/core/slice/percent_decode_fuzzer.cc b/test/core/slice/percent_decode_fuzzer.cc index 3603177c47f..81eb031014f 100644 --- a/test/core/slice/percent_decode_fuzzer.cc +++ b/test/core/slice/percent_decode_fuzzer.cc @@ -20,6 +20,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -31,6 +32,7 @@ bool leak_check = true; extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { struct grpc_memory_counters counters; + grpc_init(); grpc_memory_counters_init(); grpc_slice input = grpc_slice_from_copied_buffer((const char*)data, size); grpc_slice output; @@ -46,6 +48,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_slice_unref(input); counters = grpc_memory_counters_snapshot(); grpc_memory_counters_destroy(); + grpc_shutdown(); GPR_ASSERT(counters.total_size_relative == 0); return 0; } diff --git a/test/core/slice/percent_encode_fuzzer.cc b/test/core/slice/percent_encode_fuzzer.cc index c8e3849fc8e..201ae2790eb 100644 --- a/test/core/slice/percent_encode_fuzzer.cc +++ b/test/core/slice/percent_encode_fuzzer.cc @@ -20,6 +20,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -31,6 +32,7 @@ bool leak_check = true; static void test(const uint8_t* data, size_t size, const uint8_t* dict) { struct grpc_memory_counters counters; + grpc_init(); grpc_memory_counters_init(); grpc_slice input = grpc_slice_from_copied_buffer((const char*)data, size); grpc_slice output = grpc_percent_encode_slice(input, dict); @@ -48,6 +50,7 @@ static void test(const uint8_t* data, size_t size, const uint8_t* dict) { grpc_slice_unref(permissive_decoded_output); counters = grpc_memory_counters_snapshot(); grpc_memory_counters_destroy(); + grpc_shutdown(); GPR_ASSERT(counters.total_size_relative == 0); } diff --git a/test/core/util/one_corpus_entry_fuzzer.cc b/test/core/util/one_corpus_entry_fuzzer.cc index fc75125a9bc..c745eb5dc65 100644 --- a/test/core/util/one_corpus_entry_fuzzer.cc +++ b/test/core/util/one_corpus_entry_fuzzer.cc @@ -36,12 +36,10 @@ int main(int argc, char** argv) { /* TODO(yashkt) Calling grpc_init breaks tests. Fix the tests and replace * grpc_core::ExecCtx::GlobalInit with grpc_init and GlobalShutdown with * grpc_shutdown */ - grpc_core::ExecCtx::GlobalInit(); GPR_ASSERT( GRPC_LOG_IF_ERROR("load_file", grpc_load_file(argv[1], 0, &buffer))); LLVMFuzzerTestOneInput(GRPC_SLICE_START_PTR(buffer), GRPC_SLICE_LENGTH(buffer)); - grpc_core::ExecCtx::GlobalShutdown(); grpc_core::ExecCtx::GlobalInit(); grpc_slice_unref(buffer); grpc_core::ExecCtx::GlobalShutdown(); diff --git a/test/cpp/common/channel_arguments_test.cc b/test/cpp/common/channel_arguments_test.cc index d6ed2e5aa24..f330c01281e 100644 --- a/test/cpp/common/channel_arguments_test.cc +++ b/test/cpp/common/channel_arguments_test.cc @@ -249,5 +249,8 @@ TEST_F(ChannelArgumentsTest, SetUserAgentPrefix) { int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + grpc_init(); + int ret = RUN_ALL_TESTS(); + grpc_shutdown(); + return ret; } diff --git a/test/cpp/grpclb/grpclb_api_test.cc b/test/cpp/grpclb/grpclb_api_test.cc index 7b62080b497..a494d6f5195 100644 --- a/test/cpp/grpclb/grpclb_api_test.cc +++ b/test/cpp/grpclb/grpclb_api_test.cc @@ -17,6 +17,7 @@ */ #include <grpc++/impl/codegen/config.h> +#include <grpc/grpc.h> #include <gtest/gtest.h> #include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h" @@ -135,5 +136,8 @@ TEST_F(GrpclbTest, ParseResponseServerList) { int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + grpc_init(); + int ret = RUN_ALL_TESTS(); + grpc_shutdown(); + return ret; } diff --git a/test/cpp/server/server_builder_test.cc b/test/cpp/server/server_builder_test.cc index d18459cec9d..694ce549c06 100644 --- a/test/cpp/server/server_builder_test.cc +++ b/test/cpp/server/server_builder_test.cc @@ -22,6 +22,8 @@ #include <grpc++/server.h> #include <grpc++/server_builder.h> +#include <grpc/grpc.h> + #include "src/proto/grpc/testing/echo.grpc.pb.h" #include "test/core/util/port.h" @@ -77,5 +79,8 @@ TEST(ServerBuilderTest, CreateServerRepeatedPortWithDisallowedReusePort) { int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + grpc_init(); + int ret = RUN_ALL_TESTS(); + grpc_shutdown(); + return ret; } diff --git a/test/cpp/util/byte_buffer_test.cc b/test/cpp/util/byte_buffer_test.cc index 8fb51bc6635..d603b289c88 100644 --- a/test/cpp/util/byte_buffer_test.cc +++ b/test/cpp/util/byte_buffer_test.cc @@ -22,6 +22,7 @@ #include <vector> #include <grpc++/support/slice.h> +#include <grpc/grpc.h> #include <grpc/slice.h> #include <gtest/gtest.h> @@ -109,5 +110,8 @@ TEST_F(ByteBufferTest, SerializationMakesCopy) { int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + grpc_init(); + int ret = RUN_ALL_TESTS(); + grpc_shutdown(); + return ret; } diff --git a/test/cpp/util/slice_test.cc b/test/cpp/util/slice_test.cc index 8a8962d7ee0..c2e55f3374f 100644 --- a/test/cpp/util/slice_test.cc +++ b/test/cpp/util/slice_test.cc @@ -18,6 +18,7 @@ #include <grpc++/support/slice.h> +#include <grpc/grpc.h> #include <grpc/slice.h> #include <gtest/gtest.h> @@ -127,5 +128,8 @@ TEST_F(SliceTest, Cslice) { int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); + grpc_init(); + int ret = RUN_ALL_TESTS(); + grpc_shutdown(); + return ret; } From 26e934245d2af33f613f932f290315c5c9feca27 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Wed, 29 Nov 2017 11:55:32 -0800 Subject: [PATCH 19/22] Fix race conditions and more grpc_inits required. csharp tests will be fixed in a different PR --- test/core/http/request_fuzzer.cc | 3 +++ test/core/http/response_fuzzer.cc | 3 +++ test/core/iomgr/resolve_address_posix_test.cc | 2 +- test/core/nanopb/fuzzer_response.cc | 3 +++ test/core/nanopb/fuzzer_serverlist.cc | 3 +++ test/core/surface/completion_queue_threading_test.cc | 2 +- 6 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/core/http/request_fuzzer.cc b/test/core/http/request_fuzzer.cc index 368ac1b49db..9798cfb33c7 100644 --- a/test/core/http/request_fuzzer.cc +++ b/test/core/http/request_fuzzer.cc @@ -20,6 +20,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/lib/http/parser.h" @@ -30,6 +31,7 @@ bool leak_check = true; extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_http_parser parser; grpc_http_request request; + grpc_init(); memset(&request, 0, sizeof(request)); grpc_http_parser_init(&parser, GRPC_HTTP_REQUEST, &request); grpc_slice slice = grpc_slice_from_copied_buffer((const char*)data, size); @@ -38,5 +40,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_slice_unref(slice); grpc_http_parser_destroy(&parser); grpc_http_request_destroy(&request); + grpc_shutdown(); return 0; } diff --git a/test/core/http/response_fuzzer.cc b/test/core/http/response_fuzzer.cc index 2a793fddd4b..fc0904b1db7 100644 --- a/test/core/http/response_fuzzer.cc +++ b/test/core/http/response_fuzzer.cc @@ -19,6 +19,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/lib/http/parser.h" @@ -29,6 +30,7 @@ bool leak_check = true; extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_http_parser parser; grpc_http_response response; + grpc_init(); memset(&response, 0, sizeof(response)); grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response); grpc_slice slice = grpc_slice_from_copied_buffer((const char*)data, size); @@ -37,5 +39,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_slice_unref(slice); grpc_http_parser_destroy(&parser); grpc_http_response_destroy(&response); + grpc_shutdown(); return 0; } diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index 0ea57e22023..45a5e5a0b13 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -79,9 +79,9 @@ static grpc_millis n_sec_deadline(int seconds) { static void actually_poll(void* argsp) { args_struct* args = static_cast<args_struct*>(argsp); - grpc_core::ExecCtx _local_exec_ctx; grpc_millis deadline = n_sec_deadline(10); while (true) { + grpc_core::ExecCtx _local_exec_ctx; bool done = gpr_atm_acq_load(&args->done_atm) != 0; if (done) { break; diff --git a/test/core/nanopb/fuzzer_response.cc b/test/core/nanopb/fuzzer_response.cc index 7039c801cb9..3a70dea5e98 100644 --- a/test/core/nanopb/fuzzer_response.cc +++ b/test/core/nanopb/fuzzer_response.cc @@ -19,6 +19,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h" @@ -29,6 +30,7 @@ bool leak_check = true; static void dont_log(gpr_log_func_args* args) {} extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + grpc_init(); if (squelch) gpr_set_log_function(dont_log); grpc_slice slice = grpc_slice_from_copied_buffer((const char*)data, size); grpc_grpclb_initial_response* response; @@ -36,5 +38,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_grpclb_initial_response_destroy(response); } grpc_slice_unref(slice); + grpc_shutdown(); return 0; } diff --git a/test/core/nanopb/fuzzer_serverlist.cc b/test/core/nanopb/fuzzer_serverlist.cc index 0a6b1767a1a..d0af117ef96 100644 --- a/test/core/nanopb/fuzzer_serverlist.cc +++ b/test/core/nanopb/fuzzer_serverlist.cc @@ -19,6 +19,7 @@ #include <stdint.h> #include <string.h> +#include <grpc/grpc.h> #include <grpc/support/alloc.h> #include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h" @@ -29,6 +30,7 @@ bool leak_check = true; static void dont_log(gpr_log_func_args* args) {} extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + grpc_init(); if (squelch) gpr_set_log_function(dont_log); grpc_slice slice = grpc_slice_from_copied_buffer((const char*)data, size); grpc_grpclb_serverlist* serverlist; @@ -36,5 +38,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_grpclb_destroy_serverlist(serverlist); } grpc_slice_unref(slice); + grpc_shutdown(); return 0; } diff --git a/test/core/surface/completion_queue_threading_test.cc b/test/core/surface/completion_queue_threading_test.cc index d923387e23e..8867ba88c3a 100644 --- a/test/core/surface/completion_queue_threading_test.cc +++ b/test/core/surface/completion_queue_threading_test.cc @@ -142,7 +142,6 @@ static void free_completion(void* arg, grpc_cq_completion* completion) { static void producer_thread(void* arg) { test_thread_options* opt = static_cast<test_thread_options*>(arg); int i; - grpc_core::ExecCtx _local_exec_ctx; gpr_log(GPR_INFO, "producer %d started", opt->id); gpr_event_set(&opt->on_started, (void*)(intptr_t)1); @@ -159,6 +158,7 @@ static void producer_thread(void* arg) { gpr_log(GPR_INFO, "producer %d phase 2", opt->id); for (i = 0; i < TEST_THREAD_EVENTS; i++) { + grpc_core::ExecCtx _local_exec_ctx; grpc_cq_end_op(opt->cc, (void*)(intptr_t)1, GRPC_ERROR_NONE, free_completion, nullptr, static_cast<grpc_cq_completion*>( From c354269ba7bd1f6dfe9c86ba18f38fc8e346dcfc Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Wed, 29 Nov 2017 19:07:44 -0800 Subject: [PATCH 20/22] Remove _ prefixed variable names --- .../client_channel/channel_connectivity.cc | 4 +- .../resolver/dns/c_ares/grpc_ares_wrapper.cc | 2 +- .../chttp2/client/insecure/channel_create.cc | 2 +- .../client/insecure/channel_create_posix.cc | 2 +- .../client/secure/secure_channel_create.cc | 2 +- .../chttp2/server/insecure/server_chttp2.cc | 2 +- .../server/insecure/server_chttp2_posix.cc | 2 +- .../server/secure/server_secure_chttp2.cc | 2 +- .../client/secure/cronet_channel_create.cc | 2 +- .../cronet/transport/cronet_transport.cc | 16 +-- .../ext/transport/inproc/inproc_transport.cc | 6 +- .../compression/stream_compression_gzip.cc | 2 +- src/core/lib/iomgr/endpoint_pair_posix.cc | 2 +- src/core/lib/iomgr/endpoint_pair_windows.cc | 2 +- src/core/lib/iomgr/executor.cc | 2 +- src/core/lib/iomgr/iocp_windows.cc | 4 +- src/core/lib/iomgr/iomgr.cc | 2 +- src/core/lib/iomgr/iomgr_uv.cc | 2 +- src/core/lib/iomgr/resolve_address_uv.cc | 2 +- src/core/lib/iomgr/resource_quota.cc | 4 +- src/core/lib/iomgr/tcp_client_uv.cc | 2 +- src/core/lib/iomgr/tcp_server_uv.cc | 6 +- src/core/lib/iomgr/tcp_uv.cc | 10 +- src/core/lib/iomgr/timer_manager.cc | 4 +- src/core/lib/iomgr/timer_uv.cc | 2 +- .../lib/security/context/security_context.cc | 4 +- .../lib/security/credentials/credentials.cc | 6 +- .../google_default_credentials.cc | 4 +- .../credentials/iam/iam_credentials.cc | 2 +- .../credentials/jwt/jwt_credentials.cc | 2 +- .../security/credentials/jwt/jwt_verifier.cc | 2 +- .../credentials/oauth2/oauth2_credentials.cc | 2 +- .../credentials/plugin/plugin_credentials.cc | 4 +- .../security/transport/security_handshaker.cc | 2 +- .../security/transport/server_auth_filter.cc | 2 +- src/core/lib/slice/slice.cc | 2 +- src/core/lib/slice/slice_buffer.cc | 4 +- src/core/lib/surface/alarm.cc | 6 +- src/core/lib/surface/byte_buffer.cc | 2 +- src/core/lib/surface/byte_buffer_reader.cc | 4 +- src/core/lib/surface/call.cc | 8 +- src/core/lib/surface/call_details.cc | 2 +- src/core/lib/surface/channel.cc | 10 +- src/core/lib/surface/channel_ping.cc | 2 +- src/core/lib/surface/completion_queue.cc | 14 +-- src/core/lib/surface/init.cc | 2 +- src/core/lib/surface/lame_client.cc | 2 +- src/core/lib/surface/server.cc | 12 +- src/cpp/common/channel_arguments.cc | 4 +- .../CoreCronetEnd2EndTests.mm | 2 +- test/core/backoff/backoff_test.cc | 8 +- test/core/bad_client/bad_client.cc | 4 +- test/core/channel/channel_args_test.cc | 8 +- test/core/channel/channel_stack_test.cc | 2 +- .../channel/minimal_stack_is_minimal_test.cc | 4 +- test/core/client_channel/lb_policies_test.cc | 4 +- .../core/client_channel/parse_address_test.cc | 6 +- .../dns_resolver_connectivity_test.cc | 4 +- .../resolvers/dns_resolver_test.cc | 6 +- .../resolvers/fake_resolver_test.cc | 2 +- .../resolvers/sockaddr_resolver_test.cc | 6 +- test/core/client_channel/uri_fuzzer_test.cc | 2 +- test/core/client_channel/uri_parser_test.cc | 10 +- test/core/compression/algorithm_test.cc | 4 +- .../core/compression/message_compress_test.cc | 16 +-- test/core/debug/stats_test.cc | 6 +- test/core/end2end/bad_server_response_test.cc | 2 +- test/core/end2end/connection_refused_test.cc | 2 +- test/core/end2end/fixtures/h2_census.cc | 4 +- test/core/end2end/fixtures/h2_compress.cc | 6 +- test/core/end2end/fixtures/h2_fd.cc | 4 +- .../end2end/fixtures/h2_full+workarounds.cc | 2 +- .../end2end/fixtures/h2_load_reporting.cc | 2 +- test/core/end2end/fixtures/h2_oauth2.cc | 2 +- .../end2end/fixtures/h2_sockpair+trace.cc | 6 +- test/core/end2end/fixtures/h2_sockpair.cc | 6 +- .../end2end/fixtures/h2_sockpair_1byte.cc | 6 +- test/core/end2end/fixtures/h2_ssl.cc | 2 +- test/core/end2end/fixtures/h2_ssl_proxy.cc | 4 +- .../end2end/fixtures/http_proxy_fixture.cc | 6 +- test/core/end2end/fuzzers/api_fuzzer.cc | 8 +- test/core/end2end/fuzzers/client_fuzzer.cc | 2 +- test/core/end2end/fuzzers/server_fuzzer.cc | 2 +- test/core/end2end/h2_ssl_cert_test.cc | 2 +- .../core/end2end/tests/cancel_after_accept.cc | 2 +- .../end2end/tests/cancel_after_round_trip.cc | 2 +- test/core/end2end/tests/compressed_payload.cc | 6 +- .../core/end2end/tests/load_reporting_hook.cc | 2 +- test/core/end2end/tests/max_message_length.cc | 4 +- .../stream_compression_compressed_payload.cc | 6 +- .../tests/stream_compression_payload.cc | 2 +- .../stream_compression_ping_pong_streaming.cc | 2 +- .../tests/workaround_cronet_compression.cc | 4 +- test/core/http/httpcli_test.cc | 6 +- test/core/http/httpscli_test.cc | 6 +- test/core/iomgr/combiner_test.cc | 10 +- test/core/iomgr/endpoint_pair_test.cc | 4 +- test/core/iomgr/endpoint_tests.cc | 4 +- test/core/iomgr/ev_epollsig_linux_test.cc | 10 +- test/core/iomgr/fd_conservation_posix_test.cc | 2 +- test/core/iomgr/fd_posix_test.cc | 10 +- test/core/iomgr/pollset_set_test.cc | 8 +- test/core/iomgr/resolve_address_posix_test.cc | 8 +- test/core/iomgr/resolve_address_test.cc | 20 ++-- test/core/iomgr/resource_quota_test.cc | 112 +++++++++--------- test/core/iomgr/tcp_client_posix_test.cc | 8 +- test/core/iomgr/tcp_client_uv_test.cc | 6 +- test/core/iomgr/tcp_posix_test.cc | 14 +-- test/core/iomgr/tcp_server_posix_test.cc | 12 +- test/core/iomgr/tcp_server_uv_test.cc | 12 +- test/core/iomgr/timer_list_test.cc | 4 +- test/core/iomgr/udp_server_test.cc | 14 +-- test/core/security/credentials_test.cc | 54 ++++----- test/core/security/json_token_test.cc | 4 +- test/core/security/jwt_verifier_test.cc | 26 ++-- test/core/security/oauth2_utils.cc | 2 +- .../print_google_default_creds_token.cc | 2 +- test/core/security/secure_endpoint_test.cc | 6 +- test/core/security/ssl_server_fuzzer.cc | 2 +- test/core/security/verify_jwt.cc | 2 +- test/core/slice/b64_test.cc | 8 +- test/core/slice/slice_hash_table_test.cc | 6 +- test/core/surface/byte_buffer_reader_test.cc | 2 +- test/core/surface/channel_create_test.cc | 2 +- test/core/surface/completion_queue_test.cc | 8 +- .../completion_queue_threading_test.cc | 4 +- .../surface/concurrent_connectivity_test.cc | 4 +- test/core/surface/lame_client_test.cc | 2 +- ...num_external_connectivity_watchers_test.cc | 2 +- .../surface/secure_channel_create_test.cc | 6 +- .../surface/sequential_connectivity_test.cc | 2 +- test/core/transport/bdp_estimator_test.cc | 2 +- test/core/transport/byte_stream_test.cc | 10 +- .../core/transport/chttp2/bin_decoder_test.cc | 2 +- .../transport/chttp2/hpack_encoder_test.cc | 2 +- .../chttp2/hpack_parser_fuzzer_test.cc | 2 +- .../transport/chttp2/hpack_parser_test.cc | 4 +- .../core/transport/chttp2/hpack_table_test.cc | 8 +- .../core/transport/connectivity_state_test.cc | 8 +- test/core/transport/metadata_test.cc | 18 +-- test/core/transport/status_conversion_test.cc | 2 +- test/core/util/port_server_client.cc | 4 +- test/core/util/test_tcp_server.cc | 6 +- test/cpp/end2end/client_lb_end2end_test.cc | 2 +- test/cpp/end2end/grpclb_end2end_test.cc | 2 +- test/cpp/grpclb/grpclb_test.cc | 2 +- test/cpp/microbenchmarks/bm_call_create.cc | 4 +- test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 10 +- .../microbenchmarks/bm_chttp2_transport.cc | 10 +- test/cpp/microbenchmarks/bm_closure.cc | 42 +++---- test/cpp/microbenchmarks/bm_cq.cc | 6 +- test/cpp/microbenchmarks/bm_error.cc | 6 +- .../microbenchmarks/bm_fullstack_trickle.cc | 2 +- test/cpp/microbenchmarks/bm_metadata.cc | 26 ++-- test/cpp/microbenchmarks/bm_pollset.cc | 8 +- test/cpp/microbenchmarks/fullstack_fixtures.h | 2 +- test/cpp/naming/resolver_component_test.cc | 4 +- test/cpp/performance/writes_per_rpc_test.cc | 2 +- 158 files changed, 497 insertions(+), 497 deletions(-) diff --git a/src/core/ext/filters/client_channel/channel_connectivity.cc b/src/core/ext/filters/client_channel/channel_connectivity.cc index 1d5386643aa..20693ba4190 100644 --- a/src/core/ext/filters/client_channel/channel_connectivity.cc +++ b/src/core/ext/filters/client_channel/channel_connectivity.cc @@ -33,7 +33,7 @@ grpc_connectivity_state grpc_channel_check_connectivity_state( /* forward through to the underlying client channel */ grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_connectivity_state state; GRPC_API_TRACE( "grpc_channel_check_connectivity_state(channel=%p, try_to_connect=%d)", 2, @@ -198,7 +198,7 @@ void grpc_channel_watch_connectivity_state( gpr_timespec deadline, grpc_completion_queue* cq, void* tag) { grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; state_watcher* w = (state_watcher*)gpr_malloc(sizeof(*w)); GRPC_API_TRACE( diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc index d4b7f0b6c9e..3a870b2d061 100644 --- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc @@ -213,7 +213,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts, static void on_srv_query_done_cb(void* arg, int status, int timeouts, unsigned char* abuf, int alen) { grpc_ares_request* r = (grpc_ares_request*)arg; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "on_query_srv_done_cb"); if (status == ARES_SUCCESS) { gpr_log(GPR_DEBUG, "on_query_srv_done_cb ARES_SUCCESS"); diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc index 9cf7bf884bd..6a1b70964d7 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.cc @@ -80,7 +80,7 @@ static grpc_client_channel_factory client_channel_factory = { grpc_channel* grpc_insecure_channel_create(const char* target, const grpc_channel_args* args, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE( "grpc_insecure_channel_create(target=%s, args=%p, reserved=%p)", 3, (target, args, reserved)); diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc index bdd8d93bd3b..6236551e24b 100644 --- a/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +++ b/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc @@ -37,7 +37,7 @@ grpc_channel* grpc_insecure_channel_create_from_fd( const char* target, int fd, const grpc_channel_args* args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_insecure_channel_create(target=%p, fd=%d, args=%p)", 3, (target, fd, args)); diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc index e0264cadc5d..27c5b96a4ce 100644 --- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc @@ -190,7 +190,7 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds, const char* target, const grpc_channel_args* args, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE( "grpc_secure_channel_create(creds=%p, target=%s, args=%p, " "reserved=%p)", diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc index 826886c9618..52c42d056c6 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc @@ -26,7 +26,7 @@ #include "src/core/lib/surface/server.h" int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; int port_num = 0; GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2, (server, addr)); diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc index 56789ab53d8..210939e6af4 100644 --- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc @@ -38,7 +38,7 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server, void* reserved, int fd) { GPR_ASSERT(reserved == nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; char* name; gpr_asprintf(&name, "fd:%d", fd); diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc index 7b426c18fb6..723af97ff08 100644 --- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc @@ -36,7 +36,7 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr, grpc_server_credentials* creds) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_error* err = GRPC_ERROR_NONE; grpc_server_security_connector* sc = nullptr; int port_num = 0; diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc index 8e1dcc542ec..40a30e4a31d 100644 --- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc +++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc @@ -49,6 +49,6 @@ GRPCAPI grpc_channel* grpc_cronet_secure_channel_create( grpc_transport* ct = grpc_create_cronet_transport(engine, target, args, reserved); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; return grpc_channel_create(target, args, GRPC_CLIENT_DIRECT_CHANNEL, ct); } diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.cc b/src/core/ext/transport/cronet/transport/cronet_transport.cc index f9f47a4a12f..c9fd94176bd 100644 --- a/src/core/ext/transport/cronet/transport/cronet_transport.cc +++ b/src/core/ext/transport/cronet/transport/cronet_transport.cc @@ -398,7 +398,7 @@ static void execute_from_storage(stream_obj* s) { */ static void on_failed(bidirectional_stream* stream, int net_error) { CRONET_LOG(GPR_DEBUG, "on_failed(%p, %d)", stream, net_error); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; gpr_mu_lock(&s->mu); @@ -424,7 +424,7 @@ static void on_failed(bidirectional_stream* stream, int net_error) { */ static void on_canceled(bidirectional_stream* stream) { CRONET_LOG(GPR_DEBUG, "on_canceled(%p)", stream); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; gpr_mu_lock(&s->mu); @@ -450,7 +450,7 @@ static void on_canceled(bidirectional_stream* stream) { */ static void on_succeeded(bidirectional_stream* stream) { CRONET_LOG(GPR_DEBUG, "on_succeeded(%p)", stream); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; gpr_mu_lock(&s->mu); @@ -468,7 +468,7 @@ static void on_succeeded(bidirectional_stream* stream) { */ static void on_stream_ready(bidirectional_stream* stream) { CRONET_LOG(GPR_DEBUG, "W: on_stream_ready(%p)", stream); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; grpc_cronet_transport* t = (grpc_cronet_transport*)s->curr_ct; gpr_mu_lock(&s->mu); @@ -498,7 +498,7 @@ static void on_response_headers_received( bidirectional_stream* stream, const bidirectional_stream_header_array* headers, const char* negotiated_protocol) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; CRONET_LOG(GPR_DEBUG, "R: on_response_headers_received(%p, %p, %s)", stream, headers, negotiated_protocol); stream_obj* s = (stream_obj*)stream->annotation; @@ -550,7 +550,7 @@ static void on_response_headers_received( Cronet callback */ static void on_write_completed(bidirectional_stream* stream, const char* data) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; CRONET_LOG(GPR_DEBUG, "W: on_write_completed(%p, %s)", stream, data); gpr_mu_lock(&s->mu); @@ -568,7 +568,7 @@ static void on_write_completed(bidirectional_stream* stream, const char* data) { */ static void on_read_completed(bidirectional_stream* stream, char* data, int count) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_obj* s = (stream_obj*)stream->annotation; CRONET_LOG(GPR_DEBUG, "R: on_read_completed(%p, %p, %d)", stream, data, count); @@ -610,7 +610,7 @@ static void on_read_completed(bidirectional_stream* stream, char* data, static void on_response_trailers_received( bidirectional_stream* stream, const bidirectional_stream_header_array* trailers) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; CRONET_LOG(GPR_DEBUG, "R: on_response_trailers_received(%p,%p)", stream, trailers); stream_obj* s = (stream_obj*)stream->annotation; diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc index 18e77b9b1c1..d816a5d1a71 100644 --- a/src/core/ext/transport/inproc/inproc_transport.cc +++ b/src/core/ext/transport/inproc/inproc_transport.cc @@ -1096,7 +1096,7 @@ static grpc_endpoint* get_endpoint(grpc_transport* t) { return nullptr; } static void do_nothing(void* arg, grpc_error* error) {} void grpc_inproc_transport_init(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CLOSURE_INIT(&do_nothing_closure, do_nothing, nullptr, grpc_schedule_on_exec_ctx); g_empty_slice = grpc_slice_from_static_buffer(nullptr, 0); @@ -1160,7 +1160,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, GRPC_API_TRACE("grpc_inproc_channel_create(server=%p, args=%p)", 2, (server, args)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; const grpc_channel_args* server_args = grpc_server_get_channel_args(server); @@ -1191,7 +1191,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server, } void grpc_inproc_transport_shutdown(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_unref_internal(g_empty_slice); grpc_slice_unref_internal(g_fake_path_key); grpc_slice_unref_internal(g_fake_path_value); diff --git a/src/core/lib/compression/stream_compression_gzip.cc b/src/core/lib/compression/stream_compression_gzip.cc index 6c4397759fb..9d829b31dbf 100644 --- a/src/core/lib/compression/stream_compression_gzip.cc +++ b/src/core/lib/compression/stream_compression_gzip.cc @@ -40,7 +40,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx, /* Full flush is not allowed when inflating. */ GPR_ASSERT(!(ctx->flate == inflate && (flush == Z_FINISH))); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; int r; bool eoc = false; size_t original_max_output_size = max_output_size; diff --git a/src/core/lib/iomgr/endpoint_pair_posix.cc b/src/core/lib/iomgr/endpoint_pair_posix.cc index 65db4a9675f..0b4aefd1b70 100644 --- a/src/core/lib/iomgr/endpoint_pair_posix.cc +++ b/src/core/lib/iomgr/endpoint_pair_posix.cc @@ -54,7 +54,7 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name, char* final_name; create_sockets(sv); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_asprintf(&final_name, "%s:client", name); p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name), args, diff --git a/src/core/lib/iomgr/endpoint_pair_windows.cc b/src/core/lib/iomgr/endpoint_pair_windows.cc index afd91c9932b..cc07ac07081 100644 --- a/src/core/lib/iomgr/endpoint_pair_windows.cc +++ b/src/core/lib/iomgr/endpoint_pair_windows.cc @@ -72,7 +72,7 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair( SOCKET sv[2]; grpc_endpoint_pair p; create_sockets(sv); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"), channel_args, "endpoint:server"); p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"), diff --git a/src/core/lib/iomgr/executor.cc b/src/core/lib/iomgr/executor.cc index d2fb7727650..d9b0c1daf0f 100644 --- a/src/core/lib/iomgr/executor.cc +++ b/src/core/lib/iomgr/executor.cc @@ -143,7 +143,7 @@ static void executor_thread(void* arg) { thread_state* ts = (thread_state*)arg; gpr_tls_set(&g_this_thread_state, (intptr_t)ts); - grpc_core::ExecCtx _local_exec_ctx(0); + grpc_core::ExecCtx exec_ctx(0); size_t subtract_depth = 0; for (;;) { diff --git a/src/core/lib/iomgr/iocp_windows.cc b/src/core/lib/iomgr/iocp_windows.cc index f5c6297438b..0b6e6823b3f 100644 --- a/src/core/lib/iomgr/iocp_windows.cc +++ b/src/core/lib/iomgr/iocp_windows.cc @@ -113,7 +113,7 @@ void grpc_iocp_kick(void) { } void grpc_iocp_flush(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_iocp_work_status work_status; do { @@ -123,7 +123,7 @@ void grpc_iocp_flush(void) { } void grpc_iocp_shutdown(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (gpr_atm_acq_load(&g_custom_events)) { grpc_iocp_work(GRPC_MILLIS_INF_FUTURE); grpc_core::ExecCtx::Get()->Flush(); diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc index 27e93762720..dacf08ea9eb 100644 --- a/src/core/lib/iomgr/iomgr.cc +++ b/src/core/lib/iomgr/iomgr.cc @@ -46,7 +46,7 @@ static int g_shutdown; static grpc_iomgr_object g_root_object; void grpc_iomgr_init() { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_shutdown = 0; gpr_mu_init(&g_mu); gpr_cv_init(&g_rcv); diff --git a/src/core/lib/iomgr/iomgr_uv.cc b/src/core/lib/iomgr/iomgr_uv.cc index 95b06e2ca5a..9614c2e664a 100644 --- a/src/core/lib/iomgr/iomgr_uv.cc +++ b/src/core/lib/iomgr/iomgr_uv.cc @@ -29,7 +29,7 @@ gpr_thd_id g_init_thread; void grpc_iomgr_platform_init(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_global_init(); grpc_executor_set_threading(false); diff --git a/src/core/lib/iomgr/resolve_address_uv.cc b/src/core/lib/iomgr/resolve_address_uv.cc index 54adf9b9f6b..3eab04f3de0 100644 --- a/src/core/lib/iomgr/resolve_address_uv.cc +++ b/src/core/lib/iomgr/resolve_address_uv.cc @@ -114,7 +114,7 @@ static grpc_error* handle_addrinfo_result(int status, struct addrinfo* result, static void getaddrinfo_callback(uv_getaddrinfo_t* req, int status, struct addrinfo* res) { request* r = (request*)req->data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_error* error; int retry_status; char* port = r->port; diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc index 55d559c466a..cabe28e4e6d 100644 --- a/src/core/lib/iomgr/resource_quota.cc +++ b/src/core/lib/iomgr/resource_quota.cc @@ -621,7 +621,7 @@ void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota) { /* Public API */ void grpc_resource_quota_unref(grpc_resource_quota* resource_quota) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_quota_unref_internal(resource_quota); } @@ -646,7 +646,7 @@ double grpc_resource_quota_get_memory_pressure( /* Public API */ void grpc_resource_quota_resize(grpc_resource_quota* resource_quota, size_t size) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; rq_resize_args* a = (rq_resize_args*)gpr_malloc(sizeof(*a)); a->resource_quota = grpc_resource_quota_ref_internal(resource_quota); a->size = (int64_t)size; diff --git a/src/core/lib/iomgr/tcp_client_uv.cc b/src/core/lib/iomgr/tcp_client_uv.cc index 0ba074500b5..0cb688cf163 100644 --- a/src/core/lib/iomgr/tcp_client_uv.cc +++ b/src/core/lib/iomgr/tcp_client_uv.cc @@ -76,7 +76,7 @@ static void uv_tc_on_alarm(void* acp, grpc_error* error) { static void uv_tc_on_connect(uv_connect_t* req, int status) { grpc_uv_tcp_connect* connect = (grpc_uv_tcp_connect*)req->data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_error* error = GRPC_ERROR_NONE; int done; grpc_closure* closure = connect->closure; diff --git a/src/core/lib/iomgr/tcp_server_uv.cc b/src/core/lib/iomgr/tcp_server_uv.cc index 2181b12b237..55f16126b65 100644 --- a/src/core/lib/iomgr/tcp_server_uv.cc +++ b/src/core/lib/iomgr/tcp_server_uv.cc @@ -137,7 +137,7 @@ static void finish_shutdown(grpc_tcp_server* s) { static void handle_close_callback(uv_handle_t* handle) { grpc_tcp_listener* sp = (grpc_tcp_listener*)handle->data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; sp->server->open_ports--; if (sp->server->open_ports == 0 && sp->server->shutdown) { finish_shutdown(sp->server); @@ -174,7 +174,7 @@ void grpc_tcp_server_unref(grpc_tcp_server* s) { GRPC_UV_ASSERT_SAME_THREAD(); if (gpr_unref(&s->refs)) { /* Complete shutdown_starting work before destroying. */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting); grpc_core::ExecCtx::Get()->Flush(); tcp_server_destroy(s); @@ -223,7 +223,7 @@ static void finish_accept(grpc_tcp_listener* sp) { static void on_connect(uv_stream_t* server, int status) { grpc_tcp_listener* sp = (grpc_tcp_listener*)server->data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (status < 0) { switch (status) { diff --git a/src/core/lib/iomgr/tcp_uv.cc b/src/core/lib/iomgr/tcp_uv.cc index d41ddaf4280..2c26b60511d 100644 --- a/src/core/lib/iomgr/tcp_uv.cc +++ b/src/core/lib/iomgr/tcp_uv.cc @@ -111,14 +111,14 @@ static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); } #endif static void uv_close_callback(uv_handle_t* handle) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp* tcp = (grpc_tcp*)handle->data; TCP_UNREF(tcp, "destroy"); } static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size, uv_buf_t* buf) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp* tcp = (grpc_tcp*)handle->data; (void)suggested_size; /* Before calling uv_read_start, we allocate a buffer with exactly one slice @@ -151,7 +151,7 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error* error) { static void read_callback(uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) { grpc_error* error; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp* tcp = (grpc_tcp*)stream->data; grpc_slice_buffer garbage; if (nread == 0) { @@ -228,7 +228,7 @@ static void uv_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices, static void write_callback(uv_write_t* req, int status) { grpc_tcp* tcp = (grpc_tcp*)req->data; grpc_error* error; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_closure* cb = tcp->write_cb; tcp->write_cb = NULL; TCP_UNREF(tcp, "write"); @@ -372,7 +372,7 @@ grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle, grpc_resource_quota* resource_quota, char* peer_string) { grpc_tcp* tcp = (grpc_tcp*)gpr_malloc(sizeof(grpc_tcp)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (grpc_tcp_trace.enabled()) { gpr_log(GPR_DEBUG, "Creating TCP endpoint %p", tcp); diff --git a/src/core/lib/iomgr/timer_manager.cc b/src/core/lib/iomgr/timer_manager.cc index 0e1fa0c0490..e11e9156c3f 100644 --- a/src/core/lib/iomgr/timer_manager.cc +++ b/src/core/lib/iomgr/timer_manager.cc @@ -98,7 +98,7 @@ static void start_timer_thread_and_unlock(void) { } void grpc_timer_manager_tick() { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_millis next = GRPC_MILLIS_INF_FUTURE; grpc_timer_check(&next); } @@ -273,7 +273,7 @@ static void timer_thread_cleanup(completed_thread* ct) { static void timer_thread(void* completed_thread_ptr) { // this threads exec_ctx: we try to run things through to completion here // since it's easy to spin up new threads - grpc_core::ExecCtx _local_exec_ctx(0); + grpc_core::ExecCtx exec_ctx(0); timer_main_loop(); timer_thread_cleanup((completed_thread*)completed_thread_ptr); diff --git a/src/core/lib/iomgr/timer_uv.cc b/src/core/lib/iomgr/timer_uv.cc index 879890603c5..5d238da0892 100644 --- a/src/core/lib/iomgr/timer_uv.cc +++ b/src/core/lib/iomgr/timer_uv.cc @@ -42,7 +42,7 @@ static void stop_uv_timer(uv_timer_t* handle) { void run_expired_timer(uv_timer_t* handle) { grpc_timer* timer = (grpc_timer*)handle->data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_UV_ASSERT_SAME_THREAD(); GPR_ASSERT(timer->pending); timer->pending = 0; diff --git a/src/core/lib/security/context/security_context.cc b/src/core/lib/security/context/security_context.cc index d4efdac5839..03710279948 100644 --- a/src/core/lib/security/context/security_context.cc +++ b/src/core/lib/security/context/security_context.cc @@ -36,7 +36,7 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_auth_context_refcount( grpc_call_error grpc_call_set_credentials(grpc_call* call, grpc_call_credentials* creds) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_client_security_context* ctx = nullptr; GRPC_API_TRACE("grpc_call_set_credentials(call=%p, creds=%p)", 2, (call, creds)); @@ -85,7 +85,7 @@ grpc_client_security_context* grpc_client_security_context_create(void) { } void grpc_client_security_context_destroy(void* ctx) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_client_security_context* c = (grpc_client_security_context*)ctx; grpc_call_credentials_unref(c->creds); GRPC_AUTH_CONTEXT_UNREF(c->auth_context, "client_security_context"); diff --git a/src/core/lib/security/credentials/credentials.cc b/src/core/lib/security/credentials/credentials.cc index d8a98fa3f05..48b459e1be9 100644 --- a/src/core/lib/security/credentials/credentials.cc +++ b/src/core/lib/security/credentials/credentials.cc @@ -72,7 +72,7 @@ void grpc_channel_credentials_unref(grpc_channel_credentials* creds) { void grpc_channel_credentials_release(grpc_channel_credentials* creds) { GRPC_API_TRACE("grpc_channel_credentials_release(creds=%p)", 1, (creds)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_credentials_unref(creds); } @@ -94,7 +94,7 @@ void grpc_call_credentials_unref(grpc_call_credentials* creds) { void grpc_call_credentials_release(grpc_call_credentials* creds) { GRPC_API_TRACE("grpc_call_credentials_release(creds=%p)", 1, (creds)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_call_credentials_unref(creds); } @@ -211,7 +211,7 @@ void grpc_server_credentials_unref(grpc_server_credentials* creds) { void grpc_server_credentials_release(grpc_server_credentials* creds) { GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_server_credentials_unref(creds); } diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/src/core/lib/security/credentials/google_default/google_default_credentials.cc index 072dffe0353..03d52850d90 100644 --- a/src/core/lib/security/credentials/google_default/google_default_credentials.cc +++ b/src/core/lib/security/credentials/google_default/google_default_credentials.cc @@ -221,7 +221,7 @@ grpc_channel_credentials* grpc_google_default_credentials_create(void) { grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Failed to create Google credentials"); grpc_error* err; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_google_default_credentials_create(void)", 0, ()); @@ -291,7 +291,7 @@ end: } void grpc_flush_cached_google_default_credentials(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_once_init(&g_once, init_default_credentials); gpr_mu_lock(&g_state_mu); if (default_credentials != nullptr) { diff --git a/src/core/lib/security/credentials/iam/iam_credentials.cc b/src/core/lib/security/credentials/iam/iam_credentials.cc index 3b01137ed92..75acb2a58e6 100644 --- a/src/core/lib/security/credentials/iam/iam_credentials.cc +++ b/src/core/lib/security/credentials/iam/iam_credentials.cc @@ -54,7 +54,7 @@ static grpc_call_credentials_vtable iam_vtable = { grpc_call_credentials* grpc_google_iam_credentials_create( const char* token, const char* authority_selector, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE( "grpc_iam_credentials_create(token=%s, authority_selector=%s, " "reserved=%p)", diff --git a/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/src/core/lib/security/credentials/jwt/jwt_credentials.cc index 3eaedeea4e8..2404e860e42 100644 --- a/src/core/lib/security/credentials/jwt/jwt_credentials.cc +++ b/src/core/lib/security/credentials/jwt/jwt_credentials.cc @@ -181,7 +181,7 @@ grpc_call_credentials* grpc_service_account_jwt_access_credentials_create( gpr_free(clean_json); } GPR_ASSERT(reserved == nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_call_credentials* creds = grpc_service_account_jwt_access_credentials_create_from_auth_json_key( grpc_auth_json_key_create_from_string(json_key), token_lifetime); diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/src/core/lib/security/credentials/jwt/jwt_verifier.cc index dc67a20e6fa..39339f07d73 100644 --- a/src/core/lib/security/credentials/jwt/jwt_verifier.cc +++ b/src/core/lib/security/credentials/jwt/jwt_verifier.cc @@ -347,7 +347,7 @@ static verifier_cb_ctx* verifier_cb_ctx_create( grpc_jwt_claims* claims, const char* audience, grpc_slice signature, const char* signed_jwt, size_t signed_jwt_len, void* user_data, grpc_jwt_verification_done_cb cb) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; verifier_cb_ctx* ctx = (verifier_cb_ctx*)gpr_zalloc(sizeof(verifier_cb_ctx)); ctx->verifier = verifier; ctx->pollent = grpc_polling_entity_create_from_pollset(pollset); diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc index 0fe368d3f2e..e243ea52c62 100644 --- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc @@ -515,7 +515,7 @@ grpc_call_credentials* grpc_access_token_credentials_create( gpr_ref_init(&c->base.refcount, 1); char* token_md_value; gpr_asprintf(&token_md_value, "Bearer %s", access_token); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; c->access_token_md = grpc_mdelem_from_slices( grpc_slice_from_static_string(GRPC_AUTHORIZATION_METADATA_KEY), grpc_slice_from_copied_string(token_md_value)); diff --git a/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/src/core/lib/security/credentials/plugin/plugin_credentials.cc index a75ae033b93..203ba58c671 100644 --- a/src/core/lib/security/credentials/plugin/plugin_credentials.cc +++ b/src/core/lib/security/credentials/plugin/plugin_credentials.cc @@ -115,8 +115,8 @@ static void plugin_md_request_metadata_ready(void* request, grpc_status_code status, const char* error_details) { /* called from application code */ - grpc_core::ExecCtx _local_exec_ctx(GRPC_EXEC_CTX_FLAG_IS_FINISHED | - GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP); + grpc_core::ExecCtx exec_ctx(GRPC_EXEC_CTX_FLAG_IS_FINISHED | + GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP); grpc_plugin_credentials_pending_request* r = (grpc_plugin_credentials_pending_request*)request; if (grpc_plugin_credentials_trace.enabled()) { diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc index 25a1e59ace5..7623fbfd5b3 100644 --- a/src/core/lib/security/transport/security_handshaker.cc +++ b/src/core/lib/security/transport/security_handshaker.cc @@ -271,7 +271,7 @@ static void on_handshake_next_done_grpc_wrapper( security_handshaker* h = (security_handshaker*)user_data; // This callback will be invoked by TSI in a non-grpc thread, so it's // safe to create our own exec_ctx here. - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_mu_lock(&h->mu); grpc_error* error = on_handshake_next_done_locked( h, result, bytes_to_send, bytes_to_send_size, handshaker_result); diff --git a/src/core/lib/security/transport/server_auth_filter.cc b/src/core/lib/security/transport/server_auth_filter.cc index 3566ddf64e8..73653f2a668 100644 --- a/src/core/lib/security/transport/server_auth_filter.cc +++ b/src/core/lib/security/transport/server_auth_filter.cc @@ -118,7 +118,7 @@ static void on_md_processing_done( grpc_status_code status, const char* error_details) { grpc_call_element* elem = (grpc_call_element*)user_data; call_data* calld = (call_data*)elem->call_data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; // If the call was not cancelled while we were in flight, process the result. if (gpr_atm_full_cas(&calld->state, (gpr_atm)STATE_INIT, (gpr_atm)STATE_DONE)) { diff --git a/src/core/lib/slice/slice.cc b/src/core/lib/slice/slice.cc index 7ac62047162..1eb15290eb0 100644 --- a/src/core/lib/slice/slice.cc +++ b/src/core/lib/slice/slice.cc @@ -67,7 +67,7 @@ grpc_slice grpc_slice_ref(grpc_slice slice) { /* Public API */ void grpc_slice_unref(grpc_slice slice) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_unref_internal(slice); } diff --git a/src/core/lib/slice/slice_buffer.cc b/src/core/lib/slice/slice_buffer.cc index dbe8d48343d..33ec2af683c 100644 --- a/src/core/lib/slice/slice_buffer.cc +++ b/src/core/lib/slice/slice_buffer.cc @@ -73,7 +73,7 @@ void grpc_slice_buffer_destroy_internal(grpc_slice_buffer* sb) { } void grpc_slice_buffer_destroy(grpc_slice_buffer* sb) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_buffer_destroy_internal(sb); } @@ -172,7 +172,7 @@ void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer* sb) { } void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_buffer_reset_and_unref_internal(sb); } diff --git a/src/core/lib/surface/alarm.cc b/src/core/lib/surface/alarm.cc index 9a13a7b3237..f6ea016c333 100644 --- a/src/core/lib/surface/alarm.cc +++ b/src/core/lib/surface/alarm.cc @@ -45,7 +45,7 @@ static void alarm_ref(grpc_alarm* alarm) { gpr_ref(&alarm->refs); } static void alarm_unref(grpc_alarm* alarm) { if (gpr_unref(&alarm->refs)) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (alarm->cq != nullptr) { GRPC_CQ_INTERNAL_UNREF(alarm->cq, "alarm"); } @@ -115,7 +115,7 @@ grpc_alarm* grpc_alarm_create(void* reserved) { void grpc_alarm_set(grpc_alarm* alarm, grpc_completion_queue* cq, gpr_timespec deadline, void* tag, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CQ_INTERNAL_REF(cq, "alarm"); alarm->cq = cq; @@ -127,7 +127,7 @@ void grpc_alarm_set(grpc_alarm* alarm, grpc_completion_queue* cq, } void grpc_alarm_cancel(grpc_alarm* alarm, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_timer_cancel(&alarm->alarm); } diff --git a/src/core/lib/surface/byte_buffer.cc b/src/core/lib/surface/byte_buffer.cc index b706f5ba9b1..e4c2a4a4c22 100644 --- a/src/core/lib/surface/byte_buffer.cc +++ b/src/core/lib/surface/byte_buffer.cc @@ -71,7 +71,7 @@ grpc_byte_buffer* grpc_byte_buffer_copy(grpc_byte_buffer* bb) { void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) { if (!bb) return; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; switch (bb->type) { case GRPC_BB_RAW: grpc_slice_buffer_destroy_internal(&bb->data.raw.slice_buffer); diff --git a/src/core/lib/surface/byte_buffer_reader.cc b/src/core/lib/surface/byte_buffer_reader.cc index c5f8df3ddab..81a48e95fcc 100644 --- a/src/core/lib/surface/byte_buffer_reader.cc +++ b/src/core/lib/surface/byte_buffer_reader.cc @@ -42,7 +42,7 @@ static int is_compressed(grpc_byte_buffer* buffer) { int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader, grpc_byte_buffer* buffer) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_buffer decompressed_slices_buffer; reader->buffer_in = buffer; switch (reader->buffer_in->type) { @@ -110,7 +110,7 @@ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader) { grpc_slice out_slice = GRPC_SLICE_MALLOC(input_size); uint8_t* const outbuf = GRPC_SLICE_START_PTR(out_slice); /* just an alias */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (grpc_byte_buffer_reader_next(reader, &in_slice) != 0) { const size_t slice_length = GRPC_SLICE_LENGTH(in_slice); memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length); diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc index e4c8f015051..a457aaa7a2f 100644 --- a/src/core/lib/surface/call.cc +++ b/src/core/lib/surface/call.cc @@ -560,7 +560,7 @@ void grpc_call_unref(grpc_call* c) { if (!gpr_unref(&c->ext_ref)) return; child_call* cc = c->child; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_TIMER_BEGIN("grpc_call_unref", 0); GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c)); @@ -601,7 +601,7 @@ void grpc_call_unref(grpc_call* c) { grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) { GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved)); GPR_ASSERT(!reserved); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED); return GRPC_CALL_OK; @@ -651,7 +651,7 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c, grpc_status_code status, const char* description, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE( "grpc_call_cancel_with_status(" "c=%p, status=%d, description=%s, reserved=%p)", @@ -2038,7 +2038,7 @@ done_with_error: grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops, size_t nops, void* tag, void* reserved) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_call_error err; GRPC_API_TRACE( diff --git a/src/core/lib/surface/call_details.cc b/src/core/lib/surface/call_details.cc index 7d81ba9e22a..cd0b14586a3 100644 --- a/src/core/lib/surface/call_details.cc +++ b/src/core/lib/surface/call_details.cc @@ -34,7 +34,7 @@ void grpc_call_details_init(grpc_call_details* cd) { void grpc_call_details_destroy(grpc_call_details* cd) { GRPC_API_TRACE("grpc_call_details_destroy(cd=%p)", 1, (cd)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_unref_internal(cd->method); grpc_slice_unref_internal(cd->host); } diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc index b44096fc329..cf5e8c2150d 100644 --- a/src/core/lib/surface/channel.cc +++ b/src/core/lib/surface/channel.cc @@ -248,7 +248,7 @@ char* grpc_channel_get_target(grpc_channel* channel) { void grpc_channel_get_info(grpc_channel* channel, const grpc_channel_info* channel_info) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_element* elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0); elem->filter->get_channel_info(elem, channel_info); @@ -296,7 +296,7 @@ grpc_call* grpc_channel_create_call(grpc_channel* channel, grpc_slice method, const grpc_slice* host, gpr_timespec deadline, void* reserved) { GPR_ASSERT(!reserved); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_call* call = grpc_channel_create_call_internal( channel, parent_call, propagation_mask, cq, nullptr, grpc_mdelem_from_slices(GRPC_MDSTR_PATH, grpc_slice_ref_internal(method)), @@ -329,7 +329,7 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method, "grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)", 4, (channel, method, host, reserved)); GPR_ASSERT(!reserved); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; rc->path = grpc_mdelem_from_slices( GRPC_MDSTR_PATH, @@ -364,7 +364,7 @@ grpc_call* grpc_channel_create_registered_call( registered_call_handle, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type, reserved)); GPR_ASSERT(!reserved); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_call* call = grpc_channel_create_call_internal( channel, parent_call, propagation_mask, completion_queue, nullptr, GRPC_MDELEM_REF(rc->path), GRPC_MDELEM_REF(rc->authority), @@ -407,7 +407,7 @@ static void destroy_channel(void* arg, grpc_error* error) { void grpc_channel_destroy(grpc_channel* channel) { grpc_transport_op* op = grpc_make_transport_op(nullptr); grpc_channel_element* elem; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (channel)); op->disconnect_with_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Destroyed"); diff --git a/src/core/lib/surface/channel_ping.cc b/src/core/lib/surface/channel_ping.cc index c44307df8d8..616ba9e0ac5 100644 --- a/src/core/lib/surface/channel_ping.cc +++ b/src/core/lib/surface/channel_ping.cc @@ -51,7 +51,7 @@ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq, ping_result* pr = (ping_result*)gpr_malloc(sizeof(*pr)); grpc_channel_element* top_elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(reserved == nullptr); pr->tag = tag; pr->cq = cq; diff --git a/src/core/lib/surface/completion_queue.cc b/src/core/lib/surface/completion_queue.cc index 958318f814c..12385b71304 100644 --- a/src/core/lib/surface/completion_queue.cc +++ b/src/core/lib/surface/completion_queue.cc @@ -353,7 +353,7 @@ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq, if (storage != nullptr && (grpc_completion_queue*)gpr_tls_get(&g_cached_cq) == cq) { *tag = storage->tag; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; *ok = (storage->next & (uintptr_t)(1)) == 1; storage->done(storage->done_arg, storage); ret = 1; @@ -389,7 +389,7 @@ static bool cq_event_queue_push(grpc_cq_event_queue* q, grpc_cq_completion* c) { static grpc_cq_completion* cq_event_queue_pop(grpc_cq_event_queue* q) { grpc_cq_completion* c = nullptr; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (gpr_spinlock_trylock(&q->queue_lock)) { GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES(); @@ -434,7 +434,7 @@ grpc_completion_queue* grpc_completion_queue_create_internal( const cq_poller_vtable* poller_vtable = &g_poller_vtable_by_poller_type[polling_type]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_STATS_INC_CQS_CREATED(); cq = (grpc_completion_queue*)gpr_zalloc(sizeof(grpc_completion_queue) + @@ -868,7 +868,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline, nullptr, nullptr, true}; - ExecCtxNext _local_exec_ctx(&is_finished_arg); + ExecCtxNext exec_ctx(&is_finished_arg); for (;;) { grpc_millis iteration_deadline = deadline_millis; @@ -1111,7 +1111,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag, nullptr, tag, true}; - ExecCtxPluck _local_exec_ctx(&is_finished_arg); + ExecCtxPluck exec_ctx(&is_finished_arg); for (;;) { if (is_finished_arg.stolen_completion != nullptr) { gpr_mu_unlock(cq->mu); @@ -1240,7 +1240,7 @@ static void cq_shutdown_pluck(grpc_completion_queue* cq) { /* Shutdown simply drops a ref that we reserved at creation time; if we drop to zero here, then enter shutdown mode and wake up any waiters */ void grpc_completion_queue_shutdown(grpc_completion_queue* cq) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_TIMER_BEGIN("grpc_completion_queue_shutdown", 0); GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq)); cq->vtable->shutdown(cq); @@ -1253,7 +1253,7 @@ void grpc_completion_queue_destroy(grpc_completion_queue* cq) { GPR_TIMER_BEGIN("grpc_completion_queue_destroy", 0); grpc_completion_queue_shutdown(cq); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CQ_INTERNAL_UNREF(cq, "destroy"); GPR_TIMER_END("grpc_completion_queue_destroy", 0); diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index e6ff475a90a..f96d8eba6c0 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -157,7 +157,7 @@ void grpc_shutdown(void) { gpr_mu_lock(&g_init_mu); if (--g_initializations == 0) { { - grpc_core::ExecCtx _local_exec_ctx(0); + grpc_core::ExecCtx exec_ctx(0); { grpc_executor_shutdown(); grpc_timer_manager_set_threading( diff --git a/src/core/lib/surface/lame_client.cc b/src/core/lib/surface/lame_client.cc index d79f9a9ab21..011f5eae8bc 100644 --- a/src/core/lib/surface/lame_client.cc +++ b/src/core/lib/surface/lame_client.cc @@ -154,7 +154,7 @@ extern "C" const grpc_channel_filter grpc_lame_filter = { grpc_channel* grpc_lame_client_channel_create(const char* target, grpc_status_code error_code, const char* error_message) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_element* elem; grpc_channel* channel = grpc_channel_create(target, nullptr, GRPC_CLIENT_LAME_CHANNEL, nullptr); diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc index e003b5410bf..e9c92b04dce 100644 --- a/src/core/lib/surface/server.cc +++ b/src/core/lib/surface/server.cc @@ -1015,7 +1015,7 @@ static void start_listeners(void* s, grpc_error* error) { void grpc_server_start(grpc_server* server) { size_t i; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_server_start(server=%p)", 1, (server)); @@ -1161,7 +1161,7 @@ void grpc_server_shutdown_and_notify(grpc_server* server, listener* l; shutdown_tag* sdt; channel_broadcaster broadcaster; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_server_shutdown_and_notify(server=%p, cq=%p, tag=%p)", 3, (server, cq, tag)); @@ -1220,7 +1220,7 @@ void grpc_server_shutdown_and_notify(grpc_server* server, void grpc_server_cancel_all_calls(grpc_server* server) { channel_broadcaster broadcaster; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_server_cancel_all_calls(server=%p)", 1, (server)); @@ -1235,7 +1235,7 @@ void grpc_server_cancel_all_calls(grpc_server* server) { void grpc_server_destroy(grpc_server* server) { listener* l; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_API_TRACE("grpc_server_destroy(server=%p)", 1, (server)); @@ -1317,7 +1317,7 @@ grpc_call_error grpc_server_request_call( grpc_completion_queue* cq_bound_to_call, grpc_completion_queue* cq_for_notification, void* tag) { grpc_call_error error; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; requested_call* rc = (requested_call*)gpr_malloc(sizeof(*rc)); GRPC_STATS_INC_SERVER_REQUESTED_CALLS(); GRPC_API_TRACE( @@ -1364,7 +1364,7 @@ grpc_call_error grpc_server_request_registered_call( grpc_completion_queue* cq_bound_to_call, grpc_completion_queue* cq_for_notification, void* tag) { grpc_call_error error; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; requested_call* rc = (requested_call*)gpr_malloc(sizeof(*rc)); registered_method* rm = (registered_method*)rmp; GRPC_STATS_INC_SERVER_REQUESTED_CALLS(); diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc index 82d687c530d..f1984134981 100644 --- a/src/cpp/common/channel_arguments.cc +++ b/src/cpp/common/channel_arguments.cc @@ -67,7 +67,7 @@ ChannelArguments::ChannelArguments(const ChannelArguments& other) } ChannelArguments::~ChannelArguments() { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; for (auto it = args_.begin(); it != args_.end(); ++it) { if (it->type == GRPC_ARG_POINTER) { it->value.pointer.vtable->destroy(it->value.pointer.p); @@ -95,7 +95,7 @@ void ChannelArguments::SetSocketMutator(grpc_socket_mutator* mutator) { } grpc_arg mutator_arg = grpc_socket_mutator_to_arg(mutator); bool replaced = false; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; for (auto it = args_.begin(); it != args_.end(); ++it) { if (it->type == mutator_arg.type && grpc::string(it->key) == grpc::string(mutator_arg.key)) { diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm index 7a09e8f3952..d1309713644 100644 --- a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm +++ b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm @@ -110,7 +110,7 @@ static void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) { static void cronet_init_client_simple_ssl_secure_fullstack( grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; stream_engine *cronetEngine = [Cronet getGlobalEngine]; grpc_channel_args *new_client_args = grpc_channel_args_copy(client_args); diff --git a/test/core/backoff/backoff_test.cc b/test/core/backoff/backoff_test.cc index 2cd97d80556..d3115fe1ddc 100644 --- a/test/core/backoff/backoff_test.cc +++ b/test/core/backoff/backoff_test.cc @@ -33,7 +33,7 @@ static void test_constant_backoff(void) { const grpc_millis max_backoff = 1000; grpc_backoff_init(&backoff, initial_backoff, multiplier, jitter, min_connect_timeout, max_backoff); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); GPR_ASSERT(next_deadlines.current_deadline - grpc_core::ExecCtx::Get()->Now() == @@ -62,7 +62,7 @@ static void test_min_connect(void) { const grpc_millis max_backoff = 1000; grpc_backoff_init(&backoff, initial_backoff, multiplier, jitter, min_connect_timeout, max_backoff); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_backoff_result next = grpc_backoff_begin(&backoff); // Because the min_connect_timeout > initial_backoff, current_deadline is used // as the deadline for the current attempt. @@ -85,7 +85,7 @@ static void test_no_jitter_backoff(void) { min_connect_timeout, max_backoff); // x_1 = 2 // x_n = 2**i + x_{i-1} ( = 2**(n+1) - 2 ) - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_core::ExecCtx::Get()->TestOnlySetNow(0); grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); GPR_ASSERT(next_deadlines.current_deadline == @@ -141,7 +141,7 @@ static void test_jitter_backoff(void) { backoff.rng_state = 0; // force consistent PRNG - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_backoff_result next_deadlines = grpc_backoff_begin(&backoff); GPR_ASSERT(next_deadlines.current_deadline - grpc_core::ExecCtx::Get()->Now() == diff --git a/test/core/bad_client/bad_client.cc b/test/core/bad_client/bad_client.cc index 267933ff623..f63a32ea5b5 100644 --- a/test/core/bad_client/bad_client.cc +++ b/test/core/bad_client/bad_client.cc @@ -57,7 +57,7 @@ static void done_write(void* arg, grpc_error* error) { static void server_setup_transport(void* ts, grpc_transport* transport) { thd_args* a = (thd_args*)ts; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_server_setup_transport(a->server, transport, nullptr, grpc_server_get_channel_args(a->server)); } @@ -80,7 +80,7 @@ void grpc_run_bad_client_test( grpc_slice_from_copied_buffer(client_payload, client_payload_length); grpc_slice_buffer outgoing; grpc_closure done_write_closure; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_completion_queue* shutdown_cq; if (client_payload_length < 4 * 1024) { diff --git a/test/core/channel/channel_args_test.cc b/test/core/channel/channel_args_test.cc index 99a6566a1cd..4a8195e984e 100644 --- a/test/core/channel/channel_args_test.cc +++ b/test/core/channel/channel_args_test.cc @@ -26,7 +26,7 @@ #include "test/core/util/test_config.h" static void test_create(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_arg arg_int; grpc_arg arg_string; @@ -59,7 +59,7 @@ static void test_create(void) { } static void test_set_compression_algorithm(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args* ch_args; ch_args = @@ -73,7 +73,7 @@ static void test_set_compression_algorithm(void) { } static void test_compression_algorithm_states(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args *ch_args, *ch_args_wo_gzip, *ch_args_wo_gzip_deflate; unsigned states_bitset; size_t i; @@ -134,7 +134,7 @@ static void test_set_socket_mutator(void) { GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_POINTER); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(ch_args); } } diff --git a/test/core/channel/channel_stack_test.cc b/test/core/channel/channel_stack_test.cc index 93ddd0fee59..ef43facd6ed 100644 --- a/test/core/channel/channel_stack_test.cc +++ b/test/core/channel/channel_stack_test.cc @@ -95,7 +95,7 @@ static void test_create_channel_stack(void) { grpc_channel_args chan_args; int* channel_data; int* call_data; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice path = grpc_slice_from_static_string("/service/method"); arg.type = GRPC_ARG_INTEGER; diff --git a/test/core/channel/minimal_stack_is_minimal_test.cc b/test/core/channel/minimal_stack_is_minimal_test.cc index 2373bc6329b..3495f603e4f 100644 --- a/test/core/channel/minimal_stack_is_minimal_test.cc +++ b/test/core/channel/minimal_stack_is_minimal_test.cc @@ -125,7 +125,7 @@ static int check_stack(const char* file, int line, const char* transport_name, grpc_channel_stack_builder_set_transport(builder, &fake_transport); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_stack_builder_set_channel_arguments(builder, channel_args); GPR_ASSERT(grpc_channel_init_create_stack( builder, (grpc_channel_stack_type)channel_stack_type)); @@ -210,7 +210,7 @@ static int check_stack(const char* file, int line, const char* transport_name, gpr_free(expect); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_stack_builder_destroy(builder); grpc_channel_args_destroy(channel_args); } diff --git a/test/core/client_channel/lb_policies_test.cc b/test/core/client_channel/lb_policies_test.cc index 590f9346570..847ea0066ba 100644 --- a/test/core/client_channel/lb_policies_test.cc +++ b/test/core/client_channel/lb_policies_test.cc @@ -651,7 +651,7 @@ static void test_get_channel_info() { grpc_channel_args* args = grpc_channel_args_copy_and_add(nullptr, &arg, 1); channel = grpc_insecure_channel_create("ipv4:127.0.0.1:1234", args, nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(args); } // Ensures that resolver returns. @@ -958,7 +958,7 @@ static void verify_rebirth_round_robin(const servers_fixture* f, } int main(int argc, char** argv) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; test_spec* spec; size_t i; const size_t NUM_ITERS = 10; diff --git a/test/core/client_channel/parse_address_test.cc b/test/core/client_channel/parse_address_test.cc index 21c86d01f1a..6d56961d84a 100644 --- a/test/core/client_channel/parse_address_test.cc +++ b/test/core/client_channel/parse_address_test.cc @@ -34,7 +34,7 @@ #ifdef GRPC_HAVE_UNIX_SOCKET static void test_grpc_parse_unix(const char* uri_text, const char* pathname) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; @@ -54,7 +54,7 @@ static void test_grpc_parse_unix(const char* uri_text, const char* pathname) {} static void test_grpc_parse_ipv4(const char* uri_text, const char* host, unsigned short port) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; char ntop_buf[INET_ADDRSTRLEN]; @@ -72,7 +72,7 @@ static void test_grpc_parse_ipv4(const char* uri_text, const char* host, static void test_grpc_parse_ipv6(const char* uri_text, const char* host, unsigned short port, uint32_t scope_id) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); grpc_resolved_address addr; char ntop_buf[INET6_ADDRSTRLEN]; diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc index f6d7731a6d3..18a795fbcb2 100644 --- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc @@ -105,7 +105,7 @@ static bool wait_loop(int deadline_seconds, gpr_event* ev) { if (gpr_event_wait(ev, grpc_timeout_seconds_to_deadline(1))) return true; deadline_seconds--; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_timer_check(nullptr); } return false; @@ -148,7 +148,7 @@ int main(int argc, char** argv) { grpc_channel_args* result = (grpc_channel_args*)1; { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolver* resolver = create_resolver("dns:test"); gpr_event ev1; gpr_event_init(&ev1); diff --git a/test/core/client_channel/resolvers/dns_resolver_test.cc b/test/core/client_channel/resolvers/dns_resolver_test.cc index 63d1287521d..80667908ef2 100644 --- a/test/core/client_channel/resolvers/dns_resolver_test.cc +++ b/test/core/client_channel/resolvers/dns_resolver_test.cc @@ -28,7 +28,7 @@ static grpc_combiner* g_combiner; static void test_succeeds(grpc_resolver_factory* factory, const char* string) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -45,7 +45,7 @@ static void test_succeeds(grpc_resolver_factory* factory, const char* string) { } static void test_fails(grpc_resolver_factory* factory, const char* string) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -80,7 +80,7 @@ int main(int argc, char** argv) { grpc_resolver_factory_unref(dns); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_COMBINER_UNREF(g_combiner, "test"); } grpc_shutdown(); diff --git a/test/core/client_channel/resolvers/fake_resolver_test.cc b/test/core/client_channel/resolvers/fake_resolver_test.cc index ecfe43f9b7f..d85cbb1d036 100644 --- a/test/core/client_channel/resolvers/fake_resolver_test.cc +++ b/test/core/client_channel/resolvers/fake_resolver_test.cc @@ -72,7 +72,7 @@ void on_resolution_cb(void* arg, grpc_error* error) { } static void test_fake_resolver() { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); // Create resolver. grpc_fake_resolver_response_generator* response_generator = diff --git a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc index f3711c151ef..4d16a779245 100644 --- a/test/core/client_channel/resolvers/sockaddr_resolver_test.cc +++ b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc @@ -41,7 +41,7 @@ void on_resolution_cb(void* arg, grpc_error* error) { } static void test_succeeds(grpc_resolver_factory* factory, const char* string) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -68,7 +68,7 @@ static void test_succeeds(grpc_resolver_factory* factory, const char* string) { } static void test_fails(grpc_resolver_factory* factory, const char* string) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(string, 0); grpc_resolver_args args; grpc_resolver* resolver; @@ -111,7 +111,7 @@ int main(int argc, char** argv) { grpc_resolver_factory_unref(ipv6); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_COMBINER_UNREF(g_combiner, "test"); } grpc_shutdown(); diff --git a/test/core/client_channel/uri_fuzzer_test.cc b/test/core/client_channel/uri_fuzzer_test.cc index 8f1f5e2eda2..ee384531661 100644 --- a/test/core/client_channel/uri_fuzzer_test.cc +++ b/test/core/client_channel/uri_fuzzer_test.cc @@ -37,7 +37,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* x; if ((x = grpc_uri_parse(s, 1))) { grpc_uri_destroy(x); diff --git a/test/core/client_channel/uri_parser_test.cc b/test/core/client_channel/uri_parser_test.cc index 33cf82d17c7..254bfddfb3c 100644 --- a/test/core/client_channel/uri_parser_test.cc +++ b/test/core/client_channel/uri_parser_test.cc @@ -29,7 +29,7 @@ static void test_succeeds(const char* uri_text, const char* scheme, const char* authority, const char* path, const char* query, const char* fragment) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); GPR_ASSERT(0 == strcmp(scheme, uri->scheme)); @@ -42,13 +42,13 @@ static void test_succeeds(const char* uri_text, const char* scheme, } static void test_fails(const char* uri_text) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(nullptr == grpc_uri_parse(uri_text, 0)); } static void test_query_parts() { { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; const char* uri_text = "http://foo/path?a&b=B&c=&#frag"; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); @@ -82,7 +82,7 @@ static void test_query_parts() { } { /* test the current behavior of multiple query part values */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; const char* uri_text = "http://auth/path?foo=bar=baz&foobar=="; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); @@ -100,7 +100,7 @@ static void test_query_parts() { } { /* empty query */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; const char* uri_text = "http://foo/path"; grpc_uri* uri = grpc_uri_parse(uri_text, 0); GPR_ASSERT(uri); diff --git a/test/core/compression/algorithm_test.cc b/test/core/compression/algorithm_test.cc index b0613c4b7d1..9e811e9af19 100644 --- a/test/core/compression/algorithm_test.cc +++ b/test/core/compression/algorithm_test.cc @@ -39,7 +39,7 @@ static void test_algorithm_mesh(void) { grpc_compression_algorithm parsed; grpc_slice mdstr; grpc_mdelem mdelem; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT( grpc_compression_algorithm_name((grpc_compression_algorithm)i, &name)); GPR_ASSERT(grpc_compression_algorithm_parse( @@ -61,7 +61,7 @@ static void test_algorithm_mesh(void) { } static void test_algorithm_failure(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice mdstr; gpr_log(GPR_DEBUG, "test_algorithm_failure"); diff --git a/test/core/compression/message_compress_test.cc b/test/core/compression/message_compress_test.cc index 0145b4f4020..6ca07b70c4f 100644 --- a/test/core/compression/message_compress_test.cc +++ b/test/core/compression/message_compress_test.cc @@ -70,7 +70,7 @@ static void assert_passthrough(grpc_slice value, grpc_split_slices_to_buffer(uncompressed_split_mode, &value, 1, &input); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; was_compressed = grpc_msg_compress(algorithm, &input, &compressed_raw); } GPR_ASSERT(input.count > 0); @@ -90,7 +90,7 @@ static void assert_passthrough(grpc_slice value, grpc_split_slice_buffer(compressed_split_mode, &compressed_raw, &compressed); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_msg_decompress( was_compressed ? algorithm : GRPC_COMPRESS_NONE, &compressed, &output)); } @@ -152,7 +152,7 @@ static void test_tiny_data_compress(void) { for (int i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) { if (i == GRPC_COMPRESS_NONE) continue; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(0 == grpc_msg_compress(static_cast<grpc_compression_algorithm>(i), &input, &output)); @@ -176,7 +176,7 @@ static void test_bad_decompression_data_crc(void) { grpc_slice_buffer_init(&output); grpc_slice_buffer_add(&input, create_test_value(ONE_MB_A)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* compress it */ grpc_msg_compress(GRPC_COMPRESS_GZIP, &input, &corrupted); /* corrupt the output by smashing the CRC */ @@ -205,7 +205,7 @@ static void test_bad_decompression_data_trailing_garbage(void) { "\x78\xda\x63\x60\x60\x60\x00\x00\x00\x04\x00\x01\x99", 13)); /* try (and fail) to decompress the invalid compresed buffer */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); grpc_slice_buffer_destroy(&input); @@ -222,7 +222,7 @@ static void test_bad_decompression_data_stream(void) { grpc_slice_from_copied_buffer("\x78\xda\xff\xff", 4)); /* try (and fail) to decompress the invalid compresed buffer */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); grpc_slice_buffer_destroy(&input); @@ -239,7 +239,7 @@ static void test_bad_compression_algorithm(void) { grpc_slice_buffer_add( &input, grpc_slice_from_copied_string("Never gonna give you up")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; was_compressed = grpc_msg_compress(GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); GPR_ASSERT(0 == was_compressed); @@ -263,7 +263,7 @@ static void test_bad_decompression_algorithm(void) { grpc_slice_buffer_add(&input, grpc_slice_from_copied_string( "I'm not really compressed but it doesn't matter")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; was_decompressed = grpc_msg_decompress(GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output); GPR_ASSERT(0 == was_decompressed); diff --git a/test/core/debug/stats_test.cc b/test/core/debug/stats_test.cc index 1623e7c8a4e..e60e54b2fdc 100644 --- a/test/core/debug/stats_test.cc +++ b/test/core/debug/stats_test.cc @@ -49,7 +49,7 @@ TEST(StatsTest, IncCounters) { for (int i = 0; i < GRPC_STATS_COUNTER_COUNT; i++) { Snapshot snapshot; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_STATS_INC_COUNTER((grpc_stats_counters)i); EXPECT_EQ(snapshot.delta().counters[i], 1); @@ -59,7 +59,7 @@ TEST(StatsTest, IncCounters) { TEST(StatsTest, IncSpecificCounter) { Snapshot snapshot; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_STATS_INC_SYSCALL_POLL(); EXPECT_EQ(snapshot.delta().counters[GRPC_STATS_COUNTER_SYSCALL_POLL], 1); @@ -92,7 +92,7 @@ TEST_P(HistogramTest, IncHistogram) { for (auto j : test_values) { Snapshot snapshot; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_stats_inc_histogram[kHistogram](j); auto delta = snapshot.delta(); diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc index b65ba522ac5..1ce0dc5bf84 100644 --- a/test/core/end2end/bad_server_response_test.cc +++ b/test/core/end2end/bad_server_response_test.cc @@ -269,7 +269,7 @@ static void run_test(const char* response_payload, grpc_status_code expected_status, const char* expected_detail) { test_tcp_server test_server; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_event ev; grpc_init(); diff --git a/test/core/end2end/connection_refused_test.cc b/test/core/end2end/connection_refused_test.cc index 9904c1384cb..ca6d17e7c89 100644 --- a/test/core/end2end/connection_refused_test.cc +++ b/test/core/end2end/connection_refused_test.cc @@ -133,7 +133,7 @@ static void run_test(bool wait_for_ready, bool use_service_config) { grpc_metadata_array_destroy(&trailing_metadata_recv); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (args != nullptr) grpc_channel_args_destroy(args); } diff --git a/test/core/end2end/fixtures/h2_census.cc b/test/core/end2end/fixtures/h2_census.cc index 60aafc3b94d..75c80aa1ffd 100644 --- a/test/core/end2end/fixtures/h2_census.cc +++ b/test/core/end2end/fixtures/h2_census.cc @@ -75,7 +75,7 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f, grpc_insecure_channel_create(ffd->localaddr, client_args, nullptr); GPR_ASSERT(f->client); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); } } @@ -91,7 +91,7 @@ void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f, server_args = grpc_channel_args_copy_and_add(server_args, &arg, 1); f->server = grpc_server_create(server_args, nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(server_args); } grpc_server_register_completion_queue(f->server, f->cq, nullptr); diff --git a/test/core/end2end/fixtures/h2_compress.cc b/test/core/end2end/fixtures/h2_compress.cc index 040c041f386..5b9181586cb 100644 --- a/test/core/end2end/fixtures/h2_compress.cc +++ b/test/core/end2end/fixtures/h2_compress.cc @@ -66,7 +66,7 @@ void chttp2_init_client_fullstack_compression(grpc_end2end_test_fixture* f, fullstack_compression_fixture_data* ffd = static_cast<fullstack_compression_fixture_data*>(f->fixture_data); if (ffd->client_args_compression != nullptr) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(ffd->client_args_compression); } ffd->client_args_compression = grpc_channel_args_set_compression_algorithm( @@ -80,7 +80,7 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture* f, fullstack_compression_fixture_data* ffd = static_cast<fullstack_compression_fixture_data*>(f->fixture_data); if (ffd->server_args_compression != nullptr) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(ffd->server_args_compression); } ffd->server_args_compression = grpc_channel_args_set_compression_algorithm( @@ -95,7 +95,7 @@ void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture* f, } void chttp2_tear_down_fullstack_compression(grpc_end2end_test_fixture* f) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; fullstack_compression_fixture_data* ffd = static_cast<fullstack_compression_fixture_data*>(f->fixture_data); grpc_channel_args_destroy(ffd->client_args_compression); diff --git a/test/core/end2end/fixtures/h2_fd.cc b/test/core/end2end/fixtures/h2_fd.cc index 85f5061ee80..9157ab04d0d 100644 --- a/test/core/end2end/fixtures/h2_fd.cc +++ b/test/core/end2end/fixtures/h2_fd.cc @@ -68,7 +68,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; sp_fixture_data* sfd = static_cast<sp_fixture_data*>(f->fixture_data); GPR_ASSERT(!f->client); @@ -79,7 +79,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; sp_fixture_data* sfd = static_cast<sp_fixture_data*>(f->fixture_data); GPR_ASSERT(!f->server); f->server = grpc_server_create(server_args, nullptr); diff --git a/test/core/end2end/fixtures/h2_full+workarounds.cc b/test/core/end2end/fixtures/h2_full+workarounds.cc index 2f9a9d4c4b0..237841d1854 100644 --- a/test/core/end2end/fixtures/h2_full+workarounds.cc +++ b/test/core/end2end/fixtures/h2_full+workarounds.cc @@ -72,7 +72,7 @@ void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f, void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { int i; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(f->fixture_data); grpc_arg args[GRPC_MAX_WORKAROUND_ID]; diff --git a/test/core/end2end/fixtures/h2_load_reporting.cc b/test/core/end2end/fixtures/h2_load_reporting.cc index 61853740ab8..fda5f4b052b 100644 --- a/test/core/end2end/fixtures/h2_load_reporting.cc +++ b/test/core/end2end/fixtures/h2_load_reporting.cc @@ -78,7 +78,7 @@ void chttp2_init_server_load_reporting(grpc_end2end_test_fixture* f, server_args = grpc_channel_args_copy_and_add(server_args, &arg, 1); f->server = grpc_server_create(server_args, nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(server_args); } grpc_server_register_completion_queue(f->server, f->cq, nullptr); diff --git a/test/core/end2end/fixtures/h2_oauth2.cc b/test/core/end2end/fixtures/h2_oauth2.cc index 40ca2a77fb4..5fed4434dec 100644 --- a/test/core/end2end/fixtures/h2_oauth2.cc +++ b/test/core/end2end/fixtures/h2_oauth2.cc @@ -143,7 +143,7 @@ void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture* f) { static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack( grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_credentials* ssl_creds = grpc_ssl_credentials_create(test_root_cert, nullptr, nullptr); grpc_call_credentials* oauth2_creds = grpc_md_only_test_credentials_create( diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.cc b/test/core/end2end/fixtures/h2_sockpair+trace.cc index 574b7555397..447bb91d0c8 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.cc +++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc @@ -50,7 +50,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, nullptr, @@ -87,7 +87,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; sp_client_setup cs; @@ -101,7 +101,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; GPR_ASSERT(!f->server); diff --git a/test/core/end2end/fixtures/h2_sockpair.cc b/test/core/end2end/fixtures/h2_sockpair.cc index 304d0dd1faf..c1f8ee0b64c 100644 --- a/test/core/end2end/fixtures/h2_sockpair.cc +++ b/test/core/end2end/fixtures/h2_sockpair.cc @@ -44,7 +44,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, nullptr, @@ -81,7 +81,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; sp_client_setup cs; @@ -95,7 +95,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; GPR_ASSERT(!f->server); diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.cc b/test/core/end2end/fixtures/h2_sockpair_1byte.cc index 0b5ae3abe44..55b847bdae7 100644 --- a/test/core/end2end/fixtures/h2_sockpair_1byte.cc +++ b/test/core/end2end/fixtures/h2_sockpair_1byte.cc @@ -44,7 +44,7 @@ static void server_setup_transport(void* ts, grpc_transport* transport) { grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_endpoint_add_to_pollset(sfd->server, grpc_cq_pollset(f->cq)); grpc_server_setup_transport(f->server, transport, nullptr, @@ -92,7 +92,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_socketpair( static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* client_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; sp_client_setup cs; @@ -106,7 +106,7 @@ static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f, static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f, grpc_channel_args* server_args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data); grpc_transport* transport; GPR_ASSERT(!f->server); diff --git a/test/core/end2end/fixtures/h2_ssl.cc b/test/core/end2end/fixtures/h2_ssl.cc index 4d6fed14e08..9a0680c40ef 100644 --- a/test/core/end2end/fixtures/h2_ssl.cc +++ b/test/core/end2end/fixtures/h2_ssl.cc @@ -110,7 +110,7 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(new_client_args); } } diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.cc b/test/core/end2end/fixtures/h2_ssl_proxy.cc index aee1388a560..5ddbdefc8c3 100644 --- a/test/core/end2end/fixtures/h2_ssl_proxy.cc +++ b/test/core/end2end/fixtures/h2_ssl_proxy.cc @@ -66,7 +66,7 @@ static grpc_channel* create_proxy_client(const char* target, grpc_secure_channel_create(ssl_creds, target, new_client_args, nullptr); grpc_channel_credentials_release(ssl_creds); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(new_client_args); } return channel; @@ -147,7 +147,7 @@ static void chttp2_init_client_simple_ssl_secure_fullstack( grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(new_client_args); } } diff --git a/test/core/end2end/fixtures/http_proxy_fixture.cc b/test/core/end2end/fixtures/http_proxy_fixture.cc index c49a866a6c2..539bbe41342 100644 --- a/test/core/end2end/fixtures/http_proxy_fixture.cc +++ b/test/core/end2end/fixtures/http_proxy_fixture.cc @@ -457,7 +457,7 @@ static void on_accept(void* arg, grpc_endpoint* endpoint, static void thread_main(void* arg) { grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)arg; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; do { gpr_ref(&proxy->users); grpc_pollset_worker* worker = nullptr; @@ -473,7 +473,7 @@ static void thread_main(void* arg) { grpc_end2end_http_proxy* grpc_end2end_http_proxy_create( grpc_channel_args* args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_end2end_http_proxy* proxy = (grpc_end2end_http_proxy*)gpr_malloc(sizeof(*proxy)); memset(proxy, 0, sizeof(*proxy)); @@ -518,7 +518,7 @@ static void destroy_pollset(void* arg, grpc_error* error) { void grpc_end2end_http_proxy_destroy(grpc_end2end_http_proxy* proxy) { gpr_unref(&proxy->users); // Signal proxy thread to shutdown. - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_thd_join(proxy->thd); grpc_tcp_server_shutdown_listeners(proxy->server); grpc_tcp_server_unref(proxy->server); diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc index ce916bd3414..40e9f33ff10 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.cc +++ b/test/core/end2end/fuzzers/api_fuzzer.cc @@ -748,7 +748,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_init(); grpc_timer_manager_set_threading(false); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_executor_set_threading(false); } grpc_resolve_address = my_resolve_address; @@ -842,7 +842,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { g_channel = grpc_insecure_channel_create(target_uri, args, nullptr); GPR_ASSERT(g_channel != nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(args); } gpr_free(target_uri); @@ -869,7 +869,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { g_server = grpc_server_create(args, nullptr); GPR_ASSERT(g_server != nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(args); } grpc_server_register_completion_queue(g_server, cq, nullptr); @@ -1199,7 +1199,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_secure_channel_create(creds, target_uri, args, nullptr); GPR_ASSERT(g_channel != nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(args); } gpr_free(target_uri); diff --git a/test/core/end2end/fuzzers/client_fuzzer.cc b/test/core/end2end/fuzzers/client_fuzzer.cc index e2fb13936a9..2d3fc7a074b 100644 --- a/test/core/end2end/fuzzers/client_fuzzer.cc +++ b/test/core/end2end/fuzzers/client_fuzzer.cc @@ -44,7 +44,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (leak_check) grpc_memory_counters_init(); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_executor_set_threading(false); grpc_resource_quota* resource_quota = diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc index 4506ff5c0b2..db25160e2b0 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.cc +++ b/test/core/end2end/fuzzers/server_fuzzer.cc @@ -42,7 +42,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (leak_check) grpc_memory_counters_init(); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_executor_set_threading(false); grpc_resource_quota* resource_quota = diff --git a/test/core/end2end/h2_ssl_cert_test.cc b/test/core/end2end/h2_ssl_cert_test.cc index 177731669ea..d50d1f4d81e 100644 --- a/test/core/end2end/h2_ssl_cert_test.cc +++ b/test/core/end2end/h2_ssl_cert_test.cc @@ -181,7 +181,7 @@ typedef enum { NONE, SELF_SIGNED, SIGNED, BAD_CERT_PAIR } certtype; grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); \ chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); \ { \ - grpc_core::ExecCtx _local_exec_ctx; \ + grpc_core::ExecCtx exec_ctx; \ grpc_channel_args_destroy(new_client_args); \ } \ } diff --git a/test/core/end2end/tests/cancel_after_accept.cc b/test/core/end2end/tests/cancel_after_accept.cc index 5ce45b4c616..f59caf7e35a 100644 --- a/test/core/end2end/tests/cancel_after_accept.cc +++ b/test/core/end2end/tests/cancel_after_accept.cc @@ -245,7 +245,7 @@ static void test_cancel_after_accept(grpc_end2end_test_config config, grpc_call_unref(s); if (args != nullptr) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(args); } diff --git a/test/core/end2end/tests/cancel_after_round_trip.cc b/test/core/end2end/tests/cancel_after_round_trip.cc index 9bd92b06e38..b10b93978d1 100644 --- a/test/core/end2end/tests/cancel_after_round_trip.cc +++ b/test/core/end2end/tests/cancel_after_round_trip.cc @@ -278,7 +278,7 @@ static void test_cancel_after_round_trip(grpc_end2end_test_config config, grpc_call_unref(s); if (args != nullptr) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(args); } diff --git a/test/core/end2end/tests/compressed_payload.cc b/test/core/end2end/tests/compressed_payload.cc index 93a06c9dfc3..944edc7a70f 100644 --- a/test/core/end2end/tests/compressed_payload.cc +++ b/test/core/end2end/tests/compressed_payload.cc @@ -129,7 +129,7 @@ static void request_for_disabled_algorithm( server_args = grpc_channel_args_set_compression_algorithm(nullptr, GRPC_COMPRESS_NONE); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; server_args = grpc_channel_args_compression_algorithm_set_state( &server_args, algorithm_to_disable, false); } @@ -256,7 +256,7 @@ static void request_for_disabled_algorithm( grpc_byte_buffer_destroy(request_payload_recv); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } @@ -537,7 +537,7 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/load_reporting_hook.cc b/test/core/end2end/tests/load_reporting_hook.cc index 13e3af7ac51..e056bd547b8 100644 --- a/test/core/end2end/tests/load_reporting_hook.cc +++ b/test/core/end2end/tests/load_reporting_hook.cc @@ -300,7 +300,7 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) { &trailing_lr_metadata); end_test(&f); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(lr_server_args); } config.tear_down_data(&f); diff --git a/test/core/end2end/tests/max_message_length.cc b/test/core/end2end/tests/max_message_length.cc index 06243be75b2..e581f1fc20e 100644 --- a/test/core/end2end/tests/max_message_length.cc +++ b/test/core/end2end/tests/max_message_length.cc @@ -173,7 +173,7 @@ static void test_max_message_length_on_request(grpc_end2end_test_config config, f = begin_test(config, "test_max_request_message_length", client_args, server_args); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (client_args != nullptr) grpc_channel_args_destroy(client_args); if (server_args != nullptr) grpc_channel_args_destroy(server_args); } @@ -363,7 +363,7 @@ static void test_max_message_length_on_response(grpc_end2end_test_config config, f = begin_test(config, "test_max_response_message_length", client_args, server_args); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; if (client_args != nullptr) grpc_channel_args_destroy(client_args); if (server_args != nullptr) grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/stream_compression_compressed_payload.cc b/test/core/end2end/tests/stream_compression_compressed_payload.cc index 4f09df25db8..ec3050ad45f 100644 --- a/test/core/end2end/tests/stream_compression_compressed_payload.cc +++ b/test/core/end2end/tests/stream_compression_compressed_payload.cc @@ -129,7 +129,7 @@ static void request_for_disabled_algorithm( server_args = grpc_channel_args_set_stream_compression_algorithm( nullptr, GRPC_STREAM_COMPRESS_NONE); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; server_args = grpc_channel_args_stream_compression_algorithm_set_state( &server_args, algorithm_to_disable, false); } @@ -257,7 +257,7 @@ static void request_for_disabled_algorithm( grpc_byte_buffer_destroy(request_payload_recv); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } @@ -545,7 +545,7 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/stream_compression_payload.cc b/test/core/end2end/tests/stream_compression_payload.cc index 6a8c9cdcb27..b95e6528cde 100644 --- a/test/core/end2end/tests/stream_compression_payload.cc +++ b/test/core/end2end/tests/stream_compression_payload.cc @@ -277,7 +277,7 @@ static void test_invoke_request_response_with_payload( end_test(&f); config.tear_down_data(&f); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc index 3e1a532af5c..2a8799ee67b 100644 --- a/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc +++ b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc @@ -275,7 +275,7 @@ static void test_pingpong_streaming(grpc_end2end_test_config config, end_test(&f); config.tear_down_data(&f); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/end2end/tests/workaround_cronet_compression.cc b/test/core/end2end/tests/workaround_cronet_compression.cc index 8c5c9e834fe..d4decce0aa1 100644 --- a/test/core/end2end/tests/workaround_cronet_compression.cc +++ b/test/core/end2end/tests/workaround_cronet_compression.cc @@ -142,7 +142,7 @@ static void request_with_payload_template( nullptr, default_server_channel_compression_algorithm); if (user_agent_override) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args* client_args_old = client_args; grpc_arg arg; arg.key = const_cast<char*>(GRPC_ARG_PRIMARY_USER_AGENT_STRING); @@ -350,7 +350,7 @@ static void request_with_payload_template( cq_verifier_destroy(cqv); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(client_args); grpc_channel_args_destroy(server_args); } diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc index ed5c03558f3..259e3aa463e 100644 --- a/test/core/http/httpcli_test.cc +++ b/test/core/http/httpcli_test.cc @@ -60,7 +60,7 @@ static void on_finish(void* arg, grpc_error* error) { static void test_get(int port) { grpc_httpcli_request req; char* host; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_get"); @@ -99,7 +99,7 @@ static void test_get(int port) { static void test_post(int port) { grpc_httpcli_request req; char* host; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_post"); @@ -146,7 +146,7 @@ int main(int argc, char** argv) { grpc_init(); { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; char* me = argv[0]; char* lslash = strrchr(me, '/'); char* args[4]; diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc index 418afb6992e..adf69f1b16f 100644 --- a/test/core/http/httpscli_test.cc +++ b/test/core/http/httpscli_test.cc @@ -60,7 +60,7 @@ static void on_finish(void* arg, grpc_error* error) { static void test_get(int port) { grpc_httpcli_request req; char* host; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_get"); @@ -100,7 +100,7 @@ static void test_get(int port) { static void test_post(int port) { grpc_httpcli_request req; char* host; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_done = 0; gpr_log(GPR_INFO, "test_post"); @@ -195,7 +195,7 @@ int main(int argc, char** argv) { test_post(port); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_httpcli_context_destroy(&g_context); GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops, grpc_schedule_on_exec_ctx); diff --git a/test/core/iomgr/combiner_test.cc b/test/core/iomgr/combiner_test.cc index faa5c3dcbc7..cbcbe7feff0 100644 --- a/test/core/iomgr/combiner_test.cc +++ b/test/core/iomgr/combiner_test.cc @@ -28,7 +28,7 @@ static void test_no_op(void) { gpr_log(GPR_DEBUG, "test_no_op"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_COMBINER_UNREF(grpc_combiner_create(), "test_no_op"); } @@ -42,7 +42,7 @@ static void test_execute_one(void) { grpc_combiner* lock = grpc_combiner_create(); gpr_event done; gpr_event_init(&done); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(set_event_to_true, &done, grpc_combiner_scheduler(lock)), GRPC_ERROR_NONE); @@ -72,7 +72,7 @@ static void check_one(void* a, grpc_error* error) { static void execute_many_loop(void* a) { thd_args* args = static_cast<thd_args*>(a); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; size_t n = 1; for (size_t i = 0; i < 10; i++) { for (size_t j = 0; j < 10000; j++) { @@ -112,7 +112,7 @@ static void test_execute_many(void) { gpr_inf_future(GPR_CLOCK_REALTIME)) != nullptr); gpr_thd_join(thds[i]); } - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_COMBINER_UNREF(lock, "test_execute_many"); } @@ -133,7 +133,7 @@ static void test_execute_finally(void) { gpr_log(GPR_DEBUG, "test_execute_finally"); grpc_combiner* lock = grpc_combiner_create(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_event_init(&got_in_finally); GRPC_CLOSURE_SCHED( GRPC_CLOSURE_CREATE(add_finally, lock, grpc_combiner_scheduler(lock)), diff --git a/test/core/iomgr/endpoint_pair_test.cc b/test/core/iomgr/endpoint_pair_test.cc index d895a270ada..90dd40d9c48 100644 --- a/test/core/iomgr/endpoint_pair_test.cc +++ b/test/core/iomgr/endpoint_pair_test.cc @@ -32,7 +32,7 @@ static void clean_up(void) {} static grpc_endpoint_test_fixture create_fixture_endpoint_pair( size_t slice_size) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_test_fixture f; grpc_arg a[1]; a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE); @@ -62,7 +62,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); grpc_endpoint_tests(configs[0], g_pollset, g_mu); diff --git a/test/core/iomgr/endpoint_tests.cc b/test/core/iomgr/endpoint_tests.cc index c011ab96d96..8ccae520670 100644 --- a/test/core/iomgr/endpoint_tests.cc +++ b/test/core/iomgr/endpoint_tests.cc @@ -173,7 +173,7 @@ static void read_and_write_test(grpc_endpoint_test_config config, struct read_and_write_test_state state; grpc_endpoint_test_fixture f = begin_test(config, "read_and_write_test", slice_size); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); gpr_log(GPR_DEBUG, @@ -277,7 +277,7 @@ static void multiple_shutdown_test(grpc_endpoint_test_config config) { grpc_slice_buffer slice_buffer; grpc_slice_buffer_init(&slice_buffer); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_endpoint_add_to_pollset(f.client_ep, g_pollset); grpc_endpoint_read(f.client_ep, &slice_buffer, GRPC_CLOSURE_CREATE(inc_on_failure, &fail_count, diff --git a/test/core/iomgr/ev_epollsig_linux_test.cc b/test/core/iomgr/ev_epollsig_linux_test.cc index 45c96ce12d0..750bbf89d45 100644 --- a/test/core/iomgr/ev_epollsig_linux_test.cc +++ b/test/core/iomgr/ev_epollsig_linux_test.cc @@ -130,7 +130,7 @@ static void test_pollset_cleanup(test_pollset* pollsets, int num_pollsets) { #define NUM_POLLSETS 4 static void test_add_fd_to_pollset() { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; test_fd tfds[NUM_FDS]; int fds[NUM_FDS]; test_pollset pollsets[NUM_POLLSETS]; @@ -231,7 +231,7 @@ static __thread int thread_wakeups = 0; static void test_threading_loop(void* arg) { threading_shared* shared = static_cast<threading_shared*>(arg); while (thread_wakeups < 1000000) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_worker* worker; gpr_mu_lock(shared->mu); GPR_ASSERT(GRPC_LOG_IF_ERROR( @@ -271,7 +271,7 @@ static void test_threading(void) { shared.wakeup_desc = grpc_fd_create(fd.read_fd, "wakeup"); shared.wakeups = 0; { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_add_fd(shared.pollset, shared.wakeup_desc); grpc_fd_notify_on_read( shared.wakeup_desc, @@ -286,7 +286,7 @@ static void test_threading(void) { fd.read_fd = 0; grpc_wakeup_fd_destroy(&fd); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_fd_shutdown(shared.wakeup_desc, GRPC_ERROR_CANCELLED); grpc_fd_orphan(shared.wakeup_desc, nullptr, nullptr, false /* already_closed */, "done"); @@ -302,7 +302,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; poll_strategy = grpc_get_poll_strategy_name(); if (poll_strategy != nullptr && strcmp(poll_strategy, "epollsig") == 0) { diff --git a/test/core/iomgr/fd_conservation_posix_test.cc b/test/core/iomgr/fd_conservation_posix_test.cc index f4c8e5a21f4..aaa14010f8d 100644 --- a/test/core/iomgr/fd_conservation_posix_test.cc +++ b/test/core/iomgr/fd_conservation_posix_test.cc @@ -32,7 +32,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* set max # of file descriptors to a low value, and verify we can create and destroy many more than this number diff --git a/test/core/iomgr/fd_posix_test.cc b/test/core/iomgr/fd_posix_test.cc index 8eda76cf9b1..cf75517538a 100644 --- a/test/core/iomgr/fd_posix_test.cc +++ b/test/core/iomgr/fd_posix_test.cc @@ -246,7 +246,7 @@ static int server_start(server* sv) { static void server_wait_and_shutdown(server* sv) { gpr_mu_lock(g_mu); while (!sv->done) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_worker* worker = nullptr; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", @@ -362,7 +362,7 @@ static void client_wait_and_shutdown(client* cl) { gpr_mu_lock(g_mu); while (!cl->done) { grpc_pollset_worker* worker = nullptr; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(GRPC_LOG_IF_ERROR( "pollset_work", grpc_pollset_work(g_pollset, &worker, GRPC_MILLIS_INF_FUTURE))); @@ -380,7 +380,7 @@ static void test_grpc_fd(void) { server sv; client cl; int port; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; server_init(&sv); port = server_start(&sv); @@ -436,7 +436,7 @@ static void test_grpc_fd_change(void) { ssize_t result; grpc_closure first_closure; grpc_closure second_closure; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CLOSURE_INIT(&first_closure, first_read_callback, &a, grpc_schedule_on_exec_ctx); @@ -516,7 +516,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); test_grpc_fd(); diff --git a/test/core/iomgr/pollset_set_test.cc b/test/core/iomgr/pollset_set_test.cc index cf9c82b4821..f27079134b8 100644 --- a/test/core/iomgr/pollset_set_test.cc +++ b/test/core/iomgr/pollset_set_test.cc @@ -199,7 +199,7 @@ static void pollset_set_test_basic() { * | * +---> FD9 (Added after PS2 is added to PSS0) */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_worker* worker; grpc_millis deadline; @@ -301,7 +301,7 @@ void pollset_set_test_dup_fds() { * | +--> FD2 * +---> FD1 */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_worker* worker; grpc_millis deadline; @@ -371,7 +371,7 @@ void pollset_set_test_empty_pollset() { * | * +---> FD2 */ - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_worker* worker; grpc_millis deadline; @@ -424,7 +424,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; const char* poll_strategy = grpc_get_poll_strategy_name(); if (poll_strategy != nullptr && diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index 45a5e5a0b13..d37d79fed30 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -81,7 +81,7 @@ static void actually_poll(void* argsp) { args_struct* args = static_cast<args_struct*>(argsp); grpc_millis deadline = n_sec_deadline(10); while (true) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; bool done = gpr_atm_acq_load(&args->done_atm) != 0; if (done) { break; @@ -120,7 +120,7 @@ static void must_fail(void* argsp, grpc_error* err) { } static void test_unix_socket(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); poll_pollset_until_request_done(&args); @@ -132,7 +132,7 @@ static void test_unix_socket(void) { } static void test_unix_socket_path_name_too_long(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); const char prefix[] = "unix:/path/name"; @@ -158,7 +158,7 @@ int main(int argc, char** argv) { grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; test_unix_socket(); test_unix_socket_path_name_too_long(); } diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc index e6986f332ba..a0dc484f3e4 100644 --- a/test/core/iomgr/resolve_address_test.cc +++ b/test/core/iomgr/resolve_address_test.cc @@ -74,7 +74,7 @@ static grpc_millis n_sec_deadline(int seconds) { } static void poll_pollset_until_request_done(args_struct* args) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_millis deadline = n_sec_deadline(10); while (true) { bool done = gpr_atm_acq_load(&args->done_atm) != 0; @@ -115,7 +115,7 @@ static void must_fail(void* argsp, grpc_error* err) { } static void test_localhost(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -128,7 +128,7 @@ static void test_localhost(void) { } static void test_default_port(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -141,7 +141,7 @@ static void test_default_port(void) { } static void test_non_numeric_default_port(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -154,7 +154,7 @@ static void test_non_numeric_default_port(void) { } static void test_missing_default_port(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -167,7 +167,7 @@ static void test_missing_default_port(void) { } static void test_ipv6_with_port(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -187,7 +187,7 @@ static void test_ipv6_without_port(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -207,7 +207,7 @@ static void test_invalid_ip_addresses(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -226,7 +226,7 @@ static void test_unparseable_hostports(void) { }; unsigned i; for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; args_struct args; args_init(&args); grpc_resolve_address( @@ -243,7 +243,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; test_localhost(); test_default_port(); test_non_numeric_default_port(); diff --git a/test/core/iomgr/resource_quota_test.cc b/test/core/iomgr/resource_quota_test.cc index 7d793937b26..ae26f72701b 100644 --- a/test/core/iomgr/resource_quota_test.cc +++ b/test/core/iomgr/resource_quota_test.cc @@ -84,7 +84,7 @@ grpc_closure* make_unused_reclaimer(grpc_closure* then) { } static void destroy_user(grpc_resource_user* usr) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_unref(usr); } @@ -117,11 +117,11 @@ static void test_instant_alloc_then_free(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user* usr = grpc_resource_user_create(q, "usr"); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -135,7 +135,7 @@ static void test_instant_alloc_free_pair(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user* usr = grpc_resource_user_create(q, "usr"); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); grpc_resource_user_free(usr, 1024); } @@ -152,14 +152,14 @@ static void test_simple_async_alloc(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != nullptr); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -175,7 +175,7 @@ static void test_async_alloc_blocked_by_size(void) { gpr_event ev; gpr_event_init(&ev); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait( @@ -186,7 +186,7 @@ static void test_async_alloc_blocked_by_size(void) { nullptr); ; { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -202,7 +202,7 @@ static void test_scavenge(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -210,13 +210,13 @@ static void test_scavenge(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr1, 1024); } { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -224,7 +224,7 @@ static void test_scavenge(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr2, 1024); } grpc_resource_quota_unref(q); @@ -241,7 +241,7 @@ static void test_scavenge_blocked(void) { gpr_event ev; { gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -250,14 +250,14 @@ static void test_scavenge_blocked(void) { } { gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait( &ev, grpc_timeout_milliseconds_to_deadline(100)) == nullptr); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr1, 1024); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -265,7 +265,7 @@ static void test_scavenge_blocked(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr2, 1024); } grpc_resource_quota_unref(q); @@ -282,7 +282,7 @@ static void test_blocked_until_scheduled_reclaim(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -292,14 +292,14 @@ static void test_blocked_until_scheduled_reclaim(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaim_done))); } { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaim_done, @@ -309,7 +309,7 @@ static void test_blocked_until_scheduled_reclaim(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -326,7 +326,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr1, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -336,14 +336,14 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr1, false, make_reclaimer(usr1, 1024, set_event(&reclaim_done))); } { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr2, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaim_done, @@ -353,7 +353,7 @@ static void test_blocked_until_scheduled_reclaim_and_scavenge(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr2, 1024); } grpc_resource_quota_unref(q); @@ -370,7 +370,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -380,14 +380,14 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { gpr_event reclaim_done; gpr_event_init(&reclaim_done); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, true, make_reclaimer(usr, 1024, set_event(&reclaim_done))); } { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaim_done, @@ -397,7 +397,7 @@ static void test_blocked_until_scheduled_destructive_reclaim(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -415,7 +415,7 @@ static void test_unused_reclaim_is_cancelled(void) { gpr_event destructive_done; gpr_event_init(&destructive_done); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_unused_reclaimer(set_event(&benign_done))); grpc_resource_user_post_reclaimer( @@ -449,7 +449,7 @@ static void test_benign_reclaim_is_preferred(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -457,7 +457,7 @@ static void test_benign_reclaim_is_preferred(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&benign_done))); grpc_resource_user_post_reclaimer( @@ -473,7 +473,7 @@ static void test_benign_reclaim_is_preferred(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, @@ -485,7 +485,7 @@ static void test_benign_reclaim_is_preferred(void) { nullptr); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -509,7 +509,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&ev, grpc_timeout_seconds_to_deadline(5)) != @@ -517,7 +517,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 512, set_event(&benign_done))); grpc_resource_user_post_reclaimer( @@ -533,7 +533,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { { gpr_event ev; gpr_event_init(&ev); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&ev)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&benign_done, @@ -545,7 +545,7 @@ static void test_multiple_reclaims_can_be_triggered(void) { ; } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } grpc_resource_quota_unref(q); @@ -564,16 +564,16 @@ static void test_resource_user_stays_allocated_until_memory_released(void) { grpc_resource_quota_resize(q, 1024 * 1024); grpc_resource_user* usr = grpc_resource_user_create(q, "usr"); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, NULL); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_quota_unref(q); grpc_resource_user_unref(usr); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } } @@ -594,7 +594,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( gpr_event reclaimer_cancelled; gpr_event_init(&reclaimer_cancelled); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_unused_reclaimer(set_event(&reclaimer_cancelled))); grpc_core::ExecCtx::Get()->Flush(); @@ -605,7 +605,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( { gpr_event allocated; gpr_event_init(&allocated); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&allocated, @@ -615,7 +615,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( nullptr); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_unref(usr); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -623,7 +623,7 @@ test_resource_user_stays_allocated_and_reclaimers_unrun_until_memory_released( nullptr); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&reclaimer_cancelled, @@ -643,7 +643,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { gpr_event allocated; gpr_event_init(&allocated); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&allocated, @@ -653,7 +653,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { gpr_event reclaimer_done; gpr_event_init(&reclaimer_done); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_post_reclaimer( usr, false, make_reclaimer(usr, 1024, set_event(&reclaimer_done))); grpc_core::ExecCtx::Get()->Flush(); @@ -664,7 +664,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { { gpr_event allocated; gpr_event_init(&allocated); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc(usr, 1024, set_event(&allocated)); grpc_core::ExecCtx::Get()->Flush(); GPR_ASSERT(gpr_event_wait(&allocated, @@ -675,7 +675,7 @@ static void test_reclaimers_can_be_posted_repeatedly(void) { } } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_free(usr, 1024); } destroy_user(usr); @@ -699,14 +699,14 @@ static void test_one_slice(void) { { const int start_allocs = num_allocs; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); grpc_core::ExecCtx::Get()->Flush(); assert_counter_becomes(&num_allocs, start_allocs + 1); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); } destroy_user(usr); @@ -731,20 +731,20 @@ static void test_one_slice_deleted_late(void) { { const int start_allocs = num_allocs; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); grpc_core::ExecCtx::Get()->Flush(); assert_counter_becomes(&num_allocs, start_allocs + 1); } { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_unref(usr); } grpc_resource_quota_unref(q); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); } } @@ -773,7 +773,7 @@ static void test_negative_rq_free_pool(void) { { const int start_allocs = num_allocs; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_alloc_slices(&alloc, 1024, 1, &buffer); grpc_core::ExecCtx::Get()->Flush(); assert_counter_becomes(&num_allocs, start_allocs + 1); @@ -786,13 +786,13 @@ static void test_negative_rq_free_pool(void) { GPR_ASSERT(grpc_resource_quota_get_memory_pressure(q) > 1 - eps); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_user_unref(usr); } grpc_resource_quota_unref(q); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_buffer_destroy_internal(&buffer); } } diff --git a/test/core/iomgr/tcp_client_posix_test.cc b/test/core/iomgr/tcp_client_posix_test.cc index 0cdf30590ef..40a050ed9f6 100644 --- a/test/core/iomgr/tcp_client_posix_test.cc +++ b/test/core/iomgr/tcp_client_posix_test.cc @@ -53,7 +53,7 @@ static grpc_millis test_deadline(void) { static void finish_connection() { gpr_mu_lock(g_mu); g_connections_complete++; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT( GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(g_pollset, nullptr))); @@ -83,7 +83,7 @@ void test_succeeds(void) { int r; int connections_complete_before; grpc_closure done; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_succeeds"); @@ -139,7 +139,7 @@ void test_fails(void) { struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; int connections_complete_before; grpc_closure done; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_fails"); @@ -192,7 +192,7 @@ int main(int argc, char** argv) { grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset_set = grpc_pollset_set_create(); g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); diff --git a/test/core/iomgr/tcp_client_uv_test.cc b/test/core/iomgr/tcp_client_uv_test.cc index 344478ea975..0c6250ed7f5 100644 --- a/test/core/iomgr/tcp_client_uv_test.cc +++ b/test/core/iomgr/tcp_client_uv_test.cc @@ -87,7 +87,7 @@ void test_succeeds(void) { uv_tcp_t* svr_handle = static_cast<uv_tcp_t*>(gpr_malloc(sizeof(uv_tcp_t))); int connections_complete_before; grpc_closure done; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_succeeds"); @@ -136,7 +136,7 @@ void test_fails(void) { struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; int connections_complete_before; grpc_closure done; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_fails"); @@ -186,7 +186,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size())); diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc index b42fb588ebb..f4acba83025 100644 --- a/test/core/iomgr/tcp_posix_test.cc +++ b/test/core/iomgr/tcp_posix_test.cc @@ -163,7 +163,7 @@ static void read_test(size_t num_bytes, size_t slice_size) { size_t written_bytes; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_INFO, "Read test of size %" PRIuPTR ", slice size %" PRIuPTR, num_bytes, slice_size); @@ -213,7 +213,7 @@ static void large_read_test(size_t slice_size) { ssize_t written_bytes; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_INFO, "Start large read test, slice size %" PRIuPTR, slice_size); @@ -301,7 +301,7 @@ void drain_socket_blocking(int fd, size_t num_bytes, size_t read_size) { int flags; int current = 0; int i; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; flags = fcntl(fd, F_GETFL, 0); GPR_ASSERT(fcntl(fd, F_SETFL, flags & ~O_NONBLOCK) == 0); @@ -348,7 +348,7 @@ static void write_test(size_t num_bytes, size_t slice_size) { grpc_closure write_done_closure; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_INFO, "Start write test with %" PRIuPTR " bytes, slice size %" PRIuPTR, @@ -411,7 +411,7 @@ static void release_fd_test(size_t num_bytes, size_t slice_size) { int fd; grpc_millis deadline = grpc_timespec_to_millis_round_up(grpc_timeout_seconds_to_deadline(20)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_closure fd_released_cb; int fd_released_done = 0; GRPC_CLOSURE_INIT(&fd_released_cb, &on_fd_released, &fd_released_done, @@ -507,7 +507,7 @@ static grpc_endpoint_test_fixture create_fixture_tcp_socketpair( size_t slice_size) { int sv[2]; grpc_endpoint_test_fixture f; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; create_sockets(sv); grpc_resource_quota* resource_quota = @@ -541,7 +541,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(g_pollset, &g_mu); grpc_endpoint_tests(configs[0], g_pollset, g_mu); diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc index 28fc3601ad9..3c9ca2109ec 100644 --- a/test/core/iomgr/tcp_server_posix_test.cc +++ b/test/core/iomgr/tcp_server_posix_test.cc @@ -163,14 +163,14 @@ static void on_connect(void* arg, grpc_endpoint* tcp, grpc_pollset* pollset, } static void test_no_op(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(nullptr, nullptr, &s)); grpc_tcp_server_unref(s); } static void test_no_op_with_start(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(nullptr, nullptr, &s)); LOG_TEST("test_no_op_with_start"); @@ -179,7 +179,7 @@ static void test_no_op_with_start(void) { } static void test_no_op_with_port(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -198,7 +198,7 @@ static void test_no_op_with_port(void) { } static void test_no_op_with_port_and_start(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -282,7 +282,7 @@ static grpc_error* tcp_connect(const test_addr* remote, static void test_connect(size_t num_connects, const grpc_channel_args* channel_args, test_addrs* dst_addrs, bool test_dst_addrs) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; grpc_resolved_address resolved_addr1; struct sockaddr_storage* const addr = @@ -436,7 +436,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); diff --git a/test/core/iomgr/tcp_server_uv_test.cc b/test/core/iomgr/tcp_server_uv_test.cc index 07b1fb15799..35d62b51b76 100644 --- a/test/core/iomgr/tcp_server_uv_test.cc +++ b/test/core/iomgr/tcp_server_uv_test.cc @@ -115,14 +115,14 @@ static void on_connect(void* arg, grpc_endpoint* tcp, grpc_pollset* pollset, } static void test_no_op(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); grpc_tcp_server_unref(s); } static void test_no_op_with_start(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_tcp_server* s; GPR_ASSERT(GRPC_ERROR_NONE == grpc_tcp_server_create(NULL, NULL, &s)); LOG_TEST("test_no_op_with_start"); @@ -131,7 +131,7 @@ static void test_no_op_with_start(void) { } static void test_no_op_with_port(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -150,7 +150,7 @@ static void test_no_op_with_port(void) { } static void test_no_op_with_port_and_start(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_tcp_server* s; @@ -214,7 +214,7 @@ static void tcp_connect(const struct sockaddr* remote, socklen_t remote_len, /* Tests a tcp server with multiple ports. */ static void test_connect(unsigned n) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; grpc_resolved_address resolved_addr1; struct sockaddr_storage* addr = (struct sockaddr_storage*)resolved_addr.addr; @@ -284,7 +284,7 @@ static void destroy_pollset(void* p, grpc_error* error) { int main(int argc, char** argv) { grpc_closure destroyed; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_test_init(argc, argv); grpc_init(); g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size())); diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc index 7ab4c4415c5..deb8c4d87e9 100644 --- a/test/core/iomgr/timer_list_test.cc +++ b/test/core/iomgr/timer_list_test.cc @@ -45,7 +45,7 @@ static void cb(void* arg, grpc_error* error) { static void add_test(void) { int i; grpc_timer timers[20]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_INFO, "add_test"); @@ -109,7 +109,7 @@ static void add_test(void) { /* Cleaning up a list with pending timers. */ void destruction_test(void) { grpc_timer timers[5]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_INFO, "destruction_test"); diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc index 379c50c09da..7f662f06836 100644 --- a/test/core/iomgr/udp_server_test.cc +++ b/test/core/iomgr/udp_server_test.cc @@ -127,13 +127,13 @@ static test_socket_factory* test_socket_factory_create(void) { } static void test_no_op(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_udp_server* s = grpc_udp_server_create(nullptr); grpc_udp_server_destroy(s, nullptr); } static void test_no_op_with_start(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_udp_server* s = grpc_udp_server_create(nullptr); LOG_TEST("test_no_op_with_start"); grpc_udp_server_start(s, nullptr, 0, nullptr); @@ -142,7 +142,7 @@ static void test_no_op_with_start(void) { static void test_no_op_with_port(void) { g_number_of_orphan_calls = 0; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_udp_server* s = grpc_udp_server_create(nullptr); @@ -162,7 +162,7 @@ static void test_no_op_with_port(void) { static void test_no_op_with_port_and_socket_factory(void) { g_number_of_orphan_calls = 0; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; @@ -194,7 +194,7 @@ static void test_no_op_with_port_and_socket_factory(void) { static void test_no_op_with_port_and_start(void) { g_number_of_orphan_calls = 0; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; grpc_udp_server* s = grpc_udp_server_create(nullptr); @@ -216,7 +216,7 @@ static void test_no_op_with_port_and_start(void) { } static void test_receive(int number_of_clients) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_storage* addr = (struct sockaddr_storage*)resolved_addr.addr; int clifd, svrfd; @@ -294,7 +294,7 @@ int main(int argc, char** argv) { grpc_test_init(argc, argv); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size())); grpc_pollset_init(g_pollset, &g_mu); diff --git a/test/core/security/credentials_test.cc b/test/core/security/credentials_test.cc index 7d0a24a459e..ecc61928f59 100644 --- a/test/core/security/credentials_test.cc +++ b/test/core/security/credentials_test.cc @@ -148,7 +148,7 @@ static grpc_httpcli_response http_response(int status, const char* body) { /* -- Tests. -- */ static void test_empty_md_array(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); GPR_ASSERT(md_array.md == nullptr); @@ -157,7 +157,7 @@ static void test_empty_md_array(void) { } static void test_add_to_empty_md_array(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); const char* key = "hello"; @@ -172,7 +172,7 @@ static void test_add_to_empty_md_array(void) { } static void test_add_abunch_to_md_array(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_credentials_mdelem_array md_array; memset(&md_array, 0, sizeof(md_array)); const char* key = "hello"; @@ -191,7 +191,7 @@ static void test_add_abunch_to_md_array(void) { } static void test_oauth2_token_fetcher_creds_parsing_ok(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -208,7 +208,7 @@ static void test_oauth2_token_fetcher_creds_parsing_ok(void) { } static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -220,7 +220,7 @@ static void test_oauth2_token_fetcher_creds_parsing_bad_http_status(void) { } static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, ""); @@ -231,7 +231,7 @@ static void test_oauth2_token_fetcher_creds_parsing_empty_http_body(void) { } static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -246,7 +246,7 @@ static void test_oauth2_token_fetcher_creds_parsing_invalid_json(void) { } static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = http_response(200, @@ -260,7 +260,7 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token(void) { } static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -276,7 +276,7 @@ static void test_oauth2_token_fetcher_creds_parsing_missing_token_type(void) { static void test_oauth2_token_fetcher_creds_parsing_missing_token_lifetime( void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem token_md = GRPC_MDNULL; grpc_millis token_lifetime; grpc_httpcli_response response = @@ -378,7 +378,7 @@ static void run_request_metadata_test(grpc_call_credentials* creds, } static void test_google_iam_creds(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; expected_md emd[] = {{GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY, test_google_iam_authorization_token}, {GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY, @@ -395,7 +395,7 @@ static void test_google_iam_creds(void) { } static void test_access_token_creds(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; expected_md emd[] = {{GRPC_AUTHORIZATION_METADATA_KEY, "Bearer blah"}}; request_metadata_state* state = make_request_metadata_state(GRPC_ERROR_NONE, emd, GPR_ARRAY_SIZE(emd)); @@ -419,7 +419,7 @@ static grpc_security_status check_channel_oauth2_create_security_connector( } static void test_channel_oauth2_composite_creds(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args* new_args; grpc_channel_credentials_vtable vtable = { nullptr, check_channel_oauth2_create_security_connector, nullptr}; @@ -439,7 +439,7 @@ static void test_channel_oauth2_composite_creds(void) { } static void test_oauth2_google_iam_composite_creds(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; expected_md emd[] = { {GRPC_AUTHORIZATION_METADATA_KEY, test_oauth2_bearer_token}, {GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY, @@ -492,7 +492,7 @@ check_channel_oauth2_google_iam_create_security_connector( } static void test_channel_oauth2_google_iam_composite_creds(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args* new_args; grpc_channel_credentials_vtable vtable = { nullptr, check_channel_oauth2_google_iam_create_security_connector, @@ -570,7 +570,7 @@ static int httpcli_get_should_not_be_called(const grpc_httpcli_request* request, } static void test_compute_engine_creds_success(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; grpc_call_credentials* creds = @@ -599,7 +599,7 @@ static void test_compute_engine_creds_success(void) { } static void test_compute_engine_creds_failure(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; request_metadata_state* state = make_request_metadata_state( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Error occured when fetching oauth2 token."), @@ -659,7 +659,7 @@ static int refresh_token_httpcli_post_failure( } static void test_refresh_token_creds_success(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, @@ -688,7 +688,7 @@ static void test_refresh_token_creds_success(void) { } static void test_refresh_token_creds_failure(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; request_metadata_state* state = make_request_metadata_state( GRPC_ERROR_CREATE_FROM_STATIC_STRING( "Error occured when fetching oauth2 token."), @@ -791,7 +791,7 @@ static void test_jwt_creds_lifetime(void) { static void test_jwt_creds_success(void) { char* json_key_string = test_json_key_str(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; char* expected_md_value; @@ -833,7 +833,7 @@ static void test_jwt_creds_success(void) { static void test_jwt_creds_signing_failure(void) { char* json_key_string = test_json_key_str(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; request_metadata_state* state = make_request_metadata_state( @@ -865,7 +865,7 @@ static void set_google_default_creds_env_var_with_file_contents( } static void test_google_default_creds_auth_key(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_service_account_jwt_access_credentials* jwt; grpc_composite_channel_credentials* creds; char* json_key = test_json_key_str(); @@ -886,7 +886,7 @@ static void test_google_default_creds_auth_key(void) { } static void test_google_default_creds_refresh_token(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_google_refresh_token_credentials* refresh; grpc_composite_channel_credentials* creds; grpc_flush_cached_google_default_credentials(); @@ -921,7 +921,7 @@ static int default_creds_gce_detection_httpcli_get_success_override( static char* null_well_known_creds_path_getter(void) { return nullptr; } static void test_google_default_creds_gce(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; expected_md emd[] = { {"authorization", "Bearer ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_"}}; request_metadata_state* state = @@ -1056,7 +1056,7 @@ static void plugin_destroy(void* state) { static void test_metadata_plugin_success(void) { plugin_state state = PLUGIN_INITIAL_STATE; grpc_metadata_credentials_plugin plugin; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; request_metadata_state* md_state = make_request_metadata_state( @@ -1079,7 +1079,7 @@ static void test_metadata_plugin_success(void) { static void test_metadata_plugin_failure(void) { plugin_state state = PLUGIN_INITIAL_STATE; grpc_metadata_credentials_plugin plugin; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, nullptr, nullptr}; char* expected_error; @@ -1121,7 +1121,7 @@ static void test_get_well_known_google_credentials_file_path(void) { } static void test_channel_creds_duplicate_without_call_creds(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_credentials* channel_creds = grpc_fake_transport_security_credentials_create(); diff --git a/test/core/security/json_token_test.cc b/test/core/security/json_token_test.cc index 57e2f4c9787..aac9cc00297 100644 --- a/test/core/security/json_token_test.cc +++ b/test/core/security/json_token_test.cc @@ -207,7 +207,7 @@ static void test_parse_json_key_failure_no_private_key(void) { static grpc_json* parse_json_part_from_jwt(const char* str, size_t len, char** scratchpad) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; char* b64; char* decoded; grpc_json* json; @@ -327,7 +327,7 @@ static void check_jwt_claim(grpc_json* claim, const char* expected_audience, static void check_jwt_signature(const char* b64_signature, RSA* rsa_key, const char* signed_data, size_t signed_data_size) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; EVP_MD_CTX* md_ctx = EVP_MD_CTX_create(); EVP_PKEY* key = EVP_PKEY_new(); diff --git a/test/core/security/jwt_verifier_test.cc b/test/core/security/jwt_verifier_test.cc index ec14fec6978..e219260b1d2 100644 --- a/test/core/security/jwt_verifier_test.cc +++ b/test/core/security/jwt_verifier_test.cc @@ -209,7 +209,7 @@ static void test_claims_success(void) { grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != nullptr); GPR_ASSERT(grpc_jwt_claims_json(claims) == json); @@ -231,7 +231,7 @@ static void test_expired_claims_failure(void) { gpr_timespec exp_exp = {120, 0, GPR_CLOCK_REALTIME}; gpr_timespec exp_nbf = {60, 0, GPR_CLOCK_REALTIME}; GPR_ASSERT(json != nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != nullptr); GPR_ASSERT(grpc_jwt_claims_json(claims) == json); @@ -252,7 +252,7 @@ static void test_invalid_claims_failure(void) { grpc_slice s = grpc_slice_from_copied_string(invalid_claims); grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_jwt_claims_from_json(json, s) == nullptr); } @@ -262,7 +262,7 @@ static void test_bad_audience_claims_failure(void) { grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != nullptr); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://bar.com") == @@ -276,7 +276,7 @@ static void test_bad_subject_claims_failure(void) { grpc_json* json = grpc_json_parse_string_with_len( (char*)GRPC_SLICE_START_PTR(s), GRPC_SLICE_LENGTH(s)); GPR_ASSERT(json != nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; claims = grpc_jwt_claims_from_json(json, s); GPR_ASSERT(claims != nullptr); GPR_ASSERT(grpc_jwt_claims_check(claims, "https://foo.com") == @@ -350,7 +350,7 @@ static void on_verification_success(void* user_data, } static void test_jwt_verifier_google_email_issuer_success(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(nullptr, 0); char* jwt = nullptr; char* key_str = json_key_str(json_key_str_part3_for_google_email_issuer); @@ -383,7 +383,7 @@ static int httpcli_get_custom_keys_for_email( } static void test_jwt_verifier_custom_email_issuer_success(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(&custom_mapping, 1); char* jwt = nullptr; char* key_str = json_key_str(json_key_str_part3_for_custom_email_issuer); @@ -430,7 +430,7 @@ static int httpcli_get_openid_config(const grpc_httpcli_request* request, } static void test_jwt_verifier_url_issuer_success(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(nullptr, 0); char* jwt = nullptr; char* key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -469,7 +469,7 @@ static int httpcli_get_bad_json(const grpc_httpcli_request* request, } static void test_jwt_verifier_url_issuer_bad_config(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(nullptr, 0); char* jwt = nullptr; char* key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -492,7 +492,7 @@ static void test_jwt_verifier_url_issuer_bad_config(void) { } static void test_jwt_verifier_bad_json_key(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(nullptr, 0); char* jwt = nullptr; char* key_str = json_key_str(json_key_str_part3_for_google_email_issuer); @@ -521,7 +521,7 @@ static void corrupt_jwt_sig(char* jwt) { char* last_dot = strrchr(jwt, '.'); GPR_ASSERT(last_dot != nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; sig = grpc_base64_decode(last_dot + 1, 1); } GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(sig)); @@ -543,7 +543,7 @@ static void on_verification_bad_signature(void* user_data, } static void test_jwt_verifier_bad_signature(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(nullptr, 0); char* jwt = nullptr; char* key_str = json_key_str(json_key_str_part3_for_url_issuer); @@ -583,7 +583,7 @@ static void on_verification_bad_format(void* user_data, } static void test_jwt_verifier_bad_format(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_jwt_verifier* verifier = grpc_jwt_verifier_create(nullptr, 0); grpc_httpcli_set_override(httpcli_get_should_not_be_called, httpcli_post_should_not_be_called); diff --git a/test/core/security/oauth2_utils.cc b/test/core/security/oauth2_utils.cc index 7551d7df859..0d3a1279af3 100644 --- a/test/core/security/oauth2_utils.cc +++ b/test/core/security/oauth2_utils.cc @@ -69,7 +69,7 @@ char* grpc_test_fetch_oauth2_token_with_credentials( grpc_call_credentials* creds) { oauth2_request request; memset(&request, 0, sizeof(request)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_closure do_nothing_closure; grpc_auth_metadata_context null_ctx = {"", "", nullptr, nullptr}; diff --git a/test/core/security/print_google_default_creds_token.cc b/test/core/security/print_google_default_creds_token.cc index 7089b9808a7..b3742f58a89 100644 --- a/test/core/security/print_google_default_creds_token.cc +++ b/test/core/security/print_google_default_creds_token.cc @@ -62,7 +62,7 @@ static void on_metadata_response(void* arg, grpc_error* error) { int main(int argc, char** argv) { int result = 0; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; synchronizer sync; grpc_channel_credentials* creds = nullptr; const char* service_url = "https://test.foo.google.com/Foo"; diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc index c8f4f32538c..38c78fed423 100644 --- a/test/core/security/secure_endpoint_test.cc +++ b/test/core/security/secure_endpoint_test.cc @@ -38,7 +38,7 @@ static grpc_pollset* g_pollset; static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair( size_t slice_size, grpc_slice* leftover_slices, size_t leftover_nslices, bool use_zero_copy_protector) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; tsi_frame_protector* fake_read_protector = tsi_create_fake_frame_protector(nullptr); tsi_frame_protector* fake_write_protector = @@ -172,7 +172,7 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) { grpc_slice_buffer incoming; grpc_slice s = grpc_slice_from_copied_string("hello world 12345678900987654321"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; int n = 0; grpc_closure done_closure; gpr_log(GPR_INFO, "Start test left over"); @@ -209,7 +209,7 @@ int main(int argc, char** argv) { grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(g_pollset, &g_mu); grpc_endpoint_tests(configs[0], g_pollset, g_mu); diff --git a/test/core/security/ssl_server_fuzzer.cc b/test/core/security/ssl_server_fuzzer.cc index 9cf73fa8715..7056cfe581b 100644 --- a/test/core/security/ssl_server_fuzzer.cc +++ b/test/core/security/ssl_server_fuzzer.cc @@ -56,7 +56,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { if (leak_check) grpc_memory_counters_init(); grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resource_quota* resource_quota = grpc_resource_quota_create("ssl_server_fuzzer"); diff --git a/test/core/security/verify_jwt.cc b/test/core/security/verify_jwt.cc index 1bd92bbc977..e039970c671 100644 --- a/test/core/security/verify_jwt.cc +++ b/test/core/security/verify_jwt.cc @@ -76,7 +76,7 @@ int main(int argc, char** argv) { gpr_cmdline* cl; const char* jwt = nullptr; const char* aud = nullptr; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_init(); cl = gpr_cmdline_create("JWT verifier tool"); diff --git a/test/core/slice/b64_test.cc b/test/core/slice/b64_test.cc index e0c7ed361dc..94785fd1e28 100644 --- a/test/core/slice/b64_test.cc +++ b/test/core/slice/b64_test.cc @@ -45,7 +45,7 @@ static void test_simple_encode_decode_b64(int url_safe, int multiline) { const char* hello = "hello"; char* hello_b64 = grpc_base64_encode(hello, strlen(hello), url_safe, multiline); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice hello_slice = grpc_base64_decode(hello_b64, url_safe); GPR_ASSERT(GRPC_SLICE_LENGTH(hello_slice) == strlen(hello)); GPR_ASSERT(strncmp((const char*)GRPC_SLICE_START_PTR(hello_slice), hello, @@ -65,7 +65,7 @@ static void test_full_range_encode_decode_b64(int url_safe, int multiline) { /* Try all the different paddings. */ for (i = 0; i < 3; i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; b64 = grpc_base64_encode(orig, sizeof(orig) - i, url_safe, multiline); orig_decoded = grpc_base64_decode(b64, url_safe); GPR_ASSERT(GRPC_SLICE_LENGTH(orig_decoded) == (sizeof(orig) - i)); @@ -116,7 +116,7 @@ static void test_url_safe_unsafe_mismatch_failure(void) { int url_safe = 1; for (i = 0; i < sizeof(orig); i++) orig[i] = (uint8_t)i; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; b64 = grpc_base64_encode(orig, sizeof(orig), url_safe, 0); orig_decoded = grpc_base64_decode(b64, !url_safe); GPR_ASSERT(GRPC_SLICE_IS_EMPTY(orig_decoded)); @@ -165,7 +165,7 @@ static void test_rfc4648_test_vectors(void) { static void test_unpadded_decode(void) { grpc_slice decoded; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; decoded = grpc_base64_decode("Zm9vYmFy", 0); GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(decoded)); GPR_ASSERT(grpc_slice_str_cmp(decoded, "foobar") == 0); diff --git a/test/core/slice/slice_hash_table_test.cc b/test/core/slice/slice_hash_table_test.cc index 1cbb241a983..9fad9a614ea 100644 --- a/test/core/slice/slice_hash_table_test.cc +++ b/test/core/slice/slice_hash_table_test.cc @@ -119,7 +119,7 @@ static void test_slice_hash_table() { check_values(test_entries, num_entries, table); check_non_existent_value("XX", table); // Clean up. - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_hash_table_unref(table); } @@ -146,7 +146,7 @@ static void test_slice_hash_table_eq() { create_table_from_entries(test_entries_b, num_entries_b, value_cmp_fn); GPR_ASSERT(grpc_slice_hash_table_cmp(table_a, table_b) == 0); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_hash_table_unref(table_a); grpc_slice_hash_table_unref(table_b); } @@ -217,7 +217,7 @@ static void test_slice_hash_table_not_eq() { create_table_from_entries(test_entries_h, num_entries_h, pointer_cmp_fn); GPR_ASSERT(grpc_slice_hash_table_cmp(table_g, table_h) != 0); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_slice_hash_table_unref(table_a); grpc_slice_hash_table_unref(table_b_larger); grpc_slice_hash_table_unref(table_b_smaller); diff --git a/test/core/surface/byte_buffer_reader_test.cc b/test/core/surface/byte_buffer_reader_test.cc index b762fed9412..94a8615b3cd 100644 --- a/test/core/surface/byte_buffer_reader_test.cc +++ b/test/core/surface/byte_buffer_reader_test.cc @@ -132,7 +132,7 @@ static void read_compressed_slice(grpc_compression_algorithm algorithm, memset(GRPC_SLICE_START_PTR(input_slice), 'a', input_size); grpc_slice_buffer_add(&sliceb_in, input_slice); /* takes ownership */ { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_msg_compress(algorithm, &sliceb_in, &sliceb_out)); } diff --git a/test/core/surface/channel_create_test.cc b/test/core/surface/channel_create_test.cc index 65fac9daa3c..37247f89d01 100644 --- a/test/core/surface/channel_create_test.cc +++ b/test/core/surface/channel_create_test.cc @@ -35,7 +35,7 @@ void test_unknown_scheme_target(void) { chan = grpc_insecure_channel_create("blah://blah", nullptr, nullptr); GPR_ASSERT(chan != nullptr); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); diff --git a/test/core/surface/completion_queue_test.cc b/test/core/surface/completion_queue_test.cc index 3452f78a3b5..fefbb3c1854 100644 --- a/test/core/surface/completion_queue_test.cc +++ b/test/core/surface/completion_queue_test.cc @@ -137,7 +137,7 @@ static void test_cq_end_op(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, nullptr); @@ -172,7 +172,7 @@ static void test_cq_tls_cache_full(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - grpc_core::ExecCtx _local_exec_ctx; // Reset exec_ctx + grpc_core::ExecCtx exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, nullptr); @@ -212,7 +212,7 @@ static void test_cq_tls_cache_empty(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_NEXT; for (size_t i = 0; i < GPR_ARRAY_SIZE(polling_types); i++) { - grpc_core::ExecCtx _local_exec_ctx; // Reset exec_ctx + grpc_core::ExecCtx exec_ctx; // Reset exec_ctx attr.cq_polling_type = polling_types[i]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, nullptr); @@ -293,7 +293,7 @@ static void test_pluck(void) { attr.version = 1; attr.cq_completion_type = GRPC_CQ_PLUCK; for (size_t pidx = 0; pidx < GPR_ARRAY_SIZE(polling_types); pidx++) { - grpc_core::ExecCtx _local_exec_ctx; // reset exec_ctx + grpc_core::ExecCtx exec_ctx; // reset exec_ctx attr.cq_polling_type = polling_types[pidx]; cc = grpc_completion_queue_create( grpc_completion_queue_factory_lookup(&attr), &attr, nullptr); diff --git a/test/core/surface/completion_queue_threading_test.cc b/test/core/surface/completion_queue_threading_test.cc index 8867ba88c3a..ba9491fc416 100644 --- a/test/core/surface/completion_queue_threading_test.cc +++ b/test/core/surface/completion_queue_threading_test.cc @@ -80,7 +80,7 @@ static void test_too_many_plucks(void) { gpr_thd_id thread_ids[GPR_ARRAY_SIZE(tags)]; struct thread_state thread_states[GPR_ARRAY_SIZE(tags)]; gpr_thd_options thread_options = gpr_thd_options_default(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; unsigned i, j; LOG_TEST("test_too_many_plucks"); @@ -158,7 +158,7 @@ static void producer_thread(void* arg) { gpr_log(GPR_INFO, "producer %d phase 2", opt->id); for (i = 0; i < TEST_THREAD_EVENTS; i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_cq_end_op(opt->cc, (void*)(intptr_t)1, GRPC_ERROR_NONE, free_completion, nullptr, static_cast<grpc_cq_completion*>( diff --git a/test/core/surface/concurrent_connectivity_test.cc b/test/core/surface/concurrent_connectivity_test.cc index f21086847b8..0bebac216ad 100644 --- a/test/core/surface/concurrent_connectivity_test.cc +++ b/test/core/surface/concurrent_connectivity_test.cc @@ -117,7 +117,7 @@ static void on_connect(void* vargs, grpc_endpoint* tcp, void bad_server_thread(void* vargs) { struct server_thread_args* args = (struct server_thread_args*)vargs; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_resolved_address resolved_addr; struct sockaddr_storage* addr = (struct sockaddr_storage*)resolved_addr.addr; int port; @@ -225,7 +225,7 @@ int run_concurrent_connectivity_test() { gpr_atm_rel_store(&args.stop, 1); gpr_thd_join(server); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_pollset_shutdown( args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset, grpc_schedule_on_exec_ctx)); diff --git a/test/core/surface/lame_client_test.cc b/test/core/surface/lame_client_test.cc index 258ee6a8313..4bf40569e64 100644 --- a/test/core/surface/lame_client_test.cc +++ b/test/core/surface/lame_client_test.cc @@ -44,7 +44,7 @@ void test_transport_op(grpc_channel* channel) { grpc_transport_op* op; grpc_channel_element* elem; grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CLOSURE_INIT(&transport_op_cb, verify_connectivity, &state, grpc_schedule_on_exec_ctx); diff --git a/test/core/surface/num_external_connectivity_watchers_test.cc b/test/core/surface/num_external_connectivity_watchers_test.cc index 4052f19f51d..9cdd299ae3b 100644 --- a/test/core/surface/num_external_connectivity_watchers_test.cc +++ b/test/core/surface/num_external_connectivity_watchers_test.cc @@ -178,7 +178,7 @@ static grpc_channel* secure_test_create_channel(const char* addr) { grpc_channel* channel = grpc_secure_channel_create(ssl_creds, addr, new_client_args, nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(new_client_args); } grpc_channel_credentials_release(ssl_creds); diff --git a/test/core/surface/secure_channel_create_test.cc b/test/core/surface/secure_channel_create_test.cc index 62c2d928851..fa22cd68731 100644 --- a/test/core/surface/secure_channel_create_test.cc +++ b/test/core/surface/secure_channel_create_test.cc @@ -37,7 +37,7 @@ void test_unknown_scheme_target(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); grpc_channel_credentials_unref(creds); } @@ -55,7 +55,7 @@ void test_security_connector_already_in_arg(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); } @@ -65,7 +65,7 @@ void test_null_creds(void) { grpc_channel_element* elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(chan), 0); GPR_ASSERT(0 == strcmp(elem->filter->name, "lame-client")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GRPC_CHANNEL_INTERNAL_UNREF(chan, "test"); } diff --git a/test/core/surface/sequential_connectivity_test.cc b/test/core/surface/sequential_connectivity_test.cc index e7ae97908ce..b2d9b428f0f 100644 --- a/test/core/surface/sequential_connectivity_test.cc +++ b/test/core/surface/sequential_connectivity_test.cc @@ -156,7 +156,7 @@ static grpc_channel* secure_test_create_channel(const char* addr) { grpc_channel* channel = grpc_secure_channel_create(ssl_creds, addr, new_client_args, nullptr); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_channel_args_destroy(new_client_args); } grpc_channel_credentials_release(ssl_creds); diff --git a/test/core/transport/bdp_estimator_test.cc b/test/core/transport/bdp_estimator_test.cc index 168807adde7..fb7fc4cab26 100644 --- a/test/core/transport/bdp_estimator_test.cc +++ b/test/core/transport/bdp_estimator_test.cc @@ -58,7 +58,7 @@ namespace { void AddSamples(BdpEstimator* estimator, int64_t* samples, size_t n) { estimator->AddIncomingBytes(1234567); inc_time(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; estimator->SchedulePing(); estimator->StartPing(); for (size_t i = 0; i < n; i++) { diff --git a/test/core/transport/byte_stream_test.cc b/test/core/transport/byte_stream_test.cc index a0dbc79158f..2aab6e92628 100644 --- a/test/core/transport/byte_stream_test.cc +++ b/test/core/transport/byte_stream_test.cc @@ -37,7 +37,7 @@ static void not_called_closure(void* arg, grpc_error* error) { static void test_slice_buffer_stream_basic(void) { gpr_log(GPR_DEBUG, "test_slice_buffer_stream_basic"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; // Create and populate slice buffer. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -71,7 +71,7 @@ static void test_slice_buffer_stream_basic(void) { static void test_slice_buffer_stream_shutdown(void) { gpr_log(GPR_DEBUG, "test_slice_buffer_stream_shutdown"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; // Create and populate slice buffer. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -117,7 +117,7 @@ static void test_slice_buffer_stream_shutdown(void) { static void test_caching_byte_stream_basic(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_basic"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -156,7 +156,7 @@ static void test_caching_byte_stream_basic(void) { static void test_caching_byte_stream_reset(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_reset"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); @@ -202,7 +202,7 @@ static void test_caching_byte_stream_reset(void) { static void test_caching_byte_stream_shared_cache(void) { gpr_log(GPR_DEBUG, "test_caching_byte_stream_shared_cache"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; // Create and populate slice buffer byte stream. grpc_slice_buffer buffer; grpc_slice_buffer_init(&buffer); diff --git a/test/core/transport/chttp2/bin_decoder_test.cc b/test/core/transport/chttp2/bin_decoder_test.cc index 4b65d7d3cac..6d70a4261b0 100644 --- a/test/core/transport/chttp2/bin_decoder_test.cc +++ b/test/core/transport/chttp2/bin_decoder_test.cc @@ -79,7 +79,7 @@ static grpc_slice base64_decode_with_length(const char* s, int main(int argc, char** argv) { grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which takes encoded base64 strings without pad chars, but output length is diff --git a/test/core/transport/chttp2/hpack_encoder_test.cc b/test/core/transport/chttp2/hpack_encoder_test.cc index 2772aef3c4b..d2dbd4a7986 100644 --- a/test/core/transport/chttp2/hpack_encoder_test.cc +++ b/test/core/transport/chttp2/hpack_encoder_test.cc @@ -257,7 +257,7 @@ static void test_interned_key_indexed() { static void run_test(void (*test)(), const char* name) { gpr_log(GPR_INFO, "RUN TEST: %s", name); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hpack_compressor_init(&g_compressor); test(); grpc_chttp2_hpack_compressor_destroy(&g_compressor); diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc index dcec8b2230e..9a195daee0a 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc @@ -38,7 +38,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_init(); grpc_chttp2_hpack_parser parser; { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hpack_parser_init(&parser); parser.on_header = onhdr; GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse( diff --git a/test/core/transport/chttp2/hpack_parser_test.cc b/test/core/transport/chttp2/hpack_parser_test.cc index 52900c54199..9d3456a873a 100644 --- a/test/core/transport/chttp2/hpack_parser_test.cc +++ b/test/core/transport/chttp2/hpack_parser_test.cc @@ -62,7 +62,7 @@ static void test_vector(grpc_chttp2_hpack_parser* parser, grpc_slice_unref(input); for (i = 0; i < nslices; i++) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_chttp2_hpack_parser_parse(parser, slices[i]) == GRPC_ERROR_NONE); } @@ -79,7 +79,7 @@ static void test_vector(grpc_chttp2_hpack_parser* parser, static void test_vectors(grpc_slice_split_mode mode) { grpc_chttp2_hpack_parser parser; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hpack_parser_init(&parser); /* D.2.1 */ diff --git a/test/core/transport/chttp2/hpack_table_test.cc b/test/core/transport/chttp2/hpack_table_test.cc index 97e1a02621b..3f3cb2ee9db 100644 --- a/test/core/transport/chttp2/hpack_table_test.cc +++ b/test/core/transport/chttp2/hpack_table_test.cc @@ -44,7 +44,7 @@ static void assert_index(const grpc_chttp2_hptbl* tbl, uint32_t idx, } static void test_static_lookup(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hptbl tbl; grpc_chttp2_hptbl_init(&tbl); @@ -123,7 +123,7 @@ static void test_many_additions(void) { LOG_TEST("test_many_additions"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hptbl_init(&tbl); for (i = 0; i < 100000; i++) { @@ -152,7 +152,7 @@ static void test_many_additions(void) { static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl* tbl, const char* key, const char* value) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem md = grpc_mdelem_from_slices( grpc_slice_from_copied_string(key), grpc_slice_from_copied_string(value)); grpc_chttp2_hptbl_find_result r = grpc_chttp2_hptbl_find(tbl, md); @@ -162,7 +162,7 @@ static grpc_chttp2_hptbl_find_result find_simple(grpc_chttp2_hptbl* tbl, } static void test_find(void) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hptbl tbl; uint32_t i; char buffer[32]; diff --git a/test/core/transport/connectivity_state_test.cc b/test/core/transport/connectivity_state_test.cc index e1bc0c4eb73..f5894599e52 100644 --- a/test/core/transport/connectivity_state_test.cc +++ b/test/core/transport/connectivity_state_test.cc @@ -58,7 +58,7 @@ static void test_connectivity_state_name(void) { static void test_check(void) { grpc_connectivity_state_tracker tracker; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_error* error; gpr_log(GPR_DEBUG, "test_check"); grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); @@ -74,7 +74,7 @@ static void test_subscribe_then_unsubscribe(void) { grpc_closure* closure = GRPC_CLOSURE_CREATE(must_fail, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_subscribe_then_unsubscribe"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); @@ -96,7 +96,7 @@ static void test_subscribe_then_destroy(void) { grpc_closure* closure = GRPC_CLOSURE_CREATE(must_succeed, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_IDLE; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_subscribe_then_destroy"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx"); @@ -117,7 +117,7 @@ static void test_subscribe_with_failure_then_destroy(void) { grpc_closure* closure = GRPC_CLOSURE_CREATE(must_fail, THE_ARG, grpc_schedule_on_exec_ctx); grpc_connectivity_state state = GRPC_CHANNEL_SHUTDOWN; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_log(GPR_DEBUG, "test_subscribe_with_failure_then_destroy"); g_counter = 0; grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_SHUTDOWN, "xxx"); diff --git a/test/core/transport/metadata_test.cc b/test/core/transport/metadata_test.cc index 70d557b1287..5c52ae8d5f5 100644 --- a/test/core/transport/metadata_test.cc +++ b/test/core/transport/metadata_test.cc @@ -60,7 +60,7 @@ static void test_create_metadata(bool intern_keys, bool intern_values) { intern_keys, intern_values); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; m1 = grpc_mdelem_from_slices( maybe_intern(grpc_slice_from_static_string("a"), intern_keys), maybe_intern(grpc_slice_from_static_string("b"), intern_values)); @@ -95,7 +95,7 @@ static void test_create_many_ephemeral_metadata(bool intern_keys, intern_keys, intern_values); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* add, and immediately delete a bunch of different elements */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); @@ -117,7 +117,7 @@ static void test_create_many_persistant_metadata(void) { gpr_log(GPR_INFO, "test_create_many_persistant_metadata"); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* add phase */ for (i = 0; i < MANY; i++) { gpr_ltoa(i, buffer); @@ -151,7 +151,7 @@ static void test_spin_creating_the_same_thing(bool intern_keys, intern_keys, intern_values); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem a, b, c; GRPC_MDELEM_UNREF( a = grpc_mdelem_from_slices( @@ -178,7 +178,7 @@ static void test_identity_laws(bool intern_keys, bool intern_values) { intern_keys, intern_values); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem a, b, c; a = grpc_mdelem_from_slices( maybe_intern(grpc_slice_from_static_string("a"), intern_keys), @@ -225,7 +225,7 @@ static void test_things_stick_around(void) { gpr_log(GPR_INFO, "test_things_stick_around"); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; for (i = 0; i < nstrs; i++) { gpr_asprintf(&buffer, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%" PRIuPTR "x", i); @@ -271,7 +271,7 @@ static void test_user_data_works(void) { gpr_log(GPR_INFO, "test_user_data_works"); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; ud1 = static_cast<int*>(gpr_malloc(sizeof(int))); *ud1 = 1; ud2 = static_cast<int*>(gpr_malloc(sizeof(int))); @@ -322,7 +322,7 @@ static void test_mdelem_sizes_in_hpack(bool intern_key, bool intern_value) { gpr_log(GPR_INFO, "test_mdelem_size: intern_key=%d intern_value=%d", intern_key, intern_value); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; uint8_t binary_value[BUFFER_SIZE] = {0}; for (uint8_t i = 0; i < BUFFER_SIZE; i++) { @@ -346,7 +346,7 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) { gpr_log(GPR_INFO, "test_static_metadata: dup_key=%d dup_value=%d", dup_key, dup_value); grpc_init(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; for (size_t i = 0; i < GRPC_STATIC_MDELEM_COUNT; i++) { grpc_mdelem p = GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[i], diff --git a/test/core/transport/status_conversion_test.cc b/test/core/transport/status_conversion_test.cc index 2a192e04ef8..1ed6ccfba62 100644 --- a/test/core/transport/status_conversion_test.cc +++ b/test/core/transport/status_conversion_test.cc @@ -24,7 +24,7 @@ GPR_ASSERT(grpc_status_to_http2_error(a) == (b)) #define HTTP2_ERROR_TO_GRPC_STATUS(a, deadline, b) \ do { \ - grpc_core::ExecCtx _local_exec_ctx; \ + grpc_core::ExecCtx exec_ctx; \ GPR_ASSERT(grpc_http2_error_to_grpc_status(a, deadline) == (b)); \ \ } while (0) diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc index 705286c6d4b..7e76c8063f9 100644 --- a/test/core/util/port_server_client.cc +++ b/test/core/util/port_server_client.cc @@ -62,7 +62,7 @@ void grpc_free_port_using_server(int port) { grpc_httpcli_response rsp; freereq pr; char* path; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_closure* shutdown_closure; grpc_init(); @@ -198,7 +198,7 @@ int grpc_pick_port_using_server(void) { grpc_init(); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; memset(&pr, 0, sizeof(pr)); memset(&req, 0, sizeof(req)); grpc_pollset* pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size()); diff --git a/test/core/util/test_tcp_server.cc b/test/core/util/test_tcp_server.cc index b94297addab..5f6af4e7070 100644 --- a/test/core/util/test_tcp_server.cc +++ b/test/core/util/test_tcp_server.cc @@ -55,7 +55,7 @@ void test_tcp_server_start(test_tcp_server* server, int port) { grpc_resolved_address resolved_addr; struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr; int port_added; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; addr->sin_family = AF_INET; addr->sin_port = htons((uint16_t)port); @@ -76,7 +76,7 @@ void test_tcp_server_start(test_tcp_server* server, int port) { void test_tcp_server_poll(test_tcp_server* server, int seconds) { grpc_pollset_worker* worker = nullptr; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_millis deadline = grpc_timespec_to_millis_round_up( grpc_timeout_seconds_to_deadline(seconds)); gpr_mu_lock(server->mu); @@ -91,7 +91,7 @@ static void finish_pollset(void* arg, grpc_error* error) { } void test_tcp_server_destroy(test_tcp_server* server) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_timespec shutdown_deadline; grpc_closure do_nothing_cb; grpc_tcp_server_unref(server->tcp_server); diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc index f2f3cc34252..e6e6e71f422 100644 --- a/test/cpp/end2end/client_lb_end2end_test.cc +++ b/test/cpp/end2end/client_lb_end2end_test.cc @@ -112,7 +112,7 @@ class ClientLbEnd2endTest : public ::testing::Test { } void SetNextResolution(const std::vector<int>& ports) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(ports.size(), nullptr); for (size_t i = 0; i < ports.size(); ++i) { diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index c5c53b8b8a8..48cdd433b2c 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -451,7 +451,7 @@ class GrpclbEnd2endTest : public ::testing::Test { }; void SetNextResolution(const std::vector<AddressData>& address_data) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_lb_addresses* addresses = grpc_lb_addresses_create(address_data.size(), nullptr); for (size_t i = 0; i < address_data.size(); ++i) { diff --git a/test/cpp/grpclb/grpclb_test.cc b/test/cpp/grpclb/grpclb_test.cc index 792c82639c6..fd455c4c9a9 100644 --- a/test/cpp/grpclb/grpclb_test.cc +++ b/test/cpp/grpclb/grpclb_test.cc @@ -562,7 +562,7 @@ static void perform_request(client_fixture* cf) { #define BALANCERS_NAME "lb.name" static void setup_client(const server_fixture* lb_server, const server_fixture* backends, client_fixture* cf) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; char* expected_target_names = nullptr; const char* backends_name = lb_server->servers_hostport; diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index b17f79613ab..5c2c38c27dc 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -521,7 +521,7 @@ static void BM_IsolatedFilter(benchmark::State& state) { label << " #has_dummy_filter"; } - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; size_t channel_size = grpc_channel_stack_size( filters.size() == 0 ? nullptr : &filters[0], filters.size()); grpc_channel_stack* channel_stack = @@ -692,7 +692,7 @@ class IsolatedCallFixture : public TrackCounters { builder, &isolated_call_filter::isolated_call_filter, nullptr, nullptr)); { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; channel_ = grpc_channel_create_with_builder(builder, GRPC_CLIENT_CHANNEL); } cq_ = grpc_completion_queue_create_for_next(nullptr); diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc index 6b6b441d930..4b7310389c4 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc @@ -50,7 +50,7 @@ static grpc_slice MakeSlice(std::vector<uint8_t> bytes) { static void BM_HpackEncoderInitDestroy(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hpack_compressor c; while (state.KeepRunning()) { grpc_chttp2_hpack_compressor_init(&c); @@ -64,7 +64,7 @@ BENCHMARK(BM_HpackEncoderInitDestroy); static void BM_HpackEncoderEncodeDeadline(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_millis saved_now = grpc_core::ExecCtx::Get()->Now(); grpc_metadata_batch b; @@ -108,7 +108,7 @@ BENCHMARK(BM_HpackEncoderEncodeDeadline); template <class Fixture> static void BM_HpackEncoderEncodeHeader(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; static bool logged_representative_output = false; grpc_metadata_batch b; @@ -425,7 +425,7 @@ BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, static void BM_HpackParserInitDestroy(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_chttp2_hpack_parser p; while (state.KeepRunning()) { grpc_chttp2_hpack_parser_init(&p); @@ -444,7 +444,7 @@ static void UnrefHeader(void* user_data, grpc_mdelem md) { template <class Fixture, void (*OnHeader)(void*, grpc_mdelem)> static void BM_HpackParserParseHeader(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; std::vector<grpc_slice> init_slices = Fixture::GetInitSlices(); std::vector<grpc_slice> benchmark_slices = Fixture::GetBenchmarkSlices(); grpc_chttp2_hpack_parser p; diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc index 044417830f2..43bbbad880c 100644 --- a/test/cpp/microbenchmarks/bm_chttp2_transport.cc +++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc @@ -257,7 +257,7 @@ class Stream { static void BM_StreamCreateDestroy(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); grpc_transport_stream_op_batch op; @@ -303,7 +303,7 @@ class RepresentativeClientInitialMetadata { template <class Metadata> static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); grpc_transport_stream_op_batch op; @@ -354,7 +354,7 @@ BENCHMARK_TEMPLATE(BM_StreamCreateSendInitialMetadataDestroy, static void BM_TransportEmptyOp(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); s.Init(state); @@ -387,7 +387,7 @@ std::vector<std::unique_ptr<gpr_event>> done_events; static void BM_TransportStreamSend(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; Fixture f(grpc::ChannelArguments(), true); auto s = std::unique_ptr<Stream>(new Stream(&f)); s->Init(state); @@ -517,7 +517,7 @@ static grpc_slice CreateIncomingDataSlice(size_t length, size_t frame_size) { static void BM_TransportStreamRecv(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; Fixture f(grpc::ChannelArguments(), true); Stream s(&f); s.Init(state); diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc index f28093ae17d..4d5a82c3f67 100644 --- a/test/cpp/microbenchmarks/bm_closure.cc +++ b/test/cpp/microbenchmarks/bm_closure.cc @@ -34,7 +34,7 @@ auto& force_library_initialization = Library::get(); static void BM_NoOpExecCtx(benchmark::State& state) { TrackCounters track_counters; while (state.KeepRunning()) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; } track_counters.Finish(state); } @@ -42,7 +42,7 @@ BENCHMARK(BM_NoOpExecCtx); static void BM_WellFlushed(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { grpc_core::ExecCtx::Get()->Flush(); } @@ -68,7 +68,7 @@ static void BM_ClosureInitAgainstCombiner(benchmark::State& state) { TrackCounters track_counters; grpc_combiner* combiner = grpc_combiner_create(); grpc_closure c; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { benchmark::DoNotOptimize(GRPC_CLOSURE_INIT( &c, DoNothing, nullptr, grpc_combiner_scheduler(combiner))); @@ -83,7 +83,7 @@ static void BM_ClosureRunOnExecCtx(benchmark::State& state) { TrackCounters track_counters; grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, nullptr, grpc_schedule_on_exec_ctx); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_RUN(&c, GRPC_ERROR_NONE); grpc_core::ExecCtx::Get()->Flush(); @@ -95,7 +95,7 @@ BENCHMARK(BM_ClosureRunOnExecCtx); static void BM_ClosureCreateAndRun(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_RUN( GRPC_CLOSURE_CREATE(DoNothing, nullptr, grpc_schedule_on_exec_ctx), @@ -108,7 +108,7 @@ BENCHMARK(BM_ClosureCreateAndRun); static void BM_ClosureInitAndRun(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_closure c; while (state.KeepRunning()) { GRPC_CLOSURE_RUN( @@ -124,7 +124,7 @@ static void BM_ClosureSchedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, nullptr, grpc_schedule_on_exec_ctx); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); grpc_core::ExecCtx::Get()->Flush(); @@ -140,7 +140,7 @@ static void BM_ClosureSched2OnExecCtx(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, nullptr, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c2, DoNothing, nullptr, grpc_schedule_on_exec_ctx); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); @@ -159,7 +159,7 @@ static void BM_ClosureSched3OnExecCtx(benchmark::State& state) { GRPC_CLOSURE_INIT(&c1, DoNothing, nullptr, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c2, DoNothing, nullptr, grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&c3, DoNothing, nullptr, grpc_schedule_on_exec_ctx); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); @@ -176,7 +176,7 @@ static void BM_AcquireMutex(benchmark::State& state) { // for comparison with the combiner stuff below gpr_mu mu; gpr_mu_init(&mu); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { gpr_mu_lock(&mu); DoNothing(nullptr, GRPC_ERROR_NONE); @@ -192,7 +192,7 @@ static void BM_TryAcquireMutex(benchmark::State& state) { // for comparison with the combiner stuff below gpr_mu mu; gpr_mu_init(&mu); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { if (gpr_mu_trylock(&mu)) { DoNothing(nullptr, GRPC_ERROR_NONE); @@ -210,7 +210,7 @@ static void BM_AcquireSpinlock(benchmark::State& state) { TrackCounters track_counters; // for comparison with the combiner stuff below gpr_spinlock mu = GPR_SPINLOCK_INITIALIZER; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { gpr_spinlock_lock(&mu); DoNothing(nullptr, GRPC_ERROR_NONE); @@ -225,7 +225,7 @@ static void BM_TryAcquireSpinlock(benchmark::State& state) { TrackCounters track_counters; // for comparison with the combiner stuff below gpr_spinlock mu = GPR_SPINLOCK_INITIALIZER; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { if (gpr_spinlock_trylock(&mu)) { DoNothing(nullptr, GRPC_ERROR_NONE); @@ -244,7 +244,7 @@ static void BM_ClosureSchedOnCombiner(benchmark::State& state) { grpc_combiner* combiner = grpc_combiner_create(); grpc_closure c; GRPC_CLOSURE_INIT(&c, DoNothing, nullptr, grpc_combiner_scheduler(combiner)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c, GRPC_ERROR_NONE); grpc_core::ExecCtx::Get()->Flush(); @@ -262,7 +262,7 @@ static void BM_ClosureSched2OnCombiner(benchmark::State& state) { grpc_closure c2; GRPC_CLOSURE_INIT(&c1, DoNothing, nullptr, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c2, DoNothing, nullptr, grpc_combiner_scheduler(combiner)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); @@ -283,7 +283,7 @@ static void BM_ClosureSched3OnCombiner(benchmark::State& state) { GRPC_CLOSURE_INIT(&c1, DoNothing, nullptr, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c2, DoNothing, nullptr, grpc_combiner_scheduler(combiner)); GRPC_CLOSURE_INIT(&c3, DoNothing, nullptr, grpc_combiner_scheduler(combiner)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); @@ -306,7 +306,7 @@ static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) { grpc_combiner_scheduler(combiner1)); GRPC_CLOSURE_INIT(&c2, DoNothing, nullptr, grpc_combiner_scheduler(combiner2)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); @@ -335,7 +335,7 @@ static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) { grpc_combiner_scheduler(combiner1)); GRPC_CLOSURE_INIT(&c4, DoNothing, nullptr, grpc_combiner_scheduler(combiner2)); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_CLOSURE_SCHED(&c1, GRPC_ERROR_NONE); GRPC_CLOSURE_SCHED(&c2, GRPC_ERROR_NONE); @@ -381,7 +381,7 @@ class Rescheduler { static void BM_ClosureReschedOnExecCtx(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; Rescheduler r(state, grpc_schedule_on_exec_ctx); r.ScheduleFirst(); @@ -391,7 +391,7 @@ BENCHMARK(BM_ClosureReschedOnExecCtx); static void BM_ClosureReschedOnCombiner(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_scheduler(combiner)); r.ScheduleFirst(); @@ -404,7 +404,7 @@ BENCHMARK(BM_ClosureReschedOnCombiner); static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_combiner* combiner = grpc_combiner_create(); Rescheduler r(state, grpc_combiner_finally_scheduler(combiner)); r.ScheduleFirstAgainstDifferentScheduler(grpc_combiner_scheduler(combiner)); diff --git a/test/cpp/microbenchmarks/bm_cq.cc b/test/cpp/microbenchmarks/bm_cq.cc index 16f451d98ff..97242598f19 100644 --- a/test/cpp/microbenchmarks/bm_cq.cc +++ b/test/cpp/microbenchmarks/bm_cq.cc @@ -81,7 +81,7 @@ static void BM_Pass1Cpp(benchmark::State& state) { while (state.KeepRunning()) { grpc_cq_completion completion; DummyTag dummy_tag; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_cq_begin_op(c_cq, &dummy_tag)); grpc_cq_end_op(c_cq, &dummy_tag, GRPC_ERROR_NONE, DoneWithCompletionOnStack, nullptr, &completion); @@ -101,7 +101,7 @@ static void BM_Pass1Core(benchmark::State& state) { gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); while (state.KeepRunning()) { grpc_cq_completion completion; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, nullptr)); grpc_cq_end_op(cq, nullptr, GRPC_ERROR_NONE, DoneWithCompletionOnStack, nullptr, &completion); @@ -120,7 +120,7 @@ static void BM_Pluck1Core(benchmark::State& state) { gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); while (state.KeepRunning()) { grpc_cq_completion completion; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; GPR_ASSERT(grpc_cq_begin_op(cq, nullptr)); grpc_cq_end_op(cq, nullptr, GRPC_ERROR_NONE, DoneWithCompletionOnStack, nullptr, &completion); diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc index fd888a5a40d..d12f475a493 100644 --- a/test/cpp/microbenchmarks/bm_error.cc +++ b/test/cpp/microbenchmarks/bm_error.cc @@ -246,7 +246,7 @@ template <class Fixture> static void BM_ErrorGetStatus(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { grpc_status_code status; grpc_slice slice; @@ -261,7 +261,7 @@ template <class Fixture> static void BM_ErrorGetStatusCode(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { grpc_status_code status; grpc_error_get_status(fixture.error(), fixture.deadline(), &status, nullptr, @@ -275,7 +275,7 @@ template <class Fixture> static void BM_ErrorHttpError(benchmark::State& state) { TrackCounters track_counters; Fixture fixture; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { grpc_http2_error_code error; grpc_error_get_status(fixture.error(), fixture.deadline(), nullptr, nullptr, diff --git a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc index 23ca750307e..0212cdddf8c 100644 --- a/test/cpp/microbenchmarks/bm_fullstack_trickle.cc +++ b/test/cpp/microbenchmarks/bm_fullstack_trickle.cc @@ -177,7 +177,7 @@ class TrickledCHTTP2 : public EndpointPairFixture { } void Step(bool update_stats) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; inc_time(); size_t client_backlog = grpc_trickle_endpoint_trickle(endpoint_pair_.client); diff --git a/test/cpp/microbenchmarks/bm_metadata.cc b/test/cpp/microbenchmarks/bm_metadata.cc index 62c9a2e335c..f1e7890fc03 100644 --- a/test/cpp/microbenchmarks/bm_metadata.cc +++ b/test/cpp/microbenchmarks/bm_metadata.cc @@ -90,7 +90,7 @@ static void BM_MetadataFromNonInternedSlices(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_from_static_string("key"); gpr_slice v = grpc_slice_from_static_string("value"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, nullptr)); } @@ -103,7 +103,7 @@ static void BM_MetadataFromInternedSlices(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, nullptr)); } @@ -119,7 +119,7 @@ static void BM_MetadataFromInternedSlicesAlreadyInIndex( TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem seed = grpc_mdelem_create(k, v, nullptr); while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, nullptr)); @@ -136,7 +136,7 @@ static void BM_MetadataFromInternedKey(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_from_static_string("value"); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, nullptr)); } @@ -152,7 +152,7 @@ static void BM_MetadataFromNonInternedSlicesWithBackingStore( gpr_slice k = grpc_slice_from_static_string("key"); gpr_slice v = grpc_slice_from_static_string("value"); char backing_store[sizeof(grpc_mdelem_data)]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); @@ -168,7 +168,7 @@ static void BM_MetadataFromInternedSlicesWithBackingStore( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); char backing_store[sizeof(grpc_mdelem_data)]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); @@ -186,7 +186,7 @@ static void BM_MetadataFromInternedKeyWithBackingStore( gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_from_static_string("value"); char backing_store[sizeof(grpc_mdelem_data)]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create( k, v, reinterpret_cast<grpc_mdelem_data*>(backing_store))); @@ -201,7 +201,7 @@ static void BM_MetadataFromStaticMetadataStrings(benchmark::State& state) { TrackCounters track_counters; gpr_slice k = GRPC_MDSTR_STATUS; gpr_slice v = GRPC_MDSTR_200; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, nullptr)); } @@ -216,7 +216,7 @@ static void BM_MetadataFromStaticMetadataStringsNotIndexed( TrackCounters track_counters; gpr_slice k = GRPC_MDSTR_STATUS; gpr_slice v = GRPC_MDSTR_GZIP; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; while (state.KeepRunning()) { GRPC_MDELEM_UNREF(grpc_mdelem_create(k, v, nullptr)); } @@ -229,7 +229,7 @@ BENCHMARK(BM_MetadataFromStaticMetadataStringsNotIndexed); static void BM_MetadataRefUnrefExternal(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem el = grpc_mdelem_create( grpc_slice_from_static_string("a"), grpc_slice_from_static_string("b"), reinterpret_cast<grpc_mdelem_data*>(backing_store)); @@ -245,7 +245,7 @@ BENCHMARK(BM_MetadataRefUnrefExternal); static void BM_MetadataRefUnrefInterned(benchmark::State& state) { TrackCounters track_counters; char backing_store[sizeof(grpc_mdelem_data)]; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_slice k = grpc_slice_intern(grpc_slice_from_static_string("key")); gpr_slice v = grpc_slice_intern(grpc_slice_from_static_string("value")); grpc_mdelem el = grpc_mdelem_create( @@ -263,7 +263,7 @@ BENCHMARK(BM_MetadataRefUnrefInterned); static void BM_MetadataRefUnrefAllocated(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem el = grpc_mdelem_create(grpc_slice_from_static_string("a"), grpc_slice_from_static_string("b"), nullptr); @@ -278,7 +278,7 @@ BENCHMARK(BM_MetadataRefUnrefAllocated); static void BM_MetadataRefUnrefStatic(benchmark::State& state) { TrackCounters track_counters; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_mdelem el = grpc_mdelem_create(GRPC_MDSTR_STATUS, GRPC_MDSTR_200, nullptr); while (state.KeepRunning()) { diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc index 9a859b51eac..d9d5164cce5 100644 --- a/test/cpp/microbenchmarks/bm_pollset.cc +++ b/test/cpp/microbenchmarks/bm_pollset.cc @@ -50,7 +50,7 @@ static void BM_CreateDestroyPollset(benchmark::State& state) { size_t ps_sz = grpc_pollset_size(); grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_malloc(ps_sz)); gpr_mu* mu; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_closure shutdown_ps_closure; GRPC_CLOSURE_INIT(&shutdown_ps_closure, shutdown_ps, ps, grpc_schedule_on_exec_ctx); @@ -114,7 +114,7 @@ static void BM_PollEmptyPollset(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_mu_lock(mu); while (state.KeepRunning()) { GRPC_ERROR_UNREF(grpc_pollset_work(ps, nullptr, 0)); @@ -136,7 +136,7 @@ static void BM_PollAddFd(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_wakeup_fd wakeup_fd; GPR_ASSERT( GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd))); @@ -218,7 +218,7 @@ static void BM_SingleThreadPollOneFd(benchmark::State& state) { grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); gpr_mu* mu; grpc_pollset_init(ps, &mu); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; grpc_wakeup_fd wakeup_fd; GRPC_ERROR_UNREF(grpc_wakeup_fd_init(&wakeup_fd)); grpc_fd* wakeup = grpc_fd_create(wakeup_fd.read_fd, "wakeup_read"); diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index 15202820097..ab0a696e3d6 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -166,7 +166,7 @@ class EndpointPairFixture : public BaseFixture { fixture_configuration.ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* add server endpoint to server_ * */ diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 3bd1df94291..3481d9d1aaf 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -196,7 +196,7 @@ void PollPollsetUntilRequestDone(ArgsStruct* args) { time_left.tv_sec, time_left.tv_nsec); GPR_ASSERT(gpr_time_cmp(time_left, gpr_time_0(GPR_TIMESPAN)) >= 0); grpc_pollset_worker* worker = nullptr; - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; gpr_mu_lock(args->mu); GRPC_LOG_IF_ERROR("pollset_work", grpc_pollset_work(args->pollset, &worker, @@ -275,7 +275,7 @@ void CheckResolverResultLocked(void* argsp, grpc_error* err) { } TEST(ResolverComponentTest, TestResolvesRelevantRecords) { - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; ArgsStruct args; ArgsInit(&args); args.expected_addrs = ParseExpectedAddrs(FLAGS_expected_addrs); diff --git a/test/cpp/performance/writes_per_rpc_test.cc b/test/cpp/performance/writes_per_rpc_test.cc index c5d29469b26..1711eef3039 100644 --- a/test/cpp/performance/writes_per_rpc_test.cc +++ b/test/cpp/performance/writes_per_rpc_test.cc @@ -82,7 +82,7 @@ class EndpointPairFixture { ApplyCommonServerBuilderConfig(&b); server_ = b.BuildAndStart(); - grpc_core::ExecCtx _local_exec_ctx; + grpc_core::ExecCtx exec_ctx; /* add server endpoint to server_ */ { From ede1b2703d4058578b8b5830f006c89c9216521b Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Thu, 30 Nov 2017 11:06:37 -0800 Subject: [PATCH 21/22] Merging master --- src/core/lib/iomgr/fork_posix.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/core/lib/iomgr/fork_posix.cc b/src/core/lib/iomgr/fork_posix.cc index a55b3a349a2..969b7ac6702 100644 --- a/src/core/lib/iomgr/fork_posix.cc +++ b/src/core/lib/iomgr/fork_posix.cc @@ -49,10 +49,10 @@ void grpc_prefork() { return; } if (grpc_is_initialized()) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_core::ExecCtx exec_ctx; grpc_timer_manager_set_threading(false); - grpc_executor_set_threading(&exec_ctx, false); - grpc_exec_ctx_finish(&exec_ctx); + grpc_executor_set_threading(false); + grpc_core::ExecCtx::Get()->Flush(); if (!gpr_await_threads( gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_seconds(3, GPR_TIMESPAN)))) { @@ -64,18 +64,17 @@ void grpc_prefork() { void grpc_postfork_parent() { if (grpc_is_initialized()) { grpc_timer_manager_set_threading(true); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_executor_set_threading(&exec_ctx, true); - grpc_exec_ctx_finish(&exec_ctx); + grpc_core::ExecCtx exec_ctx; + grpc_executor_set_threading(true); } } void grpc_postfork_child() { if (grpc_is_initialized()) { grpc_timer_manager_set_threading(true); - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; - grpc_executor_set_threading(&exec_ctx, true); - grpc_exec_ctx_finish(&exec_ctx); + grpc_core::ExecCtx exec_ctx; + grpc_executor_set_threading(true); + grpc_core::ExecCtx::Get()->Flush(); } } From 65c45fbb4d576d99bcd1c00a13f430c8994fee38 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal <yashkt@google.com> Date: Tue, 5 Dec 2017 12:04:41 -0800 Subject: [PATCH 22/22] Revert ordering of tracers and timers in shutdown --- src/core/lib/surface/init.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 5eb5a56ebbf..c6ce235da7f 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -174,11 +174,11 @@ void grpc_shutdown(void) { } } } + grpc_iomgr_shutdown(); gpr_timers_global_destroy(); grpc_tracer_shutdown(); - grpc_handshaker_factory_registry_shutdown(); - grpc_iomgr_shutdown(); grpc_mdctx_global_shutdown(); + grpc_handshaker_factory_registry_shutdown(); grpc_slice_intern_shutdown(); grpc_stats_shutdown(); }