Merge branch 'master' of github.com:grpc/grpc into gcc_520

pull/3615/head
David Garcia Quintas 9 years ago
commit 760cd88eaf
  1. 1
      .gitignore
  2. 9
      BUILD
  3. 4
      Makefile
  4. 2729
      build.json
  5. 3
      build.yaml
  6. 5
      gRPC.podspec
  7. 4
      grpc.gyp
  8. 4
      src/core/census/grpc_context.c
  9. 2
      src/core/client_config/resolvers/zookeeper_resolver.c
  10. 8
      src/core/client_config/subchannel.h
  11. 13
      src/core/compression/algorithm.c
  12. 6
      src/core/iomgr/pollset_posix.c
  13. 14
      src/core/iomgr/tcp_client_posix.c
  14. 45
      src/core/security/credentials.c
  15. 4
      src/core/security/google_default_credentials.c
  16. 24
      src/core/security/security_context.c
  17. 6
      src/core/security/server_secure_chttp2.c
  18. 4
      src/core/surface/api_trace.c
  19. 65
      src/core/surface/api_trace.h
  20. 13
      src/core/surface/call.c
  21. 10
      src/core/surface/call.h
  22. 4
      src/core/surface/call_details.c
  23. 2
      src/core/surface/call_log_batch.c
  24. 24
      src/core/surface/channel.c
  25. 12
      src/core/surface/channel_connectivity.c
  26. 4
      src/core/surface/channel_create.c
  27. 18
      src/core/surface/completion_queue.c
  28. 8
      src/core/surface/init.c
  29. 5
      src/core/surface/lame_client.c
  30. 4
      src/core/surface/metadata_array.c
  31. 6
      src/core/surface/secure_channel_create.c
  32. 28
      src/core/surface/server.c
  33. 4
      src/core/surface/server_chttp2.c
  34. 3
      src/core/surface/server_create.c
  35. 5
      src/core/surface/surface_trace.h
  36. 4
      src/core/surface/version.c
  37. 2
      src/core/transport/chttp2_transport.c
  38. 5
      templates/src/core/surface/version.c.template
  39. 14
      test/core/util/port_posix.c
  40. 6
      test/cpp/end2end/end2end_test.cc
  41. 9
      tools/buildgen/generate_projects.py
  42. 3
      tools/doxygen/Doxyfile.core.internal
  43. 4
      tools/jenkins/build_docker_and_run_tests.sh
  44. 14
      tools/jenkins/docker_run_tests.sh
  45. 36
      tools/jenkins/grpc_interop_go/Dockerfile
  46. 50
      tools/jenkins/grpc_interop_go/build_interop.sh
  47. 34
      tools/run_tests/run_interop_tests.py
  48. 8
      tools/run_tests/run_node.sh
  49. 12
      tools/run_tests/run_tests.py
  50. 8
      tools/run_tests/sources_and_headers.json
  51. 658
      vsprojects/grpc/grpc.vcxproj
  52. 874
      vsprojects/grpc/grpc.vcxproj.filters
  53. 596
      vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
  54. 766
      vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
  55. 5
      vsprojects/vcxproj/grpc/grpc.vcxproj
  56. 9
      vsprojects/vcxproj/grpc/grpc.vcxproj.filters
  57. 5
      vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
  58. 9
      vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters

1
.gitignore vendored

@ -8,6 +8,7 @@ objs
python*_virtual_environment python*_virtual_environment
# gcov coverage data # gcov coverage data
reports
coverage coverage
*.gcno *.gcno

@ -220,6 +220,7 @@ cc_library(
"src/core/profiling/timers.h", "src/core/profiling/timers.h",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h", "src/core/surface/call.h",
"src/core/surface/channel.h", "src/core/surface/channel.h",
@ -356,6 +357,7 @@ cc_library(
"src/core/json/json_writer.c", "src/core/json/json_writer.c",
"src/core/profiling/basic_timers.c", "src/core/profiling/basic_timers.c",
"src/core/profiling/stap_timers.c", "src/core/profiling/stap_timers.c",
"src/core/surface/api_trace.c",
"src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer.c",
"src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.c",
"src/core/surface/byte_buffer_reader.c", "src/core/surface/byte_buffer_reader.c",
@ -373,7 +375,6 @@ cc_library(
"src/core/surface/server.c", "src/core/surface/server.c",
"src/core/surface/server_chttp2.c", "src/core/surface/server_chttp2.c",
"src/core/surface/server_create.c", "src/core/surface/server_create.c",
"src/core/surface/surface_trace.c",
"src/core/surface/version.c", "src/core/surface/version.c",
"src/core/transport/chttp2/alpn.c", "src/core/transport/chttp2/alpn.c",
"src/core/transport/chttp2/bin_encoder.c", "src/core/transport/chttp2/bin_encoder.c",
@ -505,6 +506,7 @@ cc_library(
"src/core/profiling/timers.h", "src/core/profiling/timers.h",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h", "src/core/surface/call.h",
"src/core/surface/channel.h", "src/core/surface/channel.h",
@ -621,6 +623,7 @@ cc_library(
"src/core/json/json_writer.c", "src/core/json/json_writer.c",
"src/core/profiling/basic_timers.c", "src/core/profiling/basic_timers.c",
"src/core/profiling/stap_timers.c", "src/core/profiling/stap_timers.c",
"src/core/surface/api_trace.c",
"src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer.c",
"src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.c",
"src/core/surface/byte_buffer_reader.c", "src/core/surface/byte_buffer_reader.c",
@ -638,7 +641,6 @@ cc_library(
"src/core/surface/server.c", "src/core/surface/server.c",
"src/core/surface/server_chttp2.c", "src/core/surface/server_chttp2.c",
"src/core/surface/server_create.c", "src/core/surface/server_create.c",
"src/core/surface/surface_trace.c",
"src/core/surface/version.c", "src/core/surface/version.c",
"src/core/transport/chttp2/alpn.c", "src/core/transport/chttp2/alpn.c",
"src/core/transport/chttp2/bin_encoder.c", "src/core/transport/chttp2/bin_encoder.c",
@ -1145,6 +1147,7 @@ objc_library(
"src/core/json/json_writer.c", "src/core/json/json_writer.c",
"src/core/profiling/basic_timers.c", "src/core/profiling/basic_timers.c",
"src/core/profiling/stap_timers.c", "src/core/profiling/stap_timers.c",
"src/core/surface/api_trace.c",
"src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer.c",
"src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.c",
"src/core/surface/byte_buffer_reader.c", "src/core/surface/byte_buffer_reader.c",
@ -1162,7 +1165,6 @@ objc_library(
"src/core/surface/server.c", "src/core/surface/server.c",
"src/core/surface/server_chttp2.c", "src/core/surface/server_chttp2.c",
"src/core/surface/server_create.c", "src/core/surface/server_create.c",
"src/core/surface/surface_trace.c",
"src/core/surface/version.c", "src/core/surface/version.c",
"src/core/transport/chttp2/alpn.c", "src/core/transport/chttp2/alpn.c",
"src/core/transport/chttp2/bin_encoder.c", "src/core/transport/chttp2/bin_encoder.c",
@ -1291,6 +1293,7 @@ objc_library(
"src/core/profiling/timers.h", "src/core/profiling/timers.h",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h", "src/core/surface/call.h",
"src/core/surface/channel.h", "src/core/surface/channel.h",

@ -4119,6 +4119,7 @@ LIBGRPC_SRC = \
src/core/json/json_writer.c \ src/core/json/json_writer.c \
src/core/profiling/basic_timers.c \ src/core/profiling/basic_timers.c \
src/core/profiling/stap_timers.c \ src/core/profiling/stap_timers.c \
src/core/surface/api_trace.c \
src/core/surface/byte_buffer.c \ src/core/surface/byte_buffer.c \
src/core/surface/byte_buffer_queue.c \ src/core/surface/byte_buffer_queue.c \
src/core/surface/byte_buffer_reader.c \ src/core/surface/byte_buffer_reader.c \
@ -4136,7 +4137,6 @@ LIBGRPC_SRC = \
src/core/surface/server.c \ src/core/surface/server.c \
src/core/surface/server_chttp2.c \ src/core/surface/server_chttp2.c \
src/core/surface/server_create.c \ src/core/surface/server_create.c \
src/core/surface/surface_trace.c \
src/core/surface/version.c \ src/core/surface/version.c \
src/core/transport/chttp2/alpn.c \ src/core/transport/chttp2/alpn.c \
src/core/transport/chttp2/bin_encoder.c \ src/core/transport/chttp2/bin_encoder.c \
@ -4401,6 +4401,7 @@ LIBGRPC_UNSECURE_SRC = \
src/core/json/json_writer.c \ src/core/json/json_writer.c \
src/core/profiling/basic_timers.c \ src/core/profiling/basic_timers.c \
src/core/profiling/stap_timers.c \ src/core/profiling/stap_timers.c \
src/core/surface/api_trace.c \
src/core/surface/byte_buffer.c \ src/core/surface/byte_buffer.c \
src/core/surface/byte_buffer_queue.c \ src/core/surface/byte_buffer_queue.c \
src/core/surface/byte_buffer_reader.c \ src/core/surface/byte_buffer_reader.c \
@ -4418,7 +4419,6 @@ LIBGRPC_UNSECURE_SRC = \
src/core/surface/server.c \ src/core/surface/server.c \
src/core/surface/server_chttp2.c \ src/core/surface/server_chttp2.c \
src/core/surface/server_create.c \ src/core/surface/server_create.c \
src/core/surface/surface_trace.c \
src/core/surface/version.c \ src/core/surface/version.c \
src/core/transport/chttp2/alpn.c \ src/core/transport/chttp2/alpn.c \
src/core/transport/chttp2/bin_encoder.c \ src/core/transport/chttp2/bin_encoder.c \

File diff suppressed because it is too large Load Diff

@ -180,6 +180,7 @@ filegroups:
- src/core/profiling/timers.h - src/core/profiling/timers.h
- src/core/statistics/census_interface.h - src/core/statistics/census_interface.h
- src/core/statistics/census_rpc_stats.h - src/core/statistics/census_rpc_stats.h
- src/core/surface/api_trace.h
- src/core/surface/byte_buffer_queue.h - src/core/surface/byte_buffer_queue.h
- src/core/surface/call.h - src/core/surface/call.h
- src/core/surface/channel.h - src/core/surface/channel.h
@ -293,6 +294,7 @@ filegroups:
- src/core/json/json_writer.c - src/core/json/json_writer.c
- src/core/profiling/basic_timers.c - src/core/profiling/basic_timers.c
- src/core/profiling/stap_timers.c - src/core/profiling/stap_timers.c
- src/core/surface/api_trace.c
- src/core/surface/byte_buffer.c - src/core/surface/byte_buffer.c
- src/core/surface/byte_buffer_queue.c - src/core/surface/byte_buffer_queue.c
- src/core/surface/byte_buffer_reader.c - src/core/surface/byte_buffer_reader.c
@ -310,7 +312,6 @@ filegroups:
- src/core/surface/server.c - src/core/surface/server.c
- src/core/surface/server_chttp2.c - src/core/surface/server_chttp2.c
- src/core/surface/server_create.c - src/core/surface/server_create.c
- src/core/surface/surface_trace.c
- src/core/surface/version.c - src/core/surface/version.c
- src/core/transport/chttp2/alpn.c - src/core/transport/chttp2/alpn.c
- src/core/transport/chttp2/bin_encoder.c - src/core/transport/chttp2/bin_encoder.c

@ -46,6 +46,7 @@ Pod::Spec.new do |s|
s.source = { :git => 'https://github.com/grpc/grpc.git', s.source = { :git => 'https://github.com/grpc/grpc.git',
:tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" } :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" }
s.ios.deployment_target = '7.1' s.ios.deployment_target = '7.1'
s.osx.deployment_target = '10.9' s.osx.deployment_target = '10.9'
s.requires_arc = true s.requires_arc = true
@ -223,6 +224,7 @@ Pod::Spec.new do |s|
'src/core/profiling/timers.h', 'src/core/profiling/timers.h',
'src/core/statistics/census_interface.h', 'src/core/statistics/census_interface.h',
'src/core/statistics/census_rpc_stats.h', 'src/core/statistics/census_rpc_stats.h',
'src/core/surface/api_trace.h',
'src/core/surface/byte_buffer_queue.h', 'src/core/surface/byte_buffer_queue.h',
'src/core/surface/call.h', 'src/core/surface/call.h',
'src/core/surface/channel.h', 'src/core/surface/channel.h',
@ -366,6 +368,7 @@ Pod::Spec.new do |s|
'src/core/json/json_writer.c', 'src/core/json/json_writer.c',
'src/core/profiling/basic_timers.c', 'src/core/profiling/basic_timers.c',
'src/core/profiling/stap_timers.c', 'src/core/profiling/stap_timers.c',
'src/core/surface/api_trace.c',
'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer.c',
'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_queue.c',
'src/core/surface/byte_buffer_reader.c', 'src/core/surface/byte_buffer_reader.c',
@ -383,7 +386,6 @@ Pod::Spec.new do |s|
'src/core/surface/server.c', 'src/core/surface/server.c',
'src/core/surface/server_chttp2.c', 'src/core/surface/server_chttp2.c',
'src/core/surface/server_create.c', 'src/core/surface/server_create.c',
'src/core/surface/surface_trace.c',
'src/core/surface/version.c', 'src/core/surface/version.c',
'src/core/transport/chttp2/alpn.c', 'src/core/transport/chttp2/alpn.c',
'src/core/transport/chttp2/bin_encoder.c', 'src/core/transport/chttp2/bin_encoder.c',
@ -513,6 +515,7 @@ Pod::Spec.new do |s|
'src/core/profiling/timers.h', 'src/core/profiling/timers.h',
'src/core/statistics/census_interface.h', 'src/core/statistics/census_interface.h',
'src/core/statistics/census_rpc_stats.h', 'src/core/statistics/census_rpc_stats.h',
'src/core/surface/api_trace.h',
'src/core/surface/byte_buffer_queue.h', 'src/core/surface/byte_buffer_queue.h',
'src/core/surface/call.h', 'src/core/surface/call.h',
'src/core/surface/channel.h', 'src/core/surface/channel.h',

@ -248,6 +248,7 @@
'src/core/json/json_writer.c', 'src/core/json/json_writer.c',
'src/core/profiling/basic_timers.c', 'src/core/profiling/basic_timers.c',
'src/core/profiling/stap_timers.c', 'src/core/profiling/stap_timers.c',
'src/core/surface/api_trace.c',
'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer.c',
'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_queue.c',
'src/core/surface/byte_buffer_reader.c', 'src/core/surface/byte_buffer_reader.c',
@ -265,7 +266,6 @@
'src/core/surface/server.c', 'src/core/surface/server.c',
'src/core/surface/server_chttp2.c', 'src/core/surface/server_chttp2.c',
'src/core/surface/server_create.c', 'src/core/surface/server_create.c',
'src/core/surface/surface_trace.c',
'src/core/surface/version.c', 'src/core/surface/version.c',
'src/core/transport/chttp2/alpn.c', 'src/core/transport/chttp2/alpn.c',
'src/core/transport/chttp2/bin_encoder.c', 'src/core/transport/chttp2/bin_encoder.c',
@ -434,6 +434,7 @@
'src/core/json/json_writer.c', 'src/core/json/json_writer.c',
'src/core/profiling/basic_timers.c', 'src/core/profiling/basic_timers.c',
'src/core/profiling/stap_timers.c', 'src/core/profiling/stap_timers.c',
'src/core/surface/api_trace.c',
'src/core/surface/byte_buffer.c', 'src/core/surface/byte_buffer.c',
'src/core/surface/byte_buffer_queue.c', 'src/core/surface/byte_buffer_queue.c',
'src/core/surface/byte_buffer_reader.c', 'src/core/surface/byte_buffer_reader.c',
@ -451,7 +452,6 @@
'src/core/surface/server.c', 'src/core/surface/server.c',
'src/core/surface/server_chttp2.c', 'src/core/surface/server_chttp2.c',
'src/core/surface/server_create.c', 'src/core/surface/server_create.c',
'src/core/surface/surface_trace.c',
'src/core/surface/version.c', 'src/core/surface/version.c',
'src/core/transport/chttp2/alpn.c', 'src/core/transport/chttp2/alpn.c',
'src/core/transport/chttp2/bin_encoder.c', 'src/core/transport/chttp2/bin_encoder.c',

@ -33,9 +33,12 @@
#include <grpc/census.h> #include <grpc/census.h>
#include <grpc/grpc.h> #include <grpc/grpc.h>
#include "src/core/surface/api_trace.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
void grpc_census_call_set_context(grpc_call *call, census_context *context) { void grpc_census_call_set_context(grpc_call *call, census_context *context) {
GRPC_API_TRACE("grpc_census_call_set_context(call=%p, census_context=%p)", 2,
(call, context));
if (census_enabled() == CENSUS_FEATURE_NONE) { if (census_enabled() == CENSUS_FEATURE_NONE) {
return; return;
} }
@ -45,5 +48,6 @@ void grpc_census_call_set_context(grpc_call *call, census_context *context) {
} }
census_context *grpc_census_call_get_context(grpc_call *call) { census_context *grpc_census_call_get_context(grpc_call *call) {
GRPC_API_TRACE("grpc_census_call_get_context(call=%p)", 1, (call));
return (census_context *)grpc_call_context_get(call, GRPC_CONTEXT_TRACING); return (census_context *)grpc_call_context_get(call, GRPC_CONTEXT_TRACING);
} }

@ -45,6 +45,7 @@
#include "src/core/client_config/resolver_registry.h" #include "src/core/client_config/resolver_registry.h"
#include "src/core/iomgr/resolve_address.h" #include "src/core/iomgr/resolve_address.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include "src/core/surface/api_trace.h"
#include "src/core/json/json.h" #include "src/core/json/json.h"
/** Zookeeper session expiration time in milliseconds */ /** Zookeeper session expiration time in milliseconds */
@ -487,6 +488,7 @@ static void zookeeper_plugin_init() {
} }
void grpc_zookeeper_register() { void grpc_zookeeper_register() {
GRPC_API_TRACE("grpc_zookeeper_register(void)", 0, ());
grpc_register_plugin(zookeeper_plugin_init, NULL); grpc_register_plugin(zookeeper_plugin_init, NULL);
} }

@ -64,13 +64,13 @@ typedef struct grpc_subchannel_args grpc_subchannel_args;
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS #define GRPC_SUBCHANNEL_REF_EXTRA_ARGS
#endif #endif
void grpc_subchannel_ref( void grpc_subchannel_ref(grpc_subchannel *channel
grpc_subchannel *channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS); GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
void grpc_subchannel_unref(grpc_exec_ctx *exec_ctx, void grpc_subchannel_unref(grpc_exec_ctx *exec_ctx,
grpc_subchannel *channel grpc_subchannel *channel
GRPC_SUBCHANNEL_REF_EXTRA_ARGS); GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
void grpc_subchannel_call_ref( void grpc_subchannel_call_ref(grpc_subchannel_call *call
grpc_subchannel_call *call GRPC_SUBCHANNEL_REF_EXTRA_ARGS); GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
void grpc_subchannel_call_unref(grpc_exec_ctx *exec_ctx, void grpc_subchannel_call_unref(grpc_exec_ctx *exec_ctx,
grpc_subchannel_call *call grpc_subchannel_call *call
GRPC_SUBCHANNEL_REF_EXTRA_ARGS); GRPC_SUBCHANNEL_REF_EXTRA_ARGS);

@ -37,12 +37,19 @@
#include <grpc/compression.h> #include <grpc/compression.h>
#include <grpc/support/useful.h> #include <grpc/support/useful.h>
#include "src/core/surface/api_trace.h"
int grpc_compression_algorithm_parse(const char *name, size_t name_length, int grpc_compression_algorithm_parse(const char *name, size_t name_length,
grpc_compression_algorithm *algorithm) { grpc_compression_algorithm *algorithm) {
/* we use strncmp not only because it's safer (even though in this case it /* we use strncmp not only because it's safer (even though in this case it
* doesn't matter, given that we are comparing against string literals, but * doesn't matter, given that we are comparing against string literals, but
* because this way we needn't have "name" nil-terminated (useful for slice * because this way we needn't have "name" nil-terminated (useful for slice
* data, for example) */ * data, for example) */
GRPC_API_TRACE(
"grpc_compression_algorithm_parse("
"name=%*.*s, name_length=%lu, algorithm=%p)",
5, ((int)name_length, (int)name_length, name, (unsigned long)name_length,
algorithm));
if (name_length == 0) { if (name_length == 0) {
return 0; return 0;
} }
@ -60,6 +67,8 @@ int grpc_compression_algorithm_parse(const char *name, size_t name_length,
int grpc_compression_algorithm_name(grpc_compression_algorithm algorithm, int grpc_compression_algorithm_name(grpc_compression_algorithm algorithm,
char **name) { char **name) {
GRPC_API_TRACE("grpc_compression_algorithm_parse(algorithm=%d, name=%p)", 2,
((int)algorithm, name));
switch (algorithm) { switch (algorithm) {
case GRPC_COMPRESS_NONE: case GRPC_COMPRESS_NONE:
*name = "identity"; *name = "identity";
@ -80,6 +89,8 @@ int grpc_compression_algorithm_name(grpc_compression_algorithm algorithm,
* compression algorithms */ * compression algorithms */
grpc_compression_algorithm grpc_compression_algorithm_for_level( grpc_compression_algorithm grpc_compression_algorithm_for_level(
grpc_compression_level level) { grpc_compression_level level) {
GRPC_API_TRACE("grpc_compression_algorithm_for_level(level=%d)", 1,
((int)level));
switch (level) { switch (level) {
case GRPC_COMPRESS_LEVEL_NONE: case GRPC_COMPRESS_LEVEL_NONE:
return GRPC_COMPRESS_NONE; return GRPC_COMPRESS_NONE;
@ -96,6 +107,8 @@ grpc_compression_algorithm grpc_compression_algorithm_for_level(
grpc_compression_level grpc_compression_level_for_algorithm( grpc_compression_level grpc_compression_level_for_algorithm(
grpc_compression_algorithm algorithm) { grpc_compression_algorithm algorithm) {
grpc_compression_level clevel; grpc_compression_level clevel;
GRPC_API_TRACE("grpc_compression_level_for_algorithm(algorithm=%d)", 1,
((int)algorithm));
for (clevel = GRPC_COMPRESS_LEVEL_NONE; clevel < GRPC_COMPRESS_LEVEL_COUNT; for (clevel = GRPC_COMPRESS_LEVEL_NONE; clevel < GRPC_COMPRESS_LEVEL_COUNT;
++clevel) { ++clevel) {
if (grpc_compression_algorithm_for_level(clevel) == algorithm) { if (grpc_compression_algorithm_for_level(clevel) == algorithm) {

@ -352,6 +352,7 @@ static void basic_do_promote(grpc_exec_ctx *exec_ctx, void *args, int success) {
if (pollset->shutting_down) { if (pollset->shutting_down) {
/* We don't care about this pollset anymore. */ /* We don't care about this pollset anymore. */
if (pollset->in_flight_cbs == 0 && !pollset->called_shutdown) { if (pollset->in_flight_cbs == 0 && !pollset->called_shutdown) {
pollset->called_shutdown = 1;
finish_shutdown(exec_ctx, pollset); finish_shutdown(exec_ctx, pollset);
} }
} else if (grpc_fd_is_orphaned(fd)) { } else if (grpc_fd_is_orphaned(fd)) {
@ -476,6 +477,7 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx,
if (fd) { if (fd) {
pfd[2].fd = fd->fd; pfd[2].fd = fd->fd;
pfd[2].revents = 0; pfd[2].revents = 0;
GRPC_FD_REF(fd, "basicpoll_begin");
gpr_mu_unlock(&pollset->mu); gpr_mu_unlock(&pollset->mu);
pfd[2].events = pfd[2].events =
(short)grpc_fd_begin_poll(fd, pollset, POLLIN, POLLOUT, &fd_watcher); (short)grpc_fd_begin_poll(fd, pollset, POLLIN, POLLOUT, &fd_watcher);
@ -522,6 +524,10 @@ static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx,
} }
} }
} }
if (fd) {
GRPC_FD_UNREF(fd, "basicpoll_begin");
}
} }
static void basic_pollset_destroy(grpc_pollset *pollset) { static void basic_pollset_destroy(grpc_pollset *pollset) {

@ -141,7 +141,8 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, int success) {
err = getsockopt(fd->fd, SOL_SOCKET, SO_ERROR, &so_error, &so_error_size); err = getsockopt(fd->fd, SOL_SOCKET, SO_ERROR, &so_error, &so_error_size);
} while (err < 0 && errno == EINTR); } while (err < 0 && errno == EINTR);
if (err < 0) { if (err < 0) {
gpr_log(GPR_ERROR, "getsockopt(ERROR): %s", strerror(errno)); gpr_log(GPR_ERROR, "failed to connect to '%s': getsockopt(ERROR): %s",
ac->addr_str, strerror(errno));
goto finish; goto finish;
} else if (so_error != 0) { } else if (so_error != 0) {
if (so_error == ENOBUFS) { if (so_error == ENOBUFS) {
@ -166,10 +167,14 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, int success) {
} else { } else {
switch (so_error) { switch (so_error) {
case ECONNREFUSED: case ECONNREFUSED:
gpr_log(GPR_ERROR, "socket error: connection refused"); gpr_log(
GPR_ERROR,
"failed to connect to '%s': socket error: connection refused",
ac->addr_str);
break; break;
default: default:
gpr_log(GPR_ERROR, "socket error: %d", so_error); gpr_log(GPR_ERROR, "failed to connect to '%s': socket error: %d",
ac->addr_str, so_error);
break; break;
} }
goto finish; goto finish;
@ -181,7 +186,8 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, int success) {
goto finish; goto finish;
} }
} else { } else {
gpr_log(GPR_ERROR, "on_writable failed during connect"); gpr_log(GPR_ERROR, "failed to connect to '%s': timeout occurred",
ac->addr_str);
goto finish; goto finish;
} }

@ -41,6 +41,7 @@
#include "src/core/json/json.h" #include "src/core/json/json.h"
#include "src/core/httpcli/httpcli.h" #include "src/core/httpcli/httpcli.h"
#include "src/core/iomgr/iomgr.h" #include "src/core/iomgr/iomgr.h"
#include "src/core/surface/api_trace.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
@ -91,6 +92,7 @@ void grpc_credentials_unref(grpc_credentials *creds) {
} }
void grpc_credentials_release(grpc_credentials *creds) { void grpc_credentials_release(grpc_credentials *creds) {
GRPC_API_TRACE("grpc_credentials_release(creds=%p)", 1, (creds));
grpc_credentials_unref(creds); grpc_credentials_unref(creds);
} }
@ -152,6 +154,7 @@ void grpc_server_credentials_unref(grpc_server_credentials *creds) {
} }
void grpc_server_credentials_release(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_server_credentials_unref(creds); grpc_server_credentials_unref(creds);
} }
@ -166,6 +169,11 @@ grpc_security_status grpc_server_credentials_create_security_connector(
void grpc_server_credentials_set_auth_metadata_processor( void grpc_server_credentials_set_auth_metadata_processor(
grpc_server_credentials *creds, grpc_auth_metadata_processor processor) { grpc_server_credentials *creds, grpc_auth_metadata_processor processor) {
GRPC_API_TRACE(
"grpc_server_credentials_set_auth_metadata_processor("
"creds=%p, "
"processor=grpc_auth_metadata_processor { process: %lx, state: %p })",
3, (creds, (unsigned long)processor.process, processor.state));
if (creds == NULL) return; if (creds == NULL) return;
if (creds->processor.destroy != NULL && creds->processor.state != NULL) { if (creds->processor.destroy != NULL && creds->processor.state != NULL) {
creds->processor.destroy(creds->processor.state); creds->processor.destroy(creds->processor.state);
@ -317,6 +325,11 @@ grpc_credentials *grpc_ssl_credentials_create(
const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair, const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair,
void *reserved) { void *reserved) {
grpc_ssl_credentials *c = gpr_malloc(sizeof(grpc_ssl_credentials)); grpc_ssl_credentials *c = gpr_malloc(sizeof(grpc_ssl_credentials));
GRPC_API_TRACE(
"grpc_ssl_credentials_create(pem_root_certs=%s, "
"pem_key_cert_pair=%p, "
"reserved=%p)",
3, (pem_root_certs, pem_key_cert_pair, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
memset(c, 0, sizeof(grpc_ssl_credentials)); memset(c, 0, sizeof(grpc_ssl_credentials));
c->base.type = GRPC_CREDENTIALS_TYPE_SSL; c->base.type = GRPC_CREDENTIALS_TYPE_SSL;
@ -331,6 +344,12 @@ grpc_server_credentials *grpc_ssl_server_credentials_create(
size_t num_key_cert_pairs, int force_client_auth, void *reserved) { size_t num_key_cert_pairs, int force_client_auth, void *reserved) {
grpc_ssl_server_credentials *c = grpc_ssl_server_credentials *c =
gpr_malloc(sizeof(grpc_ssl_server_credentials)); gpr_malloc(sizeof(grpc_ssl_server_credentials));
GRPC_API_TRACE(
"grpc_ssl_server_credentials_create("
"pem_root_certs=%s, pem_key_cert_pairs=%p, num_key_cert_pairs=%lu, "
"force_client_auth=%d, reserved=%p)",
5, (pem_root_certs, pem_key_cert_pairs, (unsigned long)num_key_cert_pairs,
force_client_auth, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
memset(c, 0, sizeof(grpc_ssl_server_credentials)); memset(c, 0, sizeof(grpc_ssl_server_credentials));
c->base.type = GRPC_CREDENTIALS_TYPE_SSL; c->base.type = GRPC_CREDENTIALS_TYPE_SSL;
@ -449,6 +468,14 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
grpc_credentials *grpc_service_account_jwt_access_credentials_create( grpc_credentials *grpc_service_account_jwt_access_credentials_create(
const char *json_key, gpr_timespec token_lifetime, void *reserved) { const char *json_key, gpr_timespec token_lifetime, void *reserved) {
GRPC_API_TRACE(
"grpc_service_account_jwt_access_credentials_create("
"json_key=%s, "
"token_lifetime="
"gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
"reserved=%p)",
5, (json_key, (long)token_lifetime.tv_sec, token_lifetime.tv_nsec,
(int)token_lifetime.clock_type, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
return grpc_service_account_jwt_access_credentials_create_from_auth_json_key( return grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
grpc_auth_json_key_create_from_string(json_key), token_lifetime); grpc_auth_json_key_create_from_string(json_key), token_lifetime);
@ -659,6 +686,8 @@ grpc_credentials *grpc_google_compute_engine_credentials_create(
void *reserved) { void *reserved) {
grpc_oauth2_token_fetcher_credentials *c = grpc_oauth2_token_fetcher_credentials *c =
gpr_malloc(sizeof(grpc_oauth2_token_fetcher_credentials)); gpr_malloc(sizeof(grpc_oauth2_token_fetcher_credentials));
GRPC_API_TRACE("grpc_compute_engine_credentials_create(reserved=%p)", 1,
(reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
init_oauth2_token_fetcher(c, compute_engine_fetch_oauth2); init_oauth2_token_fetcher(c, compute_engine_fetch_oauth2);
c->base.vtable = &compute_engine_vtable; c->base.vtable = &compute_engine_vtable;
@ -720,6 +749,10 @@ grpc_credentials *grpc_refresh_token_credentials_create_from_auth_refresh_token(
grpc_credentials *grpc_google_refresh_token_credentials_create( grpc_credentials *grpc_google_refresh_token_credentials_create(
const char *json_refresh_token, void *reserved) { const char *json_refresh_token, void *reserved) {
GRPC_API_TRACE(
"grpc_refresh_token_credentials_create(json_refresh_token=%s, "
"reserved=%p)",
2, (json_refresh_token, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
return grpc_refresh_token_credentials_create_from_auth_refresh_token( return grpc_refresh_token_credentials_create_from_auth_refresh_token(
grpc_auth_refresh_token_create_from_string(json_refresh_token)); grpc_auth_refresh_token_create_from_string(json_refresh_token));
@ -820,6 +853,10 @@ grpc_credentials *grpc_access_token_credentials_create(const char *access_token,
grpc_access_token_credentials *c = grpc_access_token_credentials *c =
gpr_malloc(sizeof(grpc_access_token_credentials)); gpr_malloc(sizeof(grpc_access_token_credentials));
char *token_md_value; char *token_md_value;
GRPC_API_TRACE(
"grpc_access_token_credentials_create(access_token=%s, "
"reserved=%p)",
2, (access_token, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
memset(c, 0, sizeof(grpc_access_token_credentials)); memset(c, 0, sizeof(grpc_access_token_credentials));
c->base.type = GRPC_CREDENTIALS_TYPE_OAUTH2; c->base.type = GRPC_CREDENTIALS_TYPE_OAUTH2;
@ -1056,6 +1093,10 @@ grpc_credentials *grpc_composite_credentials_create(grpc_credentials *creds1,
grpc_credentials_array creds1_array; grpc_credentials_array creds1_array;
grpc_credentials_array creds2_array; grpc_credentials_array creds2_array;
grpc_composite_credentials *c; grpc_composite_credentials *c;
GRPC_API_TRACE(
"grpc_composite_credentials_create(creds1=%p, creds2=%p, "
"reserved=%p)",
3, (creds1, creds2, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
GPR_ASSERT(creds1 != NULL); GPR_ASSERT(creds1 != NULL);
GPR_ASSERT(creds2 != NULL); GPR_ASSERT(creds2 != NULL);
@ -1158,6 +1199,10 @@ static grpc_credentials_vtable iam_vtable = {
grpc_credentials *grpc_google_iam_credentials_create( grpc_credentials *grpc_google_iam_credentials_create(
const char *token, const char *authority_selector, void *reserved) { const char *token, const char *authority_selector, void *reserved) {
grpc_google_iam_credentials *c; grpc_google_iam_credentials *c;
GRPC_API_TRACE(
"grpc_iam_credentials_create(token=%s, authority_selector=%s, "
"reserved=%p)",
3, (token, authority_selector, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
GPR_ASSERT(token != NULL); GPR_ASSERT(token != NULL);
GPR_ASSERT(authority_selector != NULL); GPR_ASSERT(authority_selector != NULL);

@ -42,6 +42,7 @@
#include "src/core/httpcli/httpcli.h" #include "src/core/httpcli/httpcli.h"
#include "src/core/support/env.h" #include "src/core/support/env.h"
#include "src/core/support/file.h" #include "src/core/support/file.h"
#include "src/core/surface/api_trace.h"
/* -- Constants. -- */ /* -- Constants. -- */
@ -178,6 +179,9 @@ end:
grpc_credentials *grpc_google_default_credentials_create(void) { grpc_credentials *grpc_google_default_credentials_create(void) {
grpc_credentials *result = NULL; grpc_credentials *result = NULL;
int serving_cached_credentials = 0; int serving_cached_credentials = 0;
GRPC_API_TRACE("grpc_google_default_credentials_create(void)", 0, ());
gpr_once_init(&g_once, init_default_credentials); gpr_once_init(&g_once, init_default_credentials);
gpr_mu_lock(&g_mu); gpr_mu_lock(&g_mu);

@ -34,6 +34,7 @@
#include <string.h> #include <string.h>
#include "src/core/security/security_context.h" #include "src/core/security/security_context.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
@ -47,6 +48,8 @@
grpc_call_error grpc_call_set_credentials(grpc_call *call, grpc_call_error grpc_call_set_credentials(grpc_call *call,
grpc_credentials *creds) { grpc_credentials *creds) {
grpc_client_security_context *ctx = NULL; grpc_client_security_context *ctx = NULL;
GRPC_API_TRACE("grpc_call_set_credentials(call=%p, creds=%p)", 2,
(call, creds));
if (!grpc_call_is_client(call)) { if (!grpc_call_is_client(call)) {
gpr_log(GPR_ERROR, "Method is client-side only."); gpr_log(GPR_ERROR, "Method is client-side only.");
return GRPC_CALL_ERROR_NOT_ON_SERVER; return GRPC_CALL_ERROR_NOT_ON_SERVER;
@ -71,6 +74,7 @@ grpc_call_error grpc_call_set_credentials(grpc_call *call,
grpc_auth_context *grpc_call_auth_context(grpc_call *call) { grpc_auth_context *grpc_call_auth_context(grpc_call *call) {
void *sec_ctx = grpc_call_context_get(call, GRPC_CONTEXT_SECURITY); void *sec_ctx = grpc_call_context_get(call, GRPC_CONTEXT_SECURITY);
GRPC_API_TRACE("grpc_call_auth_context(call=%p)", 1, (call));
if (sec_ctx == NULL) return NULL; if (sec_ctx == NULL) return NULL;
return grpc_call_is_client(call) return grpc_call_is_client(call)
? GRPC_AUTH_CONTEXT_REF( ? GRPC_AUTH_CONTEXT_REF(
@ -82,6 +86,7 @@ grpc_auth_context *grpc_call_auth_context(grpc_call *call) {
} }
void grpc_auth_context_release(grpc_auth_context *context) { void grpc_auth_context_release(grpc_auth_context *context) {
GRPC_API_TRACE("grpc_auth_context_release(context=%p)", 1, (context));
GRPC_AUTH_CONTEXT_UNREF(context, "grpc_auth_context_unref"); GRPC_AUTH_CONTEXT_UNREF(context, "grpc_auth_context_unref");
} }
@ -174,6 +179,8 @@ void grpc_auth_context_unref(grpc_auth_context *ctx) {
const char *grpc_auth_context_peer_identity_property_name( const char *grpc_auth_context_peer_identity_property_name(
const grpc_auth_context *ctx) { const grpc_auth_context *ctx) {
GRPC_API_TRACE("grpc_auth_context_peer_identity_property_name(ctx=%p)", 1,
(ctx));
return ctx->peer_identity_property_name; return ctx->peer_identity_property_name;
} }
@ -182,6 +189,9 @@ int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx,
grpc_auth_property_iterator it = grpc_auth_property_iterator it =
grpc_auth_context_find_properties_by_name(ctx, name); grpc_auth_context_find_properties_by_name(ctx, name);
const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it); const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
GRPC_API_TRACE(
"grpc_auth_context_set_peer_identity_property_name(ctx=%p, name=%s)", 2,
(ctx, name));
if (prop == NULL) { if (prop == NULL) {
gpr_log(GPR_ERROR, "Property name %s not found in auth context.", gpr_log(GPR_ERROR, "Property name %s not found in auth context.",
name != NULL ? name : "NULL"); name != NULL ? name : "NULL");
@ -192,12 +202,14 @@ int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx,
} }
int grpc_auth_context_peer_is_authenticated(const grpc_auth_context *ctx) { int grpc_auth_context_peer_is_authenticated(const grpc_auth_context *ctx) {
GRPC_API_TRACE("grpc_auth_context_peer_is_authenticated(ctx=%p)", 1, (ctx));
return ctx->peer_identity_property_name == NULL ? 0 : 1; return ctx->peer_identity_property_name == NULL ? 0 : 1;
} }
grpc_auth_property_iterator grpc_auth_context_property_iterator( grpc_auth_property_iterator grpc_auth_context_property_iterator(
const grpc_auth_context *ctx) { const grpc_auth_context *ctx) {
grpc_auth_property_iterator it = empty_iterator; grpc_auth_property_iterator it = empty_iterator;
GRPC_API_TRACE("grpc_auth_context_property_iterator(ctx=%p)", 1, (ctx));
if (ctx == NULL) return it; if (ctx == NULL) return it;
it.ctx = ctx; it.ctx = ctx;
return it; return it;
@ -205,6 +217,7 @@ grpc_auth_property_iterator grpc_auth_context_property_iterator(
const grpc_auth_property *grpc_auth_property_iterator_next( const grpc_auth_property *grpc_auth_property_iterator_next(
grpc_auth_property_iterator *it) { grpc_auth_property_iterator *it) {
GRPC_API_TRACE("grpc_auth_property_iterator_next(it=%p)", 1, (it));
if (it == NULL || it->ctx == NULL) return NULL; if (it == NULL || it->ctx == NULL) return NULL;
while (it->index == it->ctx->properties.count) { while (it->index == it->ctx->properties.count) {
if (it->ctx->chained == NULL) return NULL; if (it->ctx->chained == NULL) return NULL;
@ -229,6 +242,8 @@ const grpc_auth_property *grpc_auth_property_iterator_next(
grpc_auth_property_iterator grpc_auth_context_find_properties_by_name( grpc_auth_property_iterator grpc_auth_context_find_properties_by_name(
const grpc_auth_context *ctx, const char *name) { const grpc_auth_context *ctx, const char *name) {
grpc_auth_property_iterator it = empty_iterator; grpc_auth_property_iterator it = empty_iterator;
GRPC_API_TRACE("grpc_auth_context_find_properties_by_name(ctx=%p, name=%s)",
2, (ctx, name));
if (ctx == NULL || name == NULL) return empty_iterator; if (ctx == NULL || name == NULL) return empty_iterator;
it.ctx = ctx; it.ctx = ctx;
it.name = name; it.name = name;
@ -237,6 +252,7 @@ grpc_auth_property_iterator grpc_auth_context_find_properties_by_name(
grpc_auth_property_iterator grpc_auth_context_peer_identity( grpc_auth_property_iterator grpc_auth_context_peer_identity(
const grpc_auth_context *ctx) { const grpc_auth_context *ctx) {
GRPC_API_TRACE("grpc_auth_context_peer_identity(ctx=%p)", 1, (ctx));
if (ctx == NULL) return empty_iterator; if (ctx == NULL) return empty_iterator;
return grpc_auth_context_find_properties_by_name( return grpc_auth_context_find_properties_by_name(
ctx, ctx->peer_identity_property_name); ctx, ctx->peer_identity_property_name);
@ -255,6 +271,11 @@ static void ensure_auth_context_capacity(grpc_auth_context *ctx) {
void grpc_auth_context_add_property(grpc_auth_context *ctx, const char *name, void grpc_auth_context_add_property(grpc_auth_context *ctx, const char *name,
const char *value, size_t value_length) { const char *value, size_t value_length) {
grpc_auth_property *prop; grpc_auth_property *prop;
GRPC_API_TRACE(
"grpc_auth_context_add_property(ctx=%p, name=%s, value=%*.*s, "
"value_length=%lu)",
6, (ctx, name, (int)value_length, (int)value_length, value,
(unsigned long)value_length));
ensure_auth_context_capacity(ctx); ensure_auth_context_capacity(ctx);
prop = &ctx->properties.array[ctx->properties.count++]; prop = &ctx->properties.array[ctx->properties.count++];
prop->name = gpr_strdup(name); prop->name = gpr_strdup(name);
@ -268,6 +289,9 @@ void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx,
const char *name, const char *name,
const char *value) { const char *value) {
grpc_auth_property *prop; grpc_auth_property *prop;
GRPC_API_TRACE(
"grpc_auth_context_add_cstring_property(ctx=%p, name=%s, value=%s)", 3,
(ctx, name, value));
ensure_auth_context_capacity(ctx); ensure_auth_context_capacity(ctx);
prop = &ctx->properties.array[ctx->properties.count++]; prop = &ctx->properties.array[ctx->properties.count++];
prop->name = gpr_strdup(name); prop->name = gpr_strdup(name);

@ -44,6 +44,7 @@
#include "src/core/security/credentials.h" #include "src/core/security/credentials.h"
#include "src/core/security/security_connector.h" #include "src/core/security/security_connector.h"
#include "src/core/security/security_context.h" #include "src/core/security/security_context.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/server.h" #include "src/core/surface/server.h"
#include "src/core/transport/chttp2_transport.h" #include "src/core/transport/chttp2_transport.h"
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
@ -222,6 +223,11 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr,
grpc_security_connector *sc = NULL; grpc_security_connector *sc = NULL;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE(
"grpc_server_add_secure_http2_port("
"server=%p, addr=%s, creds=%p)",
3, (server, addr, creds));
/* create security context */ /* create security context */
if (creds == NULL) goto error; if (creds == NULL) goto error;
status = grpc_server_credentials_create_security_connector(creds, &sc); status = grpc_server_credentials_create_security_connector(creds, &sc);

@ -31,6 +31,6 @@
* *
*/ */
#include "src/core/surface/surface_trace.h" #include "src/core/surface/api_trace.h"
int grpc_surface_trace = 0; int grpc_api_trace = 0;

@ -0,0 +1,65 @@
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef GRPC_INTERNAL_CORE_SURFACE_API_TRACE_H
#define GRPC_INTERNAL_CORE_SURFACE_API_TRACE_H
#include "src/core/debug/trace.h"
#include <grpc/support/log.h>
extern int grpc_api_trace;
/* Provide unwrapping macros because we're in C89 and variadic macros weren't
introduced until C99... */
#define GRPC_API_TRACE_UNWRAP0()
#define GRPC_API_TRACE_UNWRAP1(a) , a
#define GRPC_API_TRACE_UNWRAP2(a, b) , a, b
#define GRPC_API_TRACE_UNWRAP3(a, b, c) , a, b, c
#define GRPC_API_TRACE_UNWRAP4(a, b, c, d) , a, b, c, d
#define GRPC_API_TRACE_UNWRAP5(a, b, c, d, e) , a, b, c, d, e
#define GRPC_API_TRACE_UNWRAP6(a, b, c, d, e, f) , a, b, c, d, e, f
#define GRPC_API_TRACE_UNWRAP7(a, b, c, d, e, f, g) , a, b, c, d, e, f, g
#define GRPC_API_TRACE_UNWRAP8(a, b, c, d, e, f, g, h) , a, b, c, d, e, f, g, h
#define GRPC_API_TRACE_UNWRAP9(a, b, c, d, e, f, g, h, i) \
, a, b, c, d, e, f, g, h, i
#define GRPC_API_TRACE_UNWRAP10(a, b, c, d, e, f, g, h, i, j) \
, a, b, c, d, e, f, g, h, i, j
/* Due to the limitations of C89's preprocessor, the arity of the var-arg list
'nargs' must be specified. */
#define GRPC_API_TRACE(fmt, nargs, args) \
if (grpc_api_trace) { \
gpr_log(GPR_INFO, fmt GRPC_API_TRACE_UNWRAP##nargs args); \
}
#endif /* GRPC_INTERNAL_CORE_SURFACE_API_TRACE_H */

@ -45,6 +45,7 @@
#include "src/core/iomgr/alarm.h" #include "src/core/iomgr/alarm.h"
#include "src/core/profiling/timers.h" #include "src/core/profiling/timers.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/byte_buffer_queue.h" #include "src/core/surface/byte_buffer_queue.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include "src/core/surface/channel.h" #include "src/core/surface/channel.h"
@ -1296,6 +1297,8 @@ void grpc_call_destroy(grpc_call *c) {
grpc_call *parent = c->parent; grpc_call *parent = c->parent;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_call_destroy(c=%p)", 1, (c));
if (parent) { if (parent) {
gpr_mu_lock(&parent->mu); gpr_mu_lock(&parent->mu);
if (c == parent->first_child) { if (c == parent->first_child) {
@ -1324,6 +1327,7 @@ void grpc_call_destroy(grpc_call *c) {
} }
grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved) { 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); GPR_ASSERT(!reserved);
return grpc_call_cancel_with_status(call, GRPC_STATUS_CANCELLED, "Cancelled", return grpc_call_cancel_with_status(call, GRPC_STATUS_CANCELLED, "Cancelled",
NULL); NULL);
@ -1335,6 +1339,10 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call *c,
void *reserved) { void *reserved) {
grpc_call_error r; grpc_call_error r;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
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); GPR_ASSERT(reserved == NULL);
lock(c); lock(c);
r = cancel_with_status(c, status, description); r = cancel_with_status(c, status, description);
@ -1402,6 +1410,7 @@ char *grpc_call_get_peer(grpc_call *call) {
grpc_call_element *elem = CALL_ELEM_FROM_CALL(call, 0); grpc_call_element *elem = CALL_ELEM_FROM_CALL(call, 0);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
char *result = elem->filter->get_peer(&exec_ctx, elem); char *result = elem->filter->get_peer(&exec_ctx, elem);
GRPC_API_TRACE("grpc_call_get_peer(%p)", 1, (call));
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);
return result; return result;
} }
@ -1596,6 +1605,10 @@ grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops,
grpc_call_error error; grpc_call_error error;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE(
"grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, reserved=%p)",
5, (call, ops, (unsigned long)nops, tag, reserved));
if (reserved != NULL) { if (reserved != NULL) {
error = GRPC_CALL_ERROR; error = GRPC_CALL_ERROR;
goto done; goto done;

@ -36,6 +36,8 @@
#include "src/core/channel/channel_stack.h" #include "src/core/channel/channel_stack.h"
#include "src/core/channel/context.h" #include "src/core/channel/context.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/surface_trace.h"
#include <grpc/grpc.h> #include <grpc/grpc.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -128,8 +130,6 @@ grpc_call_stack *grpc_call_get_call_stack(grpc_call *call);
/* Given the top call_element, get the call object. */ /* Given the top call_element, get the call object. */
grpc_call *grpc_call_from_top_element(grpc_call_element *surface_element); grpc_call *grpc_call_from_top_element(grpc_call_element *surface_element);
extern int grpc_trace_batch;
void grpc_call_log_batch(char *file, int line, gpr_log_severity severity, void grpc_call_log_batch(char *file, int line, gpr_log_severity severity,
grpc_call *call, const grpc_op *ops, size_t nops, grpc_call *call, const grpc_op *ops, size_t nops,
void *tag); void *tag);
@ -155,17 +155,17 @@ void grpc_call_context_set(grpc_call *call, grpc_context_index elem,
void *grpc_call_context_get(grpc_call *call, grpc_context_index elem); void *grpc_call_context_get(grpc_call *call, grpc_context_index elem);
#define GRPC_CALL_LOG_BATCH(sev, call, ops, nops, tag) \ #define GRPC_CALL_LOG_BATCH(sev, call, ops, nops, tag) \
if (grpc_trace_batch) grpc_call_log_batch(sev, call, ops, nops, tag) if (grpc_api_trace) grpc_call_log_batch(sev, call, ops, nops, tag)
#define GRPC_SERVER_LOG_REQUEST_CALL(sev, server, call, details, \ #define GRPC_SERVER_LOG_REQUEST_CALL(sev, server, call, details, \
initial_metadata, cq_bound_to_call, \ initial_metadata, cq_bound_to_call, \
cq_for_notifications, tag) \ cq_for_notifications, tag) \
if (grpc_trace_batch) \ if (grpc_api_trace) \
grpc_server_log_request_call(sev, server, call, details, initial_metadata, \ grpc_server_log_request_call(sev, server, call, details, initial_metadata, \
cq_bound_to_call, cq_for_notifications, tag) cq_bound_to_call, cq_for_notifications, tag)
#define GRPC_SERVER_LOG_SHUTDOWN(sev, server, cq, tag) \ #define GRPC_SERVER_LOG_SHUTDOWN(sev, server, cq, tag) \
if (grpc_trace_batch) grpc_server_log_shutdown(sev, server, cq, tag) if (grpc_api_trace) grpc_server_log_shutdown(sev, server, cq, tag)
gpr_uint8 grpc_call_is_client(grpc_call *call); gpr_uint8 grpc_call_is_client(grpc_call *call);

@ -36,11 +36,15 @@
#include <string.h> #include <string.h>
#include "src/core/surface/api_trace.h"
void grpc_call_details_init(grpc_call_details* cd) { void grpc_call_details_init(grpc_call_details* cd) {
GRPC_API_TRACE("grpc_call_details_init(cd=%p)", 1, (cd));
memset(cd, 0, sizeof(*cd)); memset(cd, 0, sizeof(*cd));
} }
void grpc_call_details_destroy(grpc_call_details* cd) { void grpc_call_details_destroy(grpc_call_details* cd) {
GRPC_API_TRACE("grpc_call_details_destroy(cd=%p)", 1, (cd));
gpr_free(cd->method); gpr_free(cd->method);
gpr_free(cd->host); gpr_free(cd->host);
} }

@ -37,8 +37,6 @@
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
#include <grpc/support/string_util.h> #include <grpc/support/string_util.h>
int grpc_trace_batch = 0;
static void add_metadata(gpr_strvec *b, const grpc_metadata *md, size_t count) { static void add_metadata(gpr_strvec *b, const grpc_metadata *md, size_t count) {
size_t i; size_t i;
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {

@ -43,6 +43,7 @@
#include "src/core/client_config/resolver_registry.h" #include "src/core/client_config/resolver_registry.h"
#include "src/core/iomgr/iomgr.h" #include "src/core/iomgr/iomgr.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include "src/core/surface/init.h" #include "src/core/surface/init.h"
@ -184,6 +185,7 @@ grpc_channel *grpc_channel_create_from_filters(
} }
char *grpc_channel_get_target(grpc_channel *channel) { char *grpc_channel_get_target(grpc_channel *channel) {
GRPC_API_TRACE("grpc_channel_get_target(channel=%p)", 1, (channel));
return gpr_strdup(channel->target); return gpr_strdup(channel->target);
} }
@ -213,6 +215,15 @@ grpc_call *grpc_channel_create_call(grpc_channel *channel,
grpc_completion_queue *cq, grpc_completion_queue *cq,
const char *method, const char *host, const char *method, const char *host,
gpr_timespec deadline, void *reserved) { gpr_timespec deadline, void *reserved) {
GRPC_API_TRACE(
"grpc_channel_create_call("
"channel=%p, parent_call=%p, propagation_mask=%x, cq=%p, method=%s, "
"host=%s, "
"deadline=gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
"reserved=%p)",
10, (channel, parent_call, (unsigned)propagation_mask, cq, method, host,
(long)deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
return grpc_channel_create_call_internal( return grpc_channel_create_call_internal(
channel, parent_call, propagation_mask, cq, channel, parent_call, propagation_mask, cq,
@ -230,6 +241,9 @@ grpc_call *grpc_channel_create_call(grpc_channel *channel,
void *grpc_channel_register_call(grpc_channel *channel, const char *method, void *grpc_channel_register_call(grpc_channel *channel, const char *method,
const char *host, void *reserved) { const char *host, void *reserved) {
registered_call *rc = gpr_malloc(sizeof(registered_call)); registered_call *rc = gpr_malloc(sizeof(registered_call));
GRPC_API_TRACE(
"grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)",
4, (channel, method, host, reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
rc->path = grpc_mdelem_from_metadata_strings( rc->path = grpc_mdelem_from_metadata_strings(
channel->metadata_context, GRPC_MDSTR_REF(channel->path_string), channel->metadata_context, GRPC_MDSTR_REF(channel->path_string),
@ -252,6 +266,15 @@ grpc_call *grpc_channel_create_registered_call(
grpc_completion_queue *completion_queue, void *registered_call_handle, grpc_completion_queue *completion_queue, void *registered_call_handle,
gpr_timespec deadline, void *reserved) { gpr_timespec deadline, void *reserved) {
registered_call *rc = registered_call_handle; registered_call *rc = registered_call_handle;
GRPC_API_TRACE(
"grpc_channel_create_registered_call("
"channel=%p, parent_call=%p, propagation_mask=%x, completion_queue=%p, "
"registered_call_handle=%p, "
"deadline=gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
"reserved=%p)",
9, (channel, parent_call, (unsigned)propagation_mask, completion_queue,
registered_call_handle, (long)deadline.tv_sec, deadline.tv_nsec,
(int)deadline.clock_type, reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
return grpc_channel_create_call_internal( return grpc_channel_create_call_internal(
channel, parent_call, propagation_mask, completion_queue, channel, parent_call, propagation_mask, completion_queue,
@ -317,6 +340,7 @@ void grpc_channel_destroy(grpc_channel *channel) {
grpc_transport_op op; grpc_transport_op op;
grpc_channel_element *elem; grpc_channel_element *elem;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (channel));
memset(&op, 0, sizeof(op)); memset(&op, 0, sizeof(op));
op.disconnect = 1; op.disconnect = 1;
elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0); elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0);

@ -38,6 +38,7 @@
#include "src/core/channel/client_channel.h" #include "src/core/channel/client_channel.h"
#include "src/core/iomgr/alarm.h" #include "src/core/iomgr/alarm.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/completion_queue.h" #include "src/core/surface/completion_queue.h"
grpc_connectivity_state grpc_channel_check_connectivity_state( grpc_connectivity_state grpc_channel_check_connectivity_state(
@ -47,6 +48,9 @@ grpc_connectivity_state grpc_channel_check_connectivity_state(
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel)); grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_connectivity_state state; 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) { if (client_channel_elem->filter != &grpc_client_channel_filter) {
gpr_log(GPR_ERROR, gpr_log(GPR_ERROR,
"grpc_channel_check_connectivity_state called on something that is " "grpc_channel_check_connectivity_state called on something that is "
@ -175,6 +179,14 @@ void grpc_channel_watch_connectivity_state(
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
state_watcher *w = gpr_malloc(sizeof(*w)); state_watcher *w = gpr_malloc(sizeof(*w));
GRPC_API_TRACE(
"grpc_channel_watch_connectivity_state("
"channel=%p, last_observed_state=%d, "
"deadline=gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
"cq=%p, tag=%p)",
7, (channel, (int)last_observed_state, (long)deadline.tv_sec,
deadline.tv_nsec, (int)deadline.clock_type, cq, tag));
grpc_cq_begin_op(cq); grpc_cq_begin_op(cq);
gpr_mu_init(&w->mu); gpr_mu_init(&w->mu);

@ -45,6 +45,7 @@
#include "src/core/channel/http_client_filter.h" #include "src/core/channel/http_client_filter.h"
#include "src/core/client_config/resolver_registry.h" #include "src/core/client_config/resolver_registry.h"
#include "src/core/iomgr/tcp_client.h" #include "src/core/iomgr/tcp_client.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/channel.h" #include "src/core/surface/channel.h"
#include "src/core/transport/chttp2_transport.h" #include "src/core/transport/chttp2_transport.h"
@ -184,6 +185,9 @@ grpc_channel *grpc_insecure_channel_create(const char *target,
grpc_mdctx *mdctx = grpc_mdctx_create(); grpc_mdctx *mdctx = grpc_mdctx_create();
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
size_t n = 0; size_t n = 0;
GRPC_API_TRACE(
"grpc_insecure_channel_create(target=%p, args=%p, reserved=%p)", 3,
(target, args, reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
if (grpc_channel_args_is_census_enabled(args)) { if (grpc_channel_args_is_census_enabled(args)) {
filters[n++] = &grpc_client_census_filter; filters[n++] = &grpc_client_census_filter;

@ -38,6 +38,7 @@
#include "src/core/iomgr/pollset.h" #include "src/core/iomgr/pollset.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include "src/core/surface/event_string.h" #include "src/core/surface/event_string.h"
#include "src/core/surface/surface_trace.h" #include "src/core/surface/surface_trace.h"
@ -75,6 +76,7 @@ static void on_pollset_destroy_done(grpc_exec_ctx *exec_ctx, void *cc,
grpc_completion_queue *grpc_completion_queue_create(void *reserved) { grpc_completion_queue *grpc_completion_queue_create(void *reserved) {
grpc_completion_queue *cc = gpr_malloc(sizeof(grpc_completion_queue)); grpc_completion_queue *cc = gpr_malloc(sizeof(grpc_completion_queue));
GRPC_API_TRACE("grpc_completion_queue_create(reserved=%p)", 1, (reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
memset(cc, 0, sizeof(*cc)); memset(cc, 0, sizeof(*cc));
/* Initial ref is dropped by grpc_completion_queue_shutdown */ /* Initial ref is dropped by grpc_completion_queue_shutdown */
@ -182,6 +184,13 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
gpr_timespec now; gpr_timespec now;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE(
"grpc_completion_queue_next("
"cc=%p, "
"deadline=gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
"reserved=%p)",
5, (cc, (long)deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC); deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC);
@ -259,6 +268,13 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
int first_loop = 1; int first_loop = 1;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE(
"grpc_completion_queue_pluck("
"cc=%p, tag=%p, "
"deadline=gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
"reserved=%p)",
6, (cc, tag, (long)deadline.tv_sec, deadline.tv_nsec,
(int)deadline.clock_type, reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC); deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC);
@ -324,6 +340,7 @@ done:
to zero here, then enter shutdown mode and wake up any waiters */ to zero here, then enter shutdown mode and wake up any waiters */
void grpc_completion_queue_shutdown(grpc_completion_queue *cc) { void grpc_completion_queue_shutdown(grpc_completion_queue *cc) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_completion_queue_shutdown(cc=%p)", 1, (cc));
gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset)); gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset));
if (cc->shutdown_called) { if (cc->shutdown_called) {
gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset)); gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
@ -343,6 +360,7 @@ void grpc_completion_queue_shutdown(grpc_completion_queue *cc) {
} }
void grpc_completion_queue_destroy(grpc_completion_queue *cc) { void grpc_completion_queue_destroy(grpc_completion_queue *cc) {
GRPC_API_TRACE("grpc_completion_queue_destroy(cc=%p)", 1, (cc));
grpc_completion_queue_shutdown(cc); grpc_completion_queue_shutdown(cc);
GRPC_CQ_INTERNAL_UNREF(cc, "destroy"); GRPC_CQ_INTERNAL_UNREF(cc, "destroy");
} }

@ -49,6 +49,7 @@
#include "src/core/debug/trace.h" #include "src/core/debug/trace.h"
#include "src/core/iomgr/iomgr.h" #include "src/core/iomgr/iomgr.h"
#include "src/core/profiling/timers.h" #include "src/core/profiling/timers.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include "src/core/surface/init.h" #include "src/core/surface/init.h"
#include "src/core/surface/surface_trace.h" #include "src/core/surface/surface_trace.h"
@ -75,6 +76,8 @@ static grpc_plugin g_all_of_the_plugins[MAX_PLUGINS];
static int g_number_of_plugins = 0; static int g_number_of_plugins = 0;
void grpc_register_plugin(void (*init)(void), void (*destroy)(void)) { void grpc_register_plugin(void (*init)(void), void (*destroy)(void)) {
GRPC_API_TRACE("grpc_register_plugin(init=%lx, destroy=%lx)", 2,
((unsigned long)init, (unsigned long)destroy));
GPR_ASSERT(g_number_of_plugins != MAX_PLUGINS); GPR_ASSERT(g_number_of_plugins != MAX_PLUGINS);
g_all_of_the_plugins[g_number_of_plugins].init = init; g_all_of_the_plugins[g_number_of_plugins].init = init;
g_all_of_the_plugins[g_number_of_plugins].destroy = destroy; g_all_of_the_plugins[g_number_of_plugins].destroy = destroy;
@ -98,11 +101,10 @@ void grpc_init(void) {
#ifdef GPR_POSIX_SOCKET #ifdef GPR_POSIX_SOCKET
grpc_register_resolver_type(grpc_unix_resolver_factory_create()); grpc_register_resolver_type(grpc_unix_resolver_factory_create());
#endif #endif
grpc_register_tracer("api", &grpc_api_trace);
grpc_register_tracer("channel", &grpc_trace_channel); grpc_register_tracer("channel", &grpc_trace_channel);
grpc_register_tracer("surface", &grpc_surface_trace);
grpc_register_tracer("http", &grpc_http_trace); grpc_register_tracer("http", &grpc_http_trace);
grpc_register_tracer("flowctl", &grpc_flowctl_trace); grpc_register_tracer("flowctl", &grpc_flowctl_trace);
grpc_register_tracer("batch", &grpc_trace_batch);
grpc_register_tracer("connectivity_state", &grpc_connectivity_state_trace); grpc_register_tracer("connectivity_state", &grpc_connectivity_state_trace);
grpc_security_pre_init(); grpc_security_pre_init();
grpc_iomgr_init(); grpc_iomgr_init();
@ -121,10 +123,12 @@ void grpc_init(void) {
} }
} }
gpr_mu_unlock(&g_init_mu); gpr_mu_unlock(&g_init_mu);
GRPC_API_TRACE("grpc_init(void)", 0, ());
} }
void grpc_shutdown(void) { void grpc_shutdown(void) {
int i; int i;
GRPC_API_TRACE("grpc_shutdown(void)", 0, ());
gpr_mu_lock(&g_init_mu); gpr_mu_lock(&g_init_mu);
if (--g_initializations == 0) { if (--g_initializations == 0) {
grpc_iomgr_shutdown(); grpc_iomgr_shutdown();

@ -37,6 +37,7 @@
#include "src/core/channel/channel_stack.h" #include "src/core/channel/channel_stack.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/channel.h" #include "src/core/surface/channel.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
@ -151,6 +152,10 @@ grpc_channel *grpc_lame_client_channel_create(const char *target,
channel = grpc_channel_create_from_filters(&exec_ctx, target, filters, 1, channel = grpc_channel_create_from_filters(&exec_ctx, target, filters, 1,
NULL, grpc_mdctx_create(), 1); NULL, grpc_mdctx_create(), 1);
elem = grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0); 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, "
"error_message=%s)",
3, (target, (int)error_code, error_message));
GPR_ASSERT(elem->filter == &lame_filter); GPR_ASSERT(elem->filter == &lame_filter);
chand = (channel_data *)elem->channel_data; chand = (channel_data *)elem->channel_data;
chand->error_code = error_code; chand->error_code = error_code;

@ -36,10 +36,14 @@
#include <string.h> #include <string.h>
#include "src/core/surface/api_trace.h"
void grpc_metadata_array_init(grpc_metadata_array* array) { void grpc_metadata_array_init(grpc_metadata_array* array) {
GRPC_API_TRACE("grpc_metadata_array_init(array=%p)", 1, (array));
memset(array, 0, sizeof(*array)); memset(array, 0, sizeof(*array));
} }
void grpc_metadata_array_destroy(grpc_metadata_array* array) { void grpc_metadata_array_destroy(grpc_metadata_array* array) {
GRPC_API_TRACE("grpc_metadata_array_destroy(array=%p)", 1, (array));
gpr_free(array->metadata); gpr_free(array->metadata);
} }

@ -47,6 +47,7 @@
#include "src/core/iomgr/tcp_client.h" #include "src/core/iomgr/tcp_client.h"
#include "src/core/security/auth_filters.h" #include "src/core/security/auth_filters.h"
#include "src/core/security/credentials.h" #include "src/core/security/credentials.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/channel.h" #include "src/core/surface/channel.h"
#include "src/core/transport/chttp2_transport.h" #include "src/core/transport/chttp2_transport.h"
#include "src/core/tsi/transport_security_interface.h" #include "src/core/tsi/transport_security_interface.h"
@ -246,7 +247,12 @@ grpc_channel *grpc_secure_channel_create(grpc_credentials *creds,
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
size_t n = 0; size_t n = 0;
GRPC_API_TRACE(
"grpc_secure_channel_create(creds=%p, target=%s, args=%p, "
"reserved=%p)",
4, (creds, target, args, reserved));
GPR_ASSERT(reserved == NULL); GPR_ASSERT(reserved == NULL);
if (grpc_find_security_connector_in_args(args) != NULL) { if (grpc_find_security_connector_in_args(args) != NULL) {
gpr_log(GPR_ERROR, "Cannot set security context in channel args."); gpr_log(GPR_ERROR, "Cannot set security context in channel args.");
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);

@ -48,6 +48,7 @@
#include "src/core/iomgr/iomgr.h" #include "src/core/iomgr/iomgr.h"
#include "src/core/support/stack_lockfree.h" #include "src/core/support/stack_lockfree.h"
#include "src/core/support/string.h" #include "src/core/support/string.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/call.h" #include "src/core/surface/call.h"
#include "src/core/surface/channel.h" #include "src/core/surface/channel.h"
#include "src/core/surface/completion_queue.h" #include "src/core/surface/completion_queue.h"
@ -776,6 +777,9 @@ void grpc_server_register_completion_queue(grpc_server *server,
grpc_completion_queue *cq, grpc_completion_queue *cq,
void *reserved) { void *reserved) {
size_t i, n; size_t i, n;
GRPC_API_TRACE(
"grpc_server_register_completion_queue(server=%p, cq=%p, reserved=%p)", 3,
(server, cq, reserved));
GPR_ASSERT(!reserved); GPR_ASSERT(!reserved);
for (i = 0; i < server->cq_count; i++) { for (i = 0; i < server->cq_count; i++) {
if (server->cqs[i] == cq) return; if (server->cqs[i] == cq) return;
@ -854,6 +858,8 @@ static int streq(const char *a, const char *b) {
void *grpc_server_register_method(grpc_server *server, const char *method, void *grpc_server_register_method(grpc_server *server, const char *method,
const char *host) { const char *host) {
registered_method *m; registered_method *m;
GRPC_API_TRACE("grpc_server_register_method(server=%p, method=%s, host=%s)",
3, (server, method, host));
if (!method) { if (!method) {
gpr_log(GPR_ERROR, gpr_log(GPR_ERROR,
"grpc_server_register_method method string cannot be NULL"); "grpc_server_register_method method string cannot be NULL");
@ -881,6 +887,8 @@ void grpc_server_start(grpc_server *server) {
size_t i; size_t i;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_server_start(server=%p)", 1, (server));
server->pollsets = gpr_malloc(sizeof(grpc_pollset *) * server->cq_count); server->pollsets = gpr_malloc(sizeof(grpc_pollset *) * server->cq_count);
for (i = 0; i < server->cq_count; i++) { for (i = 0; i < server->cq_count; i++) {
server->pollsets[i] = grpc_cq_pollset(server->cqs[i]); server->pollsets[i] = grpc_cq_pollset(server->cqs[i]);
@ -1011,6 +1019,9 @@ void grpc_server_shutdown_and_notify(grpc_server *server,
channel_broadcaster broadcaster; channel_broadcaster broadcaster;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_server_shutdown_and_notify(server=%p, cq=%p, tag=%p)", 3,
(server, cq, tag));
GRPC_SERVER_LOG_SHUTDOWN(GPR_INFO, server, cq, tag); GRPC_SERVER_LOG_SHUTDOWN(GPR_INFO, server, cq, tag);
/* lock, and gather up some stuff to do */ /* lock, and gather up some stuff to do */
@ -1063,6 +1074,8 @@ void grpc_server_cancel_all_calls(grpc_server *server) {
channel_broadcaster broadcaster; channel_broadcaster broadcaster;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_server_cancel_all_calls(server=%p)", 1, (server));
gpr_mu_lock(&server->mu_global); gpr_mu_lock(&server->mu_global);
channel_broadcaster_init(server, &broadcaster); channel_broadcaster_init(server, &broadcaster);
gpr_mu_unlock(&server->mu_global); gpr_mu_unlock(&server->mu_global);
@ -1075,6 +1088,8 @@ void grpc_server_destroy(grpc_server *server) {
listener *l; listener *l;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_server_destroy(server=%p)", 1, (server));
gpr_mu_lock(&server->mu_global); gpr_mu_lock(&server->mu_global);
GPR_ASSERT(gpr_atm_acq_load(&server->shutdown_flag) || !server->listeners); GPR_ASSERT(gpr_atm_acq_load(&server->shutdown_flag) || !server->listeners);
GPR_ASSERT(server->listeners_destroyed == num_listeners(server)); GPR_ASSERT(server->listeners_destroyed == num_listeners(server));
@ -1169,6 +1184,12 @@ grpc_call_error grpc_server_request_call(
grpc_call_error error; grpc_call_error error;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
requested_call *rc = gpr_malloc(sizeof(*rc)); requested_call *rc = gpr_malloc(sizeof(*rc));
GRPC_API_TRACE(
"grpc_server_request_call("
"server=%p, call=%p, details=%p, initial_metadata=%p, "
"cq_bound_to_call=%p, cq_for_notification=%p, tag%p)",
7, (server, call, details, initial_metadata, cq_bound_to_call,
cq_for_notification, tag));
GRPC_SERVER_LOG_REQUEST_CALL(GPR_INFO, server, call, details, GRPC_SERVER_LOG_REQUEST_CALL(GPR_INFO, server, call, details,
initial_metadata, cq_bound_to_call, initial_metadata, cq_bound_to_call,
cq_for_notification, tag); cq_for_notification, tag);
@ -1202,6 +1223,13 @@ grpc_call_error grpc_server_request_registered_call(
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
requested_call *rc = gpr_malloc(sizeof(*rc)); requested_call *rc = gpr_malloc(sizeof(*rc));
registered_method *rm = rmp; registered_method *rm = rmp;
GRPC_API_TRACE(
"grpc_server_request_registered_call("
"server=%p, rmp=%p, call=%p, deadline=%p, initial_metadata=%p, "
"optional_payload=%p, cq_bound_to_call=%p, cq_for_notification=%p, "
"tag=%p)",
9, (server, rmp, call, deadline, initial_metadata, optional_payload,
cq_bound_to_call, cq_for_notification, tag));
if (!grpc_cq_is_server_cq(cq_for_notification)) { if (!grpc_cq_is_server_cq(cq_for_notification)) {
gpr_free(rc); gpr_free(rc);
error = GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE; error = GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE;

@ -36,6 +36,7 @@
#include "src/core/channel/http_server_filter.h" #include "src/core/channel/http_server_filter.h"
#include "src/core/iomgr/resolve_address.h" #include "src/core/iomgr/resolve_address.h"
#include "src/core/iomgr/tcp_server.h" #include "src/core/iomgr/tcp_server.h"
#include "src/core/surface/api_trace.h"
#include "src/core/surface/server.h" #include "src/core/surface/server.h"
#include "src/core/transport/chttp2_transport.h" #include "src/core/transport/chttp2_transport.h"
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
@ -92,6 +93,9 @@ int grpc_server_add_insecure_http2_port(grpc_server *server, const char *addr) {
int port_temp; int port_temp;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
(server, addr));
resolved = grpc_blocking_resolve_address(addr, "http"); resolved = grpc_blocking_resolve_address(addr, "http");
if (!resolved) { if (!resolved) {
goto error; goto error;

@ -32,13 +32,14 @@
*/ */
#include <grpc/grpc.h> #include <grpc/grpc.h>
#include "src/core/surface/api_trace.h"
#include "src/core/surface/completion_queue.h" #include "src/core/surface/completion_queue.h"
#include "src/core/surface/server.h" #include "src/core/surface/server.h"
#include "src/core/channel/compress_filter.h" #include "src/core/channel/compress_filter.h"
grpc_server *grpc_server_create(const grpc_channel_args *args, void *reserved) { grpc_server *grpc_server_create(const grpc_channel_args *args, void *reserved) {
const grpc_channel_filter *filters[] = {&grpc_compress_filter}; const grpc_channel_filter *filters[] = {&grpc_compress_filter};
(void)reserved; GRPC_API_TRACE("grpc_server_create(%p, %p)", 2, (args, reserved));
return grpc_server_create_from_filters(filters, GPR_ARRAY_SIZE(filters), return grpc_server_create_from_filters(filters, GPR_ARRAY_SIZE(filters),
args); args);
} }

@ -35,12 +35,11 @@
#define GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H #define GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H
#include "src/core/debug/trace.h" #include "src/core/debug/trace.h"
#include "src/core/surface/api_trace.h"
#include <grpc/support/log.h> #include <grpc/support/log.h>
extern int grpc_surface_trace;
#define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \ #define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \
if (grpc_surface_trace) { \ if (grpc_api_trace) { \
char *_ev = grpc_event_string(event); \ char *_ev = grpc_event_string(event); \
gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, _ev); \ gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, _ev); \
gpr_free(_ev); \ gpr_free(_ev); \

@ -36,6 +36,4 @@
#include <grpc/grpc.h> #include <grpc/grpc.h>
const char *grpc_version_string(void) { const char *grpc_version_string(void) { return "0.11.0.0"; }
return "0.11.0.0";
}

@ -1136,7 +1136,7 @@ static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, int success) {
grpc_chttp2_publish_reads(exec_ctx, &t->global, &t->parsing); grpc_chttp2_publish_reads(exec_ctx, &t->global, &t->parsing);
t->parsing_active = 0; t->parsing_active = 0;
} }
if (!success || i != t->read_buffer.count) { if (!success || i != t->read_buffer.count || t->closed) {
drop_connection(exec_ctx, t); drop_connection(exec_ctx, t);
read_error_locked(exec_ctx, t); read_error_locked(exec_ctx, t);
} else if (!t->closed) { } else if (!t->closed) {

@ -38,6 +38,5 @@
#include <grpc/grpc.h> #include <grpc/grpc.h>
const char *grpc_version_string(void) { const char *grpc_version_string(void) { \
return "${settings.version.major}.${settings.version.minor}.${settings.version.micro}.${settings.version.build}"; return "${settings.version.major}.${settings.version.minor}.${settings.version.micro}.${settings.version.build}"; }
}

@ -213,15 +213,25 @@ static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg,
size_t i; size_t i;
int port = 0; int port = 0;
portreq *pr = arg; portreq *pr = arg;
int failed = 0;
if (!response) {
failed = 1;
gpr_log(GPR_DEBUG,
"failed port pick from server: retrying [response=NULL]");
} else if (response->status != 200) {
failed = 1;
gpr_log(GPR_DEBUG, "failed port pick from server: status=%d",
response->status);
}
if (!response || response->status != 200) { if (failed) {
grpc_httpcli_request req; grpc_httpcli_request req;
memset(&req, 0, sizeof(req)); memset(&req, 0, sizeof(req));
GPR_ASSERT(pr->retries < 10); GPR_ASSERT(pr->retries < 10);
pr->retries++; pr->retries++;
req.host = pr->server; req.host = pr->server;
req.path = "/get"; req.path = "/get";
gpr_log(GPR_DEBUG, "failed port pick from server: retrying");
sleep(1); sleep(1);
grpc_httpcli_get(exec_ctx, pr->ctx, &pr->pollset, &req, grpc_httpcli_get(exec_ctx, pr->ctx, &pr->pollset, &req,
GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10), got_port_from_server, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10), got_port_from_server,

@ -683,10 +683,14 @@ TEST_P(End2endTest, RequestStreamServerEarlyCancelTest) {
auto stream = stub_->RequestStream(&context, &response); auto stream = stub_->RequestStream(&context, &response);
request.set_message("hello"); request.set_message("hello");
int send_messages = 20; int send_messages = 20;
while (send_messages > 0) { while (send_messages > 10) {
EXPECT_TRUE(stream->Write(request)); EXPECT_TRUE(stream->Write(request));
send_messages--; send_messages--;
} }
while (send_messages > 0) {
stream->Write(request);
send_messages--;
}
stream->WritesDone(); stream->WritesDone();
Status s = stream->Finish(); Status s = stream->Finish();
EXPECT_EQ(s.error_code(), StatusCode::CANCELLED); EXPECT_EQ(s.error_code(), StatusCode::CANCELLED);

@ -34,6 +34,7 @@ import os
import shutil import shutil
import sys import sys
import tempfile import tempfile
import multiprocessing
sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '..', 'run_tests')) sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '..', 'run_tests'))
assert sys.argv[1:], 'run generate_projects.sh instead of this directly' assert sys.argv[1:], 'run generate_projects.sh instead of this directly'
@ -55,7 +56,7 @@ for root, dirs, files in os.walk('templates'):
out = out_dir + '/' + os.path.splitext(f)[0] out = out_dir + '/' + os.path.splitext(f)[0]
if not os.path.exists(out_dir): if not os.path.exists(out_dir):
os.makedirs(out_dir) os.makedirs(out_dir)
cmd = ['python', 'tools/buildgen/mako_renderer.py'] cmd = ['python2.7', 'tools/buildgen/mako_renderer.py']
for plugin in plugins: for plugin in plugins:
cmd.append('-p') cmd.append('-p')
cmd.append(plugin) cmd.append(plugin)
@ -73,13 +74,13 @@ for root, dirs, files in os.walk('templates'):
cmd.append(root + '/' + f) cmd.append(root + '/' + f)
jobs.append(jobset.JobSpec(cmd, shortname=out)) jobs.append(jobset.JobSpec(cmd, shortname=out))
jobset.run(jobs) jobset.run(jobs, maxjobs=multiprocessing.cpu_count())
if test is not None: if test is not None:
for s, g in test.iteritems(): for s, g in test.iteritems():
if os.path.isfile(g): if os.path.isfile(g):
assert(0 == os.system('diff %s %s' % (s, g))) assert 0 == os.system('diff %s %s' % (s, g)), s
os.unlink(g) os.unlink(g)
else: else:
assert(0 == os.system('diff -r %s %s' % (s, g))) assert 0 == os.system('diff -r %s %s' % (s, g)), s
shutil.rmtree(g, ignore_errors=True) shutil.rmtree(g, ignore_errors=True)

@ -855,6 +855,7 @@ src/core/json/json_writer.h \
src/core/profiling/timers.h \ src/core/profiling/timers.h \
src/core/statistics/census_interface.h \ src/core/statistics/census_interface.h \
src/core/statistics/census_rpc_stats.h \ src/core/statistics/census_rpc_stats.h \
src/core/surface/api_trace.h \
src/core/surface/byte_buffer_queue.h \ src/core/surface/byte_buffer_queue.h \
src/core/surface/call.h \ src/core/surface/call.h \
src/core/surface/channel.h \ src/core/surface/channel.h \
@ -991,6 +992,7 @@ src/core/json/json_string.c \
src/core/json/json_writer.c \ src/core/json/json_writer.c \
src/core/profiling/basic_timers.c \ src/core/profiling/basic_timers.c \
src/core/profiling/stap_timers.c \ src/core/profiling/stap_timers.c \
src/core/surface/api_trace.c \
src/core/surface/byte_buffer.c \ src/core/surface/byte_buffer.c \
src/core/surface/byte_buffer_queue.c \ src/core/surface/byte_buffer_queue.c \
src/core/surface/byte_buffer_reader.c \ src/core/surface/byte_buffer_reader.c \
@ -1008,7 +1010,6 @@ src/core/surface/metadata_array.c \
src/core/surface/server.c \ src/core/surface/server.c \
src/core/surface/server_chttp2.c \ src/core/surface/server_chttp2.c \
src/core/surface/server_create.c \ src/core/surface/server_create.c \
src/core/surface/surface_trace.c \
src/core/surface/version.c \ src/core/surface/version.c \
src/core/transport/chttp2/alpn.c \ src/core/transport/chttp2/alpn.c \
src/core/transport/chttp2/bin_encoder.c \ src/core/transport/chttp2/bin_encoder.c \

@ -74,6 +74,10 @@ then
docker cp "$DOCKER_CID:/var/local/git/grpc/$XML_REPORT" $git_root docker cp "$DOCKER_CID:/var/local/git/grpc/$XML_REPORT" $git_root
fi fi
docker cp "$DOCKER_CID:/var/local/git/grpc/reports.zip" $git_root || true
unzip $git_root/reports.zip -d $git_root || true
rm -f reports.zip
# remove the container, possibly killing it first # remove the container, possibly killing it first
docker rm -f $DOCKER_CID || true docker rm -f $DOCKER_CID || true

@ -42,4 +42,18 @@ git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
nvm use 0.12 nvm use 0.12
rvm use ruby-2.1 rvm use ruby-2.1
mkdir -p reports
$RUN_TESTS_COMMAND $RUN_TESTS_COMMAND
cd reports
echo '<html><head></head><body>' > index.html
find . -maxdepth 1 -mindepth 1 -type d | sort | while read d ; do
d=${d#*/}
n=${d//_/ }
echo "<a href='$d/index.html'>$n</a><br />" >> index.html
done
echo '</body></html>' >> index.html
cd ..
zip -r reports.zip reports

@ -0,0 +1,36 @@
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FROM golang:1.4
# Using login shell removes Go from path, so we add it.
RUN ln -s /usr/src/go/bin/go /usr/local/bin
# Define the default command.
CMD ["bash"]

@ -0,0 +1,50 @@
#!/bin/bash
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Builds Go interop server and client in a base image.
set -e
# Clone just the grpc-go source code without any dependencies.
# We are cloning from a local git repo that contains the right revision
# to test instead of using "go get" to download from Github directly.
git clone --recursive /var/local/jenkins/grpc-go src/gooogle.golang.org/grpc
# Get dependencies from GitHub
# NOTE: once grpc-go dependencies change, this needs to be updated manually
# but we don't expect this to happen any time soon.
go get github.com/golang/protobuf/proto
go get golang.org/x/net/context
go get golang.org/x/net/trace
go get golang.org/x/oauth2
go get google.golang.org/cloud
# Build the interop client and server
(cd src/google.golang.org/grpc/interop/client && go install)
(cd src/google.golang.org/grpc/interop/server && go install)

@ -61,8 +61,9 @@ _CLOUD_TO_CLOUD_BASE_ARGS = [
# supported by C core SslCredentials instead. # supported by C core SslCredentials instead.
_SSL_CERT_ENV = { 'SSL_CERT_FILE':'/usr/local/share/grpc/roots.pem' } _SSL_CERT_ENV = { 'SSL_CERT_FILE':'/usr/local/share/grpc/roots.pem' }
# TODO(jtatttermusch) unify usage of --use_tls and --use_tls=true # TODO(jtattermusch) unify usage of --use_tls and --use_tls=true
# TODO(jtatttermusch) unify usage of --use_prod_roots and --use_test_ca # TODO(jtattermusch) unify usage of --use_prod_roots and --use_test_ca
# TODO(jtattermusch) go uses --tls_ca_file instead of --use_test_ca
class CXXLanguage: class CXXLanguage:
@ -140,6 +141,32 @@ class JavaLanguage:
return 'java' return 'java'
class GoLanguage:
def __init__(self):
self.client_cmdline_base = ['go', 'run', 'client.go']
# TODO: this relies on running inside docker
self.client_cwd = '/go/src/google.golang.org/grpc/interop/client'
self.server_cwd = '/go/src/google.golang.org/grpc/interop/server'
def cloud_to_prod_args(self):
return (self.client_cmdline_base + _CLOUD_TO_PROD_BASE_ARGS +
['--use_tls=true', '--tls_ca_file=""'])
def cloud_to_cloud_args(self):
return (self.client_cmdline_base + _CLOUD_TO_CLOUD_BASE_ARGS +
['--use_tls=true'])
def cloud_to_prod_env(self):
return None
def server_args(self):
return ['go', 'run', 'server.go', '--use_tls=true']
def __str__(self):
return 'go'
class NodeLanguage: class NodeLanguage:
def __init__(self): def __init__(self):
@ -215,6 +242,7 @@ class RubyLanguage:
_LANGUAGES = { _LANGUAGES = {
'c++' : CXXLanguage(), 'c++' : CXXLanguage(),
'csharp' : CSharpLanguage(), 'csharp' : CSharpLanguage(),
'go' : GoLanguage(),
'java' : JavaLanguage(), 'java' : JavaLanguage(),
'node' : NodeLanguage(), 'node' : NodeLanguage(),
'php' : PHPLanguage(), 'php' : PHPLanguage(),
@ -223,7 +251,7 @@ _LANGUAGES = {
# languages supported as cloud_to_cloud servers # languages supported as cloud_to_cloud servers
# TODO(jtattermusch): enable other languages as servers as well # TODO(jtattermusch): enable other languages as servers as well
_SERVERS = ['c++', 'node', 'csharp', 'java'] _SERVERS = ['c++', 'node', 'csharp', 'java', 'go']
# TODO(jtattermusch): add empty_stream once PHP starts supporting it. # TODO(jtattermusch): add empty_stream once PHP starts supporting it.
# TODO(jtattermusch): add timeout_on_sleeping_server once java starts supporting it. # TODO(jtattermusch): add timeout_on_sleeping_server once java starts supporting it.

@ -43,13 +43,13 @@ export LD_LIBRARY_PATH=$root/libs/$CONFIG
if [ "$CONFIG" = "gcov" ] if [ "$CONFIG" = "gcov" ]
then then
./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- \ ./node_modules/.bin/istanbul cover --dir ../../reports/node_coverage \
--timeout 8000 ./node_modules/.bin/_mocha -- --timeout 8000
cd build cd build
gcov Release/obj.target/grpc/ext/*.o gcov Release/obj.target/grpc/ext/*.o
lcov --base-directory . --directory . -c -o coverage.info lcov --base-directory . --directory . -c -o coverage.info
genhtml -o ../ext_coverage --num-spaces 2 -t 'Node gRPC test coverage' \ genhtml -o ../../../reports/node_ext_coverage --num-spaces 2 \
coverage.info -t 'Node gRPC test coverage' coverage.info
else else
./node_modules/mocha/bin/mocha --timeout 8000 ./node_modules/mocha/bin/mocha --timeout 8000
fi fi

@ -715,20 +715,24 @@ def _start_port_server(port_server_port):
try: try:
version = urllib2.urlopen('http://localhost:%d/version' % port_server_port, version = urllib2.urlopen('http://localhost:%d/version' % port_server_port,
timeout=1).read() timeout=1).read()
print 'detected port server running'
running = True running = True
except Exception: except Exception:
print 'failed to detect port server: %s' % sys.exc_info()[0]
running = False running = False
if running: if running:
with open('tools/run_tests/port_server.py') as f: with open('tools/run_tests/port_server.py') as f:
current_version = hashlib.sha1(f.read()).hexdigest() current_version = hashlib.sha1(f.read()).hexdigest()
running = (version == current_version) running = (version == current_version)
if not running: if not running:
print 'port_server version mismatch: killing the old one'
urllib2.urlopen('http://localhost:%d/quit' % port_server_port).read() urllib2.urlopen('http://localhost:%d/quit' % port_server_port).read()
time.sleep(1) time.sleep(1)
if not running: if not running:
print 'starting port_server'
port_log = open('portlog.txt', 'w') port_log = open('portlog.txt', 'w')
port_server = subprocess.Popen( port_server = subprocess.Popen(
['python', 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port], [sys.executable, 'tools/run_tests/port_server.py', '-p', '%d' % port_server_port],
stderr=subprocess.STDOUT, stderr=subprocess.STDOUT,
stdout=port_log) stdout=port_log)
# ensure port server is up # ensure port server is up
@ -737,7 +741,7 @@ def _start_port_server(port_server_port):
if waits > 10: if waits > 10:
port_server.kill() port_server.kill()
if port_server.poll() is not None: if port_server.poll() is not None:
print "port_server failed to start" print 'port_server failed to start'
port_log = open('portlog.txt', 'r').read() port_log = open('portlog.txt', 'r').read()
print port_log print port_log
sys.exit(1) sys.exit(1)
@ -746,11 +750,11 @@ def _start_port_server(port_server_port):
timeout=1).read() timeout=1).read()
break break
except socket.timeout: except socket.timeout:
print "waiting for port_server" print 'waiting for port_server: timeout'
time.sleep(0.5) time.sleep(0.5)
waits += 1 waits += 1
except urllib2.URLError: except urllib2.URLError:
print "waiting for port_server" print 'waiting for port_server: urlerror'
time.sleep(0.5) time.sleep(0.5)
waits += 1 waits += 1
except: except:

@ -12362,6 +12362,7 @@
"src/core/security/security_context.h", "src/core/security/security_context.h",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h", "src/core/surface/call.h",
"src/core/surface/channel.h", "src/core/surface/channel.h",
@ -12596,6 +12597,8 @@
"src/core/security/server_secure_chttp2.c", "src/core/security/server_secure_chttp2.c",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.c",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer.c",
"src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.c",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
@ -12622,7 +12625,6 @@
"src/core/surface/server.h", "src/core/surface/server.h",
"src/core/surface/server_chttp2.c", "src/core/surface/server_chttp2.c",
"src/core/surface/server_create.c", "src/core/surface/server_create.c",
"src/core/surface/surface_trace.c",
"src/core/surface/surface_trace.h", "src/core/surface/surface_trace.h",
"src/core/surface/version.c", "src/core/surface/version.c",
"src/core/transport/chttp2/alpn.c", "src/core/transport/chttp2/alpn.c",
@ -12856,6 +12858,7 @@
"src/core/profiling/timers.h", "src/core/profiling/timers.h",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h", "src/core/surface/call.h",
"src/core/surface/channel.h", "src/core/surface/channel.h",
@ -13060,6 +13063,8 @@
"src/core/profiling/timers.h", "src/core/profiling/timers.h",
"src/core/statistics/census_interface.h", "src/core/statistics/census_interface.h",
"src/core/statistics/census_rpc_stats.h", "src/core/statistics/census_rpc_stats.h",
"src/core/surface/api_trace.c",
"src/core/surface/api_trace.h",
"src/core/surface/byte_buffer.c", "src/core/surface/byte_buffer.c",
"src/core/surface/byte_buffer_queue.c", "src/core/surface/byte_buffer_queue.c",
"src/core/surface/byte_buffer_queue.h", "src/core/surface/byte_buffer_queue.h",
@ -13085,7 +13090,6 @@
"src/core/surface/server.h", "src/core/surface/server.h",
"src/core/surface/server_chttp2.c", "src/core/surface/server_chttp2.c",
"src/core/surface/server_create.c", "src/core/surface/server_create.c",
"src/core/surface/surface_trace.c",
"src/core/surface/surface_trace.h", "src/core/surface/surface_trace.h",
"src/core/surface/version.c", "src/core/surface/version.c",
"src/core/transport/chttp2/alpn.c", "src/core/transport/chttp2/alpn.c",

@ -0,0 +1,658 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.props" Condition="Exists('..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.props')" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug-DLL|Win32">
<Configuration>Debug-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug-DLL|x64">
<Configuration>Debug-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|Win32">
<Configuration>Release-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|x64">
<Configuration>Release-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\winsock.props" />
<Import Project="..\global.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc</TargetName>
<Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc</TargetName>
<Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\include\grpc\grpc_security.h" />
<ClInclude Include="..\..\include\grpc\byte_buffer.h" />
<ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
<ClInclude Include="..\..\include\grpc\compression.h" />
<ClInclude Include="..\..\include\grpc\grpc.h" />
<ClInclude Include="..\..\include\grpc\status.h" />
<ClInclude Include="..\..\include\grpc\census.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\core\security\auth_filters.h" />
<ClInclude Include="..\..\src\core\security\base64.h" />
<ClInclude Include="..\..\src\core\security\credentials.h" />
<ClInclude Include="..\..\src\core\security\json_token.h" />
<ClInclude Include="..\..\src\core\security\jwt_verifier.h" />
<ClInclude Include="..\..\src\core\security\secure_endpoint.h" />
<ClInclude Include="..\..\src\core\security\secure_transport_setup.h" />
<ClInclude Include="..\..\src\core\security\security_connector.h" />
<ClInclude Include="..\..\src\core\security\security_context.h" />
<ClInclude Include="..\..\src\core\tsi\fake_transport_security.h" />
<ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h" />
<ClInclude Include="..\..\src\core\tsi\transport_security.h" />
<ClInclude Include="..\..\src\core\tsi\transport_security_interface.h" />
<ClInclude Include="..\..\src\core\census\grpc_filter.h" />
<ClInclude Include="..\..\src\core\channel\channel_args.h" />
<ClInclude Include="..\..\src\core\channel\channel_stack.h" />
<ClInclude Include="..\..\src\core\channel\client_channel.h" />
<ClInclude Include="..\..\src\core\channel\compress_filter.h" />
<ClInclude Include="..\..\src\core\channel\connected_channel.h" />
<ClInclude Include="..\..\src\core\channel\context.h" />
<ClInclude Include="..\..\src\core\channel\http_client_filter.h" />
<ClInclude Include="..\..\src\core\channel\http_server_filter.h" />
<ClInclude Include="..\..\src\core\channel\noop_filter.h" />
<ClInclude Include="..\..\src\core\client_config\client_config.h" />
<ClInclude Include="..\..\src\core\client_config\connector.h" />
<ClInclude Include="..\..\src\core\client_config\lb_policies\pick_first.h" />
<ClInclude Include="..\..\src\core\client_config\lb_policy.h" />
<ClInclude Include="..\..\src\core\client_config\resolver.h" />
<ClInclude Include="..\..\src\core\client_config\resolver_factory.h" />
<ClInclude Include="..\..\src\core\client_config\resolver_registry.h" />
<ClInclude Include="..\..\src\core\client_config\resolvers\dns_resolver.h" />
<ClInclude Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel_factory.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.h" />
<ClInclude Include="..\..\src\core\client_config\uri_parser.h" />
<ClInclude Include="..\..\src\core\compression\message_compress.h" />
<ClInclude Include="..\..\src\core\debug\trace.h" />
<ClInclude Include="..\..\src\core\httpcli\format_request.h" />
<ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
<ClInclude Include="..\..\src\core\httpcli\parser.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_heap.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_internal.h" />
<ClInclude Include="..\..\src\core\iomgr\endpoint.h" />
<ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h" />
<ClInclude Include="..\..\src\core\iomgr\fd_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\iocp_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_set.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_set_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_set_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\resolve_address.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h" />
<ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\socket_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_client.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_server.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h" />
<ClInclude Include="..\..\src\core\iomgr\udp_server.h" />
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h" />
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h" />
<ClInclude Include="..\..\src\core\json\json.h" />
<ClInclude Include="..\..\src\core\json\json_common.h" />
<ClInclude Include="..\..\src\core\json\json_reader.h" />
<ClInclude Include="..\..\src\core\json\json_writer.h" />
<ClInclude Include="..\..\src\core\profiling\timers.h" />
<ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h" />
<ClInclude Include="..\..\src\core\statistics\census_interface.h" />
<ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" />
<ClInclude Include="..\..\src\core\surface\api_trace.h" />
<ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h" />
<ClInclude Include="..\..\src\core\surface\call.h" />
<ClInclude Include="..\..\src\core\surface\channel.h" />
<ClInclude Include="..\..\src\core\surface\completion_queue.h" />
<ClInclude Include="..\..\src\core\surface\event_string.h" />
<ClInclude Include="..\..\src\core\surface\init.h" />
<ClInclude Include="..\..\src\core\surface\server.h" />
<ClInclude Include="..\..\src\core\surface\surface_trace.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\alpn.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\incoming_metadata.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\internal.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\varint.h" />
<ClInclude Include="..\..\src\core\transport\chttp2_transport.h" />
<ClInclude Include="..\..\src\core\transport\connectivity_state.h" />
<ClInclude Include="..\..\src\core\transport\metadata.h" />
<ClInclude Include="..\..\src\core\transport\stream_op.h" />
<ClInclude Include="..\..\src\core\transport\transport.h" />
<ClInclude Include="..\..\src\core\transport\transport_impl.h" />
<ClInclude Include="..\..\src\core\census\context.h" />
<ClInclude Include="..\..\src\core\census\rpc_stat_id.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\core\httpcli\httpcli_security_connector.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\base64.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\client_auth_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials_metadata.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials_win32.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\google_default_credentials.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\json_token.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\jwt_verifier.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\secure_endpoint.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\security_connector.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\security_context.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\server_auth_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\init_secure.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
</ClCompile>
<ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
</ClCompile>
<ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
</ClCompile>
<ClCompile Include="..\..\src\core\tsi\transport_security.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_context.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_args.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_stack.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\client_channel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\compress_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\connected_channel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_client_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_server_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\noop_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\client_config.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\connector.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policies\pick_first.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policy.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_factory.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_registry.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\dns_resolver.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\uri_parser.c">
</ClCompile>
<ClCompile Include="..\..\src\core\compression\algorithm.c">
</ClCompile>
<ClCompile Include="..\..\src\core\compression\message_compress.c">
</ClCompile>
<ClCompile Include="..\..\src\core\debug\trace.c">
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\format_request.c">
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\httpcli.c">
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\parser.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\udp_server.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_reader.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_writer.c">
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\basic_timers.c">
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\stap_timers.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\api_trace.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_details.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_log_batch.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_connectivity.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_create.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\completion_queue.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\event_string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\init.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\lame_client.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\metadata_array.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_chttp2.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_create.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\version.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\incoming_metadata.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\parsing.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_lists.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\writing.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\connectivity_state.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\metadata.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\stream_op.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport_op_string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\context.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\initialize.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\record_stat.c">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\gpr\gpr.vcxproj">
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets')" />
<Import Project="..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets" Condition="Exists('..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets')" />
<Import Project="..\packages\grpc.dependencies.openssl.redist.1.0.2.2\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('..\packages\grpc.dependencies.openssl.redist.1.0.2.2\build\native\grpc.dependencies.openssl.redist.targets')" />
<Import Project="..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.targets" Condition="Exists('..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets'))" />
<Error Condition="!Exists('..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets'))" />
<Error Condition="!Exists('..\packages\grpc.dependencies.openssl.redist.1.0.2.2\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.openssl.redist.1.0.2.2\build\native\grpc.dependencies.openssl.redist.targets'))" />
<Error Condition="!Exists('..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.props'))" />
<Error Condition="!Exists('..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.openssl.1.0.2.2\build\native\grpc.dependencies.openssl.targets'))" />
</Target>
</Project>

@ -0,0 +1,874 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\..\src\core\httpcli\httpcli_security_connector.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\base64.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\client_auth_filter.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials_metadata.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials_posix.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\credentials_win32.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\google_default_credentials.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\json_token.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\jwt_verifier.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\secure_endpoint.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\security_connector.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\security_context.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\server_auth_filter.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
<Filter>src\core\security</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\init_secure.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
<Filter>src\core\tsi</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
<Filter>src\core\tsi</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\tsi\transport_security.c">
<Filter>src\core\tsi</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_context.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_filter.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_args.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_stack.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\client_channel.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\compress_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\connected_channel.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_client_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_server_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\noop_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\client_config.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\connector.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policies\pick_first.c">
<Filter>src\core\client_config\lb_policies</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policy.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_factory.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_registry.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\dns_resolver.c">
<Filter>src\core\client_config\resolvers</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.c">
<Filter>src\core\client_config\resolvers</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.c">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.c">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\uri_parser.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\compression\algorithm.c">
<Filter>src\core\compression</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\compression\message_compress.c">
<Filter>src\core\compression</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\debug\trace.c">
<Filter>src\core\debug</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\format_request.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\httpcli.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\parser.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\udp_server.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_reader.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_string.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_writer.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\basic_timers.c">
<Filter>src\core\profiling</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\stap_timers.c">
<Filter>src\core\profiling</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\api_trace.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_details.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_log_batch.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_connectivity.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_create.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\completion_queue.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\event_string.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\init.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\lame_client.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\metadata_array.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_chttp2.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_create.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\version.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\incoming_metadata.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\parsing.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_lists.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\writing.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\connectivity_state.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\metadata.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\stream_op.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport_op_string.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\context.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\initialize.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\record_stat.c">
<Filter>src\core\census</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\grpc\grpc_security.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\byte_buffer.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\byte_buffer_reader.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\compression.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\grpc.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\status.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\census.h">
<Filter>include\grpc</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\core\security\auth_filters.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\base64.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\credentials.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\json_token.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\jwt_verifier.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\secure_endpoint.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\secure_transport_setup.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\security_connector.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\security\security_context.h">
<Filter>src\core\security</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\tsi\fake_transport_security.h">
<Filter>src\core\tsi</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h">
<Filter>src\core\tsi</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\tsi\transport_security.h">
<Filter>src\core\tsi</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\tsi\transport_security_interface.h">
<Filter>src\core\tsi</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\census\grpc_filter.h">
<Filter>src\core\census</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\channel_args.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\channel_stack.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\client_channel.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\compress_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\connected_channel.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\context.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\http_client_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\http_server_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\noop_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\client_config.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\connector.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\lb_policies\pick_first.h">
<Filter>src\core\client_config\lb_policies</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\lb_policy.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolver.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolver_factory.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolver_registry.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolvers\dns_resolver.h">
<Filter>src\core\client_config\resolvers</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.h">
<Filter>src\core\client_config\resolvers</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel_factory.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.h">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.h">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\uri_parser.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\compression\message_compress.h">
<Filter>src\core\compression</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\debug\trace.h">
<Filter>src\core\debug</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\httpcli\format_request.h">
<Filter>src\core\httpcli</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\httpcli\httpcli.h">
<Filter>src\core\httpcli</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\httpcli\parser.h">
<Filter>src\core\httpcli</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm_heap.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm_internal.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\endpoint.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\fd_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iocp_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iomgr.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_set.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_set_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_set_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\resolve_address.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\socket_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_client.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_server.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\udp_server.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json_common.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json_reader.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json_writer.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\profiling\timers.h">
<Filter>src\core\profiling</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h">
<Filter>src\core\profiling</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\statistics\census_interface.h">
<Filter>src\core\statistics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h">
<Filter>src\core\statistics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\api_trace.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\call.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\channel.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\completion_queue.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\event_string.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\init.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\server.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\surface_trace.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\alpn.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\incoming_metadata.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\internal.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\varint.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2_transport.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\connectivity_state.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\metadata.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\stream_op.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\transport.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\transport_impl.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\census\context.h">
<Filter>src\core\census</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\census\rpc_stat_id.h">
<Filter>src\core\census</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="include">
<UniqueIdentifier>{968de0a1-346d-b75a-6f19-6a55119b8235}</UniqueIdentifier>
</Filter>
<Filter Include="include\grpc">
<UniqueIdentifier>{880c644d-b84f-cfca-98bd-e145f36232ab}</UniqueIdentifier>
</Filter>
<Filter Include="src">
<UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
</Filter>
<Filter Include="src\core">
<UniqueIdentifier>{ea745680-21ea-9c5e-679b-64dc40562d08}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\census">
<UniqueIdentifier>{fb3aefc2-8205-b0bf-525f-ab5e339f7f76}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\channel">
<UniqueIdentifier>{d897b6c3-c555-234e-a589-b4f008063615}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config">
<UniqueIdentifier>{e71e6928-b1e3-0616-0961-1505370458ab}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config\lb_policies">
<UniqueIdentifier>{a3eca4d5-f760-61a6-7251-556b828c8b44}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config\resolvers">
<UniqueIdentifier>{6d97b8d9-2c15-927a-892a-709d073c02ab}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config\subchannel_factory_decorators">
<UniqueIdentifier>{428cdbb1-c777-2c64-79b3-43d6ee413061}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\compression">
<UniqueIdentifier>{263cb913-dfe6-42a4-096b-cac231f76305}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\debug">
<UniqueIdentifier>{1da7ef8a-a06d-5499-b3de-19fee4a4214d}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\httpcli">
<UniqueIdentifier>{a9bc00ad-835f-c625-c6d9-6a1324f98b9f}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\iomgr">
<UniqueIdentifier>{1baf3894-af37-e647-bdbc-95dc17ed0073}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\json">
<UniqueIdentifier>{e665cc0e-b994-d7c5-cc18-2007392019f0}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\profiling">
<UniqueIdentifier>{87674b72-0f05-0469-481a-bd8c7af9ad80}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\security">
<UniqueIdentifier>{1d850ac6-e639-4eab-5338-4ba40272fcc9}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\statistics">
<UniqueIdentifier>{0ef49896-2313-4a3f-1ce2-716fa0e5c6ca}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\surface">
<UniqueIdentifier>{aeb18e82-5d25-0aad-8b02-a0a3470073ce}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\transport">
<UniqueIdentifier>{168fa1b1-1c18-eb55-9a4d-746bc58df2c1}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\transport\chttp2">
<UniqueIdentifier>{b8b623c3-a168-a2b1-0d5f-b70a1f1cd8d2}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\tsi">
<UniqueIdentifier>{0b0f9ab1-efa4-7f03-e446-6fb9b5227e84}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

@ -0,0 +1,596 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug-DLL|Win32">
<Configuration>Debug-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug-DLL|x64">
<Configuration>Debug-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|Win32">
<Configuration>Release-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|x64">
<Configuration>Release-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\winsock.props" />
<Import Project="..\global.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc_unsecure</TargetName>
<Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc_unsecure</TargetName>
<Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\include\grpc\byte_buffer.h" />
<ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
<ClInclude Include="..\..\include\grpc\compression.h" />
<ClInclude Include="..\..\include\grpc\grpc.h" />
<ClInclude Include="..\..\include\grpc\status.h" />
<ClInclude Include="..\..\include\grpc\census.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\core\census\grpc_filter.h" />
<ClInclude Include="..\..\src\core\channel\channel_args.h" />
<ClInclude Include="..\..\src\core\channel\channel_stack.h" />
<ClInclude Include="..\..\src\core\channel\client_channel.h" />
<ClInclude Include="..\..\src\core\channel\compress_filter.h" />
<ClInclude Include="..\..\src\core\channel\connected_channel.h" />
<ClInclude Include="..\..\src\core\channel\context.h" />
<ClInclude Include="..\..\src\core\channel\http_client_filter.h" />
<ClInclude Include="..\..\src\core\channel\http_server_filter.h" />
<ClInclude Include="..\..\src\core\channel\noop_filter.h" />
<ClInclude Include="..\..\src\core\client_config\client_config.h" />
<ClInclude Include="..\..\src\core\client_config\connector.h" />
<ClInclude Include="..\..\src\core\client_config\lb_policies\pick_first.h" />
<ClInclude Include="..\..\src\core\client_config\lb_policy.h" />
<ClInclude Include="..\..\src\core\client_config\resolver.h" />
<ClInclude Include="..\..\src\core\client_config\resolver_factory.h" />
<ClInclude Include="..\..\src\core\client_config\resolver_registry.h" />
<ClInclude Include="..\..\src\core\client_config\resolvers\dns_resolver.h" />
<ClInclude Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel_factory.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.h" />
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.h" />
<ClInclude Include="..\..\src\core\client_config\uri_parser.h" />
<ClInclude Include="..\..\src\core\compression\message_compress.h" />
<ClInclude Include="..\..\src\core\debug\trace.h" />
<ClInclude Include="..\..\src\core\httpcli\format_request.h" />
<ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
<ClInclude Include="..\..\src\core\httpcli\parser.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_heap.h" />
<ClInclude Include="..\..\src\core\iomgr\alarm_internal.h" />
<ClInclude Include="..\..\src\core\iomgr\endpoint.h" />
<ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h" />
<ClInclude Include="..\..\src\core\iomgr\fd_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\iocp_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_set.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_set_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_set_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\resolve_address.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h" />
<ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\socket_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_client.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_server.h" />
<ClInclude Include="..\..\src\core\iomgr\tcp_windows.h" />
<ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h" />
<ClInclude Include="..\..\src\core\iomgr\udp_server.h" />
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h" />
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h" />
<ClInclude Include="..\..\src\core\json\json.h" />
<ClInclude Include="..\..\src\core\json\json_common.h" />
<ClInclude Include="..\..\src\core\json\json_reader.h" />
<ClInclude Include="..\..\src\core\json\json_writer.h" />
<ClInclude Include="..\..\src\core\profiling\timers.h" />
<ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h" />
<ClInclude Include="..\..\src\core\statistics\census_interface.h" />
<ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" />
<ClInclude Include="..\..\src\core\surface\api_trace.h" />
<ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h" />
<ClInclude Include="..\..\src\core\surface\call.h" />
<ClInclude Include="..\..\src\core\surface\channel.h" />
<ClInclude Include="..\..\src\core\surface\completion_queue.h" />
<ClInclude Include="..\..\src\core\surface\event_string.h" />
<ClInclude Include="..\..\src\core\surface\init.h" />
<ClInclude Include="..\..\src\core\surface\server.h" />
<ClInclude Include="..\..\src\core\surface\surface_trace.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\alpn.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\incoming_metadata.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\internal.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h" />
<ClInclude Include="..\..\src\core\transport\chttp2\varint.h" />
<ClInclude Include="..\..\src\core\transport\chttp2_transport.h" />
<ClInclude Include="..\..\src\core\transport\connectivity_state.h" />
<ClInclude Include="..\..\src\core\transport\metadata.h" />
<ClInclude Include="..\..\src\core\transport\stream_op.h" />
<ClInclude Include="..\..\src\core\transport\transport.h" />
<ClInclude Include="..\..\src\core\transport\transport_impl.h" />
<ClInclude Include="..\..\src\core\census\context.h" />
<ClInclude Include="..\..\src\core\census\rpc_stat_id.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\core\surface\init_unsecure.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_context.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_args.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_stack.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\client_channel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\compress_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\connected_channel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_client_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_server_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\channel\noop_filter.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\client_config.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\connector.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policies\pick_first.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policy.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_factory.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_registry.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\dns_resolver.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.c">
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\uri_parser.c">
</ClCompile>
<ClCompile Include="..\..\src\core\compression\algorithm.c">
</ClCompile>
<ClCompile Include="..\..\src\core\compression\message_compress.c">
</ClCompile>
<ClCompile Include="..\..\src\core\debug\trace.c">
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\format_request.c">
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\httpcli.c">
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\parser.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\udp_server.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_reader.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_writer.c">
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\basic_timers.c">
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\stap_timers.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\api_trace.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_details.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_log_batch.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_connectivity.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_create.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\completion_queue.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\event_string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\init.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\lame_client.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\metadata_array.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_chttp2.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_create.c">
</ClCompile>
<ClCompile Include="..\..\src\core\surface\version.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\incoming_metadata.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\parsing.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_lists.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\writing.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\connectivity_state.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\metadata.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\stream_op.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport.c">
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport_op_string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\context.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\initialize.c">
</ClCompile>
<ClCompile Include="..\..\src\core\census\record_stat.c">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\gpr\gpr.vcxproj">
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets')" />
<Import Project="..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets" Condition="Exists('..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.zlib.redist.1.2.8.9\build\native\grpc.dependencies.zlib.redist.targets'))" />
<Error Condition="!Exists('..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.dependencies.zlib.1.2.8.9\build\native\grpc.dependencies.zlib.targets'))" />
</Target>
</Project>

@ -0,0 +1,766 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\..\src\core\surface\init_unsecure.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_context.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\grpc_filter.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_args.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\channel_stack.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\client_channel.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\compress_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\connected_channel.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_client_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\http_server_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\channel\noop_filter.c">
<Filter>src\core\channel</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\client_config.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\connector.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policies\pick_first.c">
<Filter>src\core\client_config\lb_policies</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\lb_policy.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_factory.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolver_registry.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\dns_resolver.c">
<Filter>src\core\client_config\resolvers</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.c">
<Filter>src\core\client_config\resolvers</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.c">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.c">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\client_config\uri_parser.c">
<Filter>src\core\client_config</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\compression\algorithm.c">
<Filter>src\core\compression</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\compression\message_compress.c">
<Filter>src\core\compression</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\debug\trace.c">
<Filter>src\core\debug</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\format_request.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\httpcli.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\httpcli\parser.c">
<Filter>src\core\httpcli</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\endpoint_pair_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_set_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\udp_server.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
<Filter>src\core\iomgr</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_reader.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_string.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\json\json_writer.c">
<Filter>src\core\json</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\basic_timers.c">
<Filter>src\core\profiling</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\profiling\stap_timers.c">
<Filter>src\core\profiling</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\api_trace.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_details.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\call_log_batch.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_connectivity.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\channel_create.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\completion_queue.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\event_string.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\init.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\lame_client.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\metadata_array.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_chttp2.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\server_create.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\surface\version.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\incoming_metadata.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\parsing.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_lists.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2\writing.c">
<Filter>src\core\transport\chttp2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\connectivity_state.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\metadata.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\stream_op.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\transport\transport_op_string.c">
<Filter>src\core\transport</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\context.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\initialize.c">
<Filter>src\core\census</Filter>
</ClCompile>
<ClCompile Include="..\..\src\core\census\record_stat.c">
<Filter>src\core\census</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\grpc\byte_buffer.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\byte_buffer_reader.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\compression.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\grpc.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\status.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="..\..\include\grpc\census.h">
<Filter>include\grpc</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\core\census\grpc_filter.h">
<Filter>src\core\census</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\channel_args.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\channel_stack.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\client_channel.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\compress_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\connected_channel.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\context.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\http_client_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\http_server_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\channel\noop_filter.h">
<Filter>src\core\channel</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\client_config.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\connector.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\lb_policies\pick_first.h">
<Filter>src\core\client_config\lb_policies</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\lb_policy.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolver.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolver_factory.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolver_registry.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolvers\dns_resolver.h">
<Filter>src\core\client_config\resolvers</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\resolvers\sockaddr_resolver.h">
<Filter>src\core\client_config\resolvers</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel_factory.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\add_channel_arg.h">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\subchannel_factory_decorators\merge_channel_args.h">
<Filter>src\core\client_config\subchannel_factory_decorators</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\client_config\uri_parser.h">
<Filter>src\core\client_config</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\compression\message_compress.h">
<Filter>src\core\compression</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\debug\trace.h">
<Filter>src\core\debug</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\httpcli\format_request.h">
<Filter>src\core\httpcli</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\httpcli\httpcli.h">
<Filter>src\core\httpcli</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\httpcli\parser.h">
<Filter>src\core\httpcli</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm_heap.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\alarm_internal.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\endpoint.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\fd_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iocp_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iomgr.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_set.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_set_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_set_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\pollset_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\resolve_address.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\socket_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_client.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_server.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\tcp_windows.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\udp_server.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h">
<Filter>src\core\iomgr</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json_common.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json_reader.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\json\json_writer.h">
<Filter>src\core\json</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\profiling\timers.h">
<Filter>src\core\profiling</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\profiling\timers_preciseclock.h">
<Filter>src\core\profiling</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\statistics\census_interface.h">
<Filter>src\core\statistics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h">
<Filter>src\core\statistics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\api_trace.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\call.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\channel.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\completion_queue.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\event_string.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\init.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\server.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\surface\surface_trace.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\alpn.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\incoming_metadata.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\internal.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2\varint.h">
<Filter>src\core\transport\chttp2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\chttp2_transport.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\connectivity_state.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\metadata.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\stream_op.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\transport.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\transport\transport_impl.h">
<Filter>src\core\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\census\context.h">
<Filter>src\core\census</Filter>
</ClInclude>
<ClInclude Include="..\..\src\core\census\rpc_stat_id.h">
<Filter>src\core\census</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="include">
<UniqueIdentifier>{10076c7e-7c8e-8005-0c81-64454af2cbc8}</UniqueIdentifier>
</Filter>
<Filter Include="include\grpc">
<UniqueIdentifier>{77b9717b-b8d8-dd5f-14bb-a3e96809a70a}</UniqueIdentifier>
</Filter>
<Filter Include="src">
<UniqueIdentifier>{aaf326a1-c884-46ea-875a-cbbd9983e539}</UniqueIdentifier>
</Filter>
<Filter Include="src\core">
<UniqueIdentifier>{88491077-386b-2039-d14c-0c40136b5f7a}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\census">
<UniqueIdentifier>{a7596ee2-afee-3a82-7e6e-bd8b8f904e04}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\channel">
<UniqueIdentifier>{cc102c4b-66ff-cf4c-2288-d76327e1a183}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config">
<UniqueIdentifier>{02bd7340-02ee-4337-ffa5-0b6ecc7cf60c}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config\lb_policies">
<UniqueIdentifier>{308af086-46c7-fa66-9021-19b1c3d4a6bd}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config\resolvers">
<UniqueIdentifier>{dd617c24-6f07-fdff-80d5-c8610d6f815e}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\client_config\subchannel_factory_decorators">
<UniqueIdentifier>{64285d1a-ebd0-7637-ae20-15df5ca6cc83}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\compression">
<UniqueIdentifier>{2e3aca1d-223d-10a1-b282-7f9fc68ee6f5}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\debug">
<UniqueIdentifier>{6d8d5774-7291-554d-fafa-583463cd3fd9}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\httpcli">
<UniqueIdentifier>{1ba3a245-47e7-89b5-b0c9-aca758bd0277}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\iomgr">
<UniqueIdentifier>{a9df8b24-ecea-ff6d-8999-d8fa54cd70bf}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\json">
<UniqueIdentifier>{443ffc61-1bea-2477-6e54-1ddf8c139264}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\profiling">
<UniqueIdentifier>{7f91d9bf-c9de-835a-d74d-b16f843b89a9}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\statistics">
<UniqueIdentifier>{e084164c-a069-00e3-db35-4e0b1cd6f0b7}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\surface">
<UniqueIdentifier>{6cd0127e-c24b-d43c-38f5-198db8d4322a}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\transport">
<UniqueIdentifier>{6687ff98-e36e-c0b1-2756-1bc79edec406}</UniqueIdentifier>
</Filter>
<Filter Include="src\core\transport\chttp2">
<UniqueIdentifier>{5fcd6206-f774-9ae6-4b85-305d6a723843}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

@ -341,6 +341,7 @@
<ClInclude Include="..\..\..\src\core\profiling\timers.h" /> <ClInclude Include="..\..\..\src\core\profiling\timers.h" />
<ClInclude Include="..\..\..\src\core\statistics\census_interface.h" /> <ClInclude Include="..\..\..\src\core\statistics\census_interface.h" />
<ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h" /> <ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h" />
<ClInclude Include="..\..\..\src\core\surface\api_trace.h" />
<ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h" /> <ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h" />
<ClInclude Include="..\..\..\src\core\surface\call.h" /> <ClInclude Include="..\..\..\src\core\surface\call.h" />
<ClInclude Include="..\..\..\src\core\surface\channel.h" /> <ClInclude Include="..\..\..\src\core\surface\channel.h" />
@ -578,6 +579,8 @@
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\profiling\stap_timers.c"> <ClCompile Include="..\..\..\src\core\profiling\stap_timers.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\api_trace.c">
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\byte_buffer.c"> <ClCompile Include="..\..\..\src\core\surface\byte_buffer.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\byte_buffer_queue.c"> <ClCompile Include="..\..\..\src\core\surface\byte_buffer_queue.c">
@ -612,8 +615,6 @@
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\server_create.c"> <ClCompile Include="..\..\..\src\core\surface\server_create.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\surface_trace.c">
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\version.c"> <ClCompile Include="..\..\..\src\core\surface\version.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\transport\chttp2\alpn.c"> <ClCompile Include="..\..\..\src\core\transport\chttp2\alpn.c">

@ -298,6 +298,9 @@
<ClCompile Include="..\..\..\src\core\profiling\stap_timers.c"> <ClCompile Include="..\..\..\src\core\profiling\stap_timers.c">
<Filter>src\core\profiling</Filter> <Filter>src\core\profiling</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\api_trace.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\byte_buffer.c"> <ClCompile Include="..\..\..\src\core\surface\byte_buffer.c">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClCompile> </ClCompile>
@ -349,9 +352,6 @@
<ClCompile Include="..\..\..\src\core\surface\server_create.c"> <ClCompile Include="..\..\..\src\core\surface\server_create.c">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\surface_trace.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\version.c"> <ClCompile Include="..\..\..\src\core\surface\version.c">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClCompile> </ClCompile>
@ -734,6 +734,9 @@
<ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h"> <ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h">
<Filter>src\core\statistics</Filter> <Filter>src\core\statistics</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\src\core\surface\api_trace.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h"> <ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClInclude> </ClInclude>

@ -320,6 +320,7 @@
<ClInclude Include="..\..\..\src\core\profiling\timers.h" /> <ClInclude Include="..\..\..\src\core\profiling\timers.h" />
<ClInclude Include="..\..\..\src\core\statistics\census_interface.h" /> <ClInclude Include="..\..\..\src\core\statistics\census_interface.h" />
<ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h" /> <ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h" />
<ClInclude Include="..\..\..\src\core\surface\api_trace.h" />
<ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h" /> <ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h" />
<ClInclude Include="..\..\..\src\core\surface\call.h" /> <ClInclude Include="..\..\..\src\core\surface\call.h" />
<ClInclude Include="..\..\..\src\core\surface\channel.h" /> <ClInclude Include="..\..\..\src\core\surface\channel.h" />
@ -517,6 +518,8 @@
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\profiling\stap_timers.c"> <ClCompile Include="..\..\..\src\core\profiling\stap_timers.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\api_trace.c">
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\byte_buffer.c"> <ClCompile Include="..\..\..\src\core\surface\byte_buffer.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\byte_buffer_queue.c"> <ClCompile Include="..\..\..\src\core\surface\byte_buffer_queue.c">
@ -551,8 +554,6 @@
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\server_create.c"> <ClCompile Include="..\..\..\src\core\surface\server_create.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\surface_trace.c">
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\version.c"> <ClCompile Include="..\..\..\src\core\surface\version.c">
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\transport\chttp2\alpn.c"> <ClCompile Include="..\..\..\src\core\transport\chttp2\alpn.c">

@ -238,6 +238,9 @@
<ClCompile Include="..\..\..\src\core\profiling\stap_timers.c"> <ClCompile Include="..\..\..\src\core\profiling\stap_timers.c">
<Filter>src\core\profiling</Filter> <Filter>src\core\profiling</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\api_trace.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\byte_buffer.c"> <ClCompile Include="..\..\..\src\core\surface\byte_buffer.c">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClCompile> </ClCompile>
@ -289,9 +292,6 @@
<ClCompile Include="..\..\..\src\core\surface\server_create.c"> <ClCompile Include="..\..\..\src\core\surface\server_create.c">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\..\src\core\surface\surface_trace.c">
<Filter>src\core\surface</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\core\surface\version.c"> <ClCompile Include="..\..\..\src\core\surface\version.c">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClCompile> </ClCompile>
@ -632,6 +632,9 @@
<ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h"> <ClInclude Include="..\..\..\src\core\statistics\census_rpc_stats.h">
<Filter>src\core\statistics</Filter> <Filter>src\core\statistics</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\..\src\core\surface\api_trace.h">
<Filter>src\core\surface</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h"> <ClInclude Include="..\..\..\src\core\surface\byte_buffer_queue.h">
<Filter>src\core\surface</Filter> <Filter>src\core\surface</Filter>
</ClInclude> </ClInclude>

Loading…
Cancel
Save