Merge remote-tracking branch 'upstream/master' into fix-stream-compression-config-interface
diff --git a/BUILD b/BUILD
index eb75e81..728bab1 100644
--- a/BUILD
+++ b/BUILD
@@ -34,11 +34,11 @@
 )
 
 # This should be updated along with build.yaml
-g_stands_for = "gambit"
+g_stands_for = "generous"
 
-core_version = "4.0.0-dev"
+core_version = "5.0.0-dev"
 
-version = "1.7.0-dev"
+version = "1.8.0-dev"
 
 GPR_PUBLIC_HDRS = [
     "include/grpc/support/alloc.h",
@@ -187,7 +187,7 @@
 
 grpc_cc_library(
     name = "gpr",
-    language = "c",
+    language = "c++",
     public_hdrs = GPR_PUBLIC_HDRS,
     standalone = True,
     deps = [
@@ -198,11 +198,11 @@
 grpc_cc_library(
     name = "grpc_unsecure",
     srcs = [
-        "src/core/lib/surface/init.c",
-        "src/core/lib/surface/init_unsecure.c",
-        "src/core/plugin_registry/grpc_unsecure_plugin_registry.c",
+        "src/core/lib/surface/init.cc",
+        "src/core/lib/surface/init_unsecure.cc",
+        "src/core/plugin_registry/grpc_unsecure_plugin_registry.cc",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS,
     standalone = True,
     deps = [
@@ -214,10 +214,10 @@
 grpc_cc_library(
     name = "grpc",
     srcs = [
-        "src/core/lib/surface/init.c",
-        "src/core/plugin_registry/grpc_plugin_registry.c",
+        "src/core/lib/surface/init.cc",
+        "src/core/plugin_registry/grpc_plugin_registry.cc",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS + GRPC_SECURE_PUBLIC_HDRS,
     standalone = True,
     deps = [
@@ -232,10 +232,10 @@
 grpc_cc_library(
     name = "grpc_cronet",
     srcs = [
-        "src/core/lib/surface/init.c",
-        "src/core/plugin_registry/grpc_cronet_plugin_registry.c",
+        "src/core/lib/surface/init.cc",
+        "src/core/plugin_registry/grpc_cronet_plugin_registry.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_http_filters",
@@ -409,21 +409,21 @@
 grpc_cc_library(
     name = "census",
     srcs = [
-        "src/core/ext/census/base_resources.c",
-        "src/core/ext/census/context.c",
+        "src/core/ext/census/base_resources.cc",
+        "src/core/ext/census/context.cc",
         "src/core/ext/census/gen/census.pb.c",
         "src/core/ext/census/gen/trace_context.pb.c",
-        "src/core/ext/census/grpc_context.c",
-        "src/core/ext/census/grpc_filter.c",
-        "src/core/ext/census/grpc_plugin.c",
-        "src/core/ext/census/initialize.c",
-        "src/core/ext/census/intrusive_hash_map.c",
-        "src/core/ext/census/mlog.c",
-        "src/core/ext/census/operation.c",
-        "src/core/ext/census/placeholders.c",
-        "src/core/ext/census/resource.c",
-        "src/core/ext/census/trace_context.c",
-        "src/core/ext/census/tracing.c",
+        "src/core/ext/census/grpc_context.cc",
+        "src/core/ext/census/grpc_filter.cc",
+        "src/core/ext/census/grpc_plugin.cc",
+        "src/core/ext/census/initialize.cc",
+        "src/core/ext/census/intrusive_hash_map.cc",
+        "src/core/ext/census/mlog.cc",
+        "src/core/ext/census/operation.cc",
+        "src/core/ext/census/placeholders.cc",
+        "src/core/ext/census/resource.cc",
+        "src/core/ext/census/trace_context.cc",
+        "src/core/ext/census/tracing.cc",
     ],
     hdrs = [
         "src/core/ext/census/aggregation.h",
@@ -449,7 +449,7 @@
         "nanopb",
         "libssl",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/census.h",
     ],
@@ -461,52 +461,51 @@
 grpc_cc_library(
     name = "gpr_base",
     srcs = [
-        "src/core/lib/profiling/basic_timers.c",
-        "src/core/lib/profiling/stap_timers.c",
-        "src/core/lib/support/alloc.c",
-        "src/core/lib/support/arena.c",
-        "src/core/lib/support/atm.c",
-        "src/core/lib/support/avl.c",
-        "src/core/lib/support/backoff.c",
-        "src/core/lib/support/cmdline.c",
-        "src/core/lib/support/cpu_iphone.c",
-        "src/core/lib/support/cpu_linux.c",
-        "src/core/lib/support/cpu_posix.c",
-        "src/core/lib/support/cpu_windows.c",
-        "src/core/lib/support/env_linux.c",
-        "src/core/lib/support/env_posix.c",
-        "src/core/lib/support/env_windows.c",
-        "src/core/lib/support/histogram.c",
-        "src/core/lib/support/host_port.c",
-        "src/core/lib/support/log.c",
-        "src/core/lib/support/log_android.c",
-        "src/core/lib/support/log_linux.c",
-        "src/core/lib/support/log_posix.c",
-        "src/core/lib/support/log_windows.c",
-        "src/core/lib/support/mpscq.c",
-        "src/core/lib/support/murmur_hash.c",
-        "src/core/lib/support/stack_lockfree.c",
-        "src/core/lib/support/string.c",
-        "src/core/lib/support/string_posix.c",
-        "src/core/lib/support/string_util_windows.c",
-        "src/core/lib/support/string_windows.c",
-        "src/core/lib/support/subprocess_posix.c",
-        "src/core/lib/support/subprocess_windows.c",
-        "src/core/lib/support/sync.c",
-        "src/core/lib/support/sync_posix.c",
-        "src/core/lib/support/sync_windows.c",
-        "src/core/lib/support/thd.c",
-        "src/core/lib/support/thd_posix.c",
-        "src/core/lib/support/thd_windows.c",
-        "src/core/lib/support/time.c",
-        "src/core/lib/support/time_posix.c",
-        "src/core/lib/support/time_precise.c",
-        "src/core/lib/support/time_windows.c",
-        "src/core/lib/support/tls_pthread.c",
-        "src/core/lib/support/tmpfile_msys.c",
-        "src/core/lib/support/tmpfile_posix.c",
-        "src/core/lib/support/tmpfile_windows.c",
-        "src/core/lib/support/wrap_memcpy.c",
+        "src/core/lib/profiling/basic_timers.cc",
+        "src/core/lib/profiling/stap_timers.cc",
+        "src/core/lib/support/alloc.cc",
+        "src/core/lib/support/arena.cc",
+        "src/core/lib/support/atm.cc",
+        "src/core/lib/support/avl.cc",
+        "src/core/lib/support/cmdline.cc",
+        "src/core/lib/support/cpu_iphone.cc",
+        "src/core/lib/support/cpu_linux.cc",
+        "src/core/lib/support/cpu_posix.cc",
+        "src/core/lib/support/cpu_windows.cc",
+        "src/core/lib/support/env_linux.cc",
+        "src/core/lib/support/env_posix.cc",
+        "src/core/lib/support/env_windows.cc",
+        "src/core/lib/support/histogram.cc",
+        "src/core/lib/support/host_port.cc",
+        "src/core/lib/support/log.cc",
+        "src/core/lib/support/log_android.cc",
+        "src/core/lib/support/log_linux.cc",
+        "src/core/lib/support/log_posix.cc",
+        "src/core/lib/support/log_windows.cc",
+        "src/core/lib/support/mpscq.cc",
+        "src/core/lib/support/murmur_hash.cc",
+        "src/core/lib/support/stack_lockfree.cc",
+        "src/core/lib/support/string.cc",
+        "src/core/lib/support/string_posix.cc",
+        "src/core/lib/support/string_util_windows.cc",
+        "src/core/lib/support/string_windows.cc",
+        "src/core/lib/support/subprocess_posix.cc",
+        "src/core/lib/support/subprocess_windows.cc",
+        "src/core/lib/support/sync.cc",
+        "src/core/lib/support/sync_posix.cc",
+        "src/core/lib/support/sync_windows.cc",
+        "src/core/lib/support/thd.cc",
+        "src/core/lib/support/thd_posix.cc",
+        "src/core/lib/support/thd_windows.cc",
+        "src/core/lib/support/time.cc",
+        "src/core/lib/support/time_posix.cc",
+        "src/core/lib/support/time_precise.cc",
+        "src/core/lib/support/time_windows.cc",
+        "src/core/lib/support/tls_pthread.cc",
+        "src/core/lib/support/tmpfile_msys.cc",
+        "src/core/lib/support/tmpfile_posix.cc",
+        "src/core/lib/support/tmpfile_windows.cc",
+        "src/core/lib/support/wrap_memcpy.cc",
     ],
     hdrs = [
         "src/core/lib/profiling/timers.h",
@@ -514,8 +513,6 @@
         "src/core/lib/support/atomic.h",
         "src/core/lib/support/atomic_with_atm.h",
         "src/core/lib/support/atomic_with_std.h",
-        "src/core/lib/support/backoff.h",
-        "src/core/lib/support/block_annotate.h",
         "src/core/lib/support/env.h",
         "src/core/lib/support/memory.h",
         "src/core/lib/support/mpscq.h",
@@ -527,7 +524,7 @@
         "src/core/lib/support/time_precise.h",
         "src/core/lib/support/tmpfile.h",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GPR_PUBLIC_HDRS,
     deps = [
         "gpr_codegen",
@@ -536,7 +533,7 @@
 
 grpc_cc_library(
     name = "gpr_codegen",
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/impl/codegen/atm.h",
         "include/grpc/impl/codegen/atm_gcc_atomic.h",
@@ -555,146 +552,151 @@
 
 grpc_cc_library(
     name = "grpc_trace",
-    srcs = ["src/core/lib/debug/trace.c"],
+    srcs = ["src/core/lib/debug/trace.cc"],
     hdrs = ["src/core/lib/debug/trace.h"],
-    language = "c",
-    deps = [":gpr"],
+    language = "c++",
+    public_hdrs = GRPC_PUBLIC_HDRS,
+    deps = [
+        "grpc_codegen",
+        ":gpr",
+    ],
 )
 
 grpc_cc_library(
     name = "grpc_base_c",
     srcs = [
-        "src/core/lib/channel/channel_args.c",
-        "src/core/lib/channel/channel_stack.c",
-        "src/core/lib/channel/channel_stack_builder.c",
-        "src/core/lib/channel/connected_channel.c",
-        "src/core/lib/channel/handshaker.c",
-        "src/core/lib/channel/handshaker_factory.c",
-        "src/core/lib/channel/handshaker_registry.c",
-        "src/core/lib/compression/compression.c",
-        "src/core/lib/compression/compression_internal.c",
-        "src/core/lib/compression/message_compress.c",
-        "src/core/lib/compression/stream_compression.c",
-        "src/core/lib/compression/stream_compression_gzip.c",
-        "src/core/lib/compression/stream_compression_identity.c",
-        "src/core/lib/debug/stats.c",
-        "src/core/lib/debug/stats_data.c",
-        "src/core/lib/http/format_request.c",
-        "src/core/lib/http/httpcli.c",
-        "src/core/lib/http/parser.c",
-        "src/core/lib/iomgr/call_combiner.c",
-        "src/core/lib/iomgr/closure.c",
-        "src/core/lib/iomgr/combiner.c",
-        "src/core/lib/iomgr/endpoint.c",
-        "src/core/lib/iomgr/endpoint_pair_posix.c",
-        "src/core/lib/iomgr/endpoint_pair_uv.c",
-        "src/core/lib/iomgr/endpoint_pair_windows.c",
-        "src/core/lib/iomgr/error.c",
-        "src/core/lib/iomgr/ev_epoll1_linux.c",
-        "src/core/lib/iomgr/ev_epollex_linux.c",
-        "src/core/lib/iomgr/ev_epollsig_linux.c",
-        "src/core/lib/iomgr/ev_poll_posix.c",
-        "src/core/lib/iomgr/ev_posix.c",
-        "src/core/lib/iomgr/ev_windows.c",
-        "src/core/lib/iomgr/exec_ctx.c",
-        "src/core/lib/iomgr/executor.c",
-        "src/core/lib/iomgr/gethostname_fallback.c",
-        "src/core/lib/iomgr/gethostname_host_name_max.c",
-        "src/core/lib/iomgr/gethostname_sysconf.c",
-        "src/core/lib/iomgr/iocp_windows.c",
-        "src/core/lib/iomgr/iomgr.c",
-        "src/core/lib/iomgr/iomgr_posix.c",
-        "src/core/lib/iomgr/iomgr_uv.c",
-        "src/core/lib/iomgr/iomgr_windows.c",
-        "src/core/lib/iomgr/is_epollexclusive_available.c",
-        "src/core/lib/iomgr/load_file.c",
-        "src/core/lib/iomgr/lockfree_event.c",
-        "src/core/lib/iomgr/network_status_tracker.c",
-        "src/core/lib/iomgr/polling_entity.c",
-        "src/core/lib/iomgr/pollset_set_uv.c",
-        "src/core/lib/iomgr/pollset_set_windows.c",
-        "src/core/lib/iomgr/pollset_uv.c",
-        "src/core/lib/iomgr/pollset_windows.c",
-        "src/core/lib/iomgr/resolve_address_posix.c",
-        "src/core/lib/iomgr/resolve_address_uv.c",
-        "src/core/lib/iomgr/resolve_address_windows.c",
-        "src/core/lib/iomgr/resource_quota.c",
-        "src/core/lib/iomgr/sockaddr_utils.c",
-        "src/core/lib/iomgr/socket_factory_posix.c",
-        "src/core/lib/iomgr/socket_mutator.c",
-        "src/core/lib/iomgr/socket_utils_common_posix.c",
-        "src/core/lib/iomgr/socket_utils_linux.c",
-        "src/core/lib/iomgr/socket_utils_posix.c",
-        "src/core/lib/iomgr/socket_utils_uv.c",
-        "src/core/lib/iomgr/socket_utils_windows.c",
-        "src/core/lib/iomgr/socket_windows.c",
-        "src/core/lib/iomgr/tcp_client_posix.c",
-        "src/core/lib/iomgr/tcp_client_uv.c",
-        "src/core/lib/iomgr/tcp_client_windows.c",
-        "src/core/lib/iomgr/tcp_posix.c",
-        "src/core/lib/iomgr/tcp_server_posix.c",
-        "src/core/lib/iomgr/tcp_server_utils_posix_common.c",
-        "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c",
-        "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c",
-        "src/core/lib/iomgr/tcp_server_uv.c",
-        "src/core/lib/iomgr/tcp_server_windows.c",
-        "src/core/lib/iomgr/tcp_uv.c",
-        "src/core/lib/iomgr/tcp_windows.c",
-        "src/core/lib/iomgr/time_averaged_stats.c",
-        "src/core/lib/iomgr/timer_generic.c",
-        "src/core/lib/iomgr/timer_heap.c",
-        "src/core/lib/iomgr/timer_manager.c",
-        "src/core/lib/iomgr/timer_uv.c",
-        "src/core/lib/iomgr/udp_server.c",
-        "src/core/lib/iomgr/unix_sockets_posix.c",
-        "src/core/lib/iomgr/unix_sockets_posix_noop.c",
-        "src/core/lib/iomgr/wakeup_fd_cv.c",
-        "src/core/lib/iomgr/wakeup_fd_eventfd.c",
-        "src/core/lib/iomgr/wakeup_fd_nospecial.c",
-        "src/core/lib/iomgr/wakeup_fd_pipe.c",
-        "src/core/lib/iomgr/wakeup_fd_posix.c",
-        "src/core/lib/json/json.c",
-        "src/core/lib/json/json_reader.c",
-        "src/core/lib/json/json_string.c",
-        "src/core/lib/json/json_writer.c",
-        "src/core/lib/slice/b64.c",
-        "src/core/lib/slice/percent_encoding.c",
-        "src/core/lib/slice/slice.c",
-        "src/core/lib/slice/slice_buffer.c",
-        "src/core/lib/slice/slice_hash_table.c",
-        "src/core/lib/slice/slice_intern.c",
-        "src/core/lib/slice/slice_string_helpers.c",
-        "src/core/lib/surface/alarm.c",
-        "src/core/lib/surface/api_trace.c",
-        "src/core/lib/surface/byte_buffer.c",
-        "src/core/lib/surface/byte_buffer_reader.c",
-        "src/core/lib/surface/call.c",
-        "src/core/lib/surface/call_details.c",
-        "src/core/lib/surface/call_log_batch.c",
-        "src/core/lib/surface/channel.c",
-        "src/core/lib/surface/channel_init.c",
-        "src/core/lib/surface/channel_ping.c",
-        "src/core/lib/surface/channel_stack_type.c",
-        "src/core/lib/surface/completion_queue.c",
-        "src/core/lib/surface/completion_queue_factory.c",
-        "src/core/lib/surface/event_string.c",
-        "src/core/lib/surface/metadata_array.c",
-        "src/core/lib/surface/server.c",
-        "src/core/lib/surface/validate_metadata.c",
-        "src/core/lib/surface/version.c",
-        "src/core/lib/transport/bdp_estimator.c",
-        "src/core/lib/transport/byte_stream.c",
-        "src/core/lib/transport/connectivity_state.c",
-        "src/core/lib/transport/error_utils.c",
-        "src/core/lib/transport/metadata.c",
-        "src/core/lib/transport/metadata_batch.c",
-        "src/core/lib/transport/pid_controller.c",
-        "src/core/lib/transport/service_config.c",
-        "src/core/lib/transport/static_metadata.c",
-        "src/core/lib/transport/status_conversion.c",
-        "src/core/lib/transport/timeout_encoding.c",
-        "src/core/lib/transport/transport.c",
-        "src/core/lib/transport/transport_op_string.c",
+        "src/core/lib/backoff/backoff.cc",
+        "src/core/lib/channel/channel_args.cc",
+        "src/core/lib/channel/channel_stack.cc",
+        "src/core/lib/channel/channel_stack_builder.cc",
+        "src/core/lib/channel/connected_channel.cc",
+        "src/core/lib/channel/handshaker.cc",
+        "src/core/lib/channel/handshaker_factory.cc",
+        "src/core/lib/channel/handshaker_registry.cc",
+        "src/core/lib/compression/compression.cc",
+        "src/core/lib/compression/compression_internal.cc",
+        "src/core/lib/compression/message_compress.cc",
+        "src/core/lib/compression/stream_compression.cc",
+        "src/core/lib/compression/stream_compression_gzip.cc",
+        "src/core/lib/compression/stream_compression_identity.cc",
+        "src/core/lib/debug/stats.cc",
+        "src/core/lib/debug/stats_data.cc",
+        "src/core/lib/http/format_request.cc",
+        "src/core/lib/http/httpcli.cc",
+        "src/core/lib/http/parser.cc",
+        "src/core/lib/iomgr/call_combiner.cc",
+        "src/core/lib/iomgr/closure.cc",
+        "src/core/lib/iomgr/combiner.cc",
+        "src/core/lib/iomgr/endpoint.cc",
+        "src/core/lib/iomgr/endpoint_pair_posix.cc",
+        "src/core/lib/iomgr/endpoint_pair_uv.cc",
+        "src/core/lib/iomgr/endpoint_pair_windows.cc",
+        "src/core/lib/iomgr/error.cc",
+        "src/core/lib/iomgr/ev_epoll1_linux.cc",
+        "src/core/lib/iomgr/ev_epollex_linux.cc",
+        "src/core/lib/iomgr/ev_epollsig_linux.cc",
+        "src/core/lib/iomgr/ev_poll_posix.cc",
+        "src/core/lib/iomgr/ev_posix.cc",
+        "src/core/lib/iomgr/ev_windows.cc",
+        "src/core/lib/iomgr/exec_ctx.cc",
+        "src/core/lib/iomgr/executor.cc",
+        "src/core/lib/iomgr/gethostname_fallback.cc",
+        "src/core/lib/iomgr/gethostname_host_name_max.cc",
+        "src/core/lib/iomgr/gethostname_sysconf.cc",
+        "src/core/lib/iomgr/iocp_windows.cc",
+        "src/core/lib/iomgr/iomgr.cc",
+        "src/core/lib/iomgr/iomgr_posix.cc",
+        "src/core/lib/iomgr/iomgr_uv.cc",
+        "src/core/lib/iomgr/iomgr_windows.cc",
+        "src/core/lib/iomgr/is_epollexclusive_available.cc",
+        "src/core/lib/iomgr/load_file.cc",
+        "src/core/lib/iomgr/lockfree_event.cc",
+        "src/core/lib/iomgr/network_status_tracker.cc",
+        "src/core/lib/iomgr/polling_entity.cc",
+        "src/core/lib/iomgr/pollset_set_uv.cc",
+        "src/core/lib/iomgr/pollset_set_windows.cc",
+        "src/core/lib/iomgr/pollset_uv.cc",
+        "src/core/lib/iomgr/pollset_windows.cc",
+        "src/core/lib/iomgr/resolve_address_posix.cc",
+        "src/core/lib/iomgr/resolve_address_uv.cc",
+        "src/core/lib/iomgr/resolve_address_windows.cc",
+        "src/core/lib/iomgr/resource_quota.cc",
+        "src/core/lib/iomgr/sockaddr_utils.cc",
+        "src/core/lib/iomgr/socket_factory_posix.cc",
+        "src/core/lib/iomgr/socket_mutator.cc",
+        "src/core/lib/iomgr/socket_utils_common_posix.cc",
+        "src/core/lib/iomgr/socket_utils_linux.cc",
+        "src/core/lib/iomgr/socket_utils_posix.cc",
+        "src/core/lib/iomgr/socket_utils_uv.cc",
+        "src/core/lib/iomgr/socket_utils_windows.cc",
+        "src/core/lib/iomgr/socket_windows.cc",
+        "src/core/lib/iomgr/tcp_client_posix.cc",
+        "src/core/lib/iomgr/tcp_client_uv.cc",
+        "src/core/lib/iomgr/tcp_client_windows.cc",
+        "src/core/lib/iomgr/tcp_posix.cc",
+        "src/core/lib/iomgr/tcp_server_posix.cc",
+        "src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
+        "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
+        "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
+        "src/core/lib/iomgr/tcp_server_uv.cc",
+        "src/core/lib/iomgr/tcp_server_windows.cc",
+        "src/core/lib/iomgr/tcp_uv.cc",
+        "src/core/lib/iomgr/tcp_windows.cc",
+        "src/core/lib/iomgr/time_averaged_stats.cc",
+        "src/core/lib/iomgr/timer_generic.cc",
+        "src/core/lib/iomgr/timer_heap.cc",
+        "src/core/lib/iomgr/timer_manager.cc",
+        "src/core/lib/iomgr/timer_uv.cc",
+        "src/core/lib/iomgr/udp_server.cc",
+        "src/core/lib/iomgr/unix_sockets_posix.cc",
+        "src/core/lib/iomgr/unix_sockets_posix_noop.cc",
+        "src/core/lib/iomgr/wakeup_fd_cv.cc",
+        "src/core/lib/iomgr/wakeup_fd_eventfd.cc",
+        "src/core/lib/iomgr/wakeup_fd_nospecial.cc",
+        "src/core/lib/iomgr/wakeup_fd_pipe.cc",
+        "src/core/lib/iomgr/wakeup_fd_posix.cc",
+        "src/core/lib/json/json.cc",
+        "src/core/lib/json/json_reader.cc",
+        "src/core/lib/json/json_string.cc",
+        "src/core/lib/json/json_writer.cc",
+        "src/core/lib/slice/b64.cc",
+        "src/core/lib/slice/percent_encoding.cc",
+        "src/core/lib/slice/slice.cc",
+        "src/core/lib/slice/slice_buffer.cc",
+        "src/core/lib/slice/slice_hash_table.cc",
+        "src/core/lib/slice/slice_intern.cc",
+        "src/core/lib/slice/slice_string_helpers.cc",
+        "src/core/lib/surface/alarm.cc",
+        "src/core/lib/surface/api_trace.cc",
+        "src/core/lib/surface/byte_buffer.cc",
+        "src/core/lib/surface/byte_buffer_reader.cc",
+        "src/core/lib/surface/call.cc",
+        "src/core/lib/surface/call_details.cc",
+        "src/core/lib/surface/call_log_batch.cc",
+        "src/core/lib/surface/channel.cc",
+        "src/core/lib/surface/channel_init.cc",
+        "src/core/lib/surface/channel_ping.cc",
+        "src/core/lib/surface/channel_stack_type.cc",
+        "src/core/lib/surface/completion_queue.cc",
+        "src/core/lib/surface/completion_queue_factory.cc",
+        "src/core/lib/surface/event_string.cc",
+        "src/core/lib/surface/metadata_array.cc",
+        "src/core/lib/surface/server.cc",
+        "src/core/lib/surface/validate_metadata.cc",
+        "src/core/lib/surface/version.cc",
+        "src/core/lib/transport/bdp_estimator.cc",
+        "src/core/lib/transport/byte_stream.cc",
+        "src/core/lib/transport/connectivity_state.cc",
+        "src/core/lib/transport/error_utils.cc",
+        "src/core/lib/transport/metadata.cc",
+        "src/core/lib/transport/metadata_batch.cc",
+        "src/core/lib/transport/pid_controller.cc",
+        "src/core/lib/transport/service_config.cc",
+        "src/core/lib/transport/static_metadata.cc",
+        "src/core/lib/transport/status_conversion.cc",
+        "src/core/lib/transport/timeout_encoding.cc",
+        "src/core/lib/transport/transport.cc",
+        "src/core/lib/transport/transport_op_string.cc",
     ],
     hdrs = [
         "src/core/lib/channel/channel_args.h",
@@ -760,6 +762,7 @@
         "src/core/lib/iomgr/socket_utils_posix.h",
         "src/core/lib/iomgr/socket_windows.h",
         "src/core/lib/iomgr/sys_epoll_wrapper.h",
+        "src/core/lib/iomgr/block_annotate.h",
         "src/core/lib/iomgr/tcp_client.h",
         "src/core/lib/iomgr/tcp_client_posix.h",
         "src/core/lib/iomgr/tcp_posix.h",
@@ -815,11 +818,12 @@
         "src/core/lib/transport/timeout_encoding.h",
         "src/core/lib/transport/transport.h",
         "src/core/lib/transport/transport_impl.h",
+        "src/core/lib/backoff/backoff.h",
     ],
     external_deps = [
         "zlib",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS,
     deps = [
         "gpr_base",
@@ -841,7 +845,7 @@
 
 grpc_cc_library(
     name = "grpc_common",
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         # standard plugins
@@ -867,26 +871,26 @@
 grpc_cc_library(
     name = "grpc_client_channel",
     srcs = [
-        "src/core/ext/filters/client_channel/channel_connectivity.c",
-        "src/core/ext/filters/client_channel/client_channel.c",
-        "src/core/ext/filters/client_channel/client_channel_factory.c",
-        "src/core/ext/filters/client_channel/client_channel_plugin.c",
-        "src/core/ext/filters/client_channel/connector.c",
-        "src/core/ext/filters/client_channel/http_connect_handshaker.c",
-        "src/core/ext/filters/client_channel/http_proxy.c",
-        "src/core/ext/filters/client_channel/lb_policy.c",
-        "src/core/ext/filters/client_channel/lb_policy_factory.c",
-        "src/core/ext/filters/client_channel/lb_policy_registry.c",
-        "src/core/ext/filters/client_channel/parse_address.c",
-        "src/core/ext/filters/client_channel/proxy_mapper.c",
-        "src/core/ext/filters/client_channel/proxy_mapper_registry.c",
-        "src/core/ext/filters/client_channel/resolver.c",
-        "src/core/ext/filters/client_channel/resolver_factory.c",
-        "src/core/ext/filters/client_channel/resolver_registry.c",
-        "src/core/ext/filters/client_channel/retry_throttle.c",
-        "src/core/ext/filters/client_channel/subchannel.c",
-        "src/core/ext/filters/client_channel/subchannel_index.c",
-        "src/core/ext/filters/client_channel/uri_parser.c",
+        "src/core/ext/filters/client_channel/channel_connectivity.cc",
+        "src/core/ext/filters/client_channel/client_channel.cc",
+        "src/core/ext/filters/client_channel/client_channel_factory.cc",
+        "src/core/ext/filters/client_channel/client_channel_plugin.cc",
+        "src/core/ext/filters/client_channel/connector.cc",
+        "src/core/ext/filters/client_channel/http_connect_handshaker.cc",
+        "src/core/ext/filters/client_channel/http_proxy.cc",
+        "src/core/ext/filters/client_channel/lb_policy.cc",
+        "src/core/ext/filters/client_channel/lb_policy_factory.cc",
+        "src/core/ext/filters/client_channel/lb_policy_registry.cc",
+        "src/core/ext/filters/client_channel/parse_address.cc",
+        "src/core/ext/filters/client_channel/proxy_mapper.cc",
+        "src/core/ext/filters/client_channel/proxy_mapper_registry.cc",
+        "src/core/ext/filters/client_channel/resolver.cc",
+        "src/core/ext/filters/client_channel/resolver_factory.cc",
+        "src/core/ext/filters/client_channel/resolver_registry.cc",
+        "src/core/ext/filters/client_channel/retry_throttle.cc",
+        "src/core/ext/filters/client_channel/subchannel.cc",
+        "src/core/ext/filters/client_channel/subchannel_index.cc",
+        "src/core/ext/filters/client_channel/uri_parser.cc",
     ],
     hdrs = [
         "src/core/ext/filters/client_channel/client_channel.h",
@@ -908,7 +912,7 @@
         "src/core/ext/filters/client_channel/subchannel_index.h",
         "src/core/ext/filters/client_channel/uri_parser.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_deadline_filter",
@@ -918,12 +922,12 @@
 grpc_cc_library(
     name = "grpc_max_age_filter",
     srcs = [
-        "src/core/ext/filters/max_age/max_age_filter.c",
+        "src/core/ext/filters/max_age/max_age_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/max_age/max_age_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -932,12 +936,12 @@
 grpc_cc_library(
     name = "grpc_deadline_filter",
     srcs = [
-        "src/core/ext/filters/deadline/deadline_filter.c",
+        "src/core/ext/filters/deadline/deadline_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/deadline/deadline_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -946,12 +950,12 @@
 grpc_cc_library(
     name = "grpc_message_size_filter",
     srcs = [
-        "src/core/ext/filters/message_size/message_size_filter.c",
+        "src/core/ext/filters/message_size/message_size_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/message_size/message_size_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -960,17 +964,17 @@
 grpc_cc_library(
     name = "grpc_http_filters",
     srcs = [
-        "src/core/ext/filters/http/client/http_client_filter.c",
-        "src/core/ext/filters/http/http_filters_plugin.c",
-        "src/core/ext/filters/http/message_compress/message_compress_filter.c",
-        "src/core/ext/filters/http/server/http_server_filter.c",
+        "src/core/ext/filters/http/client/http_client_filter.cc",
+        "src/core/ext/filters/http/http_filters_plugin.cc",
+        "src/core/ext/filters/http/message_compress/message_compress_filter.cc",
+        "src/core/ext/filters/http/server/http_server_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/http/client/http_client_filter.h",
         "src/core/ext/filters/http/message_compress/message_compress_filter.h",
         "src/core/ext/filters/http/server/http_server_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -979,12 +983,12 @@
 grpc_cc_library(
     name = "grpc_workaround_cronet_compression_filter",
     srcs = [
-        "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c",
+        "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc",
     ],
     hdrs = [
         "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_server_backward_compatibility",
@@ -993,7 +997,7 @@
 
 grpc_cc_library(
     name = "grpc_codegen",
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/impl/codegen/byte_buffer.h",
         "include/grpc/impl/codegen/byte_buffer_reader.h",
@@ -1013,11 +1017,11 @@
 grpc_cc_library(
     name = "grpc_lb_policy_grpclb",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
         "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     ],
     hdrs = [
@@ -1031,7 +1035,7 @@
     external_deps = [
         "nanopb",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1042,11 +1046,11 @@
 grpc_cc_library(
     name = "grpc_lb_policy_grpclb_secure",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c",
-        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
+        "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
         "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     ],
     hdrs = [
@@ -1060,7 +1064,7 @@
     external_deps = [
         "nanopb",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1072,9 +1076,9 @@
 grpc_cc_library(
     name = "grpc_lb_policy_pick_first",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c",
+        "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1084,9 +1088,9 @@
 grpc_cc_library(
     name = "grpc_lb_policy_round_robin",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c",
+        "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1096,14 +1100,14 @@
 grpc_cc_library(
     name = "grpc_server_load_reporting",
     srcs = [
-        "src/core/ext/filters/load_reporting/server_load_reporting_filter.c",
-        "src/core/ext/filters/load_reporting/server_load_reporting_plugin.c",
+        "src/core/ext/filters/load_reporting/server_load_reporting_filter.cc",
+        "src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc",
     ],
     hdrs = [
         "src/core/ext/filters/load_reporting/server_load_reporting_filter.h",
         "src/core/ext/filters/load_reporting/server_load_reporting_plugin.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -1112,9 +1116,9 @@
 grpc_cc_library(
     name = "grpc_resolver_dns_native",
     srcs = [
-        "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c",
+        "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1124,10 +1128,10 @@
 grpc_cc_library(
     name = "grpc_resolver_dns_ares",
     srcs = [
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c",
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c",
-        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc",
+        "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc",
     ],
     hdrs = [
         "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h",
@@ -1136,7 +1140,7 @@
     external_deps = [
         "cares",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1146,9 +1150,9 @@
 grpc_cc_library(
     name = "grpc_resolver_sockaddr",
     srcs = [
-        "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c",
+        "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1157,9 +1161,9 @@
 
 grpc_cc_library(
     name = "grpc_resolver_fake",
-    srcs = ["src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c"],
+    srcs = ["src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc"],
     hdrs = ["src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"],
-    language = "c",
+    language = "c++",
     visibility = ["//test:__subpackages__"],
     deps = [
         "grpc_base",
@@ -1170,30 +1174,30 @@
 grpc_cc_library(
     name = "grpc_secure",
     srcs = [
-        "src/core/lib/http/httpcli_security_connector.c",
-        "src/core/lib/security/context/security_context.c",
-        "src/core/lib/security/credentials/composite/composite_credentials.c",
-        "src/core/lib/security/credentials/credentials.c",
-        "src/core/lib/security/credentials/credentials_metadata.c",
-        "src/core/lib/security/credentials/fake/fake_credentials.c",
-        "src/core/lib/security/credentials/google_default/credentials_generic.c",
-        "src/core/lib/security/credentials/google_default/google_default_credentials.c",
-        "src/core/lib/security/credentials/iam/iam_credentials.c",
-        "src/core/lib/security/credentials/jwt/json_token.c",
-        "src/core/lib/security/credentials/jwt/jwt_credentials.c",
-        "src/core/lib/security/credentials/jwt/jwt_verifier.c",
-        "src/core/lib/security/credentials/oauth2/oauth2_credentials.c",
-        "src/core/lib/security/credentials/plugin/plugin_credentials.c",
-        "src/core/lib/security/credentials/ssl/ssl_credentials.c",
-        "src/core/lib/security/transport/client_auth_filter.c",
-        "src/core/lib/security/transport/lb_targets_info.c",
-        "src/core/lib/security/transport/secure_endpoint.c",
-        "src/core/lib/security/transport/security_connector.c",
-        "src/core/lib/security/transport/security_handshaker.c",
-        "src/core/lib/security/transport/server_auth_filter.c",
-        "src/core/lib/security/transport/tsi_error.c",
-        "src/core/lib/security/util/json_util.c",
-        "src/core/lib/surface/init_secure.c",
+        "src/core/lib/http/httpcli_security_connector.cc",
+        "src/core/lib/security/context/security_context.cc",
+        "src/core/lib/security/credentials/composite/composite_credentials.cc",
+        "src/core/lib/security/credentials/credentials.cc",
+        "src/core/lib/security/credentials/credentials_metadata.cc",
+        "src/core/lib/security/credentials/fake/fake_credentials.cc",
+        "src/core/lib/security/credentials/google_default/credentials_generic.cc",
+        "src/core/lib/security/credentials/google_default/google_default_credentials.cc",
+        "src/core/lib/security/credentials/iam/iam_credentials.cc",
+        "src/core/lib/security/credentials/jwt/json_token.cc",
+        "src/core/lib/security/credentials/jwt/jwt_credentials.cc",
+        "src/core/lib/security/credentials/jwt/jwt_verifier.cc",
+        "src/core/lib/security/credentials/oauth2/oauth2_credentials.cc",
+        "src/core/lib/security/credentials/plugin/plugin_credentials.cc",
+        "src/core/lib/security/credentials/ssl/ssl_credentials.cc",
+        "src/core/lib/security/transport/client_auth_filter.cc",
+        "src/core/lib/security/transport/lb_targets_info.cc",
+        "src/core/lib/security/transport/secure_endpoint.cc",
+        "src/core/lib/security/transport/security_connector.cc",
+        "src/core/lib/security/transport/security_handshaker.cc",
+        "src/core/lib/security/transport/server_auth_filter.cc",
+        "src/core/lib/security/transport/tsi_error.cc",
+        "src/core/lib/security/util/json_util.cc",
+        "src/core/lib/surface/init_secure.cc",
     ],
     hdrs = [
         "src/core/lib/security/context/security_context.h",
@@ -1216,7 +1220,7 @@
         "src/core/lib/security/transport/tsi_error.h",
         "src/core/lib/security/util/json_util.h",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = GRPC_SECURE_PUBLIC_HDRS,
     deps = [
         "grpc_base",
@@ -1228,28 +1232,28 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2",
     srcs = [
-        "src/core/ext/transport/chttp2/transport/bin_decoder.c",
-        "src/core/ext/transport/chttp2/transport/bin_encoder.c",
-        "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
-        "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
-        "src/core/ext/transport/chttp2/transport/flow_control.c",
-        "src/core/ext/transport/chttp2/transport/frame_data.c",
-        "src/core/ext/transport/chttp2/transport/frame_goaway.c",
-        "src/core/ext/transport/chttp2/transport/frame_ping.c",
-        "src/core/ext/transport/chttp2/transport/frame_rst_stream.c",
-        "src/core/ext/transport/chttp2/transport/frame_settings.c",
-        "src/core/ext/transport/chttp2/transport/frame_window_update.c",
-        "src/core/ext/transport/chttp2/transport/hpack_encoder.c",
-        "src/core/ext/transport/chttp2/transport/hpack_parser.c",
-        "src/core/ext/transport/chttp2/transport/hpack_table.c",
-        "src/core/ext/transport/chttp2/transport/http2_settings.c",
-        "src/core/ext/transport/chttp2/transport/huffsyms.c",
-        "src/core/ext/transport/chttp2/transport/incoming_metadata.c",
-        "src/core/ext/transport/chttp2/transport/parsing.c",
-        "src/core/ext/transport/chttp2/transport/stream_lists.c",
-        "src/core/ext/transport/chttp2/transport/stream_map.c",
-        "src/core/ext/transport/chttp2/transport/varint.c",
-        "src/core/ext/transport/chttp2/transport/writing.c",
+        "src/core/ext/transport/chttp2/transport/bin_decoder.cc",
+        "src/core/ext/transport/chttp2/transport/bin_encoder.cc",
+        "src/core/ext/transport/chttp2/transport/chttp2_plugin.cc",
+        "src/core/ext/transport/chttp2/transport/chttp2_transport.cc",
+        "src/core/ext/transport/chttp2/transport/flow_control.cc",
+        "src/core/ext/transport/chttp2/transport/frame_data.cc",
+        "src/core/ext/transport/chttp2/transport/frame_goaway.cc",
+        "src/core/ext/transport/chttp2/transport/frame_ping.cc",
+        "src/core/ext/transport/chttp2/transport/frame_rst_stream.cc",
+        "src/core/ext/transport/chttp2/transport/frame_settings.cc",
+        "src/core/ext/transport/chttp2/transport/frame_window_update.cc",
+        "src/core/ext/transport/chttp2/transport/hpack_encoder.cc",
+        "src/core/ext/transport/chttp2/transport/hpack_parser.cc",
+        "src/core/ext/transport/chttp2/transport/hpack_table.cc",
+        "src/core/ext/transport/chttp2/transport/http2_settings.cc",
+        "src/core/ext/transport/chttp2/transport/huffsyms.cc",
+        "src/core/ext/transport/chttp2/transport/incoming_metadata.cc",
+        "src/core/ext/transport/chttp2/transport/parsing.cc",
+        "src/core/ext/transport/chttp2/transport/stream_lists.cc",
+        "src/core/ext/transport/chttp2/transport/stream_map.cc",
+        "src/core/ext/transport/chttp2/transport/varint.cc",
+        "src/core/ext/transport/chttp2/transport/writing.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/transport/bin_decoder.h",
@@ -1272,7 +1276,7 @@
         "src/core/ext/transport/chttp2/transport/stream_map.h",
         "src/core/ext/transport/chttp2/transport/varint.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_http_filters",
@@ -1283,12 +1287,12 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_alpn",
     srcs = [
-        "src/core/ext/transport/chttp2/alpn/alpn.c",
+        "src/core/ext/transport/chttp2/alpn/alpn.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/alpn/alpn.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "gpr",
     ],
@@ -1297,12 +1301,12 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_client_connector",
     srcs = [
-        "src/core/ext/transport/chttp2/client/chttp2_connector.c",
+        "src/core/ext/transport/chttp2/client/chttp2_connector.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/client/chttp2_connector.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1313,10 +1317,10 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_client_insecure",
     srcs = [
-        "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-        "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c",
+        "src/core/ext/transport/chttp2/client/insecure/channel_create.cc",
+        "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1328,9 +1332,9 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_client_secure",
     srcs = [
-        "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
+        "src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
@@ -1343,12 +1347,12 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_server",
     srcs = [
-        "src/core/ext/transport/chttp2/server/chttp2_server.c",
+        "src/core/ext/transport/chttp2/server/chttp2_server.cc",
     ],
     hdrs = [
         "src/core/ext/transport/chttp2/server/chttp2_server.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_transport_chttp2",
@@ -1358,10 +1362,10 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_server_insecure",
     srcs = [
-        "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
-        "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c",
+        "src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc",
+        "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_transport_chttp2",
@@ -1372,9 +1376,9 @@
 grpc_cc_library(
     name = "grpc_transport_chttp2_server_secure",
     srcs = [
-        "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
+        "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "grpc_secure",
@@ -1386,15 +1390,15 @@
 grpc_cc_library(
     name = "grpc_transport_cronet_client_secure",
     srcs = [
-        "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
-        "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
-        "src/core/ext/transport/cronet/transport/cronet_transport.c",
+        "src/core/ext/transport/cronet/client/secure/cronet_channel_create.cc",
+        "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc",
+        "src/core/ext/transport/cronet/transport/cronet_transport.cc",
     ],
     hdrs = [
         "src/core/ext/transport/cronet/transport/cronet_transport.h",
         "third_party/objective_c/Cronet/bidirectional_stream_c.h",
     ],
-    language = "c",
+    language = "c++",
     public_hdrs = [
         "include/grpc/grpc_cronet.h",
         "include/grpc/grpc_security.h",
@@ -1409,13 +1413,13 @@
 grpc_cc_library(
     name = "grpc_transport_inproc",
     srcs = [
-        "src/core/ext/transport/inproc/inproc_plugin.c",
-        "src/core/ext/transport/inproc/inproc_transport.c",
+        "src/core/ext/transport/inproc/inproc_plugin.cc",
+        "src/core/ext/transport/inproc/inproc_transport.cc",
     ],
     hdrs = [
         "src/core/ext/transport/inproc/inproc_transport.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],
@@ -1424,15 +1428,15 @@
 grpc_cc_library(
     name = "tsi_interface",
     srcs = [
-        "src/core/tsi/transport_security.c",
-        "src/core/tsi/transport_security_adapter.c",
+        "src/core/tsi/transport_security.cc",
+        "src/core/tsi/transport_security_adapter.cc",
     ],
     hdrs = [
         "src/core/tsi/transport_security.h",
         "src/core/tsi/transport_security_adapter.h",
         "src/core/tsi/transport_security_interface.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "gpr",
         "grpc_trace",
@@ -1442,10 +1446,10 @@
 grpc_cc_library(
     name = "tsi",
     srcs = [
-        "src/core/tsi/fake_transport_security.c",
-        "src/core/tsi/gts_transport_security.c",
-        "src/core/tsi/ssl_transport_security.c",
-        "src/core/tsi/transport_security_grpc.c",
+        "src/core/tsi/fake_transport_security.cc",
+        "src/core/tsi/gts_transport_security.cc",
+        "src/core/tsi/ssl_transport_security.cc",
+        "src/core/tsi/transport_security_grpc.cc",
     ],
     hdrs = [
         "src/core/tsi/fake_transport_security.h",
@@ -1457,7 +1461,7 @@
     external_deps = [
         "libssl",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
         "tsi_interface",
@@ -1596,12 +1600,12 @@
 grpc_cc_library(
     name = "grpc_server_backward_compatibility",
     srcs = [
-        "src/core/ext/filters/workarounds/workaround_utils.c",
+        "src/core/ext/filters/workarounds/workaround_utils.cc",
     ],
     hdrs = [
         "src/core/ext/filters/workarounds/workaround_utils.h",
     ],
-    language = "c",
+    language = "c++",
     deps = [
         "grpc_base",
     ],